diff --git a/frostwire-jlibtorrent/.gitignore b/frostwire-jlibtorrent/.gitignore new file mode 100644 index 0000000..e588b35 --- /dev/null +++ b/frostwire-jlibtorrent/.gitignore @@ -0,0 +1,23 @@ +*~ +.DS_Store +*.ipr +*.iws +.idea +.gradle +/build +/out +/android/build +/android/src/main/jniLibs +/java/out/ +*.o +/jlibtorrent.xcodeproj/xcuserdata/ +/obj +frostwire-jlibtorrent.i* +/test-libtorrent +/swig/bin +/swig/build +/libjlibtorrent*.dylib +/libjlibtorrent*.so +/jlibtorrent*.dll +/node/jlibtorrent.node +/dht_shell.dat diff --git a/frostwire-jlibtorrent/.travis.yml b/frostwire-jlibtorrent/.travis.yml new file mode 100644 index 0000000..f14ffae --- /dev/null +++ b/frostwire-jlibtorrent/.travis.yml @@ -0,0 +1,259 @@ +language: cpp +dist: eoan + +matrix: + include: + - env: os_build=android os_arch=arm android_api=19 + - env: os_build=android os_arch=arm64 android_api=21 + - env: os_build=android os_arch=x86 android_api=19 + - env: os_build=android os_arch=x86_64 android_api=21 + - env: os_build=linux os_arch=x86 + - env: os_build=linux os_arch=x86_64 + - env: os_build=windows os_arch=x86 + - env: os_build=windows os_arch=x86_64 + - os: osx + env: os_build=macosx os_arch=x86_64 + osx_image: xcode11.2 + +branches: + only: + - master + +before_install: + - wget -nv -O boost.zip https://dl.bintray.com/boostorg/release/1.73.0/source/boost_1_73_0.zip + - unzip -qq boost.zip + - cd boost_1_73_0 + - ls -lth + - ./bootstrap.sh + - ./b2 + - cd .. + - export BOOST_ROOT=$PWD/boost_1_73_0 + - export BOOST_BUILD_PATH=$BOOST_ROOT + + # openssl: download + - wget -nv -O openssl.tar.gz https://www.openssl.org/source/openssl-1.1.1i.tar.gz + - tar xzf openssl.tar.gz + - export OPENSSL_SOURCE=$PWD/openssl-1.1.1i + # fix source code + # avoid GDI dependency in windows, fix double return statement on threads_none.c + - if [ $os_build == "windows" ]; then + sed -i 's/if defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0333/if 0/g' $OPENSSL_SOURCE/crypto/cryptlib.c; + sed -i 's/MessageBox.*//g' $OPENSSL_SOURCE/crypto/cryptlib.c; + sed -i 's/return return 0;/return 0;/g' $OPENSSL_SOURCE/crypto/threads_none.c; + fi + + # libtorrent: download and checkout revision + - git clone https://github.com/arvidn/libtorrent + - cd libtorrent + - git checkout 77172672c8db2f6bcef17d867d9a81faae77ec1e + - git submodule init + - git submodule update + - cd .. + - export LIBTORRENT_ROOT=$PWD/libtorrent + + # android ndk: download and create toolchain + - if [ $os_build == "android" ]; then + wget -nv -O android-ndk.zip https://dl.google.com/android/repository/android-ndk-r21d-linux-x86_64.zip; + echo "Extracting NDK...wait"; + unzip -qq android-ndk.zip; + export NDK=$PWD/android-ndk-r21d; + $NDK/build/tools/make_standalone_toolchain.py --arch $os_arch --api $android_api --stl libc++ --install-dir android-toolchain; + export ANDROID_TOOLCHAIN=$PWD/android-toolchain; + fi + + - if [[ $os_build == "linux" || $os_build == "windows" ]]; then + sudo apt-get install -qq g++-7 g++-7-multilib; + fi + + - if [[ $os_build == "linux" && $os_arch == "x86" ]]; then + sudo apt-get install -qq libc6-dev-i386; + sudo apt-get install -qq lib32gcc-5-dev; + sudo apt-get install -qq lib32stdc++-5-dev; + sudo ln -s /usr/include/asm-generic /usr/include/asm; + fi + + # linux cross compilation tools for windows development + # remove files related to libwinpthread dll + - if [[ $os_build == "windows" && $os_arch == "x86" ]]; then + sudo apt-get install -qq g++-mingw-w64-i686; + fi + + - if [[ $os_build == "windows" && $os_arch == "x86_64" ]]; then + sudo apt-get install -qq g++-mingw-w64-x86-64; + fi + + # install gradle in macOS to run the unit tests + - if [ $os_build == "macosx" ]; then + brew update > /dev/null && brew install gradle; + fi + + # openssl + - 'export OPENSSL_NO_OPTS="no-afalgeng no-async no-autoalginit no-autoerrinit + no-capieng no-cms no-comp no-deprecated no-dgram no-dso no-dtls + no-dynamic-engine no-egd no-engine no-err no-filenames no-gost no-hw + no-makedepend no-multiblock no-nextprotoneg no-posix-io no-psk + no-rdrand no-sctp no-shared no-sock no-srp no-srtp no-static-engine + no-stdio no-threads no-ui-console no-zlib no-zlib-dynamic + -fno-strict-aliasing -fvisibility=hidden -Os"' + # android-arm + - if [[ $os_build == "android" && $os_arch == "arm" ]]; then + export CC=$ANDROID_TOOLCHAIN/bin/arm-linux-androideabi-clang; + export run_openssl_configure="./Configure linux-armv4 ${OPENSSL_NO_OPTS} -march=armv7-a -mfpu=neon -fPIC --prefix=$OPENSSL_SOURCE/../openssl"; + fi + # android-arm64 + - if [[ $os_build == "android" && $os_arch == "arm64" ]]; then + export CC=$ANDROID_TOOLCHAIN/bin/aarch64-linux-android-clang; + export run_openssl_configure="./Configure linux-aarch64 ${OPENSSL_NO_OPTS} -march=armv8-a+crypto -fPIC --prefix=$OPENSSL_SOURCE/../openssl"; + fi + # android-x86 + - if [[ $os_build == "android" && $os_arch == "x86" ]]; then + export CC=$ANDROID_TOOLCHAIN/bin/i686-linux-android-clang; + export run_openssl_configure="./Configure linux-elf ${OPENSSL_NO_OPTS} -fPIC -mstackrealign --prefix=$OPENSSL_SOURCE/../openssl"; + fi + # android-x86_64 + - if [[ $os_build == "android" && $os_arch == "x86_64" ]]; then + export CC=$ANDROID_TOOLCHAIN/bin/x86_64-linux-android-clang; + export run_openssl_configure="./Configure linux-x86_64 ${OPENSSL_NO_OPTS} -fPIC --prefix=$OPENSSL_SOURCE/../openssl"; + fi + # linux-x86 + - if [[ $os_build == "linux" && $os_arch == "x86" ]]; then + export CC=gcc-7; + export run_openssl_configure="./Configure linux-elf ${OPENSSL_NO_OPTS} -fPIC -m32 --prefix=$OPENSSL_SOURCE/../openssl"; + fi + # linux-x86_64 + - if [[ $os_build == "linux" && $os_arch == "x86_64" ]]; then + export CC=gcc-7; + export run_openssl_configure="./Configure linux-x86_64 ${OPENSSL_NO_OPTS} -fPIC --prefix=$OPENSSL_SOURCE/../openssl"; + fi + # windows-x86 + - if [[ $os_build == "windows" && $os_arch == "x86" ]]; then + export CC=i686-w64-mingw32-gcc-posix; + export run_openssl_configure="./Configure mingw ${OPENSSL_NO_OPTS} --prefix=$OPENSSL_SOURCE/../openssl"; + fi + # windows-x86_64 + - if [[ $os_build == "windows" && $os_arch == "x86_64" ]]; then + export CC=x86_64-w64-mingw32-gcc-posix; + export run_openssl_configure="./Configure mingw64 ${OPENSSL_NO_OPTS} --prefix=$OPENSSL_SOURCE/../openssl"; + fi + # macosx + - if [ $os_build == "macosx" ]; then + export run_openssl_configure="./Configure darwin64-x86_64-cc ${OPENSSL_NO_OPTS} --prefix=$OPENSSL_SOURCE/../openssl"; + fi + + # jlibtorrent + # android-arm + - if [[ $os_build == "android" && $os_arch == "arm" ]]; then + export run_bjam="${BOOST_ROOT}/b2 --user-config=config/android-arm-config.jam variant=release toolset=clang-linux-arm target-os=android location=bin/release/android/armeabi-v7a"; + export run_objcopy="${ANDROID_TOOLCHAIN}/bin/arm-linux-androideabi-objcopy --only-keep-debug bin/release/android/armeabi-v7a/libjlibtorrent.so bin/release/android/armeabi-v7a/libjlibtorrent.so.debug"; + export run_strip="${ANDROID_TOOLCHAIN}/bin/arm-linux-androideabi-strip --strip-unneeded -x -g bin/release/android/armeabi-v7a/libjlibtorrent.so"; + export run_readelf="${ANDROID_TOOLCHAIN}/bin/arm-linux-androideabi-readelf -d bin/release/android/armeabi-v7a/libjlibtorrent.so"; + export PATH=$ANDROID_TOOLCHAIN/arm-linux-androideabi/bin:$PATH; + sed -i 's/RANLIB = ranlib/RANLIB = "${ANDROID_TOOLCHAIN}\/bin\/arm-linux-androideabi-ranlib"/g' ${BOOST_ROOT}/tools/build/src/tools/gcc.jam; + fi + # android-arm64 + - if [[ $os_build == "android" && $os_arch == "arm64" ]]; then + export run_bjam="${BOOST_ROOT}/b2 --user-config=config/android-arm64-config.jam variant=release toolset=clang-arm64 target-os=android location=bin/release/android/arm64-v8a"; + export run_objcopy="${ANDROID_TOOLCHAIN}/bin/aarch64-linux-android-objcopy --only-keep-debug bin/release/android/arm64-v8a/libjlibtorrent.so bin/release/android/arm64-v8a/libjlibtorrent.so.debug"; + export run_strip="${ANDROID_TOOLCHAIN}/bin/aarch64-linux-android-strip --strip-unneeded -x bin/release/android/arm64-v8a/libjlibtorrent.so"; + export run_readelf="${ANDROID_TOOLCHAIN}/bin/aarch64-linux-android-readelf -d bin/release/android/arm64-v8a/libjlibtorrent.so"; + export PATH=$ANDROID_TOOLCHAIN/aarch64-linux-android/bin:$PATH; + sed -i 's/RANLIB = ranlib/RANLIB = "${ANDROID_TOOLCHAIN}\/bin\/aarch64-linux-android-ranlib"/g' ${BOOST_ROOT}/tools/build/src/tools/gcc.jam; + fi + # android-x86 + - if [[ $os_build == "android" && $os_arch == "x86" ]]; then + export run_bjam="${BOOST_ROOT}/b2 --user-config=config/android-x86-config.jam variant=release toolset=clang-x86 target-os=android location=bin/release/android/x86"; + export run_objcopy="${ANDROID_TOOLCHAIN}/bin/i686-linux-android-objcopy --only-keep-debug bin/release/android/x86/libjlibtorrent.so bin/release/android/x86/libjlibtorrent.so.debug"; + export run_strip="${ANDROID_TOOLCHAIN}/bin/i686-linux-android-strip --strip-unneeded -x -g bin/release/android/x86/libjlibtorrent.so"; + export run_readelf="${ANDROID_TOOLCHAIN}/bin/i686-linux-android-readelf -d bin/release/android/x86/libjlibtorrent.so"; + export PATH=$ANDROID_TOOLCHAIN/i686-linux-android/bin:$PATH; + sed -i 's/RANLIB = ranlib/RANLIB = "${ANDROID_TOOLCHAIN}\/bin\/i686-linux-android-ranlib"/g' ${BOOST_ROOT}/tools/build/src/tools/gcc.jam; + fi + # android-x86_64 + - if [[ $os_build == "android" && $os_arch == "x86_64" ]]; then + export run_bjam="${BOOST_ROOT}/b2 --user-config=config/android-x86_64-config.jam variant=release toolset=clang-x86_64 target-os=android location=bin/release/android/x86_64"; + export run_objcopy="${ANDROID_TOOLCHAIN}/bin/x86_64-linux-android-objcopy --only-keep-debug bin/release/android/x86_64/libjlibtorrent.so bin/release/android/x86_64/libjlibtorrent.so.debug"; + export run_strip="${ANDROID_TOOLCHAIN}/bin/x86_64-linux-android-strip --strip-unneeded -x bin/release/android/x86_64/libjlibtorrent.so"; + export run_readelf="${ANDROID_TOOLCHAIN}/bin/x86_64-linux-android-readelf -d bin/release/android/x86_64/libjlibtorrent.so"; + export PATH=$ANDROID_TOOLCHAIN/x86_64-linux-android/bin:$PATH; + sed -i 's/RANLIB = ranlib/RANLIB = "${ANDROID_TOOLCHAIN}\/bin\/x86_64-linux-android-ranlib"/g' ${BOOST_ROOT}/tools/build/src/tools/gcc.jam; + fi + # linux-x86 + - if [[ $os_build == "linux" && $os_arch == "x86" ]]; then + export run_bjam="${BOOST_ROOT}/b2 --user-config=config/linux-x86-config.jam variant=release toolset=gcc-x86 target-os=linux location=bin/release/linux/x86"; + export run_objcopy="objcopy --only-keep-debug bin/release/linux/x86/libjlibtorrent.so bin/release/linux/x86/libjlibtorrent.so.debug"; + export run_strip="strip --strip-unneeded -x bin/release/linux/x86/libjlibtorrent.so"; + export run_readelf="readelf -d bin/release/linux/x86/libjlibtorrent.so"; + fi + # linux-x86_64 + - if [[ $os_build == "linux" && $os_arch == "x86_64" ]]; then + export run_bjam="${BOOST_ROOT}/b2 --user-config=config/linux-x86_64-config.jam variant=release toolset=gcc-x86_64 target-os=linux location=bin/release/linux/x86_64"; + export run_objcopy="objcopy --only-keep-debug bin/release/linux/x86_64/libjlibtorrent.so bin/release/linux/x86_64/libjlibtorrent.so.debug"; + export run_strip="strip --strip-unneeded -x bin/release/linux/x86_64/libjlibtorrent.so"; + export run_readelf="readelf -d bin/release/linux/x86_64/libjlibtorrent.so"; + fi + # windows-x86 + - if [[ $os_build == "windows" && $os_arch == "x86" ]]; then + sed -i 's/ JNICALL Java_com_frostwire/ JNICALL _Java_com_frostwire/g' swig/libtorrent_jni.cpp; + export run_bjam="${BOOST_ROOT}/b2 --user-config=config/windows-x86-config.jam variant=release toolset=gcc-x86 target-os=windows location=bin/release/windows/x86"; + export run_strip="i686-w64-mingw32-strip --strip-unneeded -x bin/release/windows/x86/libjlibtorrent.dll"; + export run_readelf="eval objdump -p bin/release/windows/x86/jlibtorrent.dll | grep DLL"; + fi + # windows-x86_64 + - if [[ $os_build == "windows" && $os_arch == "x86_64" ]]; then + export run_bjam="${BOOST_ROOT}/b2 --user-config=config/windows-x86_64-config.jam variant=release toolset=gcc-x86_64 target-os=windows location=bin/release/windows/x86_64"; + export run_strip="x86_64-w64-mingw32-strip --strip-unneeded -x bin/release/windows/x86_64/libjlibtorrent.dll"; + export run_readelf="eval objdump -p bin/release/windows/x86_64/jlibtorrent.dll | grep DLL"; + fi + # macosx + - if [ $os_build == "macosx" ]; then + export run_bjam="${BOOST_ROOT}/b2 --user-config=config/macosx-x86_64-config.jam variant=release toolset=darwin-x86_64 target-os=darwin location=bin/release/macosx/x86_64"; + export run_strip="strip -S -x bin/release/macosx/x86_64/libjlibtorrent.dylib"; + export run_readelf="otool -L bin/release/macosx/x86_64/libjlibtorrent.dylib"; + fi + +script: + + - cd $OPENSSL_SOURCE + - $run_openssl_configure + - echo "Compiling openssl...(remove &> /dev/null to see output)" + - make #&> /dev/null + - make install_sw &> /dev/null + - cd .. + - export OPENSSL_ROOT=$PWD/openssl + + - cd swig + - $run_bjam + - $run_objcopy + - $run_strip + - if [[ $os_build == "windows" && $os_arch == "x86" ]]; then + mv bin/release/windows/x86/libjlibtorrent.dll bin/release/windows/x86/jlibtorrent.dll; + fi + - if [[ $os_build == "windows" && $os_arch == "x86_64" ]]; then + mv bin/release/windows/x86_64/libjlibtorrent.dll bin/release/windows/x86_64/jlibtorrent.dll; + fi + - if [ $os_build == "macosx" ]; then + cd ..; + cp swig/bin/release/macosx/x86_64/libjlibtorrent.dylib .; + gradle test; + cd swig; + fi + - $run_readelf + - cd .. + +before_deploy: + - if [ -d swig/bin ]; then + cd swig/bin; + find . -type f | egrep -v '.*\.so$|.*\.dll$|.*\.dylib$|.*\.debug$' | xargs rm; + find . -empty -type d | xargs rm -r; + fi + - cd ../.. + +deploy: + provider: s3 + access_key_id: $S3_ACCESS_KEY + secret_access_key: $S3_SECRET_KEY + bucket: $S3_BUCKET + skip_cleanup: true + local_dir: swig/bin + on: + all_branches: true diff --git a/frostwire-jlibtorrent/CHANGE_VERSION_CHECKLIST.txt b/frostwire-jlibtorrent/CHANGE_VERSION_CHECKLIST.txt new file mode 100644 index 0000000..72759bf --- /dev/null +++ b/frostwire-jlibtorrent/CHANGE_VERSION_CHECKLIST.txt @@ -0,0 +1,4 @@ +bump version numberc in: + - build.gradle 'version', then run swig/run-swig.sh, then build-xxx.sh and gradle build + - changelog.txt + diff --git a/frostwire-jlibtorrent/FUNDING.yml b/frostwire-jlibtorrent/FUNDING.yml new file mode 100644 index 0000000..b5d14ad --- /dev/null +++ b/frostwire-jlibtorrent/FUNDING.yml @@ -0,0 +1 @@ +github: gubatron \ No newline at end of file diff --git a/frostwire-jlibtorrent/LICENSE.md b/frostwire-jlibtorrent/LICENSE.md new file mode 100644 index 0000000..a0f9d97 --- /dev/null +++ b/frostwire-jlibtorrent/LICENSE.md @@ -0,0 +1,23 @@ +The MIT License +=============== + +Copyright (C) 2016 FrostWire, LLC. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject +to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/frostwire-jlibtorrent/README.md b/frostwire-jlibtorrent/README.md new file mode 100644 index 0000000..28790c8 --- /dev/null +++ b/frostwire-jlibtorrent/README.md @@ -0,0 +1,131 @@ +frostwire-jlibtorrent +===================== +![JLibtorrent Logo](logo/jlibtorrent_logo_color.png) + +A swig Java interface for libtorrent by the makers of FrostWire. + +Develop libtorrent based apps with the joy of coding in Java. + +[Discord Developer Chatroom](https://discord.com/channels/461752211802947585/461766946669461515) + +Using +======== + +[Download the latest release .jars](https://github.com/frostwire/frostwire-jlibtorrent/releases) + +All platforms will need you to use at least 2 `.jar` files. + +The `.jar` with the java classes -> `jlibtorrent-w.x.y.z.jar` and a secondary `.jar`s containing the JNI binary library for the particular OS and CPU architecture. + +In the case of desktop operating systems, you might want to extract the shared library inside the jar (.dll, .so, .dylib) and place it in a folder specified by the `java.library.path` + +The secondary jars are: + - Windows: `jlibtorrent-windows-w.x.y.z.jar` (x86 and x86_64 .dlls) + - Mac: `jlibtorrent-macosx-w.x.y.z.jar` (x86_64 .dylib) + - Linux: `jlibtorrent-linux-w.x.y.z.jar` (x86 and x86_64 .so) + +In the case of Android, make sure to put the following 3 jars in your project's `libs` folder (see [FrostWire for Android's](https://github.com/frostwire/frostwire/tree/master/android/libs) as an example): + - `jlibtorrent-w.x.y.z.jar` + - `jlibtorrent-android-arm-w.x.y.z.jar` + - `jlibtorrent-android-x86-w.x.y.z.jar` + +If you use ProGuard to obfuscate/minify make sure to add the following statement + +`-keep class com.frostwire.jlibtorrent.swig.libtorrent_jni {*;}` + + +Note that there are multiple version of jlibtorrent for different platforms: `jlibtorrent`, `jlibtorrent-windows`, `jlibtorrent-linux`, `jlibtorrent-macosx` and `jlibtorrent-android-`. These are all different artifacts. + +For examples look at https://github.com/frostwire/frostwire-jlibtorrent/tree/master/src/test/java/com/frostwire/jlibtorrent/demo + +Architectures supported: + +- Android (armeabi-v7a, arm64-v8a, x86, x86_64) +- Linux (x86, x86_64) +- Windows (x86, x86_64) +- Mac OS X (x86_64) + +Building with Travis +==================== + +You need: + +- Setup a travis account at http://travis-ci.org and get familiar with +the service if necessary. +- Open an account with Amazon Web Services (AWS) and get familiar with +S3 (for storage) and IAM (for users). +- Some familiarity with `git` commands. + +The process is: + +- Create a user in amazon IAM, let's suppose it is `user1`. Download +credentials for the keys. +- Create a bucket in amazon S3, let's suppose it is `jlibtorrent1`. +- Set the permission of the bucket according to your workflow, but at +least the `user1` should have permission to put/upload to the bucket. +See for example this bucket policy: +```json +{ + "Statement": [ + { + "Effect": "Allow", + "Principal": {"AWS":"arn:aws:iam:::user/user1"}, + "Action": "s3:PutObject", + "Resource": "arn:aws:s3:::jlibtorrent1/*" + }, + { + "Effect": "Allow", + "Principal": "*", + "Action": "s3:GetObject", + "Resource": "arn:aws:s3:::jlibtorrent1/*" + } + ] +} +``` +- Fork the project in github. +- Go to travis and enable the repository. +- Go to 'More options' > 'Settings' > 'Environment Variables' and set the +`S3_ACCESS_KEY, S3_SECRET_KEY, S3_BUCKET` variables using the values in the +credentials file for the user you created and the bucket name you created. +- Clone locally your repo, let's assume to the `jlibtorrent` folder and +checkout the stable branch: +```bash +$ git clone jlibtorrent +$ cd jlibtorrent +$ git checkout master +``` +- Verify in your travis online if the build already started. The build + could take about 40 minutes, be patient. +- When finished, check your s3 bucket for the binaries. +- To trigger a new build, just make a change or merge new changes from + the stable branch, commit and push. + +Building Locally (Mac and Linux) +================================ +Building on Travis is something recommended only once you know you're done with your work as builds can take above 30 minutes to finish for all platforms and architectures. + +When you're developing and debugging you need faster builds, and these can be performed locally with the help of build scripts in the `swig/` folder. + +Thre's a build script for each operating system, for example if you're on macos you can use the `build-macos.sh`, running it without setting things up should tell you about certain environment variables you'll need to set up. To understand the build process we recommend you read your corresponding build script and [`build-utils.shinc`](https://github.com/frostwire/frostwire-jlibtorrent/blob/master/swig/build-utils.shinc) + +The hacking and building process might require you to run the `run-swig.sh` script, we usually need to run this script if there are C++ api changes in libtorrent that require adjustments in `libtorrent.i` or `libtorrent.h`, this script will create automatic JNI wrappers in the outer source java folders. You should not run this script unless you know what you're doing. + +Then you run the build script for your OS, get to the parent folder and invoke +`gradle build` + +The gradle build will look in the swig folder for the JNI shared libraries and it will automatically package the native holding `.jar` files, the final jars will be in the `build/libs` folder. + +The windows build script is not finished, for now the windows build is done with travis builds. + +Projects using jLibtorrent +========================== +- [FrostWire](http://www.frostwire.com) (both desktop and android editions) +- [TorrentStream-Android](https://github.com/mianharisali/TorrentStream-Android) +- [Simple-Torrent-Android](https://github.com/masterwok/simple-torrent-android) +- [TorrentTunes-Client](https://github.com/dessalines/torrenttunes-client) +- [LibreTorrent](https://github.com/proninyaroslav/libretorrent) + +License +======== + +This software is offered under the MIT License, available [here](License.md). diff --git a/frostwire-jlibtorrent/build.gradle b/frostwire-jlibtorrent/build.gradle new file mode 100644 index 0000000..a06a41d --- /dev/null +++ b/frostwire-jlibtorrent/build.gradle @@ -0,0 +1,248 @@ +apply plugin: 'java' +apply plugin: 'signing' +apply plugin: 'maven' + +group 'com.frostwire' +archivesBaseName = 'jlibtorrent' +// Just changing version here should be all that's necessary to bump the version on the library +version '1.2.12.0' + +sourceCompatibility = '1.8' +targetCompatibility = '1.8' + +if (!hasProperty('ossrhUsername')) { + ext.ossrhUsername = '' +} + +if (!hasProperty('ossrhPassword')) { + ext.ossrhPassword = '' +} + +repositories { + mavenCentral() +} + +dependencies { + testCompile 'junit:junit:4.12' +} + +tasks.withType(Test) { + systemProperty "java.library.path", "." +} + +test { + testLogging { + events "passed", "skipped", "failed", "standard_out" + } +} + +task sourcesJar(type: Jar) { + classifier = 'sources' + from sourceSets.main.allSource +} + +task javadoc2(type: Javadoc) { + source = sourceSets.main.allJava +} + +task javadocJar(type: Jar, dependsOn: javadoc2) { + classifier = 'javadoc' + from javadoc2.destinationDir +} + +task nativeMacOSXJar(type: Zip) { + destinationDir file("$buildDir/libs") + baseName 'jlibtorrent-macosx' + extension 'jar' + from fileTree(dir: 'swig/bin/release/macosx', excludes: ['**/ed25519', '**/src'], include: '**/*libjlibtorrent.dylib') + into 'lib/' + rename(".dylib", "-${version}.dylib") +} + +task nativeWindowsJar(type: Zip) { + destinationDir file("$buildDir/libs") + baseName 'jlibtorrent-windows' + extension 'jar' + from fileTree(dir: 'swig/bin/release/windows', excludes: ['**/ed25519', '**/src'], include: '**/*jlibtorrent.dll') + into 'lib/' + rename(".dll", "-${version}.dll") +} + +task nativeLinuxJar(type: Zip) { + destinationDir file("$buildDir/libs") + baseName 'jlibtorrent-linux' + extension 'jar' + from fileTree(dir: 'swig/bin/release/linux', excludes: ['**/ed25519', '**/src'], include: '**/*libjlibtorrent.so') + into 'lib/' + rename(".so", "-${version}.so") +} + +task nativeAndroidArmJar(type: Zip) { + destinationDir file("$buildDir/libs") + baseName 'jlibtorrent-android-arm' + extension 'jar' + from fileTree(dir: 'swig/bin/release/android', include: 'armeabi-v7a/libjlibtorrent.so') + into 'lib/' + rename(".so", "-${version}.so") +} + +task nativeAndroidX86Jar(type: Zip) { + destinationDir file("$buildDir/libs") + baseName 'jlibtorrent-android-x86' + extension 'jar' + from fileTree(dir: 'swig/bin/release/android', include: 'x86/libjlibtorrent.so') + into 'lib/' + rename(".so", "-${version}.so") +} + +task nativeAndroidArm64Jar(type: Zip) { + destinationDir file("$buildDir/libs") + baseName 'jlibtorrent-android-arm64' + extension 'jar' + from fileTree(dir: 'swig/bin/release/android', include: 'arm64-v8a/libjlibtorrent.so') + into 'lib/' + rename(".so", "-${version}.so") +} + +task nativeAndroidX64Jar(type: Zip) { + destinationDir file("$buildDir/libs") + baseName 'jlibtorrent-android-x86_64' + extension 'jar' + from fileTree(dir: 'swig/bin/release/android', include: 'x86_64/libjlibtorrent.so') + into 'lib/' + rename(".so", "-${version}.so") +} + +artifacts { + archives sourcesJar + archives javadocJar + archives nativeMacOSXJar + archives nativeWindowsJar + archives nativeLinuxJar + archives nativeAndroidArmJar + archives nativeAndroidX86Jar + archives nativeAndroidArm64Jar + archives nativeAndroidX64Jar +} + +signing { + required { gradle.taskGraph.hasTask("uploadArchives") } + sign configurations.archives +} + +uploadArchives { + repositories { + mavenDeployer { + beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } + + addFilter('jlibtorrent') { artifact, file -> + artifact.name == 'jlibtorrent' + } + addFilter('jlibtorrent-macosx') { artifact, file -> + artifact.name == 'jlibtorrent-macosx' + } + addFilter('jlibtorrent-windows') { artifact, file -> + artifact.name == 'jlibtorrent-windows' + } + addFilter('jlibtorrent-linux') { artifact, file -> + artifact.name == 'jlibtorrent-linux' + } + addFilter('jlibtorrent-android-arm') { artifact, file -> + artifact.name == 'jlibtorrent-android-arm' + } + addFilter('jlibtorrent-android-x86') { artifact, file -> + artifact.name == 'jlibtorrent-android-x86' + } + addFilter('jlibtorrent-android-arm64') { artifact, file -> + artifact.name == 'jlibtorrent-android-arm64' + } + addFilter('jlibtorrent-android-x86_64') { artifact, file -> + artifact.name == 'jlibtorrent-android-x86_64' + } + + repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { + authentication(userName: ossrhUsername, password: ossrhPassword) + } + + snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { + authentication(userName: ossrhUsername, password: ossrhPassword) + } + + pom('jlibtorrent').withXml { + asNode().children().last() + pomData() + } + pom('jlibtorrent-macosx').withXml { + asNode().children().last() + pomData() + addDependency(asNode()) + + } + pom('jlibtorrent-windows').withXml { + asNode().children().last() + pomData() + addDependency(asNode()) + } + pom('jlibtorrent-linux').withXml { + asNode().children().last() + pomData() + addDependency(asNode()) + } + pom('jlibtorrent-android-arm').withXml { + asNode().children().last() + pomData() + addDependency(asNode()) + } + pom('jlibtorrent-android-x86').withXml { + asNode().children().last() + pomData() + addDependency(asNode()) + } + pom('jlibtorrent-android-arm64').withXml { + asNode().children().last() + pomData() + addDependency(asNode()) + } + pom('jlibtorrent-android-x86_64').withXml { + asNode().children().last() + pomData() + addDependency(asNode()) + } + } + } +} + +def pomData() { + return { + resolveStrategy = Closure.DELEGATE_FIRST + name 'frostwire-jlibtorrent' + description 'A swig Java interface for libtorrent by the makers of FrostWire.' + url 'https://github.com/frostwire/frostwire-jlibtorrent' + scm { + connection 'scm:git:git://github.com/frostwire/frostwire-jlibtorrent.git' + developerConnection 'scm:git:ssh:git@github.com/frostwire/frostwire-jlibtorrent.git' + url 'https://github.com/frostwire/frostwire-jlibtorrent' + } + licenses { + license { + name 'The MIT License' + url 'https://github.com/frostwire/frostwire-jlibtorrent/blob/master/LICENSE.md' + } + } + developers { + developer { + id 'gubatron' + name 'Angel Leon' + email 'gubatron@gmail.com' + } + developer { + id 'aldenml' + name 'Alden Torres' + email 'aldenml@gmail.com' + } + } + } +} + +def addDependency(root) { + def dependenciesNode = root.dependencies[0] + if (!dependenciesNode) { + dependenciesNode = root.appendNode('dependencies') + } + def depNode = dependenciesNode.appendNode('dependency') + depNode.appendNode('groupId', group) + depNode.appendNode('artifactId', archivesBaseName) + depNode.appendNode('version', version) +} diff --git a/frostwire-jlibtorrent/changelog.txt b/frostwire-jlibtorrent/changelog.txt new file mode 100644 index 0000000..9cdd34e --- /dev/null +++ b/frostwire-jlibtorrent/changelog.txt @@ -0,0 +1,682 @@ +1.2.12.0 + * lt:fix loading of DHT node ID from previous session on startup + * lt:use getrandom(), when available, and fall back to /dev/urandom + * lt:fix uTP issue acking FIN packets + * lt:validate HTTPS certificates by default (trackers and web seeds) + * lt:load SSL certificates from windows system certificate store, to authenticate trackers + * lt:introduce mitigation for Server Side Request Forgery in tracker and web seed URLs + * lt:fix error handling for pool allocation failure + +1.2.11.0 + * New TorrentHandle.inSession() [blocking method, do not use in main UI threads] + * New ability for SessionManager to build a paused session + * New SessionManager.start(SessionParams, session_flags_t) + * New SessionHandle.PAUSED (session_flag_t) and corresponding unit tests + * Removed TorrentStatus::State::ALLOCATING enum + * Removed torrent_status.state_t.unused_enum_for_backwards_compatibility_allocating + * libtorrent 1.2.11.0 update (471e772cb7038f1bf5f44c32a09eb42fbb80ee99) + * lt: upgraded to openssl 1.1.1l + * lt: fix issue with moving the session object + * lt: deprecate torrent_status::allocating. This state is no longer used + * lt: fix bug creating torrents with symbolic links + * lt: remove special case to save metadata in resume data unconditionally when added throught magnet link + * lt: fix bugs in mutable-torrent support (reusing identical files from different torrents) + * lt: fix incorrectly inlined move-assignment of file_storage + * lt: add session::paused flag, and the ability to construct a session in paused mode + * lt: fix session-pause causing tracker announces to fail + * lt: fix peer-exchange flags bug + * lt: allow saving resume data before metadata has been downloaded (for magnet links) + * lt: record blocks in the disk queue as downloaded in the resume data + * lt: fix bug in set_piece_deadline() when set in a zero-priority piece + * lt: fix issue in URL parser, causing issues with certain tracker URLs + * lt: use a different error code than host-unreachable, when skipping tracker announces + +1.2.10.0 + * libtorrent 1.2.10 update (70f1de3f7ec4012aaea420ff150ef0135d397706) + * lt: improve stat_file() performance on Windows + * lt: fix issue with loading invalid torrents with only 0-sized files + * lt: fix to avoid large stack allocations + * lt: add macro TORRENT_CXX11_ABI for clients building with C++14 against + libtorrent build with C++11 + * lt: removed deprecated wstring overloads on non-windows systems + * lt: drop dependency on Unicode's ConvertUTF code (which had a license + incompatible with Debian) + * lt: fix bugs exposed on big-endian systems + * lt: fix detection of hard-links not being supported by filesystem + * lt: fixed resume data regression for seeds with prio 0 files + * binaries: compiler upgraded from g++-5 to g++-7 + +1.2.8.0 + * add router.utorrent.com to list of DHT bootstrap nodes + * Android builds with new NDK r21d + * lt: validate UTF-8 encoding of client version strings from peers + * lt: don't time out tracker announces as eagerly while resolving hostnames + * lt: fix NAT-PMP shutdown issue + * lt: improve hostname lookup by merging identical lookups + * lt: fix network route enumeration for large routing tables + * lt: fixed issue where pop_alerts() could return old, invalid alerts + * lt: fix issue when receiving have-all message before the metadata + * lt: don't leave lingering part files handles open + * lt: disallow calling add_piece() during checking + * lt: fix incorrect filename truncation at multi-byte character + * lt: always announce listen port 1 when using a proxy + +1.2.7.0 + * libtorrent 1.2.7 update (ce0a85f783bec37484776a37fe3662279091ecc5) + * upgraded to boost 1.73.0 + * upgraded to openssl 1.1.1g + * lt: fix incorrect filename truncation at multi-byte character + * lt: always announce listen port 1 when using a proxy + * lt: add set_alert_fd in python binding, to supersede set_alert_notify + * lt: fix bug in part files > 2 GiB + * lt: add function to clear the peer list for a torrent + * lt: fix resume data functions to save/restore more torrent flags + * lt: limit number of concurrent HTTP announces + * lt: fix queue position for force_rechecking a torrent that is not auto-managed + * lt: improve rate-based choker documentation, and minor tweak + * lt: undeprecate upnp_ignore_nonrouters (but refering to devices on our subnet) + * lt: increase default tracker timeout + * lt: retry failed socks5 server connections + * lt: allow UPnP lease duration to be changed after device discovery + * lt: fix IPv6 address change detection on Windows + * lt: fix peer timeout logic + * lt: simplify proxy handling. A proxy now overrides listen_interfaces + * lt: fix issues when configured to use a non-default choking algorithm + * lt: fix issue in reading resume data + * lt: revert NXDOMAIN change from 1.2.4 + * lt: don't open any listen sockets if listen_interfaces is empty or misconfigured + * lt: fix bug in auto disk cache size logic + * lt: fix issue with outgoing_interfaces setting, where bind() would be called twice + * lt: add build option to disable share-mode + * lt: support validation of HTTPS trackers + * lt: deprecate strict super seeding mode + * lt: make UPnP port-mapping lease duration configurable + * lt: deprecate the bittyrant choking algorithm + * lt: add build option to disable streaming + +1.2.6.0 + * There was no 1.2.6 release, we waited and jumped all the way to 1.2.7.0 + +1.2.5.0 + * libtorrent 1.2.5 update (0f337b9ce7a1b0fc87f48843933b1c5c4dd5a9ec) + * New SettingsPack::dhtUploadRate(), SettingsPack::dhtUploadRate(int) + * lt:announce port=1 instead of port=0, when there is no listen port + * lt:fix LSD over IPv6 + * lt:support TCP_NOTSENT_LOWAT on Linux + * lt:fix correct interface binding of local service discovery multicast + * lt:fix issue with knowing which interfaces to announce to trackers and DHT + * lt:undeprecate settings_pack::dht_upload_rate_limit + +1.2.4.0 + * libtorrent 1.2.4 update (ad83b1c0eb293b63c69f7879ca6ba2381369f77f) + * Java source compatibility upgraded from 1.7 to 1.8 + * lt:fix binding TCP and UDP sockets to the same port, when specifying port 0 + * lt:fix announce_to_all_trackers and announce_to_all_tiers behavior + * lt:fix suggest_read_cache setting + * lt:back-off tracker hostname looksups resulting in NXDOMAIN + * lt:lower SOCKS5 UDP keepalive timeout + * lt:fix external IP voting for multi-homed DHT nodes + * lt:deprecate broadcast_lsd setting. Just use multicast + * lt:deprecate upnp_ignore_nonrouters setting + * lt:don't attempt sending event=stopped if event=start never succeeded + * lt:make sure &key= stays consistent between different source IPs (as mandated by BEP7) + * lt:fix binding sockets to outgoing interface + * lt:add new socks5_alert to trouble shoot SOCKS5 proxies + +1.2.3.0 + * libtorrent 1.2.3 update (b5bf6c3260bd726b0181671625c007be5ad49845) + * using android NDK r20b + * upgraded to boost 1.72.0 + * upgraded to openssl 1.1.1d + * swig version 4.0.1 (from 3.0.12) + * lt:fix erroneous event=completed tracker announce when checking files + * lt:promote errors in parsing listen_interfaces to post listen_failed_alert + * lt:fix bug in protocol encryption/obfuscation + * lt:fix buffer overflow in SOCKS5 UDP logic + * lt:fix issue of rapid calls to file_priority() clobbering each other + * lt:clear tracker errors on success + * lt:optimize setting with unlimited unchoke slots + * lt:fixed restoring of trackers, comment, creation date and created-by in resume data + * lt:fix handling of torrents with too large pieces + * lt:fixed division by zero in anti-leech choker + * lt:fixed bug in torrent_info::swap + +1.2.2.0 + * libtorrent 1.2.2 update (d5b56ca1876dc7b96ef9aac7c7584e1f61d25774) + * using android NDK r20 (released June 2019) + * new local build script for android x86_64 (api level 20) + * updated to boost 1.71.0 + * upgraded openssl to 1.1.1c + * compiled with std=c++14 (up from c++11) + * lt:pick contiguous pieces from peers with high download rate + * lt:fix error handling of moving storage to a drive letter that isn't mounted + * lt:fix integer overflow in http parser + * lt:fix integer overflow in chunked http parser + * lt:factor out and unit test parts of the DHT routing table logic + * lt:improve sanitation of symlinks, to support more complex link targets (file_storage::sanitize_symlinks) + * lt:avoid empty dht routing table buckets + * lt:fix dht_stats_alert routing table stats for multi-homed clients + * lt:fix entry assignment from bdecode_node and lazy_entry + * lt:fix use-after-free issue in socket_type + * lt:fix error code messages when building without deprecated functions + * lt:feature to disable DHT, PEX and LSD per torrent + * lt:fix seeding of random number generator on mingw + * lt:fix issue where trackers from magnet links were not included in create_torrent() + * lt:extend the whole_pieces_threshold setting to also request contiguous pieces from fast peers + * lt:fix error handling of moving storage to a drive letter that isn't mounted + * lt:don't leak exceptions out of handler callbacks in resolver + * lt:ensure headers build independently + * lt:fix unit template's mutating operators to give them proper ref qualifiers + +1.2.1.0 + * using android NDK r19c (released January 2019) + * updated to boost 1.70.0 + * lt:make sure session cleanup releases all its references to torrents + * lt:track the mapped port for each NAT mapping transport + * lt:optimize resolve_duplicate_filenames_slow() + * lt:use a more restrictive limit on number of pieces allowed in a torrent + * lt:improve disk I/O logging + * lt:always flush disk I/O job queue before shutdown + * lt:fix typo in validation of reject messages. Make on_choke a bit more defensive + * lt:tighten up validation of dont-have messages + * lt:tighten up validation of reject messages, to ensure consistency of stats counters + * lt:tighten up message size checks + * lt:update symlinks to conform to BEP 47 + * lt:source code cleanup, performance and stability + +1.2.0.20 + * updated to libtorrent RC_1_2 HEAD + * updated to OpenSSL 1.1.1b + * lt:add support for creating symlinks, for torrents with symlinks in them + * lt:allow padfiles of equal size to share the same filename + * lt:fix seed_mode flag + * lt:support numeric suffixes to magnet link parameter names + * lt:added FrostWire's client ID + * lt:don't try to hash empty read in do_uncached_hash + * lt:don't copy a vector into the async_write operation for iovec + * lt:on linux, link against lbdl when using openssl + * lt:use UNC paths pervasively on windows + * lt:source code cleanup, performance and stability + +1.2.0.19 + * libtorrent release 1.2.0 + * using android NDK r18b + * updated to boost 1.69.0 + * updated to OpenSSL 1.1.1a + * fixed activeDhtLimit SettingsPack setter + * development: new local build scripts for macosx, android, linux, windows + * lt:only allow cwnd to be reduced so often (utp) + * lt:avoid announcing local ip to private tracker + * lt:don't treat loss of MTU probe packet as a congestion signal (utp) + * lt:make sure we reset the duplicate ack counter every time we don't receive + a duplicate ack (utp) + * lt:remove old (incompatible) sequence number build option (utp) + * lt:don't leave slow-start just because we hit the advertized receive window + * lt:simplify and improve the uTP deferred ACK logic to respond earlier + * lt:improve logic for fast-retransmitting packets on incoming SACK + * lt:improve utp verbose logging a bit and make the parser pull out more + metrics + * lt:restore permissions on directories to 1.1. i.e. rely on umask + * lt:minor fix to invalid_request_alert logging + * lt:add assignment operator to span + * lt:fix %u -> %d format codes + * lt:fix deprecation markup in torrent_status + * lt:tweak heuristic of how to interpret url seeds in multi-file torrents + * lt:added more TORRENT_DEPRECATED_ENUM and deprecated unused aio_max in + settings_pack + * lt:take a string_view in setting_by_name + * lt:fix typo in peer log + * lt:deprecate start_default_features flag, it's only used in deprecated API + * lt:remove verbose peer logging + * lt:make stack_allocator::format_string() grow the buffer for large strings + * lt:move where socket buffers are set up, to happen after the socket is + opened. log errors in the peer's log instead of session and torrent + * lt:add stats counter for the number of outstanding async_accept calls + * lt:fix potential issue where the dht port message is sent before the peer + handshake + * lt:correct %u format code for pieces in printf() calls + * lt:attempt to fix an assert for a newly connected peer that disconnects just + as we receive the metadata + * lt:don't use page aligned disk buffers + * lt:include &ipv4= for private trackers + * lt:add support for &ipv4= tracker argument + * lt:use new bdecoder in ut_metadata class + * lt:fix redundant bytes overflow + * lt:check for self-assignment in bitfield operator= + * lt:initialize bencoded ints with zero when constructed + * lt:exit natpmp::on_reply earlier if we're shutting down + * lt:fix setting ipv6 interface + * lt:a better fix to the ssl port announce bug + * lt:perfect forward async handlers for udp_socket to underlying asio socket + * lt:move the whole add_torrent_params object into save_resume_data_alert + * lt:actually fix the issue with the second tracker announce with port 0 + * lt:remove redundant MTU boundary checks + * lt:fix of asio-debugging build in natpmp. resend_request could be called + directly, not only as a handler for an async operation + * lt:fix move_storage with save_path with a trailing slash + * lt:only make snubbed peers invert the piece picking strategy when we're + doing rarest first + * lt:ssl listen port fix and improved tracker announce logging + * lt:properly tear down the disk_io_thread object in set_piece_hashes() when + exiting via an exception + * lt:make throwing versions of read_resume_data + * lt:fix overflow in sliding_average in the case of very high download rates + * lt:renamed debug_notification to connect_notification + * lt:fix issue in udp_socket with unusual socket failure + * lt:utp close-reason use after free fix + * lt:source code cleanup, performance and stability + + +1.2.0.18 + + * using android NDK r17c + * updated to boost 1.68.0 + * updated to OpenSSL 1.1.1 + * expose to java SWIG api the aux::arm_neon_support flag for android + runtime verification + * removed hack of custom getauxval definition + * removed hack of fgetpos fsetpos + * removed hack of mulodi4 + * null check protection in EnumNet + * added new constructor to TorrentInfo from byte array + * improved API for AnnounceEntry + * added AnnounceEndpoint java API, it is a lightweight class + * convert ErrorCode to a lightweight class + * convert PeerInfo to a lightweight class, client is UTF-8 decoded + * Vectors.byte_vector2string supports only ASCII and UTF-8 + * lt:fix redundant flushes of partfile metadata + * lt:fix overflow in calc_bytes(), fix bug in piece picker accounting of + filtered pad blocks + * lt:improve type-safety of the severity parameter to + peer_connection::disconnect() + * lt:fix seed count when attaching a peer is aborted + * lt:add option to ignore min-interval from tracker, when + force-reannouncing a tracker + * lt:raise default value for active_limit to 500, since it's supposed to be + an upper sanity check limit + * lt:make the print function for entry actually be json-like + * lt:fall back to copy+remove if rename_file fails + * lt:improve handling of filesystems not supporting fallocate() + * lt:improve piece picker performance in tracking pad-blocks + * lt:force proxy no longer disables the DHT + * lt:simplify total_have/have_want/total_want. Make piece_picker track pad + blocks and compute byte-progress at block granularity + * lt:fix issue in self-connection detection introduced with the change to + generate unique peer-ids for each connection. + * lt:fix exporting files to avoid overwriting existing files, before + exporting anything from a parts file, check whether it contains valid data + * lt:improve connect-boost feature, to make new torrents quickly connect + peers + * lt:add a few more stats counters measuring outgoing connection attempts. + simplify session_stats_header_alert by posting it on first call to + post_session_stats() instead of making it gated by the alert_mask + * lt:remove dead code from piece picker + * lt:tweak the auto-cache-size logic to have slightly smaller cache + * lt:fix deprecation of mmap_cache + * lt:add missing increment of on_disk_counter and num_blocks_hashed counters + * lt:apply piece priorities immediately, even though file priority updates + are async. save both file- and piece priorities in fast resume + * lt:simplify natpmp gateway and local address discovery + * lt:fix typo in #if tests for TORRENT_DISABLE_ENCRYPTION + * lt:in torrent_handle::id(), only shift down the pointer by 10 bits + * lt:add piece index range checks on have_piece() and read_piece() + * lt:make metric_type_t an enum class, deprecate the in-class enum values + * lt:only post alerts for newly opened listen sockets, and only attempt to + map ports for newly opened sockets + * lt:remove special handling of uTP peers, uTP connections are no longer + exempt from rate limits by default + * lt:make natpmp deal with address_v6 instead of the bytes_type, and use + write_address instead of memcpy + * lt:fix exporting files from partfile while seeding + * lt:set port in handshake based on source address + * lt:fix Windows "file::preadv" emulation EOF handling + * lt:fix windows async read EOF handling + * lt:fix bug in read/write resume data functions + * lt:dht don't set implied_port for SSL torrents + * lt:dht announce with per-interface listen port + * lt:deprecate (and disable) the force-proxy setting. Instead, always use + the proxy when set, never fall back on circumventing it + * lt:move the file priority vector throught the disk_io_job, to avoid copies + * lt:raise priority of cache_flushed_alert and post it unconditionally when + triggered explicitly by the client + * lt:fix some validation issues in read_resume_data() + * lt:bump the minimum number of hash jobs per thread from 2 to 4 + * lt:fix deadlock when loading libtorrent Dll + * lt:fix torrent files prioritization + * lt:fix some unintentional copies (with explicit moves) + * lt:qualify some assignment operators to disallow assignment to temporaries + * lt:fix missing move of file object in part_file + * lt:use more threads when creating torrents + * lt:bump checking_mem_usage default setting + * lt:enable coalesce_reads and coalesce_writes by default on windows + * lt:set the minimum number of checking jobs based on the number of hasher + threads + * lt:fix coalesce read bug + * lt:introduce a fast-path for the hash disk job + * lt:fix race condition in part_file + * lt:fix parts file i/o errors + * lt:fixed sign implicit conversion warnings and loop logic in new enum_net + code + * lt:improve the API for iterating over all files and pieces, with the new + strong index types + * lt:deprecate network-threads setting + * lt:scrape_reply_alert should be high priority, since it's triggered by the + client + * lt:add support for multi-home NAT-PMP and Port Control Protocol (PCP) + * lt:report transport version in NAT-PMP send/receive logs + * lt:return a vector of mapping ids from add_port_mapping + * lt:don't re-map all listen sockets when changing listen_interfaces + * lt:create a natpmp instance for each listen socket + * lt:enum_routes fixes on Linux + * lt:fix scope_id in enum_routes on Windows + * lt:remove UNC prefixes from device names on Windows + * lt:fix netmask of routes on Windows + * lt:deliver notification of alerts being dropped via alerts_dropped_alert + * lt:raise priority of fastresume_rejected_alert + * lt:don't use the partfile for existing files when their priority is 0 + * lt:set the hidden attribute when creating the part file + * lt:only start a new accept request on new listen sockets, fix mapping new + listen sockets when re-mapping is not requested + * lt:don't change state to downloading if the torrent is finished + * lt:bump `file_error_alert` priority + * lt:fix address of point-to-point interfaces + * lt:don't enable reuse-address for UDP sockets, as it will always succeed + and not get any incoming packets + * lt:account for partially downloaded pieces when announcing as a seed + * lt:fix bandwidth allocation + * lt:don't attempt to make uTP connections if we don't have any outgoing UDP + sockets + * lt:fix empty outgoing interfaces for UDP sockets + * lt:only allow pinged nodes into the DHT routing table + * lt:introduce a recursive mutex to protect the alert_manager, and hold the + mutex while calling user callbacks and plugin hooks + * lt:revise alert priorities / torrent::on_resume_data_checked issue + * lt:save the number of idle threads locally in + disk_io_thread_pool::thread_active + * lt:fix use after free in flush_range and flush_iovec + * lt:honor torrent abort even on file check error + * lt:use settings_pack::urlseed_wait_retry for default retry with http seeds + * lt:fix storage initialization + * lt:strtoll() returns LLONG_MAX if the input overflows, handle this case + properly in the http parser + * lt:remove the global cache of the current time, just use clock::now() + * lt:deprecated alert::progress_notification alert category, split into + finer grained categories + * lt:disk_io_thread abort_hash_jobs duplicate code refactor + * lt:fix part-file header allocation + * lt:fix potential fd leak in enum_net_interfaces + * lt:don't perform DNS lookups for the DHT bootstrap unless DHT is enabled + * lt:avoid calls to .address() when looking for endpoint protocol + * lt:removed unnecessary loop in request_a_block + * lt:fix changing file priorities while checking interrupts checking + * lt:fix issue where the current tracker would be skipped for the next + tracker in the same tier + * lt:remove redundant check in tracker announce + * lt:minor fixes in utp_socket_impl + * lt:stat files in the disk thread, in default_storage::initialize() + instead of the constructor + * lt:dynamically load getauxval so as to support older android devices + * lt:track whether a file is eligible for using the partfile on a per-file + basis + * lt:define NETLINK_NO_ENOBUFS and IFA_D_DADFAILED if they don't exist + * lt:fix reporting &redundant= in tracker announces + * lt:fix windows build with UNC paths disabled + * lt:fix issue querying block size from torrent before metadata has been + received + * lt:source code cleanup, performance and stability + +1.2.0.17 + + * added EnumNet java API to help query the device network state/status/info + * compiling with -mstackrealign for android x86, some devices have stack + alignment issues + * lt:fix tie-break in duplicate peer connection disconnect logic + * lt:fix issue with SSL tracker connections left in CLOSE_WAIT state + * lt:defer truncating existing files until the first time we write to them + * lt:fix issue when receiving a torrent with 0-sized padfiles as magnet link + * lt:fix issue resuming 1.0.x downloads with a file priority 0 + * lt:fix torrent_status::next_announce + * lt:turn piece picker option flags into a proper type + * lt:fix pad-file scalability issue + * lt:made coalesce_reads/coalesce_writes settings take effect on linux + and windows + * lt:source code cleanup, performance and stability + +1.2.0.16 + + * using version in native library names + * updated to boost 1.66.0 + * lt:use unique peer_ids per connection + * lt:fix tracker connection bind issue for IPv6 trackers + * lt:fix error handling of merkle torrents + * lt:fix error handling of unsupported hard-links + * lt:raise auto piece size selection limit to 16 MB in create_torrent() + * lt:mark up performance counter operations as noexcept + * lt:fix noexcept marking on entry, and make move assignment + * lt:using make_address instead of deprecated from_string when boost>=1.66 + * lt:block_size is a constant, no need in passing it around as a variable + * lt:remove_peer() and attach_peer() error handling + * lt:support forced shutdown/destruction of torrent objects + * lt:improve error handling during session shutdown + * lt:handle serious errors in on_accept_connection handler + * lt:deprecate save_encryption_settings + * lt:handle errors in peer_connection + * lt:support asio handler allocators in deferred_handler + * lt:don't heap-allocate handlers for incoming UDP packets + * lt:make the chunk header parser properly fail at end of buffer, and not + require zero terminated strings + * lt:add getters for peer_class_filter and peer_class_type_filter + * lt:attempt to fix disconnections when torrents enter upload mode due to + failures + * lt:fix local network address mappings + * lt:deprecate status_code from tracker_error_alert + * lt:make torrent_handler::set_priority() to use peer_classes + * lt:improve type safety of plugin interface + * lt:introduce a proper type for pex flags to improve type-safety + * lt:fix reopening of listen sockets when disabling force-proxy + * lt:fix build against boost-1.66, specifically the boost.asio changes + * lt:fix asio debugging + * lt:fix rate limit utp feature + * lt:fix i2p support + * lt:source code cleanup, performance and stability + +1.2.0.15 + + * added java API to download magnet uri + * fixed issue with prioritize_files swig wrapper + * API change in TorrentHandle#saveResumeData, now it pass empty flags + by default + * using android NDK r16b + * updated to OpenSSL 1.1.0g + * lt:fix loading resume data when in seed mode + * lt:fix incorrect use of make_tick_handler + * lt:fix issue with initializing settings on session construction + * lt:implemented support for magnet URI extension, select specific file + indices for download, BEP53 + * lt:fix issue with receiving interested before metadata + * lt:generate random keys for use in tracker announces, unique per torrent + and the listen interface + * lt:fix IPv6 tracker announce issue + * lt:don't early move shared_ptr plugin in torrent::add_extension_fun + * lt:fix force-proxy regression (udp sockets would not be opened) + * lt:restore path sanitization behavior of ':' + * lt:make tracker announces happen even if there are no open listen sockets + * lt:fix issue where new listen sockets would not be opened when leaving + force_proxy mode + * lt:make sure the cork destructor doesn't leak exceptions + * lt:stop posting alerts when the session is shutting down, solves some + issues around destruction order + * lt:add API to query whether alerts have been dropped or not + * lt:keep updating aux::time_now() while there are announces, fixes an + infinite loop during shutdown + * lt:source code cleanup, performance and stability + +1.2.0.14 + + * fixed invalid handling of download_priority_t and swig wrapper + +1.2.0.13 + + * enable full SSL support in libtorrent + * compiling with -fvisibility=hidden and -Os + * using android NDK r16 beta2 + * updated to boost 1.65.1 + * internal session in SessionManager blocks privileged ports and + only allows 80 and 443 for possible web seeds connections + * lt:enable/disable the internal ip notifier with new setting + * lt:fix issue of null m_part_file in default_storage readv/writev + * lt:added reopen_network_sockets method to allow manual reopen of + listen/outgoing sockets + * lt:using NETLINK_NO_ENOBUFS to ignore ENOBUFS in netlink based ip notifier + * lt:add limit of max 50 upnp mappings and recover free global mappings + * lt:creating part file if needed only in set_file_priorities + * lt:fix full allocation failure on APFS + * lt:make parse_magnet_uri return the add_torrent_params instead of + taking an in-out parameter + * lt:pick standard std::aligned_union if using clang + * lt:make disk_buffer_holder know the size of the buffer it holds, to fix + buffer overrun in chained_buffer + * lt:fix infinite loop when parsing certain invalid magnet links + * lt:don't delete pieces from cache with refcount > 0 + * lt:don't try to connect to a global address with a local source address + * lt:fix parsing of torrents with certain invalid filenames + * lt:fix leak of peer_class objects (when setting per-torrent rate limits) + * lt:more strict filename sanitation + * lt:improve handling of case where a torrent file has no files in it + * lt:clean up and fix edge cases in update_path_index + * lt:fix issue with the name in single file torrents being sanitized away + * lt:make the chunk header parser a bit more strict and accurate + * lt:fix integer overflow in torrent_info + * lt:fix windows file preallocation issue + * lt:fix integer overflow in whole_pieces_threshold logic + * lt:DHT nodes should only handle requests on their socket + * lt:bump priority of storage_moved_alert and storage_moved_failed_alert + * lt:deprecate lock_files settings + * lt:fix uTP path MTU discovery issue on windows, DF bit was not set + correctly + * lt:select which DHT port to report based on the connection's local + endpoint + * lt:avoid port mapping of local IPv6 addresses + * lt:include endpoint in tracker alerts + * lt:hold an owning reference to storage objects in try_flush_write_blocks + * lt:read_piece: handle failure to allocate piece buffer + * lt:treat unique local IPv6 addresses as local + * lt:source code cleanup, performance and stability + +1.2.0.12 + + * updated to boost 1.65 + * storing external address and listen endpoints as strings for better + performance + * improved creation of peers part of magnet links + * lt:fixed netlink based network interface enumeration + * lt:remove support for using a pool allocator for disk buffers + * lt:fix IPv6 tracker support by performing the second announce in + more cases + * lt:fix issue in UTF-8 encoding validation + * lt:fix infinite loop when parsing torrents whose filenames have zeroes + * lt:fix invalid read in parse_int() in bdecode_node() + * lt:don't create web seed connections if the torrent is upload only + * lt:fix issue with very long tracker and web seed URLs + * lt:fix issue where paths were not correctly coalesced when adding files + to file_storage (used more memory than necessary) + * lt:fix issue of force-recheck or seeding from read-only media, torrents + with empty files in them + * lt:fix force-recheck issue (new files would not be picked up) + * lt:source code cleanup, performance and stability + +1.2.0.11 + + * using android NDK r15c + * using -O2 for all architectures + * lt:fix to clearing of piece picker in suggest_read_cache mode + * lt:fix memory issues with listen sockets references + * lt:fix bug where the resume data would fail to load the piece bitmask for + seeds when suggest_cache was enabled + * lt:submit disk jobs in read_piece() + * lt:add reserve entry::to_string() (optimization) + * lt:refactor several flags to torrent_handle::get_flags/set_flags + * lt:added block_uploaded_alert to allow client to track upload activity + * lt:fix inconsistency in file_priorities and override_resume_data behavior + * lt:remove call _strchr (optimization) + * lt:fix bandwidth rate limit calculation + * lt:fix handling of SSL listen sockets + * lt:don't move listen_socket_t when deleting sockets + * lt:avoid executing timed async task if the dht node is already removed + * lt:reject DHT put messages with incorrect bencoding + * lt:fix backwards compatibility issue when loading the torrent info dict + from resume data + * lt:fix regression where paused torrents could not have their queue + position changed + * lt:use netlink to enumerate network interfaces on linux + * lt:fix out-of-bounds read in bdecode + * lt:fix re-check issue after move_storage + * lt:avoid runtime fail with wrong arguments in upnp::update_map + * lt:handle invalid arguments to set_piece_deadline() + * lt:fix that move_storage did not work for torrents without metadata + * lt:fix check for fully allocated file on windows + * lt:defer reconnecting peers to after the second_tick loop + * lt:implemented support for BEP 51 + * lt:source code cleanup and stability + +1.2.0.10 + + * added swig interface to announce_endpoint + +1.2.0.9 + + * updated to OpenSSL 1.1.0f + * updated to boost 1.64 + * using android NDK r15 + * avoid automatic UTF-8 conversion in JNI side when using string_view + * lt:fix bandwidth rate limit calculation + * lt:fix for what appears to be an clang/llvm miscompilation + * lt:only listen on preferred IPv6 addresses on Windows + * lt:when stopping a torrent, never perform a name lookup on the tracker, + only announce to trackers whose IP we already know. This is expected to + make shutdowns not hang + * lt:fix previously faulty fix to enum_routes + * lt:delay 5 seconds before reconnecting socks5 proxy for UDP ASSOCIATE + * lt:fix NAT-PMP crash when removing a mapping at the wrong time + * lt:fix race condition in storage tick handling in disk_io_thread + * lt:keep iterating over endpoints if one is found to be done in + tracker announce loop + * lt:don't abort the existing torrent when attempting to add it again + * lt:fix IPv6 UTP assertion failure, close listen sockets after closing + all connections + * lt:fix branch factor overflow in DHT traversal algorithm + * lt:bind upnp requests to correct local address + * lt:don't combine reuseaddr and exclusive addruse on windows + * lt:save resume data when removing web seeds + * lt:fix proxying of https connections + * lt:fix race condition in disk I/O storage class + * lt:avoid extra sha1_hash memory copy in create_torrent + * lt:fix http connection timeout on multi-homed hosts + * lt:implemented multi-home support + * lt:make DHT bootstrapping more robust by not throwing away nodes + * lt:need_save_resume_data() will no longer return true every 15 minutes + * lt:create a separate DHT node for each listen socket + * lt:avoid connections to trackers when the event is stopped and + stop_tracker_timeout <= 0 + * lt:fix storage destruction order issue + * lt:fix memory leak in the disk cache + * lt:magnet links: unescape hash parameter + * lt:fix double free in disk cache + * lt:fix typo in natpmp::start + * lt:remove mutex-release hack in file_pool + * lt:source code cleanup and stability + +1.2.0.8 + + * fixed synchronization issues in SessionManager#stop + +1.2.0.7 + + * added support for ip_notifier in macOS + * added resolver_cache_timeout setting for internal host name resolver + * improved public API + * internal fixes in libtorrent + +1.2.0.7-RC3 + + * start of changelog diff --git a/frostwire-jlibtorrent/logo/jlibtorrent_logo.ai b/frostwire-jlibtorrent/logo/jlibtorrent_logo.ai new file mode 100644 index 0000000..7a31859 --- /dev/null +++ b/frostwire-jlibtorrent/logo/jlibtorrent_logo.ai @@ -0,0 +1,3802 @@ +%PDF-1.5 %âãÏÓ +1 0 obj <>/OCGs[5 0 R 31 0 R 55 0 R 101 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + Print + + + 2015-12-09T12:00:08-05:00 + 2015-12-09T12:00:08-05:00 + 2015-12-09T11:35:16-05:00 + Adobe Illustrator CC 2015 (Macintosh) + + + + 256 + 104 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAaAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A6F/ifzD/ANXG4/5GNnV/ lMX80PnX8o6j+fL5u/xP5h/6uNx/yMbH8pi/mhf5R1H8+Xzd/ifzD/1cbj/kY2P5TF/NC/yjqP58 vm2vmTzG7BU1C4ZmNFUOxJJ8MTpcQ/hCjtDUk0Jy+av+mPNYNHvp4zzMZEk3pkMOoPMrT6ch4GH+ aPk2/m9V1nIb1vKvvaGsebGIEd7cSlmZVEchkJK1rQIT4HfHwMHWI+SjV6s8pyPuN/coHzN5iBIO oXAI6jm2T/K4v5oav5R1H8+Xzd/ifzD/ANXG4/5GNj+UxfzQv8o6j+fL5u/xP5h/6uNx/wAjGx/K Yv5oX+UdR/Pl81ay8ya+97bo2oTlWkQMC7UILDIZNLiET6RybMPaGczAM5cx1ew5y76C7FXYq7FX EgAkmgG5JxUlDi/tGCmNzKrKXVolaRSFrWjIGHbpk/Dl12+xq8eB5G/dv9zvr9rQF2aNShk5So8a hR1qXCgfI4+GUePHrtte4I+9XR0kRXjYOjCqspqCD3BGRIrYtsZAixybwJdirsVdirwaT+8b5n9e dkOT5dLmtwodiraI7uqIpZ2ICqBUknoAMBNJAJNBXNhdA0dViYP6ZSV0jYNSu6uVI+fTI+IGzwZd dt63IH3uFhdMQI1ErFzGEidJGLCp2VCx7demDxB1T4Ejy33rYg/coMrKxVgVZTRlOxBHY5MFqIrY tYUOxV2Kt4q7FVeO2Ai9actFEwb0TxJ9RloOI6bVO5/X0yBnvQbY49rlsOnm3LeOQ6QqLeBiG9JC eqgAVYkseletK9MRDv3KyynlH0x7kPk2pwJBqNiOhxVXW8YqqTqJ40VljViQV5b1BFDsfHbIGHds 2jKeUvUA1NbUj9aEmW3BVWkK8eLsK8WFT4GnjjGe9HmiWPaxvH9Kjk2tX0//AHvtv+Mqf8SGQyfS fc24P7yPvD3POPfTXYq7FVCa6pJ6EIElzRWaMniFQtTkxofeg75OMNrPJqnk34Y7y/R3/jm5bNOS yTMZ5EZmjdwvwctqKAAOm3jiZnkNlGIXcvUR9ivkG12KqEtnGxeSImC4cBTPGF5UBqK1BB+kZMTI 2O4apYgbI9Mj1DSXJWYQXHGOSRmEFDX1FUA+Ao1D0xMNrHxUZKPDLYnl5/juRGQbXYq7FXg0n943 zP687Icny6XNbhQrx2wEQmnLRwuG9FgKl3WmwFRtU7n+OQM96HNtjj24pbDevN0l5IUeKICCCTjz hjLcW49OVSSd9/niIDmdysspogemJ6BQybU7FVeO8kCpHKBPBGGCQyFuK8uvGhBG+/zyBgOY2LbH KaAPqiOhdJbAxGaAtJCgX1WIAKM1diATtUbHES3o81lj2uO42vyUMm1OxVvFVS3jR5KO6oqqzEt3 4gniKd26DIyNBnjiCdzTriYzSs/EIpJ4Rr9lQTXivtjGNBE58Rvkp5Ji7FWReXfKE+pW73tyWhsV 2QigaRq0+GoOw8cwdVrRjPCN5fc7fQdlSzRM5bQ+9lX/ACrLQf8Af91/wcf/AFTzW/yrk7o/b+t3 n+h3B3z+Y/4lguqW8Gl63c2sama3hcpwlNSwK03Kgb77HNxhkcmMSOxLzGpxxwZpRG8Qa3QNxEsU zIriVBusi9GB3By6JsONkjwmgbX6f/vfbf8AGVP+JDBk+k+5lg/vI+8Pc8499NdiqncytFCzohlc fYjGxZj0FclEWaYZJGMbAsugiMUYUu0jVJaR6VJJJ7dt9sZSsrCPCKu1TIs3YqkPmHzVbaXNDZxU lvp3VfT7IrEDk1PwGZmm0ZyAyO0Q6vX9pxwEQG8yR8Pew3/lZPmH+W3/AOAb/mrNr/JeLzed/wBE Go/o/L9rNvLl/c6zoCXNyfTml9RecPwlaMVBWtaHNTqsYxZaHId70vZ+eWowCUtib5JrbSSPGfUU pIjFWBoa8TQNt/MN8xpAA7OdjkSN+f4+9VyLN2KvBpP7xvmf152Q5Pl0ua63iSSTi7iNAGZnIqBx BPbx6DBI0GUIgnc064m9aVnCLGp+zGgoqgdAMYxoUs58RuqU8kwdirK/KPkqXU2S8vlMenA1Vdw0 3sO4XxP3eI1ut1wx+mP1fc73svsg5iJz2x/7r9nn8k203yx5fubGC4azo0qBiPUl7/7LNX/KGb+d 9g/U9D/Iul/mfbL9bFNchttN1+aK3hU28XCkL1ZSGjUsDU17+O3bN3pZSyYQZHc/reT7QxwwamUY j0itvgEtniWOTijiRCAyuARWor38Oh98yYmw4E4gHY2p5Jg3iqID8LDirms8n7xOP7MYBU8vcudh 4b9srq5e5tusfPmfu8/ih8sanYqitLeyS/ha8ha4gDCsKtx5HtU0O3jlWYSMTwmi36YwGQGY4o9z 2e8RI7FkRQiKFCqooAARQADOVgblu+i5QBChyW6vqH6O024vfT9X0E5+nXjX2rQ0+7Dhx8cxHlbH VZ/CxynV8LxvV9Q/SGpXF76fpeu/P068qe1aCv3Z1OHHwQEe5881Wfxckp1XEVkrGSzhYuWaEtFx 47Kh+Nfi71ZnwgVI+f4/UxkbgN+W3w5j9LWn/wC99t/xlT/iQw5PpPuXB/eR94e55x76a7FUPKok vYFKhlhDS8uW6v8AYX4a7gqz5YDUT5/j9TTIXMeW/wAeQ/SiMrbnYqpXSXElu6W8ognYUSVl9QKf HjVa/fkoEA7iwwyCRiRE0e+r+x4wGmOuKZpDNL9ZAeVurEPSpzq9vD2FDhfOgT4+5s8XP4qGn2v1 y/trTlw+sSpFzpXjzYLWlRWlcnknwxMu4NWDF4mSMOXEQPm9i8v6R+iNLjsfV9f0yx9TjwryYt0q 3j45y2pz+LMyqn0HQ6XwMQhfFXwRPEJqAZVUevGRI1aMTGRwAWu+ztU0yF3H3H726qyX/OH3cvvK IytudirwaT+8b5n9edkOT5dLmrKxjsXoxBnfgw47FUo32qfzEbD+mQIuXubQagfM/d+Ah8saXYqr Wc8dvcpNJClwqGvoyV4Mf8qhFRkJxMhQNNmKYjIEgSroeT3KEgwxkAKCooo2A26DOQlzfTIcgxG1 upLTyslzGAZIbfmoapFQtd6UyzBATmInqWnV5TjxSmOcRbz7UtQm1C9ku5lVZJePIICF+FQopUnw zqcOIY4iI5B891WplmyGcqs93uppmMlinJmJgfgo4/CFerfap4g7E4QKl72JNwHkfvQ+WNLeKq8x P1W33YqOexFFDct+JpvtSuQj9RbZ/TH4qGTakSmnXb2Mt+IyLWJlRpDsCzfsjx98rOWIkI9S3R08 zA5K9I2tRg/v4/8AWX9eTlyLXD6g9wv/APeR/o/WM5DH9T6Xn+gpf5u/5RvUP+MR/WMv0X97H3uJ 2r/i0/c8czqXz1XQ0sJRVhWWOigfAaK+5NOortv45A/UPcf0No/uz7x7urtP/wB77b/jKn/Ehjk+ k+5cH95H3h7nnHvprsVUFA+vykhKmKPia/GaM9aiv2dxTJn6R7/1NQ/vDy5D39VfINqGudSs7e6t 7WSQC4umKwxDdjQEk08NuuWRxSkDIcg05NRCEoxJ9UuQROVtzxT/AKX3/R1/zMzrf8l/m/ofN/8A L/5/6XeX/wDjvab/AMxUH/JxcdT/AHcv6p+5dD/f4/68fve15yT6Qh5xW6ttkJBc/F9oDjT4fv3y ceRap/VHl1+7oiMg2uxV4NJ/eN8z+vOyHJ8ulzVpK/UIPt8fUl2I+CvGOvE+NKVHyyI+o+4fpbJf QOfM+7p+D8EPk2pHRaNeyaVPqhXhaQlVDt+2zMFovyrucpOeImIfxFyo6SZxHL/APtQOXOK93t/9 54v9Rf1Zx0uZfT8f0j3MMb/lDG/5hD/xHLtJ/ex97jdo/wCLz/ql53nVvnKvH/vDNXnT1Iug+CtH +0fGlafTkD9Q+P6G2P0HnzHu6qGTam8VRCAyWTqObGBvUoKcAj0RmPevIIMgdpe/8frbRvAjf07+ VHY/oRPl3S49U1q2sZXKRylubL1oilyB8+NMr1WU48ZkOjfoNMM+aMCaB/QLel+YvLzXXl9dL01I 4gjIY0YlVAU770O+aDTanhy8c93sdfoOPT+FiAFUw+H8uPMCyozNbgBgSebdAf8AVzZy7UxV1dBD 2f1AI+n5/sej3/8AvI/0frGaLH9T1+f6Cl/m7/lG9Q/4xH9Yy/Rf3sfe4nav+LT9zxzOpfPURMDH awxHmGcmV1NONGACED5VyuO8iW2e0QN+/wDU1p/+99t/xlT/AIkMOT6T7lwf3kfeHuece+muxVD3 BEVzDMxRUNYWZq8quRwAI/yhTfLI7gj4tMzwyB27vnyW6tetZaZdXiKHaCJpFU9CVFRXHDDjmI95 Rqsxx4pTH8It5PpvmCRfMcOr6izzFWLScAC1CpUBQSBQVzpcumBxHHDZ4TT64jUDNkss0/5WboP+ +Lr/AICP/qpmp/krJ3x+39T0f+iLB3T+Q/4p5/DKsusRyqCFkuAwB60Z65u5CsdeTykJcWYHvl+l f5f/AOO9pv8AzFQf8nFwan+7l/VP3MtD/f4/68fve15yT6Qh0IlvnYFGWBfTNAeYd6OwrSlOPE5Y do+/8fraRvMnb07ednf7qRGVtzsVeDSf3jfM/rzshyfLpc1aIGSzljAdmiYSqARwVKcZCR4k8Onh kDtIHv8AwP0tsd4Eb7b+Xn+hFeXNPg1DW7SzuK+jK558TQkBS1K+9Mr1WQwxmQ5hu0GCOXNGEuRL 1PW9Bjv9EbS7dltY/gEdFqqhGBpQEeGc7g1Bhk4zu9vrNEMuHwo+kbfYxT/lVs//AFcU/wCRR/5q zZfyuP5v2uj/ANDcv54+X7XoEacI1SteIAr8s0pNl6qIoUwlv+UMb/mEP/Ecv0n97H3uJ2j/AIvP +qXnedW+coiUGKzijIdXlYysCRwZAOMZoO4PPr45WN5E934P6G6QqAG++/w6fpQ+WNLeKqltKsUy u6epHUepFUryWu61GRkLDPHIRNkWO7vRunXsuj6pbX8PCYxjmoBqCHUqynYEMA1OmVZcYywMTs5G nzHT5Y5BRr9I5Mo/5Wlcf9W9P+Rp/wCac138kD+d9ju/9Esv5g+f7Hf8rSuP+ren/I0/804/yQP5 32L/AKJZfzB8/wBinP8AmbPLE0f1BRypv6h7Gv8ALko9lAG+L7GM/aKUhXB9v7ELrX5gXWpadLZL aJAswAd+ZY8a1oNh1yzB2bHHMSu6aNZ27PNjMOERvzY1bRIzGSSnpRUZ1LcC4BAKpsfiNfDbrmfI 9BzdNjiDueQ+3yCyaUyys5FK9FqSFA2CitTQDYZKIoUxnLiNqmn/AO99t/xlT/iQyOT6T7meD+8j 7w9zzj3012KrZYxJGUJpXoRSoPYivcHfCDRYyjYpBywC+sbjT7osGZDDLLQJzqorInUU3+jLRLgk JR9/7GiUPEgccu6ie/bmGKf8qtt+2oP/AMih/wA1Zsv5XP8AN+10X+hqP88/L9rv+VWwf9XF/wDk UP8AmrH+Vz/N+1H+hqP88/L9q+D8soIZ45RfsfTZXp6Y34mv82Rl2qSCOH7WcPZ2MZA8fLy/araZ +XNpZX8F2948v1d1kWMIFqyGq1NW2qMjl7TlOJjVW2absCGPIJmRPCb5MsnmMSjijSOzBVVRU7mn I7jYdTmtjG3eznw9LdbxNFCqO/qSAfvJCACzdzQYyNlccTEUTZVMizdirwaT+8b5n9edkOT5dLm3 BJ6UqSFQ4UgshqAw7qadj0wSFikwlRBRMFxNp17Be2kil0pJGR8XGtQUeoG43ByEoicTGTdDIcMx OB35/sLIv+Vna9/vi1/4CT/qpmD/ACVj75fZ+p2/+iLP3Q+R/wCKd/ys7Xv+We1/4CT/AKqY/wAl Y++X2fqX/RFn7ofI/wDFNH8zfMFNoLQH3ST/AKqY/wAlY++X2fqX/RFn7ofI/rSmXzRqcmmDTqRR w8QhZFYMVHapZuuWYezscJCQskNGp7bzZYGB4QD3f2pbbwq5ZnZUjRSx5EjlT9haA/Ea/wAczZSp 1cIg8+Q/FLZ5PVleQKEDElUFSFHZRXsOmMRQpjOVklZkmLeKuxVWguTGPSkBktiwZ4a0qQKVB34n 3yEoXuObZDJWx3j3LvqqSAG3lVmKszxOQjLxPSrcVetduO/tg465hPhg/Sfhyr58/h8lOS2uY6ep E6clDryUiqHowr298kJg8ixljkOYPe5LW5cMUidgg5OQpIVfE+AxMwOqjHI8gdlU20UDH6y4ZkK1 giZWLA7n94vNF2+Zr2yPGTy/HwZnGIn1H4A/p3A/GynPcvKFT7MEZYwwjogc1PXc/M75KMQN+rCe Qy2/hHIdylkmCvp/+99t/wAZU/4kMhk+k+5twf3kfeHuece+muxV2KqU1vHKVcjjLHy9KUAckLCh IrXJRkR7mE8Ylv1HI9ykbmeBT9ZjLoiqTPEpbkejful5MPorkuEHl8v2tfiSj9Q2HUfq5/eqC8sy zqJ4y0ZCyLyFVY9AwrsTg4JdzMZocrGzcl5aRmkk8aHkE+JlHxHou56nwwCEjyCyywHMj5rBdSSk C3iYjkyPJIGjC8R1CsAzb9KbHxyXABzLHxDL6R89v7fxuugthGRJIRJclQkk/EKWAJNKDoKnpglO 9hyZQx1ud5d6tkGx2KuxV4NJ/eN8z+vOyHJ8ulzW4UKsFy0VUI5wMQZISSFbj0rQg/TkZRv3tkMh jtzj1C8W0U1PQkUMeRMUrBOIG4+NuKtUfL5ZHiI5hkMYl9J+B2+3l+OSw2d2ArGCQBl9RSVahT+Y bdPfDxx72JxT7j38ujYsrwhmEEhVV9RjxagT+Y7dPfHjj3qMU+49/LouNtFDX15FLLxKxRMr8gdz 8allWg+fywcRPIMjjEfqPwG/28vxyWT3LygIB6cCEmKEElV5daVJNffDGNe9jPIZbco9ApZNrdir eKuxVVtrS5uZPTt4mlfb4UBJ3IA6e5pkZTERZNM8eKUzURZVrbSNUuYTNb2ss0QrV0QsNuvT5ZCW aETRIBbMelyzHFGJI9yIj0PzEpMcdpcAuhJVVbdB16dt8gdRi5khtjo9QNhGXL7Fn6J1654N9VuJ vUXlGSrNVRTp/wAF+OHxsceoCPyuedHhkb9/46qTaRqipza0lC8DKSUP2Fpyb5CoyQzQ5WGs6XKB fCeV8ujV1pWpWsXq3NtJDHyKc3Ugch1G/fDDNCRoEFcmmyQFyiQELljQr6f/AL323/GVP+JDIZPp PubcH95H3h7nnHvprsVdiqncXNvbR+rPIsUdQvJjQVY0A+k5KMDI0GGTJGAuRoIW41zSbYRme6SM SqHjLd1apB+WxyyOnnLkOTTk1mKFcUgL3UZfMXl1ldZbuErGQHDbivbqN8mNNl6AtUtfpzdyjsu/ T2gRGSl1CtKO/E9edKNt1rzH34Py+U9Cy/O4I36o/wBv9q7/ABBovJh9cj+EKzEHYB+PE16b8xg/ LZO4p/PYf5w/t5feF0Gt6TPdC0huUe4NaRitdhU9vbBLTzEeIjZlDWYpS4BIGSOylyXYq7FXg0n9 43zP687Icny6XNbhQr2VheXsvpWsRlkFKgdqsFFSdvtMBkMmSMBcjTbhwTyGoiyiLPQNXvLf6xa2 zSw7jkCu5FagAmp6HK56iETRO7di0WXJHijGwiE8r+YlYCO1bky8qo6H4SaDcN37eOQOrxdS2js7 UA7R+0frWJ5d1+4CMLZ3DryQll6fDtudj8Y2O+E6nFHqxGgzzr0k/j9oU28vayqljbNtG0xWqlhG lOTFa8hTlkhqcff1pgdDmA+npfwC290PVLGETXUPpxlzGDyQ/EuxFASdsOPUQmaiUZtHlxi5Chdd EDlziuxVvFXYqnOi+YYdKjBSyElxUcp+ZXkokSTiVoe8eYmfTHIfq2/YR+l2Oj1wwDaNy778wf0I zTvOQ0+ze0trFfSYkoHkLUqCCDsCfte2VZdDxy4jLf3ORg7W8KBhGG3vUrLzjd2nERW8ZVYreIhi TU2zllbanXkcnPQxlzPUn5teHtaePkByiP8ASmwrW3nq8gVf9HRnReKNWg39MsStN6mLvuMhLs+J 6/jf9bbj7anEfSLH/Hf+J+DX+NHR1khtArrF6HxSFwU5o5BBWpqE4nfvh/I3sT1vkx/lcg2I71XO 9rB7vKkr1bWW1FFVohHxnuLioNd7lgxXoPs8cyMODg69APk4eq1Zyiqr1Sl/pil2XuGr6f8A7323 /GVP+JDIZPpPubcH95H3h7nnHvprsVdiqWavo0mpMitdPFbqUZoFVSGZH5A1O4zIw5xj6WXC1WkO avURHbb3G0tvfJUd7DBHcXrt6EaxKwRB8ChgOngHy/HrzAkiPNw83Y4yACUz6RXIct/1oqbyraTP I8k0pZ2RwwI5ApB6HWm9V3+eVx1khyA/Btvn2ZCRJJO9fZHhQv8AgTTgOKzScTwV60qyJ6VFqKU/ ueo8fllv8oT7vxv+to/kXHys9PkOH/iftbTyTbAMkly0kDiFXiKKAVg4ACo8ViAOA689Bvv9t/rT HsePIyuJ4dq/m1+pMNL0CLT5YpFmeVooDb1elSGlMvI+9TlObUGYIqrN/ZTlabQjEQbJqPD9tppm M5zsVdirwaT+8b5n9edkOT5dLmtwoTfSPML6ZGBDaQtMDU3Dc+ZXmknE0YClYx2zFzabxDuTXd8x +lz9LrzhHpjG+/e+YPf5Iqx853NjayWtrZwJA5JEZMjKKggjd/iG/Q5Xk0ImbkTfwb8Pa0sUTGMY 8J9/6/vUrTzfqdpxEKRUWKCEqykgi3YsjbEb7muSnooS53zJ+bDF2pkhyA5RH+lNhWg886vCFIWN pEXhHIQaqDwLd6fEYgTkZdnwP49/62yHbOWPdf8AZfzp3+Nb9QnpQRxGNPSSjSFQnNHpwLFf91gH bcY/kI9Sfs/HVf5XmKoAUK68rB5XXRLNT1mfUFVZUVAs08441+1cMGYbnoOO2X4sAhy7gPk4eo1c sooj+KR/0yAy9xHYq9g+r+Sv996b/wADBnL8Wo75/a+geHou7F/sXfV/JX++9N/4GDHi1HfP7V8P Rd2L/Yu+r+Sv996b/wADBjxajvn9q+Hou7F/sXfV/JX++9N/4GDHi1HfP7V8PRd2L/Yu+r+Sv996 b/wMGPFqO+f2r4ei7sX+xd9X8lf7703/AIGDHi1HfP7V8PRd2L/Yu+r+Sv8Afem/8DBjxajvn9q+ Hou7F/sXfV/JX++9N/4GDHi1HfP7V8PRd2L/AGLvq/kr/fem/wDAwY8Wo75/avh6Luxf7FckHk0O pSPTg4IKkCCte1MTLP8A0/tSIaO9hi/2Kc5iOxdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir sVdirsVdirsVdirwXOzfLU10LQJNWMpEwhSJoUYkcmJmkEYoKjpWvXMbUakY62u7+wW52i0Jz3vQ HD/sjSvovlj9J3F5D9Z9H6pJHHy4cuXqSenX7S0p1yGfV+GAau/1W26Ps7xpSHFXCQOXea70fJ5I t4tRtbGXUWSS8VjCDB8QKHfkPUoAQNjXKRryYGQj9Pn+xypdjRGSMDOjPl6f2rLTyXb3KxumoMEu 5HisW9BvjaNSXL0Y8ACrDqfHDPXGN+nkLO7HF2RGdET2kSI+nnXO99uR+9Z/gwrpou5bv05KgNGY /g5esYSqyct2+GtKZL896+ED7fK+TH+SKx8ZlR9231cNXfNES+QljvIrf68xMgmJBgIk/c91Tn8Q bsa5WO0biTw93Xv+DbLsQCYjx8+L+Hf09wve1FPJEksM0sNw9YLhIGilhMcnBljZpOJY/Z9Xp4b1 yZ14BAI5i+fv2+xrHY5lEkSO0gKMaNUN6vpfyUL7y3ptpZXVydSd2tp3tPT+r05TIGIWvqGgPHrk seqnKQHDzF8+nyas3Z+OEJS4z6ZGP0/xb/0kit/7+P8A11/XmZLkXWY/qHve75xz6g7FUFquqJp6 wFo2kNxKsK02ALd2P0Zdhw8d78hbjanUjEBtfEaQN15l9DQ7TVPq3L61w/c86cealvtcd6U8Mthp byGF8nGydocOCOXh+qtr7x7kvtPPFzdWt1PBpgc2kSzy8bhSgjKljVuGzCn2aZfPQCMgDLma5OJi 7ZlOMpRx3wiz6unvrn5Ol88XEccNdNHrzQG7MX1hABb8eQfkV3YgH4aVxGgBJ9WwNcuv46rLtmQA /d+ox4q4h9PfdfYqDzvE97awQ2hkiuvRo3qASj1q9IuPxBOPxEHI/kCIkk7i/dt5s/5ZBnGIjYlw 9d/V5eXXdQi8/wDOG5kNh/vPEZQEmDDaX0uL0T4Ceorkz2dRA4uZrl5X37tUe3LEjwfSL+rzrfbZ FDzkkctglzBGiXrOjTRTrOkfEhVJZFoalhXfbK/yNiVH6e8Vbf8AysAYCQAE73EhID5fgLYfNmqT yWKxaSGXUEL27fWVFQigyVBTbjX6cMtHACVz+nnt8urGHamWRhWP+8G3q7ufToybNe7p2KuxV2Ku xV2KuxV2KuxV2KuxV2KvDP0ff/8ALNL/AMA39M7DxI94fMvAyfzT8mRQ+Y9WhiVYtIjjcegHkWKQ FhbsrJXen7OYMtLAneff1HV20NfliKGIA+nof4eS238warbXEs9tpCQmb0zIqxy0LRyeoG69SeuM tNCQAM7rzHdSIa7LCRlHGBddJdDbUnmLX3vrO5/R4RbEu0MKxycayCjFiSWP34RpsQiRxfV5hEtf nM4y4PouhR6/ahrLV/MlmsKwwOUt5XmhVomPFpEZG+j4yfnlmTDildnmK59zVh1Wpx0AD6SSNu8E fpVYtc19IvSezaWMxGN1dJCGb1TMJDT9sM2ROnxE3db+XdVM463OBRjYquR7+K/faunmbXvUZ5dP 9YmSZ1DpKeKzijxih+z3yB0uKqEq5d3Tq2jtHPdmF7y6H+LmPcsi8wa3byRta6d9XWOf6xwRJeJJ jETKak7ED78MtNjl9Ur2rp32wjrs8COGHDUuLke6qQN5d6vdW1zbvZMq3N2165CPUOwI4iv7PxZd CEIkHi5R4XGy5c04yiY/VPj5HmgoLC/E8ZNtL9pf2G8fllsskaO4caGCfEPSfk9vzkX0t2KpLN5Z WW7adr2cxtcC6NueBT1AAo3K8qAClK5lx1dRrhHKrdbPs4SnxGcq4uKtqv5WsHlOM6ethLezy28Z QwhhGOARWWgoo68u/hh/OHi4hEA/Fj/Jg8PwzORiKrltV+XmssfJlhaR3KieaR7m2NoXbgOMZXjs FUb+5w5NdKRGw2N/Fjh7Ix4xLcnijw9OXyVp/KWlzx26yGTnb2psllUgMYynDfYioqaZGOsmCa6y 4vi2z7LxSEbu4w4L8qpa3lDTAwaJnieP0PQdaco/q9acSRX4uXxYfzs+u/P7WJ7Kx8xYrhry4f19 VBvI+mm39FJpI+UbxSuvEGRXl9Uctt+J6ZMa+d3Q539lNZ7Gx8PCCRsQeW9ni39yvJ5Vt5wBeXMt zRJYwXEa0WUL/Iq/ZK1HvkBrCPpAHLv6NkuzIy+uRlsR0613DpSItfL9tbHTSkjn9GJJHFWnxCUA Hlt2p2yuepMuLb66+xtxaGMOCif3YIHxTTMdznYq7FXYq7FXYq7FXYq7FXYq7FXYq//Z + + + + uuid:55729de8-ce10-5e4b-bd9c-8f6f469f8e69 + xmp.did:1311eb72-f8f3-457b-957c-d696baba59db + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + uuid:d1c078a0-2746-42b2-b0d1-25aedff8fb1e + xmp.did:1b6690ed-28a8-c141-9479-b6a9cf6be651 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + + + + saved + xmp.iid:1311eb72-f8f3-457b-957c-d696baba59db + 2015-12-09T11:35:17-05:00 + Adobe Illustrator CC 2015 (Macintosh) + / + + + + Document + Print + False + True + 1 + + 500.000000 + 500.000000 + Pixels + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 255 + 255 + 255 + + + Black + RGB + PROCESS + 35 + 31 + 32 + + + CMYK Red + RGB + PROCESS + 237 + 28 + 36 + + + CMYK Yellow + RGB + PROCESS + 255 + 242 + 0 + + + CMYK Green + RGB + PROCESS + 0 + 166 + 81 + + + CMYK Cyan + RGB + PROCESS + 0 + 174 + 239 + + + CMYK Blue + RGB + PROCESS + 46 + 49 + 146 + + + CMYK Magenta + RGB + PROCESS + 236 + 0 + 140 + + + C=15 M=100 Y=90 K=10 + RGB + PROCESS + 190 + 30 + 45 + + + C=0 M=90 Y=85 K=0 + RGB + PROCESS + 239 + 65 + 54 + + + C=0 M=80 Y=95 K=0 + RGB + PROCESS + 241 + 90 + 41 + + + C=0 M=50 Y=100 K=0 + RGB + PROCESS + 247 + 148 + 30 + + + C=0 M=35 Y=85 K=0 + RGB + PROCESS + 251 + 176 + 64 + + + C=5 M=0 Y=90 K=0 + RGB + PROCESS + 249 + 237 + 50 + + + C=20 M=0 Y=100 K=0 + RGB + PROCESS + 215 + 223 + 35 + + + C=50 M=0 Y=100 K=0 + RGB + PROCESS + 141 + 198 + 63 + + + C=75 M=0 Y=100 K=0 + RGB + PROCESS + 57 + 181 + 74 + + + C=85 M=10 Y=100 K=10 + RGB + PROCESS + 0 + 148 + 68 + + + C=90 M=30 Y=95 K=30 + RGB + PROCESS + 0 + 104 + 56 + + + C=75 M=0 Y=75 K=0 + RGB + PROCESS + 43 + 182 + 115 + + + C=80 M=10 Y=45 K=0 + RGB + PROCESS + 0 + 167 + 157 + + + C=70 M=15 Y=0 K=0 + RGB + PROCESS + 39 + 170 + 225 + + + C=85 M=50 Y=0 K=0 + RGB + PROCESS + 28 + 117 + 188 + + + C=100 M=95 Y=5 K=0 + RGB + PROCESS + 43 + 57 + 144 + + + C=100 M=100 Y=25 K=25 + RGB + PROCESS + 38 + 34 + 98 + + + C=75 M=100 Y=0 K=0 + RGB + PROCESS + 102 + 45 + 145 + + + C=50 M=100 Y=0 K=0 + RGB + PROCESS + 146 + 39 + 143 + + + C=35 M=100 Y=35 K=10 + RGB + PROCESS + 158 + 31 + 99 + + + C=10 M=100 Y=50 K=0 + RGB + PROCESS + 218 + 28 + 92 + + + C=0 M=95 Y=20 K=0 + RGB + PROCESS + 238 + 42 + 123 + + + C=25 M=25 Y=40 K=0 + RGB + PROCESS + 194 + 181 + 155 + + + C=40 M=45 Y=50 K=5 + RGB + PROCESS + 155 + 133 + 121 + + + C=50 M=50 Y=60 K=25 + RGB + PROCESS + 114 + 102 + 88 + + + C=55 M=60 Y=65 K=40 + RGB + PROCESS + 89 + 74 + 66 + + + C=25 M=40 Y=65 K=0 + RGB + PROCESS + 196 + 154 + 108 + + + C=30 M=50 Y=75 K=10 + RGB + PROCESS + 169 + 124 + 80 + + + C=35 M=60 Y=80 K=25 + RGB + PROCESS + 139 + 94 + 60 + + + C=40 M=65 Y=90 K=35 + RGB + PROCESS + 117 + 76 + 41 + + + C=40 M=70 Y=100 K=50 + RGB + PROCESS + 96 + 57 + 19 + + + C=50 M=70 Y=80 K=70 + RGB + PROCESS + 60 + 36 + 21 + + + + + + Grays + 1 + + + + C=0 M=0 Y=0 K=100 + RGB + PROCESS + 35 + 31 + 32 + + + C=0 M=0 Y=0 K=90 + RGB + PROCESS + 65 + 64 + 66 + + + C=0 M=0 Y=0 K=80 + RGB + PROCESS + 88 + 89 + 91 + + + C=0 M=0 Y=0 K=70 + RGB + PROCESS + 109 + 110 + 113 + + + C=0 M=0 Y=0 K=60 + RGB + PROCESS + 128 + 130 + 133 + + + C=0 M=0 Y=0 K=50 + RGB + PROCESS + 147 + 149 + 152 + + + C=0 M=0 Y=0 K=40 + RGB + PROCESS + 167 + 169 + 172 + + + C=0 M=0 Y=0 K=30 + RGB + PROCESS + 188 + 190 + 192 + + + C=0 M=0 Y=0 K=20 + RGB + PROCESS + 209 + 211 + 212 + + + C=0 M=0 Y=0 K=10 + RGB + PROCESS + 230 + 231 + 232 + + + C=0 M=0 Y=0 K=5 + RGB + PROCESS + 241 + 242 + 242 + + + + + + Brights + 1 + + + + C=0 M=100 Y=100 K=0 + RGB + PROCESS + 237 + 28 + 36 + + + C=0 M=75 Y=100 K=0 + RGB + PROCESS + 242 + 101 + 34 + + + C=0 M=10 Y=95 K=0 + RGB + PROCESS + 255 + 222 + 23 + + + C=85 M=10 Y=100 K=0 + RGB + PROCESS + 0 + 161 + 75 + + + C=100 M=90 Y=0 K=0 + RGB + PROCESS + 33 + 64 + 154 + + + C=60 M=90 Y=0 K=0 + RGB + PROCESS + 127 + 63 + 152 + + + + + + + Adobe PDF library 10.01 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/ExtGState<>/Properties<>>>/Thumb 12 0 R/TrimBox[0.0 0.0 500.0 500.0]/Type/Page>> endobj 33 0 obj <>/Resources<>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 500.0 500.0]/Type/Page>> endobj 57 0 obj <>/Resources<>/ExtGState<>/Properties<>/XObject<>>>/TrimBox[0.0 0.0 500.0 500.0]/Type/Page>> endobj 103 0 obj <>/Resources<>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 500.0 101.0]/Type/Page>> endobj 104 0 obj <>/Resources<>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 500.0 101.0]/Type/Page>> endobj 118 0 obj <>stream +H‰lWKn7ÜÏ)xG‘Ýün­Y‘EðÄ Ë€£UnŸªæœ÷,Y~šÕÕÍÖËï¯îåókpŸ~yuÇËëÁÝß]ð‚ßZ þö\{¿?^~ÃÇÞ.º€ŸèbPWÅÝßâ·ãÖÐ|csK xíhF'œí×ãïãË58i®9Lú÷/ ýÀ„¢ËÙÁèŸîûõÈÜ|Ôœœfßb˗ão%£{Kœqéø(ÝÝÆècš|Á 'ß²LØ= ë¾×>ºÙ—ŒÃ˜¢Ý%P3Ì +{wé8­Ðœ…%+.ã»V"m¤6iœà~dkOÈëá[…iõ=ELvuš|5ÂJÍæ­RÉ". 8S9 °ùD°9f3Ú(’9p«t5ÔW^vblº?GñÔã­øaŽ2Õù ÞÍ䢉gj5 +së}íi,¨4x~‹^Bu“–ì)•ï¦á‹4[tE· c´h@34/—?¨Î¦[dô{O© 7`×|ÙÎÅصх±5›¦eâåQŒ`&àÒj©Ü!÷‚)„¡¹ê³Øýb~€îÉÇ@Ÿ@r NÅwŸÀnpôÛ†Å. /Ξ+'!tOP|§Tç'r«$ºá$¬nœ©Xl°™q‡dzÔ±p!#¬2BÓ‰ ¦ìE¾Å“ÀÜǸIÞ4>‚:rDk}ôÕ‡Lñ‘\é†H¤)$Æwò)‰Ñ¥‘¸ûÊ`† 7ÐÓ=¥)ù äqTx°PU…†V/‘yK³Ù­•ÑèÖ-™n3v!K O<ËR¹’ùêIBÓ”»[B ›„¢åÀ%!EŒ\$Ô$]$Ä|´$p‘Ð’^$T[¹Jè„KB†—„”§M l Ù§%¡Î¤µ$¤¥=HHcšÊØí*!:vK¾…§–„Nb¶„ÆÀRÍÏ`J¨Ë* i’PúHBxz¶†R¿jH¦†Z,W%æË«ˆ”Ò=E¿SD_ü$¢×ÕKnéMµÜ5þÚØl1ì.u–»F]`ísþÓÝBÞ ’ux`’O"–ÑŠ]/Ááô>/Û Ý<ïucžŒ@^Õì1áãÁ‡ªØX’x¾E2RgnæÅgpÓ¸ö­Ïü'I ὧë8 +!mcR ð²Ø8²Â`>Jªz¾~O'Ã)§7&ø©Øž#Ï`³d«Çå–ý¡¿L»ûÌ5H~¨æ@³ùHvkÅœ\;üÂsÏö# +ôÜ+6G•®%[·âƒÎ‡C3•¨m$O,žª‰x”ÕJ†bÕ±‘Á`¤ˆ&H!•sÅÁ»žÄfhbÚE!Û>CYÈÉ&Ñ0WJñ˜P?Þnñ ±”ŒqT? ÍDõÙs µ؉„ï=P6s3a)…ñš¡Š¬i!K;1—ý&‚3ùÐ ¤·«£Ð3Ìj°ÌCÌr'FKÈ—¨¥%m(–>¨›Öè-ýQÀ‘¾q~j Ò8Ô(ä¸sEt#7¯>sšˆ,ŒK:é`Š 1Ÿ\É(sÏûgdG$À>æ¦ÄŠ8ËØwÔβ{"2+œ,}8µÕ QÆ›=ºiƒ¥jÙõÌ£j+*èŒë@#K¯ÈÚðmÿ+Xþeι@Æ.’o:ôL•¦¯À }ÛˆþÉÝFúù=ØsyAZ?WÍx' ¯Fª\£Å•Ì>x‘a’F ÝÓ>TÃÒöË+m+dýŒ¿ÿ 0u¬" endstream endobj 119 0 obj <> endobj 101 0 obj <> endobj 121 0 obj [/View/Design] endobj 122 0 obj <>>> endobj 109 0 obj <> endobj 108 0 obj [/ICCBased 123 0 R] endobj 123 0 obj <>stream +H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó '¥ªµÕ0 Ö ÏJŒÅb¤  + 2y­.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é @8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ +V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚óÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAü om?çW= +€x¯Íú·¶Ò-Œ¯Àòæ[›Ëû0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçL­UáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.òò· åÒR´ ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð=¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "A ˆ YA+äùCb(Š‡R¡,¨*T2B-Ð +¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…åÆ’°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 +N'çÎ)Î].ÂuæJ¸rî +î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö +n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîÆ•Æ©ºÈº‘ºçõyõ‡Ø Ú† žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_p߶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ +¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäüå„æ æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû endstream endobj 107 0 obj <> endobj 124 0 obj <> endobj 125 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 17.0 %%AI8_CreatorVersion: 19.1.0 %%For: (Marcelina Knitter) () %%Title: (jlibtorrent_logo.ai) %%CreationDate: 12/9/15 12:00 PM %%Canvassize: 16383 %%BoundingBox: 0 -643 1613 9 %%HiResBoundingBox: 0 -643 1613 9 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 13.0 %AI12_BuildNumber: 29 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 -500 500 0 %AI3_TemplateBox: 250.5 -250.5 250.5 -250.5 %AI3_TileBox: -38 -606 538 128 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:17 1 %AI9_OpenToView: 70 -30 1 1782 954 90 1 0 331 334 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: 70 -30 1 1782 954 90 1 0 331 334 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %%PageOrigin:-56 -646 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 126 0 obj <>stream +%%BoundingBox: 0 -643 1613 9 %%HiResBoundingBox: 0 -643 1613 9 %AI7_Thumbnail: 128 52 8 %%BeginData: 10604 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45AF8BAF85AF8BAF85AF8BAF85AF8BAF85AF8BAF85AF8BAF85AF8BAF %85AF8BAF85AF8BAF85AF8BAFAFFD30FF613D613D613D613D613D613D613D %613D613D613D613D613D613D613D613D613D613D613D613D613D363D3C3D %363D3C3D363D3C3D363D3C3D363D3C3D363D3C3D363D3C3D363D3C3D363D %3C3D363D1461FD30FF3C3D3C3D363D3C3D363D3C3D363D3C3D363D3C3D36 %3D3C3D363D3C3D363D3C3D363D3C3D363D3C3D3D3D613D3D3D613D3D3D61 %3D3D3D613D3D3D613D613D613D3D3D613D3D3D613D3D3D61FD043D61FD30 %FF613C613D3D3C613D3D3C613D3D3C613D3D3D613D613D613D3D3C613D3D %3C613D3D3C613D3D3C613D3C3D363D3C3D363D3C3D363D3C3D366160613C %6160613C613C3D363D3C3D363D3C3D363D3C3D3661FD12FFA9FFA9AF84AF %A9AFA8AFA9FFAFFD11FF3C3D363D3C3D363D3C3D363D363D366160616061 %60613C613C3D363D3C3D363D3C3D363D3C3D363D613D613D613D613D613D %613D61618B61613D613D3D3DFD05613D3D3D613D613D613D613D3D61FD11 %FFAFAFAFFD09FFAFFD12FF613D613D613D613D613D613D61618B3D613D61 %3D3D3DFD046167613D3D613D613D613D613D613D3C3D363D3C3D363D3C3D %36616161363D3C3D363D3C3D363D3C3D60853C3D363D3C3D363D3C3D3661 %FD10FFA9AFFD0CFFAFAFAFFD0FFF3C3D363D3C3D363D3C3D36616161363D %3C3D363D3C3D363D3C3D3C853C3D363D3C3D363D3C3D363D613D3D3D613D %3D3D613D8B61FD043D613D3D3D613D3D3D613D3D3D8B613D3D613D3D3D61 %3D3D61FD0FFFA9FD11FFAFFD0EFF613D3D3C613D3D3C613D61613D3D3D3C %613D3D3C613D3D3C613D3D3C8B613D3C613D3D3C613D3D3C363D3C3D363D %3C3D36853C3D363D3C3D363D3C3D363D3C3D363D3C3D3661603D363D3C3D %363D3661FD0DFFAFA9FD13FF85FD0DFF3C3D3C3D363D3C3D36853C3D363D %3C3D363D3C3D363D3C3D363D363D1461603D363D3C3D363D3C3D613D613D %613D613D8B613D3D613D613D613D613D61FD093D6161613D613D613D3D61 %FD0DFFAFFD15FFAFFD0CFF613D613D613D613D8B613D3D613D613D613D61 %3D613D3D3D613D613D613D6161613D613D613D613D363D3C3D363D3C6160 %3D3C3D363D3C3D363D3C3D363D3C85848B858B603D3C853C3D3C3D363D3C %61FD0CFF85FD0EFFAF608B618560FFFFAFA9FD0BFF3C3D3C3D363D3C6160 %3D3C3D363D3C3D363D3C3D363D3CAFA8FFA8FFA8613C613C3D3C3D363D3C %3D3D3D613D3D3D61613D3D613D3D3D613D3D3D613D3D3DAFFD05FFAF3D3D %3D8B3D61FD043D61FD0BFFAFFD0EFF8B613D3C3D3D3DAFFFFFAFAFFD0AFF %613C613D3D3C61613D3C613D3D3C613D3D3C613D3D3CFFFFA8CAFFFFFF3C %3D3D8B3D613D3D3C613D3C3D363D3C3D3C61363D363D3C3D363D3C3D363D %3CAFFFAFFD04FFA93D363D6061363D3C3D3661FD0AFFA9AFFD0DFF851461 %3C3D363D3CAFFFFFAFAFFD0AFF3C3D363D3C3D3C61363D363D3C3D363D3C %3D363D3CAFFFFF7EFFA8FFA83D363D3C61363D3C3D363D613D613D613D8B %3D613D613D613D613D613D3D3DFFFFFFAFFD04FFAF3D613D61613D3D613D %3D61FD0AFFAFFD0DFF8B3D3D61613D613D3DAFFFFFFFA9FD0AFF613D613D %613D8B3D613D613D613D613D613D6161FD04FFA8A8FFFFFF3D613D616161 %3D613D613D3C3D363D3C613C3D3C3D363D3C3D363D3C3D3CFD04FFAFFD04 %FF853D363D3C613C3D3C3D3661FD0AFFA9FD0CFF8B3C3D36613C3D363D3C %AFFD04FFA9FD09FF3C3D363D3C613C3D3C3D363D3C3D363D3C3D3CAFFD04 %FFA8FFA8AF603D363D3C613C3D3C3D363D61FD043D61613D613D3D3D613D %3D3D613D6161FFFFFFAFFFFFFF6161FD043D61613D613D3D61FD09FFAFAF %FD0CFFAF8B3D3D61613D3D85FD05FFAFAFFD09FF613D3D3C3D61613C613D %3D3C613D3D3C613D3D3CFD04FFA8FFFF603D3D3D3C3D61613C613D3D3C36 %3D3C3D36613C3D363D3C3D363D3C3D363D3661AFFFFFAFAFFFFF61143D3C %3D36613C3D363D3661FD0AFFAFFD0DFF603D3661363D148BFD06FFA9FD09 %FF3C3D3C3D36613C3D363D3C3D363D3C3D363D363DA8FFFFFF7DFFCA8514 %3D3C3D3661603D363D3C3D613D613D6161613D613D613D613D613D613D3D %61FFFFFFAFFFFFFF613D3D613D613D8B3D613D3D61FD09FFAFFD0EFF8B3D %3D61613D3D85FD06FFAFFD09FF613D613D3D61613D613D613D613D613D61 %3D3D3DFD04FFA8FFFF613D3D613D613D673D613D613D363D3C3D3C613C3D %363D3C3D363D3C3D363D3C61FFFFFFAFFFFFFF61363D3C3D3661613D363D %3C61FD0AFFAFFD0DFF603D3C613C3D368BFD06FFAFFD09FF3C3D3C3D3661 %3C3D363D3C3D363D3C3D363D3C3DA9FFFFFF7DFFCA85363D3C3D3661613D %363D3C3D3D3D613D6161613D3D3D613D3D3C61FD043D61FFFFFFAFFFFFFF %613D3D613D3D3D8BFD043D61FD09FFA9FD0EFF853C3D61613D3D85FD06FF %AFFD09FF613C613D3D61613D3D3C613D3D3C8B3D3D3C613DFD04FFA8A8FF %613D3C613D3D3D673D3D3C613D3C3D363D3C61363D3C3D363D1485A83D3C %3D3661FFFFAFAFFFFFFF61363D363D3C613C3D3C3D3661FD09FFAFA8FD07 %FF3CAFFD04FF603D36613C3D148BFD06FFA8FD09FF3C3D363D3661363D3C %3D363D36AFA93D363D363DA9FFFFFFA8FFA885363D363D3661603D3C3D36 %3D613D613D3D61613D613D613D8BFFFF3D613D6161FFFFFFAFFFFFFF613D %3D613D3D61673D613D3D61FD09FFAFFD07FF3D3DAFFD04FF8B3D6161613D %3D85FD10FF613D613D3D61613D613D613DAFFFFF3D3D3D613DFD04FFA8CA %FF613D3D613D613D8B3D613D613D3C3D363D3C613C3D3C3D368BFFFF853D %3C3D1461FFFFFFAFFFFFFF613C3D363D3C613C3D3C3D3661FD0AFFA9FD05 %FF3C3D3CFD05FF613D36613C3D148BFD05FFAFA9FD09FF3C3D363D3C6160 %3D3C3D36AFFFFFA9613C3D3661AFFFFFFFA8FFA8853C3D363D3C613C3D3C %3D363D613D3D3D6161613C613D61FD04FF618B858B85FFFFFFAFFFFFFF61 %FD043D6161613D613D3D61FD0AFFAFFD04FF613D3D3D85AF858B85613D3D %61613D3D85FD05FFAFFD0AFF613D3D3C613D613C613D61AFFFFFFFAFFFAF %FFAFFD04FFA8FFFF603D3D3D3C3D61613C613D3D3C363D3C3D363D606136 %3D3CFD0CFFAFAFFFFF61143D3C3D6061363D363D3661FD0AFFA9AFFFFFFF %85143D3C3D143D143D363D3661363D1485FD04FFA9AFFD0AFF3C3D3C3D36 %3D6061363D3CFD0DFF7DFFCA85143D3C3D3C61363D363D3C3D613D613D61 %3D6161613D61FD0CFFAFFFFFFF613D3D613D8B3D613D613D3D61FD0BFFAF %FFFFFF61FD0B3D61613D3D85FD10FF613D613D613D6161613D3DAFFD0CFF %CAFFFF613D3D613D673D613D613D613D363D3C3D363D3C853C3D3CAFA9FF %AFAFA9FFAFAFA9FFAFAFA9FF853D363D3C61603D3C3D363D3C61FD0BFFAF %85FFFFAF3C6161613C6161613C613D85606161AFFD04FF85FD0BFF3C3D3C %3D363D3C613C3D3C61848B858B848B858B848B85855A8B603D363D3C6160 %3D3C3D363D3C3D3D3D613D3D3D613D613D3D3D613D613D613D613D613D61 %3D61FD043D3C61613D3D61FD043D61FD0DFFAFFD15FFAFFD0CFF613C613D %3D3C613D61613D3D3D3C3D3D3D3C3D3D3D3CFD073D3C61613D3C613D3D3C %613D3C3D363D3C3D363D3C61363D3C3D363D3C3D363D3C3D363D3C3D363D %3C3D60613C3D363D3C3D3661FD0CFFAFAFA9FD13FFA8FD0DFF3C3D363D3C %3D363D3C61363D3C3D363D3C3D363D3C3D363D3C3D363D36616061363D36 %3D3C3D363D613D613D613D613D3D618B3D3D3D613D613D613D613D613D61 %3D613D6185613D613D613D613D3D61FD0EFFAFFD12FFA9FD0EFF613D613D %613D613D3D3D8B3D3D3D613D613D613D613D613D613D613D6161613D613D %613D613D613D3C3D363D3C3D363D3C3D3C8B3D3D363D3C3D363D3C3D363D %3C3D3685613D363D3C3D363D3C3D3661FD0FFFAFA9FD0FFF85FD0FFF3C3D %363D3C3D363D3C3D3685613D363D3C3D363D3C3D363D3C3D3661613D363D %3C3D363D3C3D363D613D3D3D613D3D3D613D3D3D618561FD053D613D3D3D %61618B3D613D3D3D613D3D3D613D3D61FD11FFAFFFAFFD0AFFAFAFFD10FF %613D3D3C613D3D3C613D3D3C616161FD043D3C3D3D3D3C61618B3D613D3D %3C613D3D3C613D3D3C363D3C3D363D3C3D363D3C3D363D606160613C613C %61606160613C3D363D3C3D363D3C3D363D3661FD12FFAFAFA8AFAFAFA9AF %A9AF84AFFD12FF3C3D3C3D363D3C3D363D3C3D363D3C613C613C613C6160 %6160613C3D363D3C3D363D3C3D363D3C3D613D613D613D613D613D613D61 %3D3D3DFD04616761613D3D3D613D613D613D613D613D613D3D61FD17FFAF %FFAFFFAFFD14FF613D613D613D613D613D613D613D3D3D613D6161676161 %3D3D3D613D613D613D613D613D613D613D363D3C3D363D3C3D363D3C3D36 %3D3C3D363D3C3D363D3C3D363D3C3D363D3C3D363D3C3D363D3C61FD30FF %3C3D3C3D363D3C3D363D3C3D363D3C3D363D3C3D363D3C3D363D3C3D363D %3C3D363D3C3D363D3C3D3D3D613D3D3D61FD063D3C3D3D3D3C3D3D3D3CFD %073D3C613D3D3D61FD043D61FD30FF613C613D3D3C613D3D3C3D3D3D3C61 %3D613C613D3D3C613D3D3D613D613D613D3D3C613D3D3C613D3C3D363D3C %3D363D3C3D3C8B3C85848B8585848B6085608B60856085608B603D3C3D36 %3D3C3D3661FD0EFFA88BA9AF608585858485858584858585848B858560FD %0DFF3C3D363D3C3D363D3C3D60AF3C85A8AF85AF84AF84AF84AF85AF84AF %85AF603D3C3D363D3C3D363D613D613D613D613D3D3DAFAF61A9FFAFAF85 %FFAFAFAFFFFFAF85AFFFAFAF673D613D613D613D3D61FD0EFFAF3DAFA961 %3DAF618B61613D8B3D8B61AF3D8B858BFD0DFF613D613D613D613D3D61AF %AF61A9FFAFAF85FFAFAFAFFFFFAFAFAFFFAFA9673D613D613D613D613D3C %3D363D3C3D363D3C8B85AF858BA98B6185608B618B85AF858B84AF85853C %3D3C3D363D3C3D3661FD0DFFAF608B85AF608BA9AFA9AF85AF848B858584 %AF85AF85FD0DFF3C3D363D3C3D363D3C85848B8585848B61616085616184 %8B858B608B61853C3D3C3D363D3C3D363D613D3D3D613D3D3D613D613D61 %3D613D613D3D3C613D613D613D613D613D3D3D613D3D3D613D3D61FD30FF %613D3D3C3D3D3D3C3D3D3D3C3D3D3D3C3D3D3D3C3D3D3D3C3D3D3D3C3D3D %3D3C3D3D3D3C3D3D3D3C143D143D143D143D143D143D143D143D143D143D %143D143D143D143D143D143D143D143D143D1461FD30FF3C3D3C3D36613C %3D36613C3D36613C3D36613C3D36613C3D36613C3D36613C3D36613C3D36 %613C3DAF858B85AF858B85AF858B85AF858B85AF858B85AF858B85AF858B %85AF858B85AF858B85AF858B85FDFCFFFD5CFF85AF84AF85AF84AF85AF84 %AF85AF84AF85AF84AF85AF84AF85AF84AF85AF84AF85AF84AF85AF84AFFD %58FFFD273D61FD58FF3C3D363D3C3D36613C3D3C613C3D3C613C3D3C613C %613C3D3C3D36613C3D363D3C613C613C3D3661FD10FFAFFFFFFFAFFD05FF %AFFD05FFAFFFAFFFFFFFAFFD31FF61FD053DAFA98B3DAFAFFFAF8BFFAF85 %FFA98BAFAF85FFAF8BAF8B85AF61AFAFFF613D3D3D61FD0AFFAF618BFFAF %6161618B3D6185613DAF8561858B618B618BAF61A98B616161FD30FF363D %3C3D3661A9AF603DA9AFA9AF3CAF60FF60FF84AFA985A8AF85AF608BFFAF %608B853D363D3661AFFD09FF856184FF85613C61A985608B3C853C853C85 %6061856184AF3C6160FF60FD31FF613D613DAF85FFAFAF61FFAFFFFF61AF %67FD06AF85FFAFAFAF8BAFAFFF8B85AF3D613D3D61FD08FFAF858B618BFF %AF3D673DAF858BAF61618B6161858B618B618B8B8B6167FF61FD31FF363D %3C3D60AF8585858B858B858B3C8B3C6161613C61618B6061858B848B6185 %6061613D363D3C61FD08FFA98B61AF608BA98B608BAFAF85FFA9AFA9AFAF %8B84FF858B60AFA9AF84FF85FD31FF3D3C3D3D3D3C3D3D3D3C3D3D3D143D %3D3D3C3D3D3D3C3D3D3D3C3D3D3D3C3D3D3D3C3D3D3D3C3D61FD58FF6061 %606160616061606160616061606160616061606160616061606160616061 %6061606160616085FD57FFFF %%EndData endstream endobj 127 0 obj <>stream +ÙÙJeØO¬Š§›(NÍN}Ö˸†lÙ&¹;1ò„3ª35)=]¦ ‚$¯õ +\Ù°ýMò§STGáP“¡"ïè|Ç6i›8£ôÅ|šæØeªjï¾l^ÉeŶ˜©É´u&*+¼I'¾3•ü*’šѳißiÃܾ€ìCÝÐyZ®\æ[l©Åbw| Ž‰Ç¯:åîhè7R6—Äøüð]t$´uškLtâ~?Œ–íjrñJ…® +£ôZD;Tj—t·ÂŸÇ—à2#Aµ×iÀƸØ]ÂH&ÜMàÌ  ×íÝœè9&àK›»x—D*˜&WH'“.Û;w„Šö+ò“$“í¢WMZGšun¼¼êòùÍ>ïäðѲq㓱ô^¥~vÞs0Kz¯ÿ»¼æêÐ ~ÜEŸ06ŽŽ.ŽOöÏÛÂöÙþÉûv¿³0º-Àí_?ƒI½‡c`ú æ †”ìó#:m€¡i“,þ Þ²¿ð|=Ú€g·ˆÎ[E÷óyŽoìÜ~õ¥ó“tõ• |“oW±›\è÷š¥·0¹''xPÉðþlÿà°}r.¨rž&ÆÂ9â³Ôùÿ¥÷ÄüÃÀ¶øFg:0„²I:…~¥Øïâ×àÒ)ÁÖÒ4ê 5–L…èøu±žw¿€­¡Â³ z‡}úé‡~jàLÓ,ü–°ÔêzI ÀXšÐ2t°¿Ó°–º‡ÅF )YW°G_õ6,ód© +æˆRŸQj÷¾ ½º”x¦‚|×ñ}Í‹t|‘ŠŒ@“;/ú}VKá‹cÂË4Œ¾˜ˆáj!V_Zú¹’I>WþÑ\)Ãuî`Ã%¹ÿ†=jZèTkÍDw£2$Cr±pD*eÓTãæ’< +WõÛãO“³§8(Š\ ½šŠÎ ^S®Hî×8Tt¬¼þ5¯c*´)a<Îä ¦ƒGeÜFCÞ1À¤`ÉhÚý^#sðŽF èðÔp»ô¯{V¹Cîa@R!ãä`d‹™ƒ‰@M[Ú°ËÅEšipÅiÈØiç›4öŽ)è “-dé¯zØÑð.Ì8Qé1†ó]¿ið×&p +ÕK©Ð ¾ ¶›Í–ŒþÁí^(Îwðëºj=Á¨Fj;GÏtÿÚó‡¨ñp7ú{°¹—{[¨ŠØÕx¹B.ÿºz¿Ò2ð¡’³ï“ùõÄßx“ø›]udâo͇söc«O¢+5ªE[gCÃÑöäöþø[¯ùíþÖàº_è‰kîymòx#EHÊz7Y÷L®‘Â¥J`c|Î4…u5S“` 6RùL`Íæ•0,Oé€.~÷ß䨻£“Ìž×{ùMF“WØ¼Í +û,GDzw.Dz¯ßÀ¯Z¿<ôôÞ× îvø齯›€ôÞ B–úÉéÉo¹]$¡²tzzn0åáþùyûìdåt_»8<àç˦÷:Çßv_ôóÇÓ³óÇöÑ©Ãûož¶ÚŸ> ;íÖùþÉû£_wßHC»oèÔà@'XóU¦2ž*SIU‚rWìã@A韙DS ×5|ƒ´ÞûÈ’*É:ˆÕê û«‡4ÆÜ׈΋š¿rQŸ—õôXì×åÞ».iŒÑ54a]6¾eÛqM“®Á‡XšŽÂ]WPw5Ç3z»Û÷Çܸ®qÏL¿K\/êîkŸ®ö×=#_¦—æ¯Zèƒè@'Ü]ƒ£‘i|²¦aQ;«È0Ó21L§2Ö¾dICXèKW.Éà ãYAµ†W)èµ$Ý¢˜î&©â:Ó߆ê –:滫¸”ÜÖkhÔ†%]0™X2ƒRüæô Qq_ÌäQ%ÜPTѯy›®ZÜ`W5ÚWGå4EÂ혴¶/€eEÇm(_ó.“¿KÇ,ˆPe|þû-žBÖ.Ka ¦w¡s_6ú²ñšd£ì GU§¼È®)“ ¬eý‡HÇßïe:9ýYפ9ý ¿§¼R¸¼êtæÕácÔºpŸ/¿|ùõȯŽƒjéC˜g廯î~¿ÿÆ{›¶GÞy nºìZŸçwýnËVÝÒ»c ]ЪfÏí*m–ꤥº~îê —]¿÷|ïÏ·wwÍݳÞyíú±á\’ž1Ós»B=?S—®nìî㧞‘vÿÖo{~t<Ô쉈8{ókkÛø­…ï +t¯;tðÄéûtú³ÑEŠÎÜetÖÒËì“c»³vS³»I¼jëÜاéªåÒ«,0Có¤gyçðíÛÓ“/¹“1sƒÛúëý½ÙXmVøIPþl’ƒthÃqüèO“UÂ&ܼLí5)o÷7òÂËX®B¥:i6t^«"2f‡Sæ'ž*QÒˆ©áYX†A£2, +ÖÇeøpä»AûˆLZÆU—ù^9™êIRµ[3xy‹B;T¨R$íô–©z;VTÁj¸3FÅZìñ‘!QÐE6 ^š ÓY±lIÅà'Q`H¦½rt4)¯Î!iXÖ“Q–,íŸæ%ñhÖL•oïæ;¨± S¯q hGÅbTSæuâ%•Žííì᥂¿x†²ÊëVc‡aJtV'Ï¥Åi“u~Þ¤}ЂrÅsvñ ˜+˜èËt©ªÍIT}W5:õÉß4doŽWp“«ÉËêÛÕÀí&vÉ ïg–qW½}:‹¦Z<¥È²]kë)ÀÐøž:ªŒˆ¡B +â)ŠÜ9ÆÁàe°úˆÉ‰M¡ytP†×úò|7¨ãäç…ÊîùÙáÉ{!·´Toµ.ŽwNÏ÷ñRÎÓ¹z³ÙuÍî‡ýí¥£öÉÁæþyëÃãÓ¥ö»Ó3›ÿsú^ ÒâÕÈ-ýêEË]r„•{é˜{gã1mŠ£ó~¡‰a1-Ü‚(1~ŽUŽµ°L]®Ä.¦Â4™×œçœ„ǘP¹¬dQ¶Ì5?OÚÞ?Ž$aÚ§ àI‚t4á= 0JÁÇ«&*IܽL‡²`ÍJ“Ròùñ42Ç祩°H¼ ÓG…ªéT±C¦Œè_<°‡j1Žû¦ÝX¹ +O¼Á#×TÚÝç<à¤PQ+ª´¥à†(dƒ—u-[X´¨t ßt›øÑ)˜X‚ %X,ÏÆ*´Kë-áùל‘À¦Âü4œ5’X¤ñdÃ>;ÎÐl6‚K *(¥I6ÑcUJº´TU·É˺ÍEŠÂkjx^<Ù¢cjˆ-€gð]X”áqë=í#Cp¬R8WÆ}1ŒŸ;š›ŽÄ,WÂQe›‹ Í.5ÌOM&Á Y¸B¢‚•¥­ƒ½„‡L„Ë’¤¼üP£‰Éõhf*¼þnÐåÇQcy+Õ6ü™y„ÉÉ9Kd" +‹;0<¶Å-žh`—kAãÄH› ©`8Å|«Ds†“È ÜôÂk½Ñ¹‹ $±6ßµN4ŽÂ7™›¨M,¬’GTL;éÖÎPémC£’¡L“éts*Á‡;Ì‘VpÀ¡"0DJLGFÐðÀ $3<‘&–ÊX+ü¸[^¬jáUR: „ÎWwð©T÷ô³T̃âVcœTjTŒqRD# +cë?‘@¡‰Añ`rŠ@î¥mä yµL<%A#~æ[ZTŸI¡sGèü+­âÅœAc1b^û›á‰Ü +èŒK…»ùi<äU°I‘¶Ä#òÊ"ŒÑ°Ë¥pÊÃgi&¯áɫ¨J¯à";¤E<ùR68á©ß*‚;åè¤T*̟ͨÎ8é³NÝgì#ž¼!Óx±ô±¤Úù¸)G¦ãæx'ÊŒ@N”4ýj<@‹XöÚ®I,Ûåó4Üt-éqÁ’6ʼ\.ÊbÝ®æ™mšEbNÇM²2žå„þ0 :ÄKAI\™J¸SN÷PèœY «©Sݢƅl‹=šIÎEãÖ„/xC»~†‡}š‡Œ[Å,ÚÔG€ó é5\ à]:ÖT±àÀ ô:€µhziÎâ'¸ÌT‰÷©>§FFyË¼Ü +.7?èFâÇ?ñC;Óùig¦½Å§Í®» xÖà²Õ&PÆå%À©ÞV‹ì?~”ºpï* KÖe[.1… aS#­"íèe¶ØEÖ ú’’]sO[¡BºCbÄB w*èŠ0~»¥Ä=tº  sy€Aó~ o[T«˜Wíä“N•d:XµY°-ÜÿHR]£sq‰efﮧ*t$í”xác‹NáöQ^F˜ŸG«c¹¬&M:t¡zyÀ,§‚›’? ‘”:ÈOA•24±V•I$‚… ° èx¥ªFU0`1¨Î$•D—y($D~œ/VÅ°`]pÂð¿\ÛʘðŠ3F‚KåIXDS˜ íòä²½mK+T†Ñ>l‹Ìণ¼L. tE¿ªFÎi¬DÜÆ7 12ÒH|C! gò½õ ÷&Ú¤Oäøísgˆ™íSâ(ñTFIªñÓ1©¶r×P '…žvÚW*RÅF•„2 Ý>*wQÒ>>EtÆ ù» ü,*æ :$EªdIçu€TTÊ‘Ãzvî,UcaXÄ"ª²“-“O¯]£ˆŸKÏm(A)d^è\Æ}ðB^X„È®†¦Ð&C¾ñ˜NE£#î5ÚÈ}»—3ÚYTÿRg•oCêBñz +MEtnÈ0LÙ.nKwXç*Âè2Q-P ¯ž¤óJ·'[nšñÓ•ù™X8 ˃£§²tr’LB^çSEËɦ]l Ë0òšÓCãtF…SñèºA£ÍÛTÙÑ é‡g6©¤‹U¥³>¦I GEv9 R%îΩ·Ì.IÕ·˜ÆÑ<?ÖŒ*àðñ`Üs +âç~á¤Y†iÃJRÎÈ Òe<³‰Ù÷ø0ˆbaà +‡¿´·šQ}^C\ãÊè"º—hw8=^æ% 17›ˆP²ë¦vS’ ">“ÌL«s*$£ +S2ßT«|¨–­ŠâiÀÉü4=ƒqø¦aÍnÒÙUøC²Ã+ˆvÉ6k4!â¹äæ@HƒÊmûÜ/²;x… *¡NDÅñZvu7…äG#Å“&P(“&ÑeÞ/f‚â±`˜‰*Á¢³Þ:gnÑq«ü´è棣åm¤ Ú•ðxš$bɲO›ÕpK¸ÕÑç¤*p02UOãsÃm$°'Gªb†%^-›~õ²]·——óøYÈótF©~:g+Ú´¨á„Þ»Þö3VŒ3u[ -Sú§$™Šý"^ºßâ%.HÀ1Ë>£ u+WÉtL„¬ð3Êl~Ñ4;·ß¤ÊeXMØ>µÓ>ýä¾Î1«Ä=ÈB/%g;ª¼°£Î±iò#)zÉŽhQFóŽãcÍ´p×;•Â¦ýXY^¦£- ŽðpÏ°"óúòöš Ìe•ÊÏ¿`XHŒ£wáen +•vŽx¥’~ +ÎC—1â„ðë «v!F¬¨@Õ['Â2d`îÃÒéXa[¦Š8¤ØA¬\ ë6z…w‘ñNg%¨x²Wù”±(ˆ T»Î ¯%@•Ÿb¥’} ÐùP\Èó*OhQpX„S†˜PÆ n•šX +;@笒¯I§rɆiv„Ž#Ãâ¤up¡èfÆ­0î*‚oòerN‹ßT“»‘P‘(¼ŠœÆw‚Û“éøD½Ã)—¯Â`T"8 .®‰uÙ䈓^O2S¶ïS¸M„äAçpÐAŠt¤•c¦è.Êf›K²ÌOÎfšeÓ'n˜ÀºÒ +¥QÓ,r;¬—îˆQ´hܤ¢Šú@ŒÇ8Ø)~Üòÿ³÷%ŠMÉßß ð²¹ì€Íô5,Ils†3˜IHˆlË  [Ž$çzú¯~UÝ==3òAB²6»Y»Ü=}U×ÝU÷ Tì ÞR{¥`#,æÞˆAlƒ­Ì+äÕ‹ó?§¦p‚‰…‰Oí¹(gý“Tx8(Ãiõ¤ê®ðÿB2G#C-X0±yÉîÏ9­9uuÅø@B¦˜j+~²‹,ñEÍŒKÉP%CÊóx>Çò%Ár±°Ê×82ZÒæ²ì®ýÁ‰,…,A¸´í"<û«/e悶â邽ŠSJ;ã®B‘-BG#µ¡{Ú×ÀD”=¨[h¯ì>M–bœÏÙ†-•hm„®lÅbCÎËÓDOQ¹óöVSaÖÔñ•tÚ?†AðŒvXº±RºÁæeƒ…eO›¬öŒçÎÈRNcÉ]ƒ‹¶×A9à¡·Œz‡%$ѽ3b˜Ï%áW!Z:Œ’VÖ§'Ó¼X9#Ž¬ÎÚÀœ‚m¾³³Üe63 ÷:Å:/D€ÓÜ‹y>š%ÅÉuE)[_JAW6ÐûÓàTFl¡—sñW6ѱqsV¤y^l²êî‚4‹4jl£/¹b£â”´¬ñ@Íc{;o[éË¢.“\o¡–ú2|ËJËãß#6¥0Ðj©°‘‹TÅŒ–L5K–&9ã è û9˜¥±q›% T¼ANž]1µ†‘Öy+¦Y<ã<ׄæúm©›¢3–… +æ¸lš7,|ø:ŸRÿˆ2Aƒv´ŒžêƒYÞ eÓTÅ*s³Ô)ëIr6V,ç¼Mj¿/¤ÚÁ¼£óÐIë,ÿ[ãüÚîl0yÛüÚélóÁË©üsâÞo]?è{Éòt2Üë=èOÞN{/—~ÎÞôª•ÍÑp{ðr¹ë6ô϶N›9$ËzWà‘‚`ɯ÷åWþ×ý3­ëFû>³^ŠU™qŠ Éë[TÄ }áˆg?cNØO ¹GéjB‚3á*Æ”ÙÙeÒKß?¡õOg>å–y“_üyf…EÎñ¶ÂÒ%ý8ò?š ?ŠŠVÿÈÉ#‘er!8|¡Ö±]'‡2KÎáò€Rx ¯óJgÒL‰ž¢ÆEæBÔǜ٭*??)ËËó Ã7'Å ’ãühÄRUŽ¤fhAœÄ Ælâa‰g¹¯–Cº8².“戜ˆg¡M#ÁŒCý³êè j?A~—% ã7gÅ ’ë :‹~9 +IyR  +”xóǾg¢Kpz@›7%»šQ†Zà54íßÑÇ»jüüXÕù…ᛓâÉq~$þhÊâA´å”¦N!G‘š•g™–¢3EÜËê”ð‹E’Ä r +#a;XÝ‘´~‚FÅ †ñ›³2ªùc=A>Nº!t`…T:1št ’Šˆ%Ú# 4c0<ØÛ4r›9Aç'¨ê+bê+’ÌJUÍã-§mwxüåœªÛ }#Í›,Ó ÀpK¿N:É]ZqŠ‚tÉã¶/8NNÕ÷#™QÑø)NÍdxuJúyE{î5]Ë$!'çl…šä]ºÙÏä91âѳ)d6õ]¨¯Bœ€KˆQ´>ÂqM² +§Ô"e*s¤8ÑÕ,5»HX#é¼´ª" O–®¶^:νË×Æ—˜P”]€Øô•§æ¨hd|W)h!@6´˜‡žÚ¸€ lf ßÑq¹‰f;ÄÆÈ·ra}*Ì"ôdKÏVû1¥mEÞøÝú¢¾bï`¡K•nՄűœ[ÂE•Ç)ZvNè#åReÝ3€ªz[j øxÚVÆå·€ÃÂDYÿ-‘±Ð†v®v’¶W¶”+ÔzP8 WèV;Î×ÏCH4 0€K7`UÊÆ®GhY¾ˆÕ>€ò¬ RöQ‡R¼¢ï¥ ÇÁf !ƒJçñ‰Mß¾+×׌͢ [ζÙU +"„;"·k7ã“äﳉzä…’5±>â{¢H™_½ õ¾Ol›ãjÂ5ÈraÛÐ5s†@²ù0&ËɪâC¿üÜ´ôÔ¹ö#H1€$QaðôFïÊ)6ÓvÈ·®eˆ°l¤‡H’Ùñ\Éܤ6ƒØ`Àó0áHc¥] 5?ÈÑyXDn¢”ÁHõÝr‹„Ùq`Y…ËÀ›”Å» 4‚"æ[ÝnÇ­ñ5®;/7Ëoœ IL8iÂ×bï4@¦ÉŠ¸Iè‹{óÇÂö:]…1­?]ÖdHå~3™¤ÊEµÒUEš&•KJ1éÄMªüþr¦VÙòÜÍkÜ8-ÎàPð&â¤9žÀL{ü•ŸJÎäñ’ýª°P1*¥íœ?®Z%HÎÅmK…÷Ë#‰·UlN)伟2±ñÖwõ@ÇVmÿ1#tPòqÊ 6\Þ*N×VþŽ Jñ +2O!q4©C^[ßcÍPLË y¤Ûì””EÌ'¥Ê·cZÊ'S„¯è[ƒ‰†"ˆŒÈá߇žd¹ÄUUñ»~ꢤD{ÚH‡CªçÂWFl—Mëq`d£üe”‹¸’]CÆàÊE”1’CA·"½óD?¢\d=,´œí^Š .6³‘r|%€‘Ër"e€ä¶ „®jºÊd·0¡È7“Z8Ž’8½Š •©j ŸŠegZ£³DKðÆÓ_aÂ<•2Nå/ü”ácŸ!¯«¨ZWEŠa:ðl®ºÍ ÌÓA$Ýe—¸ +€3€E€XD‚™àç (PZN¨€aíÌèÀØ…€yÄ!G(–šS¨jäAñày¯á"% äxs1(0Æ’tfâ*ˆKuT„³bÖˆ3‘5ˆ' +@Sªp +þ[¼ ²&gjP@®ªTekx£k ±¤ù}”–y¨²Í +å.P]xø‰SPºö˜» øb_ˆ ©ýIe:n·8‚ÇâïZzxÊAaíL['/RLaÄS?ò¼ÁÁL%À”ÇW¸À@9  )\ Ù)›Éz`5|˜*Ñ=¬dP晥²~¹ ò]¹<^³V­oiY‚ŽŽ3«ÖÔØÇ, Èýtéq—„_çéOº#òT´±wV.nÈnÖä4 —åΟ™‚¸¿\Y"z¸ˆÂ~m}ã”ÔÉl€t";`@;|-ËȉA•jápV\·ÏœÞ+‘|ÍËdÅ Õ¼N¶ÆÚºs¼&q9òÖ­¶þ•_þ hq€6/+(’®>Âr¿áòò#¡IHi™·i—•àÿô2Q¬q|žq¥—É®J}¡ÖÙsåù& Fˬè9ä1¥êe¶Eƒô{w\“E#ãjN·¼f7)(r¥è™>æÙRàp´ +L9‘PQA9å˜VÞ’$låWPóäxsRžl%„¯ÙY4ÿ„íKY‚–x`Ô"¬(Ë©¬a¹¶@gùMéå~Hé€èª¼"¡Ó ›†(Gº¦Í3ÄZ±¿¨[m½8ó"Êq^bãðg…·äǼøˆç;Oô£âJœlŽ@3]ySäÄIe‘À.£' „yr%%k&›sÀ@y’H‚gN¯ù1ö7eý4Zü丼²€8ú ]‘ƒ áPÀõá°øY7ƒ¢i[û“ЛÀµýÊh&×Û— ‡U Pí±â§ïi_<ÁɪÆFžªËDjMI«Ð.º¬ä!/+¸¬"(uYÕÀ`)ãÚ¾\|)XÓTé×™ZÝT µµËJÕ.¨„¼]ä÷Ÿ‡6ßøhmjµ“Y'‹ªvý¶Üƒ@zŸÜ•V698†L-Ô>+äÍ};âå„2(Äzѱ&  SŠ^·Ã{—Ö×øµ°Œjâ¨A’©''€¼„Ü/A²ã„¥úže¼ÒM‘D3­íã´Ö`Aâx!µLªG¯ÌõÎ_•4’ü ^«”`TÖ˜'D´Ÿyî‘â1'jâ{ñ8Þ +‰JiÜ(ëµÆ•²ò^4íl“«ÝVœî¡y·­×î­”¼®à¶ +ÔmaA¾“p·„4aDÇRq”³@¤Êò›ÌÆùÁŪ“#õ]eŽÃ‡…Bë1¶5_K*³®AÞáU)‹Àçm^a%WÂRâžW‰Ûª¥~›ŒFEøSí¶RxÛ`‰!ÃEÂ:½Å/a¯ÖŸRƒ7Ç«S5BIøA]ÚÙ§k²ITÑ +–dâ?æl +…ºsLÒcj¿UF#"!ž©´¼— ¡u-¼áã€ÐOÆåÉW¥dôË28µÉb×C[­ê|¬HÔ +cŒ"µ‰CÕUšÊµ6Ym0ÞÚ"™æ¢á%ùÑšh,zç‰~DcQÈeòDr b±)É‚¸F{¿Œ¨v‘œ8 + „þ›òí¢ÇU +‚og Š ¨³qR´¢áÔ…™²ÕÙ°y™‡ˆÁ’›¯hÜSÃîežr¸Ïœ]Hn} J¨C ŒTDB— +¤†£ƒLÑ HFÞ áòÙHŠ„¼IàCE5Y×°°zVŠéÈšÁ  6- $`$Òs£<4è~%öÀÆ€"‰”Ó`\­¤ç¤¨ãFs™kÊÜ$—$€‘ Óöí"«4#aÞೃ€1Kæj !AN<•Ä‘ÆÖ c@‹dÊâu…°—jˆD`ð^–¬D½—lÁ[^»/K6¨5ŽÆ߸ôü8 D 3¼ÖÙ‹UÇà"IzdòF¼ + 00È®n•³Ü0È‹‡ÎGñš<‘]ñÙúv^Út>ñƒ2o=PÊ% ß•_F·Ú•‡ë¯‰¹…G5µmCÒÞ¤³«¯!÷k‹NXk°é±K»±+xµ÷‰¬ê9Œ'9Gâ»Çï ¼Âþ—þ|kƒŒ¨Œ"½ºúêé5éÄž€ùœ÷ (F5e •1;e(G …k\ ¼ÃѪu«`ËqÉUóQ·î\ß–8D%)žÒ N@­ü÷¢ù©*˜Gñ5¥Ps¿ëâüL(̓ÍÏ BFÀ¢¬·*بgèùXz«è:Ç/9äØÉãÿ }§qUa\Sñ,µænUJ6Ö<%nzÍxRPdP)Ð32çà v‡TŠ*pèÄp'‰ôjöé|ŒUÂdEkpèx{RíüK‘Fgñˆ$BðÎ]¶DT%BrÎíîl5n­¿)ËÜŸc§S:9Ô½Ô¬–àƒñIE¬}@ëv!5©'Dµ…§ +d#ZxjHbá‰Àà¼I>–å²?É ìì4ar‡¶É<KÌ4*KØ_T Š¤]T52Óê\ÂÄß"^¤t*>ÁI=eã“…% FXr†Èíø±:¼;0¦4 +\^®%gÞQ5N°°J·n´·y4®t c“¦‡Uw=ƒ’*y“Z@¶ ƒ”òˆ)üCôVáøDÛ€ñíâëÑ+ÓQƪA®ŽVªeˆ8KCCªm¹%ý*É„›JÉâxlÈÒ[‚×¼Þ”TKÍ‘‚²dGQòAÃ5;Wßx>ݸúF2 §WßxÏ‹ A(5(nJ +Œ%ï4“-oßGa¼µ59²`jJÖÔòƒâ…jáÂAäv–ÈŒìˆ <‰¶ÕÀLR G¡7¹¢1=NªÜ^†öÄ¿^­ÎUÑÚ“”ì] ŒwÖ O8‰2|Íâo+/›'—PŸ¿ÏÛÚD(ñq4G#W©é9 WòAØþ#» +´R¼<½,’Ù" «÷N0}'ø”‚➤ÀHÈÃÇÂ'cÖçÌ-œÜ -:¡ƒ’¢S²ú% ›‚@¢à†nSZÖànÑzS"Û¡F +·LÊP±.t ÇTζâ $A;¢¨*Œ7š$‡Ì@‡†g™³¸ÔZcæT݉ÆS?Â7õ#|U¿¼O~43[À;OôÙ£]7²G»NdvÈ& ‘=Úµ#{´ëDöh7'²§Ù. skFöh7'²G»NdvÈíæDöh׎ìÑ®Ùí¯ª#e$²G׉BÄŽvÈíæDöh׉ìÑ®ÙÊnò#{´ëDöh׉ìÑnNdO£]î7·Ùá%®Ù£]'²G»Ndvs"{´ëDöh׉ìÑnNdvÈí:‘=Ú͉ìi´“Èí:‘=Ú͉ìѮ٣]'²GÛ9‘=ºNà#{´mGöh;'²GÛNd¶Èž +–¡ªÙ,DöhÛ‰ìÑiæÙ£m'²GÛNd¶s"{¢ÅM‰qËv"{´íFöhÛ‰ìѶÙ@ñó²ÕN"{¢%´6bjÛìѶÙ£m;²GÛ9‘=Úv"{´íDöèæcz‰ìѶÙq¹ˆ/ 8vGÛ9‘=Úv"{´íDöh;'²GÛNd6ÈmæDö4Ú‰XÛNdOc­!²GÛNd¶ÈmçDöh׎ìÑ®٣ݜÈí:‘=Úu"{´›Ù£]'²G»Ndvs"{t9 Döh׉ìÑîèÈ–©´c1À•Z)ç»Ü´4¨@PòµíX X¯ËÛŽÅ@‡dµ-Úαز0R6-Ô°`ÃbÐè,ƒÆb1hME”üdÊÁ,,u-õ>%kY {,ÉÙ‹AãÅb@©Å ÀFMãNj1­†Å  ,ÿlY ´ëX ‚ͬa1°e1÷jY Ø,׶زð­lZ êX XˆkZ øj5-´ÝÜ”®Å  ä:¶i1àéµ-¼Œ¦Å€Û´46%¶,É‹Aã(‚Å 9²`1H6X (±4pÂ[ @²:ƒVCþÚÀ¢*Z{‘Äu,­e°Å ±Z±4ö¤u,¼ÇM‹ŸDÓbT“†Å q²q m‹A ¡ÄbÐ@ž 3·€…—yÛƒdØ ½óôZƒÈÊjK@‚O)¨c1Hö®þXÛbÐ8‡dnm‹ArªºæÀ]‹A %Ä8ÄÛ6°c1°h1( ¼8¤â + \Æ‘ø-#ñÉŒR’$&%¥Ä)œê[1g†l„r˜ùV™ÞhBPu¾Uç«IrÔ¤*úÇ3 ¼ã4?j¬íCžöÚ|à¤Ø +½ýÀ­Šnc¢ùâQé{Fóó4Z™`>@âj–Œ<š8=(ôä ÅF;‰~àyÿ“HëaA˜tÆΛœôQþ  +^ãÍ кØS²Åó×j©ÍAäJGª픀jgn ªê-ªÞ|€°g‚ùÀù\BÊ$æƒà-S&š¤þ¨€¢ÌùÔÖœ•v­f’Õ]™h>p>Ø‹Šæ¥g°DûŽ‰Ö'Ež­·‰sm¼p.âU&ZTåòµÚzàüeË"ø…ÃŽ«@ž ›Äz=Ei;IÄCÊ…¿bÑxm¢îû§íØ7o<ˆ `0äñ1h°äò(ùÙ£ñ ‡µ”÷!êX€hÈ}H¿Ò 7vUÈî'F†Jnkbý^P4À‹+÷)ZœÏ1(¤ü™™ü1±8¯qùŒp'Ãûðh=pþu>@Ñz༠ 7 òB¢Y]–5("¾„É$íŒæ·ê iëÚ|àü9ëh=p¾Ô@¦‰Öƒ¬ø–ß]o<Àˆ~^©BíkêhWQâ'Q¹'ô©ŸD +&&S6\­±°”Š 50HñcµÈ¡‚L“H&Êq%J0ò4½!æd¤¯g%V¼q¥`ê)ï%Kú‰ÁRyüm…ۙİíUÂ~™Aüd¯~mØö Ð$–íh8ª-Û5(±l×À2<Œ•”q ÉÖr~«–ì+c7r=s¾†<íËÇ6…ñ¸+©» +& P{ƒLmÚ–ÌšÉí×AKL¯¿FE¼æõ6e^m°mנĶ]ãå+Úkãv¨ubÛ.« ¡û#ÓÞ…›¬–ʹî”máÒ0BÕžÝB´ü<  ,¼]³×W1MgçAs¾ÜmºX).ÐØ’”l] ŒôHÒ|ñA”ákQ‘‹®Èjº}°q õñKJ²Bi.÷ÕÁyrÓFµ8~0°µ8h¦‚m6:J`DkyIyßs‚L)(îH +ô;W¬ÞÞ8fz #âaÕ²@Pçô¾DM w;´~]ù˜aÿÚl?jÄ¥ÐtvSÁLíÍ8bdŽÐ¨Bª‹PqÆpÉIbã˜6eRz:*1òôIäßúÄaÉö'ðÂ-kàT,Rœ2!89íëã-j´5ÁKœb7Ä}Ù¦¼N#"A}UjH½øVë¢8 \J(IeÒ-„Š™ùÓƒq~×’ã“ØüB™ý¹‰Pò‰åµ©|“”"PíMä¼ÅLKIÞÃÈ„Ší"!~{?ŒÔ@°ˆ¢Ù}à˜/b½!ûš3P“6I¸ŸÒ[ì—˜r!ªÈfž¥fiÅ<) Ã9Â#¶H +Î$ž}1ÂÎQC#‡Á…M×|È[6[ËÄËZó¶®)eÆ¿%h²P¨UÞf¡FB0šÝÅÁÂiycUHNXGú/JP²×Õµä'ȼʎLŽ&+y]¾wÑÞˆÂÏ%ÝYy£œ‘ò¥áF +6fkåž²“Ët\.E+ÄÔ.¼1·Á@Š êL B±ìM÷®‘œ- T™­ §ŠŽ‚G¤e\Î̺&qÅÓ%v´¨«G´hÎúûdbÓû­g{ÎøºÞΆ’ß¾–ëæ2(†qÉoÿ—´R8ý±.¾)ßQDµBÝK:JKŠ“Ì#pÒÙ#ŠÉ$sH¦Ð˜AsíñþÈÑC-Ü#öLÉž)’ |ÕtÖ"qê¾PCðh•Î5òø§mÖ(‚´Á +4Æ7—_å^JDJlžüdÂ7Mâ„Lú«^gj¾AZ ÁózÖr… bòEo8-R,à@˜°Ò˜é!ÄØÄ·:q¥þ—uÜ{OT©¤¹üêWÊ?×ÍãO¡ÿäMÙþ¶×ǯôïºEZTËÿ+Èð÷«¿ÿ6Ô»%DüT%¢Om/YrzY}ôg¦pÒ5žÿÞ™&úø3G9ôLrøàììó-©±e+^r4H‘7¢ š§ˆ4§3žàáœáÑ Æqî@ƈXH^ï@‚‰ DL¶¬y¾þP +W¥/›ÑKÐ÷Âã¼JÞkbW<4OOzNg=A”9ãAÏâÜÿvBõ]þ^ºõ?‚œ”%;~(9—,žK“ŒydʽÀVT +ÁDž™z h`«ö-é`$ʵèSÛíÀè¾ËÈØÜs]?f&¨ët«3ߥ²FW ;Д)Ïë¢æ1o;"Ïž»QªìÂ# 齞(ã|‡¡­¾ù‡aç‚B!9’ÇË*tQ®2q?ZДAÏéÂÛƒ¡óN(óXÝÖçºq!‚ +Pæt÷«0£4eïóºØ¹cÌÙ£#x~º7ÿŒ{ódãO·ô/ÝÒ¿*£½ÝG"P{¢Ú[Ú’é猔^½Ž¼Ô¾¨ó/vGëv«ÉÆÜ»$’]çâu?ܾ°G\ñîB:瓹[ä¹{7çö¹dÎ%?òŽsïCGÚêú7¯#ÇÍé8çŽÏÅD‘;7cÎ-D=âÎYT»ã¼Û>wß>Šúóéfý3oÖ߯¡}ºÇïíÿEMñÈ8 +ŸºÜôHfú͙󯮬Mf7†Û¿?ù£w•@YïÊúx<ê-­ÝUîñð÷Áèñ`²;Øžmþ±·5ÝÜïoo,÷.Sk×»rwÆÍãþl6˜ì§‹zúÇÁ@ªª€CÊV.˃6´Z•!h¯¬ +Dz—Ûî]y2èôg“áïÔ³ññjs4Üln÷GÃý×·'Ã{a&*™wh-“½}8ÜLc«ö|oþ~0žÌê™^£ÿ©zK˽ÏÏœ§†Ù«›û;²zþݾZ§%î{ÈÒ3Ú›ñ¤G“Ù,# Šþ÷â7‰‡:l†Eõ^ŸáÒáüÏ‹?藯臟 Äž¦Þ÷?d½º~/ž@îöo$Ë>4±4gò"ªŒå5œÏªT¢b¡¦gçpèµqÊ?(!Xeýó!ñOÄHÔh{´3»4‘Ü[L¸y)EyY'XÕÜ„yxRR{*®C¯"ڙĭç e +Ö’óc7tž#ï?ͨàÇ׊[é’ y¯Š9ç—4Ü ÏÀª°ÊpÊ«UãG ™ÞÄ'Ïgr_úe51ØgÎãY—Òùp!š$»¥‘Ë žË5Ó4úp+¨OE†‰=ι†6…’W¯x\ÂYJ.½q&GÌ%6¸p’Ʊ1PäH£TöðÄž=£E%*ÞÆÍ“q˜ì&rB{ªù,Íj–K\Ž–´8¥•0S&§TsÜÊ¿Ô¦MáœÒ¥'NÛSÉË)†è*l"§½/¹.rPbŸ°w%g¸£æ\ØaÉxHÒÇ.ñUËPÐùEAç¾*9‘jŒWEªÖ²c_ù—´RY!«®¥ á£VÅ룭“@ +oáä,ðŠûáMžð×;é¼GŒ‹ÑÆ?2æxƒ"ó®ð*É-ÞL!d«(ˆÑ—ð‚Zç+yѸž6—gä.%V%5°¢¤é‚Ão SÉ)ài[øå¼Õ>¬Dˆ¹ ïêåbp~_”ò6͆2ejü•æô0g ž”eÂx¹ +PÅÕ«‘‰™X|¡ýœÈ­îÕûé:mœ¡‘^†ÐÌòP§?àÉ.þPpíŠÎš8çÎתBošOn¤/šÊäÚ§ÅÁ®#Ä®‡òùÛòJ2ž¡Jåx¼MsN³@©{Äãb\.e£Ï[Mtº°>ï?™5†Ñ®¨¸@6RæF3#ï<±¯lŠ 0÷/¿Pˆ.Ï­<çNÛžsêJþ°<³É¶×Àg p3¸.’$/ª$ë±+‡òÖœê?óÕâ\xŸK©ÏäB­v£$5hŸñyø5ªðâ£.câ'Šë:µÇãû™û(+¢™œ›ŠîgLÜ,ûCDAžú#ö€\\1€|¦D(%)²½ ò¾ËÚðÀ¬¤6x B` Ñ”„âÑ a;"- T„Úx(êwŽ3Ëøèðx¥ÐÌ1JŽ/Èp²èJÞÿ9Äq^x”´" +åiu±ˆ]#$Ħ”\3ÌžñÀ `r\ⓉЊÅk(ùŽä¢²FŽ‹+šqÑ5D}ÒMµ…<.B§Bž píT 5‰à«–ˆ´«˜RX'ÙÑ¥’”%™0&…h6›ËÅ€æÓÇ2Ð\ €O`CµçÓÍÒ×$‚—.?ª•ú·Ìû\)´Øqê¦ …Ë™Œ©< +2X.cýTšó³¹P„ŠÄ úÝ”,yçFdƒë@ ]1ˆaÎWêÎ%Q'QÒxŒÜ&Ü!Ük—IÄ#f²þI¾<¤ñIš1 àj)€ N¢S&¬§`‰Jh +ÈD|oA€¼^õhë7ŸÄ‚1È…þÚ?Ñ"€Cö½‚ëœ1*8©4P I-_ÓBêÄ(`‚@(QÂ8Љ:h_è*8W +µˆÇã¯ð9ki\pÚZ(“D,ÔÉrø5gôaÁB +·LF²¹¤^f¡ŽKä±–Žïæ\ôÎÉŽ%ãs!ÎÈÄÉu­à'Öð}(‹æ(ž@ÔwÝHEPD©/ÊfÐÂðµÄE­äu \’”(‰¥ûÚ,µ)JùTa¥n«\nÎ"ô¹êÕ¿‡Ó‰}ˆÏ †rɺºà +™/“ƒàÄ‚¦ÑÆ{²B]•Œm !¿È<™2¹ä(K$“‡šÂoïI)=Ë!»%& +mW‹˜UÉ*Ö9½fYú4ÒÚ3V(ýxÝcƒ_¡±Õ>]PTn/)aû÷Ï—°p¨-ˆ[w‘ŠiÁèZ UÉ¢œK‘ 2;²HÁIŠKNíbCVj]H¾§3¤Ò´ºŸH_1 “ªüS*Ö´uŠƒ)ÉZ •ÞlØäóäÒpN4b>PɶÁå¹hÀ‰2”€D<½Ž•b*Ñ6Ψ*PcjÃS‘üc40«š +¶&½k&ÔÃø·¯Ø’å{JIæx*Ók&›e–áX+_˜ÖT’@ü?`‹"b‰4r„–%ÓVÓ”¥¾±_el½x„]­|Ùå…÷x X¶’6LÁ5§¿…PL[,¶ÔLU0ŽåF+’ž+KlX”ÊžO“€Èž›e¸©lˆ‚XË&‰\²Z#,F¯Œ³ªù5m°ÍN*·Õc×I0e# _ ÖY+_+3\-±ÙI + B%Ú6ÃFy9HûÇ2ÖŠB‘åL$sÈ!èVù¤þÔHNE쿉9š’“GÇ"õÐòd8Î2’‰ ã³£CK,E2b´$D•Ä^ûÀ4 0ã«s²º¡È0:Oaç·ýPPþ .U>å¼¼ã ÁFÔSäšµ Œë Åhª¨‘ð¸T»i8Å_-_õ’+Ï=ŒOº¿Âå ‘#”ÏóÊh\.½˜Œ«ÌUù…\-©’sVzO8I)v'Ñ~$of³Q¸ >“nÉ+Ãå–t抅—D˜jü‰ÛĤg0ê +¹£¤Ê%+»}>U\.š8 b%P¥Ï;”­UÈÍÆ$ux£äBéïÌ—èP8­L»J`’$ ±D$YŸ‘β]ƒo—ä`,ýË{H9’F¥Î…”»˜ÍAî*  l¢%5 +}ÈÉhÎx @UbEÀ‡|âÒÊK+q8I%fQ×$ä!~èâ\È\l$á=Ú°„)%IÄÈYˆÜ†“³†1•ŽN˜ )2`¾á§5†Ýi¢)ŸÄÇʸ ÍHs¿ +ãj±IŒ*€U¬7pE+¦m¹nôuy_O +Y%oðZw…Ít¥À$ñìa<H5”(¶¿³ .Íæ$6]ó{,X;XTŠ›†–ÆæE#ü4¾(ê%^ +”Sbõ•)*ä‡P,ûIÞ–ä• @ ¸ˆ &á^ÈŽ2UÂ3Ùà+ÙèWÐI*”Rª:"\¿)R* _áŸ!±ð)T¡eª/a%æÔ(²:ä|% oAÅ™ºˆS*ÞŒÂø<.ÐA +«ýfVœ\›¾ØªChŸs6Ø>9]˜paäð*_*6GÊH6v•žÆCõç¬PðC`1ÔrÏsçËéæÁ@HWr}äœó¾k±½‰¯¥ž&¡´¼JΨLZI¡Q’8*®õL´`e„1B—©WüˆVñ ÃÅoÆÄø'Ü¢â×ÂÆß<ÿö+£%Z‰¡¾%ÖÃÃŃ' Ô„1IÒïBb^bBOåå¬HŽJ®QŒSòR•qYâ$ˆÏµ*…R}/H§„@³«‘Ì­Ã'»2ì'8ësL¥|9jÅùS~¶eeÌ@ŸƒâŸñV«k_<#Ù-öòÝ¡-ŒµÍ¥ö‡âW½ð‚Z$NOÉ’H ’Zã÷Lµ¸ƒáØEc×% >=Ñ!—)“8Ï ¼+BAéÆ°vk´x!EòE3p¸âƒc¹€Rö/HHFû¢®i“ZU­Üq¨ÄÛLئ´­„¬ÂÃœÃMï ²JÐnäZ ƒ HŽ6Ìì÷AŠ +ú!çTÆœ¤v›"(œÛšèWíAÎP±WÆ;cêMƒ `s1¸¬:.±ÌŒ +„5³0Ñѯâ܆÷’)™à6p6J4$.Ù–"W*¼Æ¯4È­ÃÎÏŠÏ]³_ÄŠ+ƒ¦\åàÏ0½n +Q`<ªàK¯8ëd­ζ€û0gÅ3cÂŽuºŠåª¼±q¢uµ%c[/{Y ù¥ÈeŠß[ÃpRÀŽ2ÁÁ¢Eæ¬yô;' DÊ=6s–P $¾“ráâ°ó"ð¥JA…—ÔA…‘ø î™útQÊ­ÄïUÀ¢õ Iyb.ÓH™@‹ ÚË0 aã}ûúûZœg€p{-²Ç'è'äÞì£ö(¥ƒ“A¥¿°Y†´œyAhï˪oœl½°dº û.Ð!°­2ªùr‚l1á-„·ŽÊ2ÅÕÀhE§ » ˆðRˆªk}™x·Ù¾þ®-6(‚ˆ±|W¡IÂÍÿpÉnuÖsŸ:F ¾¹ñ¢ÂŽ«AHº…çÞbd 7gFL¥mbrqå>½¯¡ËpÊ‚N?uEr«Ì$‡µžÎÆ8Ù#8sH€ i7„;"eÖI ¢åôeã rAjP4wƒâÚ¤G;®'†ÎÛ´µK\Ãœ“Mz%(°[# Õ\ññ sošöĬÞ/v:,‚}h0T:^%R,[Þž24Ì +…l“–Ü™HŸ'â²—°¢UÌ©JmÀ:ÈVw61drÂÈÖÅ–4B1‹Œ%~EÚx5‚É2C 6§ÃNèŸð3h°XäÔ¦›†­Á8ŒÙ";ÀPž3ãæä9Æ'E4cĉÇF7Ó ê@ªd­a<¥X>kñDêçéÆïPxçÿ +¢Wfå<ÙóŒ°.ôØn°¬XÌ —,øwæ(ÒhR0y@Œ6·4®AɦóªYs…\tÔ>o?§ÉѼ ¡3qrÈFøôŠÃ”‹6X‚ð+GÄœúRkX´1p‰ÒÄØ“Žq‘Ž~çìúL1,ŠëIê]F=NÜÏénz• $FâvèQ°yR‹D ñДr`ÆbèŠí*°™(6õë‚«ŠÀðNÏS,+‚I0Kä,ëA5WSNdH(½8å„q#P cæPåbõ­„&*v—öØ÷‡×…¤³ +Vl˜W #â àjÍ}(WO&Á¦ÀæãM,ʳÈmy»®‘‘Fñ5`™u…'“±DV±¡–…’àåpfwÓL¼BìAÉÆ‚0P¢x‚œaµÑ3È" o?ç:.؅Ǿ+Qdjµ vQIþ¯Äìo!÷ó¯%“+ 3Ñ­µˆíQ|ÍÅâ«|Jã@É¡Þ³¸Îëa¥šMA,ùYŸ-“%x+ñ΋ÚÞý’Å™Œ´s*J|vFıþCœ QE^ª‡6ëh…ŽÿñCÎH®9<}*ŸðžÓKQð UŠYÐ"ð +’Ÿõf­EÄ V1ÜXøïàÊç‡Dð Àg›{¬f³¥cóS”29Z¬GÃ~%uK;NqèÜ ‘ª„L‰ÚÞ˜¹`l4\÷¥ìU̇A²ènT’_¦&šDãøÔ@eáy†#Êp–gÚŸgÿU)Ù¶ÂÛ;£}A +ÐAü^ +)@‰‰"på8¤tÌ“ÙÊÄÂLNԥDž0h®Š]>y¯=†ý&†òJ4kPKx)ò>© •Àx‰µ‰3P‚çÞ2ËÌ”2çõ3V@•‹@f@LQÛI#‰+W„WVàÙcPp^û"ƒŠsçs0V•L'‡ñΉyîKÚ€8B† ‡@ʼC«=І¤Ï9*â;ÄDg½íñÞÁøp§7}Ó?ôöÆ;iXôß3¬îx˜a3 ã:QtÃo0ѲRÞŽ+…‘Î_ŽÏþ®èq‡__=ï?ž ÷g4•sLyú‡3ð—RþòxtHÿ~´õ3íꙥµñÖ ·>9œ¾é=èï÷_&½G“Ádùø¿õäýÑhøzÒ?x3Üö-ŸÒê¯ô\ï`¶Ú{¸Òm»Ü[9³Ôì ŽïÑllzü êðè×þèÄöòívSþÄ1íoú³>ÍŸ¸B?n¿™Ó&ô&D´Oçü¦1ÊÆ›þd{ÌŸèz+½[j1˜ßéÆðWB£ØhãO4›=„&¿æ}k°?Üëmú{W–{«‚#„T yϘ¶#ã';xf‰æJÿÎz\V9sñ/cä'Yzyoíî«õ ]ìÑ€{ÞnÅxµ±I-Ý+à oÁΫ[ýý¿k%GaÄ™¥•ñ+pÿEJ¬Lžl(ùßqsýKC›ˆè<0I~ÄÛz0Lóü›‘÷>l}_xXR y•ÿ×ÿókÅ Š\É¡ñb?Ä·OW®ÏöC­÷("ÓÈzxä•ÌBŸ<‹÷yæ+š˜¸”ºP÷®ô¾Ùßïï vzù•^ø‡f{…íJONõê'N*þ”ñMï©¿¸½GÌÓSÕÖä¤ µî©Ö4A¡JŸ®Ûp¢î›xrpy Ùœ5ÀðŽÿ»€÷y2G‘¬:Òÿ#®µšvM°gAò7¨D}’·þç÷º•ü…zsöÇh0=såÞþø·}þ…dÌ¥µý1ñˆ+iê$g]Y#ùó×Aøë• /µÞŽh×ОPx¸ß“]éÐ7¹LúÀ•gÃéD<|°û…ÍYûí;|a½?n'ïïg§ézíLïÊãþd6ç+›³Éøíàô³Ðü‡Ñ£‰ïH_LeuÚÀñìÉ`{Lòàþ(Íü>ö$»&^9$ï²@d5ôº5ïjH%7xt\ê¬,+WiUd³(ƒJæ{I•wÈéï{LCUa®&\ö^¬Í©‘E2>ˆÌð ­^ìÐr»½k½3½¥d꽯õx¥½t3ÿ{´h‡ÜM¿·vw§ƒÙ2Ïÿˆþ~’Òrµ?$ù÷Š\j?ðȼÔø^ï>!vïæ.Ô'jýt8û+»tw:„ꆦ[Ö#Z9=õÿ_—8ûäš«#G­–ï~<ñynº#a’óO¯µ÷룩¥§?ºcñž?V/puþ«\¤2M—Y¯¯þÂóÿ ˆ\xO{Ußo¦ƒ›¿öíì0z`ˆz‡ýr¹½GœE`çÌú!íRà6$ûì ¤<—2Ó•ªæ&áßëx½¾žlrœÃGÇP¯âƒâÈÿÌ «l9èïÿ„ÿ½Ûbõ{Ü–D'O¹ïtÎ\¹ùû`ûsà?pßyâ_OåÚý«dÀ¿[z;5ž¾»(õA¤Ûr™"Nÿo÷{¹£"GÞ˜Œz›oú;ãߎ—"ÑPÚ)C6¾¥Æc·LåÁœÍ³‘³wó÷ƒ>ÑõÁîx2è=L¦Ch^ó¶Q)¹sÚ!òa,&˪¬È”+¥r–- +RªJÛ¼Bž•’ª­+<úd·|ÆU]MKð_Ût{4Y”áåoO'Ûø݉렷´5:œx™•löw2ìA¾ =~Lf X-L€úüY˜vщ9t¢¨ŠOtâŸN'÷O•9bÏs…ÐgÈ€žZä6Ï‹þt†±¤ÞÐv9íwR¡).>QšO”æo¥4ëƒ_trãÝÙ'ZóoóÛ»„¿%Úæß«Å8¨1ÈƆ°ÅÏb2]宬ð.§ð¬ë=+}bø½uøçŸôô§o·úr;1áiô ÁŸ§u(EGÇÚ‡ÃéÇ°ÿÈ&x35b'ßiˆvGnBã[§Ûíå…Ÿ÷gØ„"ú„v§³†§go4ÜûŸ×éõæO+áýªöÿ×xjÓÓû‰©þ«˜ê?é~!÷$î!¯ðV!3ÓYÉ%—1ûJç¤g!M² WQ Y²w"4 rô·Š€"£½:ÈA^)¨´yOªø`Þ9ðAÏ |píÀwÚ¸ý)îÁ“öCHmŸhú¿—¦ÿÕNðgZÖ†—«Ó•<òCÖ›êé@O'ýý)Ññ½ãÙKlv$wI>t:ÞIÞd<ëϯ Ñ'± ôÍñÞðÏ×˜Ô ÷‡û³å9¹1x=Ètþ4ÝîÏ^Ýê£øX÷/w’¿Äù/÷‡ûƒ0yÿpoc|0ô߯ƒÕü“íAœ—_Á`wD<óżwZ=¼ž3þ™M;Ðg ´ñõoÀY8 ÿ0î(åòB|Bˆ¶•DŸÎJò÷>*ìy>±ÅØ¢ZFåBfŒôÿõqH¬õ‰1~¢ƒŸã'„ø¿Äÿa|Ñ|CÀ'¦Ž†Bª¥**gK…â3ê(é„E"w÷ +Š)Z”ǪüP´O$ñIüà´…ß´¹Oäåï­/½Ì¤ú¹ç·YUUi>”Oå_MP>½ÕùÅ6$ShÃÅ …ð¿ç©ìNPüù'œ~æâc>þÿŸt]Þ†ý׃W·7?90ÿÍÌI*-Ç«šÅ¾g[5è,XÝŠ¶j_HBC¹Ëè|À[ýØ®,ŒJ JW™µüˆ=«tîtQ8Ôç¼í…Î*“Û²R™O!‹ŠõÉ°…Ÿhà{¤œá‰È‹½Ÿèà':ø/ Îûi«æ£i«êµUõI[ýgéÇD:û;ãÃÉ'Qõ_N¢ÿÉöuZa7¢ã\q7±ü½‚í‡4Tý[„œöL3.Ũ\–9IÜŠC½6EŽ|Ùô¿Bñ+Þ¬RÎYe”DŒ#6²-Ÿ£èb3ƒv™>èÕú“ÿ>yW‡èmŒ'ûƒÉ´§{ôÙê\ñ«1…ãE0nz¤øÕúÐ;ºà'Ǻàÿõ¼íÉÇ}ÄqTbõ9Hþ÷ þ'sí¤tß´8šý¸ÍáÞÁ(¸#àßtsUž%;ÁÅFnîïÔ¥FN¬Wò˜t3Òœx?oñc§Lƒ—(ÌÏò¢ÊKíœ.•µ¼˜¼È´Vͻ̭åt™Êm¦+W•ÅWeKߧÕï~Xæý~ñç™6üÌãíî,=3œ äo÷Y¡&±?“,³Ö¹ÅB¸`9 ’ÊjÚ +U$à„~2rŽ£)k/ÙB¯,j«y™æ<å5¶Î7°ñG?|ŸŽËdÚ(:´ÌÊqåŽð:+ hf|\„ü´K®Êi[,„^Kø­Ê¬â¼Í*=,ËØUµ‘É5¦cêù¬¡ò¥cC=WžOEÛ™¢(S©J$jG§k4þŸ®€œr QÙÍÙ:ã8ÞƒþëÁþ¬ï‡T´™!+aHYšBÐCáýºÆ¢ Ü&ÚqBcÚ¸ÅqôóÄz;IhU+OÔ„×aúöz•õîÑáÆ£¤³!’Q¡<­áÃ(ma‰’X]ä…ñ˜Ô>Vd¬MWÊÆlüV_'‰1¿½^:¸—n.ÝCC8xxŒÊYÇf9ír%w6Ñc*¾Bí-Hsî:IÞ,TO£äõ'ÓÀD(¬1„[%ã/!Bî +EdX®ZiK"yf íl.ÛÑH}Ä™)»¸8ïªñ<æÓH÷øžÝ'¦çcp•a º&ñ…öžÃùSt3|0ÍK_Kô«y (ÌŒ]'‚Jez‚´:Z~V3’Õª›ý©K<«yûÄ‹h†U,ân´AÄj,*#gsÑ¿mnqK!Dqà@ˆH|¡ '¡ÆÒ‘Tr±±ÿ†ˆ¿)­,…°6ƒ†8“a¦®éVÒý âEÄÚ þÚna°jz&Œ¤+I‚‰GA÷žfâH¬2¼ÍLyËJãË,ýÉW$SP4pS‚Ͻ‹qó‹ô.‚+´Cô^Ä:ÕÂÓ+”b ïe%aI{žD–% Œ¬3Óží·IsžrÅ,\Š2 ‡aÉ´"¶o‰&`Bl`¢£¦{PfIP> f§Ö%È;&¦²% ø àAÈG ‹tûP®‹sXíž1Ä¢¬ ãv¤4ëÒq¸^ì\*ÀØÇÔ7·"HB,I]´jÔy&N”•¨ÍNLÁ±ø†áU–“èAb­D1Èœ§+º1…ÀBtï§kP‰°¸ €†ß^¯‚m™¨o5Iû%¯úNÂ-C¤ÏVš¥€¶\¹Š…ä?øN‹s¤‹` 1´v‘ ‘”oI5ZVG욈„Šæ#4›6®Bš|‚1Ë‚øR:‚hW¦_µsD.íÑØ©äZÈ\Òãq4_’ˈQÐdOtˆvS‘R¤J90ڤܚ©Â*9á±$ivªš# ÎC`7—…esçEÇoA›˜¶•Ór†dX‚¤æ'eEœ‘t\Š•¤5š£™æµñó0õþ—ÒÎŒîÝh½|!:¼ƒH©ELá/ÑÇ‚7ˆ<íh¶D<1hÙ¡Ý‹fæíª÷Ç5e*ÀO\Qh¢kŒ¼i¤¤–ˆ*©¼hÙÆUÕº$˜þ<2/NÏE;E¬‹zäHm™3'v£ I´XI¤P+ú–£Óß®0Ùå¥íš“^¶À¹hÌÃ6ðXaÀF5©Å|¤ï Š)W¤îpýáçDF¬–«AxM<†X+uë~·Ð¥kã‹mIA2/‹ý±.K¸ÙX51[p &³Db+èt…ør̺PDñA˜k-§=$nÃW»%ßÈe7-=¹BLxó,¥2´"ºÉ4•œ04(Z-icYšl,K ¹…δâ(9=¢9íiªá¹EÛbð¢É$üÌpx9Ï wÊF,2žd@hÔR}¼RthDIþ¨¸¸/Q¢Ë´„¢ôæ¢Ctï¦K´’çQt˜BžuêµØD‚V6Î,¢UµŸ„|’jŒ$* œ“ÞLºäAÁ¸2RS0†Ñª²P\iŸ+ÜzæÕÉ´øšØ–÷Ö‚ t(fÑ C0AC.HmÖ¬ÑA+ ÏiZ0XútFÂ?Ñ… Çbp5•.iöši•ëêx]ÎÚPûª”Bòa– 4Ãr, E[— R‘LKB$mXi˜3—„û¤ ×’öËHå,ñ8ÚÃb¾œ¡’‰ù<ÉW1wA2abÄ«r"$c‘dJ—ó`Ž8*õ6"õ’$¦ÁˆIæeœ²^â3Øf³¦«}tDìh"QÔ¹‹l—0˜n!‘íŒ>Ä*ä_Ðb$%Ë…4/"g91bp¼g,"‘øD8ã§ß>©®M Lrywqj|š…ÌLÒ²eòrOÌ‚‰Ý2z´“ˆøfãú&ýý×÷¶·“¾Òj^çVõ…6ßþqâ7’¦¾0ºÊ€ÍÃÁ„SÚÊl{φ¯÷a>ñËG÷Ä@dž½¶âb[îøN!Ik‘`—nOú°§ññënC!ˆq„îÁÜI³!2Í÷¼t"¢•±éÿˆ@(oÞ!â@DEt„ÍB–È©UàäJõæZÄ:ö×ùL(W§Erk‰yÆçXÊ%ÝC‘^ ùÆjË É»T™—dr +ƒ7}ÛBlçÅ´9ò°=e[•˜oŠ*¯&¢çMi„º8H«iïävåfÐ<¼†IOuO¦"U¤Rô]ˆ¡¼´üª.']€Õ: Â’ÃÑU Î(ºaD‘¡·0ÏPœé2õ¶F×0êuÌY´L’‚ˆÞ²}#±‚‰§òÄ…PThûhymM£í`8Šäsæñx=&„øƒ:"! U8óð@‚ø/!¬áþp:Kã<š©rçƺu^°4 +8øô¤§~­pêNlOâÄðŠ9‹Q™üió½­ñŸù4Öd¼=˜Ni‚Û3ôG$ÿ.= T¿w{2ÜïwG£Ã½á~6Øé‰6°Œ—ýރþäí´÷ré·áìM¯ZÙ ·/—±í­ñ>ýp{0ÙLúË~|šq:úÑ«ðc¼}¸7ØŸÝèÏúgοº~ï]åß’¨ üþâÁý‡ãÁÜ?^ë-ý¾7Ú§?¯ôg³Épëp&/ ¨éÚ„Äõ¿åïáûI«í7ÃÑÎd°/mB‚üðWüköÇÁ@þºtaúê×þdz-) ›6ýµÈi øôˆvxª-ÍüL¦ßþ¥»³?ÞœbcFãí·ƒÓìLhyùã®kk¸Õ[bm„›ƒÙC^ÄÉëK[¿§ãÿ/wB»§Zÿ°¿5œñO<Õ|Ñ·§³ñÞ‡ºêÿ&*võ×S/MOʯNûÏ£+vZtüà÷b5Ïÿ1Sù_¸¥ÓÝßþÁÜø#_ƒ)„Éù)«A]þùÇQ ým¸ÃUN<^ßðãRàÜé“ôf;ÆiVZ~Ü%­°¥œ°¨ßOu?úRr{"¾ýqš•üñ±WµŒ­ñŒDœûƒÝÙ£ÉTÅÓ¬ªÛçÀï™Ðm’¶¿=X‡ýà½Ð¼·6öøámmo'{ý£ÈHº»ÃÑàØÆ H[\Ïæü5]׬?y=˜‘¬³ÈôîÓ¬®Ûç_¯›ŸH 8ÃAŸ>·}*ÚÖlÿÑqàøÅ ÷gƒÉ¨¿}:«CÚú#kjgoñNq÷Acc´¦Ã½Ã£WÐ%qG¦z‘dœØò5¿ã<ÝNÿÕzµ'~4™€×ú}Ûà²ÚèïÿÚŸnÆ­Võþ(Õ{<L“_½§ƒßg½›;ÃYk8Îþˆ›)JÝúh0Øó¬ÆŒ GnLÆk“A_’jtÅ»ûˆ¸;]ó«ñŽÍڪϚq­sF0 ëÒ“ÃÑ`’*Qa7†ÓƒQÿ¾:%ámøxNˆoö‡Û„«ë‘¢þxí‰ßò,뭸͋‡~2=?‘ayÇÓ!ÖÄÕa&§ï¢ +Õ_Ø ¤ ÊÞÇéwÛ …¸Ò[UïºCΡHà߶GUæ4í‘ÉßÇÙwÜ£œ.í‘{×=RôŸÞé{ý×›„Wg=<{›äÞõ¦ÑEËÑ;ìÝO«ÿæËVâyê{Ø£ü¯\¶ÜÚ¿rÙVÜ;lnc›ˆ•‡3%÷«øþÁ`gx¸×{2˜ŽG‡>ÇE{9ÌXbÄIt‡½[#hûÄŒ™ãÌzÉšëÚÂàpÓ7½'ý) î^&LF“&kôxt8;8œÐ'‹Œ±;¹ûýýׇý׃ÞãñÁáAGŒ Aªé½Ýo¿Óh¯'ãдR¡ð±è¶L²Çµ˜â¸ÙÎÁpµÅš§c/@â…rÍ;;­¯õGÃÚí²v··v8ÇmhëSÍu iwú³IvÔ{œ ƒÝ·ú£'ƒƒÃÑ4ÝÂDxzSHþút|ü-•9²ÞnÄ…ƒ }ŒLˆ3=¾Ãöhx@¢Ü”¿“<õšæ6 ÷x¶ ø`2=°\r›$ÎWtúøåÖh<ž<ëï§ohñ1áh&ŽXíãQÀÙXDÚDRRO!µbž¼rôwh‡’qùx4xú¬³Q9ýÞ‰ò‡Nóy«G°{¯4ªÃ1Û_€$È“ØŒF7Ÿ NÜ¿šRÞÝßü¾9Øï{|槵^û_öÖp2=¡ £ÆÑ'}T·¸#ÿ~ÄÏüEôˆý;Ø ÐSa‡Hù]äHܾ]»û¸?! +N”fºy¸EýÖ˜.ïÐÞ{Ï-ŠZÇi\â S¨•_%ÚèL{¡(z›‡ Ó¿(ê= +DbÁ‘õΣ9É"Û>‰ÚüfoÜBKZNª Õ³ÑôæÞÖ`çñd û~\ºž×’V±ý¦Ý²cïnX¢6£;ý±«ûãíþ ªs-+Ìm÷è ¿˺cÛÞêoÖ8òô„Ö¸íÆå‘óx6üFÛHà¬ÆëSß_ÐŒ ¤;¹òM¿á$¢ùï¹£§ÎÛ’’ÕcÚbSÒ¦xe#© V‡Aܶƌ›ž3¸]34^\CÈ“¹º²*Õ1M›H|LÃSL”ÄézšwÆ$^Ž÷ï$Aúˆ…?íÚõ‰²ç 3èïφ=dûÓn»”iÌ=îz³ÁïñbßrÊÉ5ýgmbCóºhÝׇ}÷Þ}„Æ·í‹J¿Ú$AœÝ"H¿é »yëyoéÓq/hKGPõ¶Ö™E¡UÍ ñ©;OÜï­÷·ßB·àxþhÔ¬‰óü¦w÷X}é‡8uò‡{M¡&]·ÿf:ðŸ]›&}cÞ§kûýi¶aiˆRc¿|UÆ%Ábw<Ú¡#­•Å#ÕwéÈé/…s÷ˆäý>wyi£ýíÛ<î¶Vž´¶L¦é‡îîow½ÏÇŸñÁímµ©"nɼc¾qx0nC«Cî`™àúàMÿ×atëµvOÛÆøEÒ™SïC]Ä=î½Ì2ç¯û»ö³±ŸñýÊwì EÕ;öSmcÁ)ºyêº.Ó^Mb¯ÜúˆcÓÍÁè„éî9ÁrþæŸÐ«øK½ò¿ÔËÍÝÃ:Ùùg|B¯€QïÔÉ£“ÎÞ©—šwIOê”yÛõ);Íǧ£›·Zrß¼Iºç±„ÐicssÞN6Û1ÑzÐ?€ö2Ïwt§iΑ­ŸÞxŽØÔT9îã›$[±Æv0ûÒÎi–z{ŒwtÎæ ­5ɧ>{õ–;/N]œ‡Ù“WᥰYtê.¤É͈AŒæñðæéÇ¿¥–Ò£±ãæïãÉ bPD‹kc®ì k§Ò>ñÏK]+ó•:†ãÊÏã­Õà•‡‚ Ôi7e#B4 +]ZGÔn>!áp2`6q¬óiBßw˜ÁñO߶Fýý·Ç7ÛFQ”»»4Bï«ñÖÝýÝq¯V÷OØè£ÆØÎöú°œ´ê¢"¤Í^ï½]Ý‚Mf¼»»*¡¯‘¾Ñ|:ÛÍçm^óã‡Ó!(Û¦-›SÚé÷ƒÕ†•©¶½·ZMÚ dßļ–¯Û-Oçi}¥Xš>¹½Þ»{séêò½:ÇivÞÞ#bKÒqI·aº*o²šÄº5©7´ý;Ûøàèí§a÷¢&4ok¦«ûƒ×ý:àˆF[C`à©ÑbDšñ±³ +ž„í½?Ž¹-IÃñìM¸Íó6…ZÒý kµy>®OW§oúDÇÐj´Ý6;žbͳñÁÑߤCÛï]šÕ +ñ¼vŒƒ}˜üvŽÞÀúk¢4ý½ÝýaËV0¢›ùËÕêô):érïÖäÆÛãì½é¤§"¦e-Ž£„ÄýÌÒnôÎǧ³ÑêŽ|‘¹o¸ý'ÌÝ|û„ZŸ¢ÏÁn´êIìœúãBÒc¹Xs0iPþ¹Ì”ÚøÑýeUzîÕ vÉ#°¢:²Uú°J•Gµb«OJÓOh)¡«ìñ-RR¸#g)mSQc‰pm¸O2ÐÖ½b^“ã_©Ov.kØníÚÑÞ4Õ—£>5N̽Ç|¬Õ¬ËÙЊc1—*wÓáëýDm›Ç&£,»å_÷En˜È,ǶëOEä<Õ@¯ÆqtW=šœ ¹ E`‚ãã¨;ZÆ€…-I‰È§ç¶žì¬’ª†b]¸Ýp—hó›ñäOîG´:ða;ÇáúzõXäómüós5_ÄA+.h¾ub»__ãtû`´ýÇÑTIÚlï·õí6³á(²º£×÷+Þ¥œ¼¾Ý1sg¡¥!JÙjŠ:ˆ¹Ü\èt}1NÓ‡P~†*p~&«Ú)h‰‡C¤I‹ŽÑ¬Nh³=9N0å&Ђ‡¤wžÐl’ÔD:iP¸,¶ú“é1çØÔ körŠÆ©¬}RÛ„Ç4•íµÐ#Q·Sw–«­)‡¿F“ÝAhlŸ÷ûÓYð%…gt9bÑkw{·QÔ_êïïø¹ã‚ä¤JÃQÅ8à»Ý©9’êÝ|¼ùÎCI¯“Çz׈¼4œDÆP·+>mÔz+¤ÙöÑ1f¾…÷n¦~Ãn3vømø´'iZÒ¶êíë ¶ÞpŸƒÖ@¶ç†å¥Ã?ëàäó;q†Üêè fG}°3Ýdnrº=–¯µ¶¸éòÅ×àì]k()GØM±¤èzLéÉŸàéó…æLIÙ¨AeŠdÁõ];Lbˆ¿²> öµµÍ»wKwcbŽ?.,,Ü<¬µþjáÛÏ?77®<ºS]»Õ??¹¾¾¹ûàì}síáÂÂäy¶pÁÞyòåÕG_Ϊá­/ÿ,}{øæÖ…Û÷þüóÏ……åŸn,,|vqqaaé«Å3çKwÿæ£?ëÿÐ( úËÉ×wýpn‚_Ÿ®?¼Ñ翦-–·×¿Üæù\xƒ¿»/ŸýðË2ýpñ"ÿzó§í»_á×küëº)¯}_Iã§ßm_ůÛüëZùµ9 –ñíÿ¬•Þ¥Ÿ–¯ãקgÎß¾¸ºv™~þ ŸÜ>ÿö¡¡Ÿ.?Dï›ÃéÓ+ø•'ên¬>Y™Ò+Šÿzkc0ù¿~ƒ_Wnþôù/Kø¡OÿªÜº~³5á_y-Í,w{õßomìþpýÏü»üàÍÍ­§Ùâ­ÿÜ8\[5÷¿ø̬_Yy¼öô—éù[7×?Ó´×K?ÜÜ:wõû»qïÐüÈ[Æ›iÎœçÍ¿´vvá¾q×<Ð7Î}5ûé™zòçŸÎM¾Ì󯆯ó§+ß~§o.¬¬_y³÷ù¥pgÎãß|Ä8¼ovýá}öö;&=7¡­9»ˆ}¾ôŠÔ›À_Ñ2/Þû‘Ào‡¡íâUœÎ£Wô—»OêÙŒ-ë_o~Qš—WÕíõo¿{²ödç‹ ë7¯œµ˜ÏÒêë_~¼tãó·×o^¿øìöúËü§õ·Ww.ùË·Ãõ•ê¯>"<Ãw“åï\xûËÚÞøõá­ÿܺû(Ïïm?Û^¿sõÒÍ÷Õ—¿|±]\ºyÿÖÃÜœ;ÜþóÏ+o¿º·péóÙ¤ð;´ÿÕÕµÍË_îo _ïÌÎœ/ö^~¾zc0ý¢¸ùÝî­õ/¯>üùí•{»—l±÷½ú¦5›×îNï<º¹•]>\»÷íÙ]:ÉŸ/­¯T_ãîÎÝ‹gί¾™õ‘;¿UW¦»fm²}W]z[ý€ë±øõW4òýñÚæá›Kë7õîí55Y¹ôåÆÅ­µreuñÆîÊKscýÁƒÏÛG*gù'ãðŸ g—ÕÊÂÙ+Û{ ‹;w~^X¸ñÜÎN6¾øj†y.ú³Zþì‡Å…å‡/~Yøìjõã8Ÿ+µð7véüvöÖÒ¸ÌþÌŸ¯Œ.}9]~]âO+Àí… ‹~¸ºpöò‡ çô¥­…ó]Ý ×9Âý‹W³Û K_Œ¾_X¾¹9^øìÞµÕ…K_/®/\~öã³…•—7^XÝZY^¸òzx}!Û{üõ‚šƒsvvnÁ~“/¸ ÿùj!¿|öÇ…B½š,”_>0 Õ-{gáê7 ?.\ÛÞ¦Z¸~áy±ðùç_=ZøâÙõ× _î«K ëW?»±°ñýÙW 7/LÎ-ÜzüË— wμ\¸ûèà콕õ…ûýó¯~qiyáñ…üîÂ×[kÃ…Í»ìÂ7Ù‹ožþ¼¸ðb|ùæÂw¯®¿¡Q^¾ø¦XøñëÑË…ŸžºË [Ïžl.ì¼88·°»óùý…7ãþláí…ìÎÂÞÕoY?Z½½ðËöó_f—õÅ…»ýÃųë/¬Ÿ½°¸ôæÅ7‹—6¾ÈW¦çZÌô¯-õ`ïÌùE÷óÕ¯ˇ—¯]ݹøùÅþ¿œ|ûËâÆ›'›‹·~¼gïþpw´xÿåG‹vØÅ'£¯÷¿™={ºømFßy¹6Z\|µ¹ðjqkFÞ½vW/¿¡ì=øañàqy—F™]ü&?»¸99wö‚ýâÍÙåáÖó³+›ù³Ê|[žuÌ¥³å^zö??]Û=ûå“Ÿ¿;{ãáWÎÞÙÌn½ÿüíõ³_~mÏ>ýùúÊÙoÏ._<ûCu°x¶ÿ¸?9;x½¹wög}ïç3çÏî?Ùxsvzaíõ¹ÅG_ìž»xyãõ¹K?Þ~s.»vïçsn᛽sÕËW¿œûüÞÁ¹êâ¹;fmå܃KÏݹ'—§×Ï=_½zûÜË+ÏŸë_=ûý¹Ý÷Þœ{ûÓôðÜÁìöêù…k‡×Ïœ?áÅÃûç/^|y^=ìïŸÏgk—Îÿçá…Ïϯg»›ço¿ùúÍù÷®/Ÿß,V¿<ÿíâìÅùGo9¿óó0?ÿó«ŸŸ?ØÝÞ»°°Ó·.¾ÝùúÂê…½ƒ ¶X¼váêcõý…/‡kKgÎ_¸?»wáÁ‹·ûž^¸|ýÂw_ßÞºÐφöÂëûþÂþç«W–Ÿ_¼0}¾rqepåÅEûì‡Õ‹×¾¾öòâú½±½x÷ÑæÎÅÇ/?ÿââóáÒÁÅß<¸¸›{éâÞý»¯.ÎÞ~ùÑ¿‹Ÿ__XZÝ­^,åU~uéúÏåléæ­k/–U\zº¿yaéåËþöÒÎW÷—FëY¾4[¿·¸|q}°½|eãÒãåâþýÏ—¿øqºº|û—ÓåÇ«ow–_|µñ|ù§ñ½åáçOi”å_F¥ûìü_.}¶záû³Ÿå?Üøå³/îØ·ŸÝ1çŸ}}aÜÿìÛñàÇ϶Fý—Ÿ½þðýg³ñ«ï/-/¿þá’.ǯ.]»³¸uéÆOÙ—oŒ.=ðbr©¿8=éçåê¥Ùâ“âÌùËK¯Î®_Ö·î>¼üŸ•ñ÷—oNo /?Úžž½üíÍåíŸÌÍË{[oŸ¯,î?}»²rþóK+ÅÕ•µ•µ‡¿<_¹7Ú¯¼¢ÏR'„ üU;=ÂéLE ºa‰`7O”VUÑüÊ>½:HL.i¿qV,v’¼sÈXÍõMÞt‰[²1ã(²Gffä´XmRö¿QŠ¢bŸå&T9ÓiS-·¿@«ÌQ›ƒvekSše\t&øÑ «\ºD¿ñWIú§òb.Ÿî ‹ ¬2&å®™RÛsÉ´ÜW+fؾZ2KújôŒÝ« ÿÄ] ™Œ=ØÜ»‚}ßüóº9ÖíN'ØùQdóé@­?ÖÞÙÞÄ9aÿøö5ç~eXŽw ò Ï +r‹kÆ©17XÌÜÜr€tËíýS(Z,ÎCåLš =Ç#w¡Q9ùÃÛî“O ËU>}Ýœó¹ï(ÿ1¼~E½a÷¨ýç/­ ³…p{ø=걬Ź*Of&SÈG²YÇ2RϾU"ƒ§’#²êOQÂi F“™ŸQ´úÝ¿‰vC¯®èßçóGÌ—hgbq÷À»ë~÷cïÍ«rl^ +Òqo¡¼ˆÇ²½·ø]Ù}¾…ÙÏGóë„Ï—'âw‹·Äý¼RMtóÞlb1ïòÉÀ}!Lq´#YsÚ­ÉÁïxž²vÞÆ)ºû2Jåí¯ÔÓ×ÓgêÇÑýN;¢ãŸ4ÿ°þM—çÄ"ÝIléù¢ï±Ø3þ;7IQ•x¦¶Z•2Ÿ½B3{ÕZ²ÜýÝ2[º÷û³oOß©ìü㶖 \ÇG¹tÈíÊ5^­©ÜÈýÛÎ;ž~–ùHà›Ïß Ç|ï~µ,XîX!è u +7®;€Rx³÷o ×¢HðåL1[]Œ‹­ï\¼øëž|ÝxëåøMÊåú¹i¼ô37?|aQr­©»R|hó”jõï·Òws/;ï_–åØs§Yß—y9ZUœ¡E»{§Ò{¥æH¹+ßÍ—Ÿ[imÞÆGéÌm½1¢nÒë‡ûú¾K±¹—»§ íîî7úš½÷ßæ#÷ÙAÝ¿\®½÷¹±£J}wmÕ›Äëºú¾ê¬¬oŸë‡P~vùpÏ;íûç‡u=:Uâ1AÿpÍP ñø{×(ÕÃëF­xìÕ:÷®yÝzùꩇê‰h½vÞ׿VŸ½†»ß´5Ò/åpã¹–|h,ê‘q3؉‘ÍÛïømóó:÷óäJ׋ý)õõÙxzÙ/ŸŸñ\‹-¾ý´î=ÎHëk|Ûo{>®¸vö­Ñk¿½P¡gkwôùþ®$žëÞðìù7窼ŸK÷K™þê¼ :½ø«+Ö·¾fì£ç××Þ<þf}ó_[ìo‘»pï­ñP«¼Íê®ÃtY[çÞúüÙqîÆ»¿ÑȽß8Iî½ßúö|¸˜›õGfJŽ?:/«~÷ê¦÷ÚM$›OÝçdµÖ]ßTz‘Çjµ×4«½…»÷ØÝ­š{¿¶$_ú³òMwÀz¿~}b1øm¾¸†L‰«±çôp’‰<~ÒÅ¿þçýSký9þLÒ_4Eß|Ý׮߿ÆË™õ›~˜F¾«ßæ÷d¼XŒ˜WWdôпŒ¦w°>Øjÿæ§öêùý™ÝÄÆüõd0nfSÜxù3ïN¢¹‡Ð¤½&‡¿—­ßøo2ZûýíPùÒÔáäÓœƒ|öDlæåü«Y©H?;{ñèœ"îmójíýc>óXKû_è#ü{ºé^.¬´¸Húßš‹w7WXºìŸüÿÆ71* 5‹Ï–Àtj0ë /ªÙ¼è£è":•c6]ªéÒ¬wq/<’9ÐÇ+¢ò·ÌùÅLâþúÅ}Š9"Ý–·D_ßûÒÉEá÷;ü5µ–òV¯Ó‘uýË+¶Q̱¶p²Qˆß2‰påÕq›\¬û\>G݆ìà¤Ûb™ýÉ~y‰«d¤ãw'£Þù2¹,S‹=©XÒK¥Uú«øPIF™a ¼–x?ë÷;¾v@Um€Çeóö0÷\XeÞÒÌ³Ï nOe™º©­¾=qÖ¶Îg™«§ôÏÄñd±g?‰RO³±+Žÿäš/¯©zÆßÔ*/ü–ŒŽóoÉðÒÿëÉzíë¼³0ø´Ø1²òï÷ëìçÛ‡ÜVø3ý½Ê|sϤ×Ù>YùKFÁ"Ú./3¯Î ®®ÿÇdMûB?W©šÏ6úÐêÖ;ÿãôôsýàƒ3óͼG¢);}íIßy?«Ôß|íŽ7K¶oðºct5òä>+ßd’t¹Åèê#<ê”é‰=áð-<¯ëT¥vý‡úïJFJßà[³‘æ[25í;~=±ÛHÁØHáµ…ÉM‹ýliÙ´qŽ!÷Dƒð(èÂü’·1§Ï;LO¸ê¯0‚vÅžÌÜDmO9/o+{óÂÚâ\fÖñD›ƒ—0Õ³½áfãS; (κmhJ^Ø'öaŠðO]¬O$Íæ Bo¶Ûl ½Î[=Ï …E:¸üŠÅNô.o|í‰ç£âUô)W^ÏxsBcT›ºÒmžx<祲‰¯˜ØÎS,üÜuðLn: íݧƒ"x)]ÚtàmÛÒ{D/ |/hMgß1ª‘cÍ°ÏìO?UÏþx²Ÿò_®Ûu\¥Ù^ã!Z̾ÇSõïþ*U½êߦê ³îvÛß žs­Äzƒ"jdÚo Mü‹¢4aíYö³–`|B³]—'n‹< 3„Z¶Øs蠟™fZ¥|r±øn0áÛ§ž¡Pp´`aòÜ^OzÆwÔ¨T\Žw OÂÄ¢¦ÀNòÄÖÎ|vB¦‰R0  +ÄHh'ÎöfÉH}u™ª—Vë]TªfR†wiâ[ +ºW9öç¥ÔxZ?òüózîÊ|³Ï¹ug‡‹…—mÙtD@Ç•Bê½Dbj‹ú>òˆSËþìÍ×x_˜ÐPíï·œºï¤oó™ÏRˆ ˽A>3ømcá©1…ô„=mÛfWÐxź-¦êƒÅ½Þg cû@=Dq@…ø ?Ív{«~¯WÞUa~ÙãyO„¹Sa$r³œ}fFË‹¤¥ï¥J¹l7Åí¨"Ãðõ/pò£ ‘×­'Vz.I@¿^AŽÑðÔ^qVïƒßTí£” ŒbμÐÀ§£È¦ê·³¯d³~ÓÍçB-‹=ê!r¯tÌsÞÙ•¿fÃ-˜ó5Ÿëÿ®%˜A&]A0_¿8* cŽÔãdî–¿÷Ð-‚øs0Üã·ÛŸ*·kS°_·"\zþž¬s×÷™Ê_T¨ ÷uö3åè(tÀc>ÿî²~ãa€Ì¥‚=ÕSqöÑó±BÓȾvƒ-ÌrÞz?X|xÆn]yâ1–ÆOÅ Ûèa€†fE¯Ô³årÑ—æ‚.üåË=^¯ß&íéI‰ð£¹zÙò'JŒÜL²9$¸àó´A”¿9ø3Her®J¨cÙيýnR~ü+YöøfWü°ìüÊHþÀ•‹¯âo¤¯%øžðÇ9ÏÃ{‰G¸úÉ +¯ —rž“w½$oCùͪ›u~óEi<ÈŠ½º„:­`(¸+x˜¸Eô,hážØ†‚¾V£Hìò.ÐJãAÁ-:_²¯K«û(¼ÔHÀŸ—”•Âˤ„Åèƒ >ŸwR+Ôf,Š‰2˜Ú&B5 x,›‰ ¬ YÐQñõ—¸„':„÷¶?zÁ”ƒ +ú€Ç²™KåXÌL p%J|*ÿ PôcY<[+òQmIe—f]d øƘÐ!3zY©˜6dcžç%JÖ¦ðoÓ„²7òoñp_â + ¨=ŠçeƒŠrVÜ¡…>&´XEÄ;ú 1€œH…±àÄÏ@µ9zÁ(oÅ1%ÃàÄo6¿ýF`ïÌQdˆis¥ †íbï¥+< 4 a¤ÀÓåÙüø-ê=>5M=~~•Á¬,ÏU +#Uo–§ù$IŽ-ö‚½ðfIÐÉÊl“õƒ=š_ÕÝÉQµnüuöËçJ&Ô}&]Ý¿ºïmyÿÕ¯èøS¾«­ÂOò³OÁÌU푹pdú}˜zœº2™Á"þ +Šþ±¸UÐ\ä¹³ŸbJøŽÌŽ@W6c +(„-Ùt8 9ÏÝlP´=Æ"ª§éɤ›bŸ^ÞÂÙRÌz¥rÒ¸H¿ñ˜â^½E¤+µµ¸\ŽúŸj¤2׌L÷¾²CwîQO‘CýÇjšy¢"’ggYðiÇ~O¤þæÎm6#ëBa8ÿWÌf‹]e8Kf3šàìFo;3ï÷:÷Á9mÈ{"‹’ ~Ç çR4+îr>ë”·X_jìOάór‚'gÖ³Ø7žœokšõ,x*¾fËiÖâêa²'¨DÁÉf_1IýÏ›+óõ[Š4ÿL=©:‡å \ +ˆ³Qé¼a‹ ®ØüzN…¬£Õ⤹õÀ]M2ß/pÙÛÝfWÕ¼«:‰ä³ÁgÊ/|øD#ȯËo¶œ ´Š xô९ïžħ³k‚¯{U¢RîÍApù(]¾Š‰ÈGz2mfˆO>s³™ýu„Ù<]L3ë4AzK«Ä o~˜——NŠ”}›bp\Ý=„i32oq5÷?xÍîŸÔJC‘«rû¨ÿÛº¡¬0 +¨Ü§j…ÁØí±•lXyÜѨ÷*ðs®©!8vןƒÄ÷rqŒ½sÒëÌðÛÁåô1![ìZ°Ï Ùbß–H’MC;¯þ .ßysÛò¹éúƒ²ó¿¡mÛ!®_)¥ªIpÛ¿wb$ÍÀÃ]­‰I?À^’¤ù(_x–¹ÉNZ@¾T=Óhäº_O®Ù*Jò¾°*<>fyg¹0B_"J¹¿ ê ½•Î¢·\›¼‰\IPlê:Ûc†5-Šá}ñϤ2#oÌ$÷Zì2hÈ¿0Œ¢/[Z¸?ös¯¬#ˆ{3 +ë·HÝ8ŸMWÞ¿‰ük’V¶ˆ‚_/[FÛÆÞÂ%ÊçT5+ç^ßË#Ƨà½2 %—9›ýܪ(ßü=ÝI6¯V+øbåú_6§~²Øô¢Wê€@²»òýuàãIPóË(ð¾Òðæ³^Ö&CÖ»¼«]]É5ÖÓ úIJý”z¬{^sì|…®~äM [ð¾_61‚ §Ï…\w‹ozrýW EºðM/LБÚu6¸Ã÷Ò“Ã%Ã7¹¬‹"MÖ³¥åƒ×b|{_ÉðSüøì—íqÉLA¡°Qgráã×`lLžÐ+Õ\¯îpkt>FIZy½­e íä'xþuÒbOûÂÃùƼaK¢~}UË¿Û®;0©à.ÐÒ:ëøðV™zCsÅ^æ§1Ò+Þiéû«Er@hël¦h³oùfÑ*¹™éÊV¿âùƒYu}e¾¾¾z)ze­ÞAìMxì1ü&ÃG§º/ ¯ ϯðéIÀ@GŒá·  2„áæ.ÓL0ü'òþVÂìRZðôGˆi¢¹^ày®A`LáF=[M݇såd$=—Y‡’~!3^W2òÖ¨Bc¾ÙîðN “j'e­/‘Bˆ®oŒ`qC£t7÷áûš€’)ûsn­Šü ‰V¢"+&ºPpyÂK/l‚m2w™&¹µ¼EZý²,øKÉL–kg??( |ÒɨÏ:Gzÿ~ÜD–WËë¶Yx=q³é|E ZIT"Ȥ]~i&ÆÉh|žµØA„EB¹ç~ïYÖ[Šµ] ¿’ÜŠx*¤¾o™¼Õ5~Ñ|%ôieÈÆïryPÉS¹zŠãÆ@~Rå§ô­ª Û šøÛôï}˜†Ä5{eëÑùLêí+ŸIDX/Jf+3°P (+0ñÅÿ,-m(襩°„ËO<æHqµëRö3•Kâó=¶‹,Û8,¾Ý žûìÛ¨mÓ‚rëLÕ˜÷‚N׫TÍ–)¥¦E÷_>šï/Íp*"ûÇgHø$ÑþC—úO‰f˜ú¨D³å·:wÎHùË|êhèéJ4E:¥ÚõiO4ÀºxXû¦ÞúÆkÃAì¥/{sÓºB®Ä$;Œv.Sî@Dá· Idpê d¥‘ÊCÄg6Éä“_±vàwiL®¶Ÿ*ïRN2jñÆ"`±4Eo‘-ÚR!éPXJÖñvo£_([Öú{lx5ŠXÀy‰ÔÖ3ê!›ÏÝ6CF€«føC­u¦{cSü¹Ð¢Hã*[ºðúïe½Á{ô7LÉŒP®V«a2Åˬ-"³ÁÕ ²}‰ïÔ#E +Åï +ßzè—T½nØhdÌñÁñ_æ.÷ð•ßz®Oî \W¨BÂÖÜÐǺ#òÞdv UA».qSÁªõ +säÒ¬§²…Ì _l×xÕ´`E ZGvä˼`Ï×çéÉï,¤ÇŸïaçCÅ›±T¯=±Ô½ã-çc¹™°H“z´.0b¤TjÈLJ%m±þ˜¹Ë.Ÿ‘rHGÊWÙ×l>u]JF‹¿Êë Ôr:bÏ—ELåÞ—ÄÚç<õ8 \Ç^³áYöfð°Ê–œÎ<^=έs/Âi¿€ý}Kɱt> +öS»qÏý¾uëf¿Æßæ7ÝVréj]‚~¡ß@¥çr&F%ŒäTŸ¹úûzŠÄU,ûd/£Þõëˆÿ¹sjéµ\™%iiQN-E7æÂb%¹Ë,ÞQ]yËpµÁ,Z˜_u|ÛÐ`x0è×ÃT×]MO|d½ÐznM³Ÿ«ô6<)¼r×é­óoëo¼gÇB°Ø0Ʋ$_k¦–Ï'‰UWܘð=žÎÔ´÷µ5P-v¨ß|æ3AËö]ÒPl´™ª;k,ÇÚv¹´Ÿƒ£Ñàê[ÜñãäOÆýû¤p™Ž?žÀ0œË½›Ë‚³˜pÓŽh$Œ{胅PN#nC-^R³ï{÷–}ô0/MŽhväÀ$M÷S÷åb™>m„ +w ¼W±S—¹~{øé>Í~²Ü ’ŸrÖwÜ_[1áå¶qÿò#¨„z%ÿªj{û2`̵ŠÌr}ÖLߺ\#nzóàÙ_ ¢ÞõœóµC_iæ‰öÉfÔñ~ \ºÙ¿r7Ü4t‚ø’ê±lÚqÇ"½ð8¶UÛªv¸æ¤,õûK*»¼i€~È|' '™§Ô,õéTì†Ú +€ê³w&¿ÂfQˆÂ‘ë¯/G[·h»V¯€ü]Œ½)(ûÌ'Ÿ<×xãŽ2ÒúÇ›š&¬U°õÞ(Ä ¯Ù’õ“uNlû½¹¹/>²áV£cæÁG¾Y¾}©‰ò¢D|!sÉ^}²‘²aÛ›©íFAþÝ“»õðÀu/ðP,¥\?–w¤q=¿â¹—+þëi=+2ÈÜïÛg Šwò½pÛ=wGœÃ4šŽ'Ë•¿¿=ÌUÊ?½™Ž/*£åÊü9OÚG ¡ÆªÙüûíl:ë/f¿Ãì쟩P\¾©yÒÒA'}k}M!ðBAx<œ®ÄÝŠh«au6%ŽK½—jÝL&kœ^<[ ÂF£éW¦;ʤìIç‹ì­‹ãO¡(tàÝ·˜ÄgÜ¥z³ÿ£bó¥ìÌrñ¼ZÃïÌÕK0ñ±æAºFó†Ï•Íà3–øëí|íIiß3óûA‹/ã£÷N‚ ÝàÃnЇÑçh¸­áa@qø€TSfUë1µ¾S”4äËíQûø¤}C8†‡,ë Á©/F¿h0O²“I´Žz’Þ78+_“¨Q§º«aý{ýÛ›vGcÚ"7´µå¡òhjpž•6ßm¿aÍsÜö#*hôî_H°&/½¢K¯åM]vˆ…I:­²¬«”?:°ŒOÐ>Ž1Ì`!Q‰ #æ•è¾}N‘øw¯ ÐUmÛ9>ü?G£’x ý¶7š' IŸ g¸ç¡?©ÅêŸÙbœÞs¢ZÉ¥ú‹Y¯»ªtÿJ‡c°.}qØg[Ép؇•Í¹Œ©iÒäEFó\FùÇêÖð[•œQ[=Æz^õ±ò^ù¡9V£MW¾Ú+Uuí CD)e«ÁA"êN›(ð¥Óe ñÀOZ°cx + iùé2º¯‚´AšÑèéUY]šýíJ*ׄ*Ô«ƒ£Û¯ƒ@À¨û_ +‚ŽdgÓîéDÝðˆe³ò£{ôm( ¡§aÕ[Ù¯bj«ît°)Ï`¤™Á&›Ï%òrÖ¿AÌ^€…v±ú^ˆ‡å],¥ƒ•ÿùN/–ÂùÙÝé…Ü—À9VÝ%º½M¯’ê¯ùñ™þ+ܸ²±gë‹9øIÀCÁkÁ …澺£):MFÈ{À6ŸN}«j¢?¼á£gº“f @,·\÷¿Q÷nТÂèkºmF€6…ZCïfŸ[ð£åÅz:žÓûM›*ýÅh¾elpXá¾ !37J}œ ¯>hÞ·g%oNžîþgx Ó1ù“Rå¼9g§Tδ«.ð·óÊ÷ìŸâH}Tœú-¡Ø-.µ% mÇÉŽ @ÿž›¤ñ ÿÝ$É÷4˜-StðŽôÌ‚)[~G3QÎ~pžD³ ž[Ÿ'ñ½¢ÑÅDÂôæÁÃæ +?ˆÐ‰ú*ýä c´e¤›ý$ÚñÍSÊ{d¿­.º³úŽG‹ÝꉣV×Ý3oõ~àÑǧßêY‡kVïm+kõ·ˆµ|Кq=0Kjy ËŽ™ÄýGœN‡èûÌþ>ãäðÙ>%ŠïÌžXÄc½”w~WJ–ùeùó³g¦™[¼>Ùç|»ž¥b}Òâ¦Dà~ØðÄÛoQª>fˆâG0@}X‹÷¤×ñÝ”w„ñ>¢«4|öšÂËŽã|ñêGÕ¥õÍ‘¥ñˬê`*P [±? bpÝÎJø¬,‹È²¹x„ÊD€© (À ŒR³¡‚½E'œNøœ¢®Üo±¼x˸“~ºZ{âëõm(3{¬Mõ€vcoïßµ-XÐØGðÏ='4vØçªТmÒ ÐËz©.ˆ:ѨTä@©ÕÔJeV}”Øi“~µØZÙ¨À–¬j/9¤U«¿ª§VŠ¿ùÔJ÷o|Û§;ZÌÍ&º_ƒè½^è>%rÑWzZ›îJ˜J²ø"=oîøÊcýÝàé࣯ÿôÖ:ùÚ̾Ösæʯÿô~=þÑZkòüöéƈÚw.­ÿuýqv¯ût±òR’R+´5dr³ÁýIÏ_ÕŒF4¿2ký§OWÕ+ƒ§ì«s‹1çÅï¬þÓçà‹GÿéÛØy¿}º‹±Ž“iéÝùê uŸ‚rǵžŠ#™¦¯«ÿuÌÿÙКæFÿé]œž`Œ¼ÿ GtŸ†¯ç³wݧÖkO&(=}_ì`ÌzuKÏ{jÙg¥ˆì¯òé\å!1ó¸qB¯E/)>wEç Ÿn§¢ðé>¦Å«Rbãcõì˜Ì¤¥§¬mXªežZ=ä³^¯áªPMVŽL¾õšl½7hÀæØj1™l Œb=Lãe$zâQ!û—”#Võ ¶òsd#Ûh´]úÅ¢ù9m¹=¸ Mà·ÖH òúŒj‰&ub?G(k³Ø‘§ó¶«Ú~Õ +¦íœÖŠü%+Á"OçKZ˜ÈF­.9P¦v%Go5HÉ€®¯m[ àY û–V ~#ë¢ ”q½é½Ìwý +{L [ÿ:@ÁëÿChû](Œå²pÅêŽ[ÿ:@Á4›¢«ôq T°ú¾+7õ"›BIJWè©wsåÍ%w, ž}7é a¢EâÃN¿'JKllmå +"1Â7»‘+ÆÎ6,ç ­ åH7-´:à÷æp| þ#üÉøÜ™»þ€Žö{@÷·ÜH º<éÙòNè\eQÜ ‡!«€oTáçµÛük·@0‚E²þT¯çÒ+µ¤<öB(íöíŸøÜ9¨‹3nES‚ס£É?á%E\w9øfíèmƒ·VdFð’%»WŽâÔ6ÚƒºÏÙÅ?ÞÛ™V§]Ê/ »d#½ Ò‹þ¼ˆ6¿s{v/Cz™+#]üÓme·^µj| _Ðé«H¹²¡öøП}óç¸Ôš?4ûŠDüù$÷i4ƇŒ×ƒæOŒhÍ 1ü6A–>1ÀX†ËñÓ¾ÆLûŒÌ½- Zx·Ø¥¬ˆßç¨ð.Øóï‹ópñ™ñK”|²T¢'÷w+EOn+z$ÞߌÿÀÙh{ +n:¬@ šýªÿZ0Êvq—CÞôìkuoÞ×í·Þ î4×0WvrÔÛ:]ÖÜš\)Äã4†æ»ÔÚWîZ"üpk04‡\ט‡¶QJ˶w¾á1£QÊ×âìk{î5ëS H.ùM¹sr:ß°¡‚ίџGQ¿ìy'G|’—íãBËVK ± ¥žN;E²‰Ý¤¡ AíÆÒÏ|IGå‹MYìú©ø®{Yð(ù.¯Vùz\gÙ«2zÔÚ˜ï#[Ø‹ÿˆ2¯Œ(ÈB¤dèèûåþ µ *‹~ïÐF~Gnæ?OÃU#°Ó³íÒ$Øîå-¥;ÈÀ÷ÌÛÚ`[ŒL‰`)*¦¤°Ï +SˆÁNÖ>ðú @ºÓ?ymƒ`c,êZŒ +-6­Œ“‰ùÅ/Cç;k-µP4ì'Cë© –Ó»ÈrËÕ®¸.¦Ù©á¥ž®LnzcªKÈ ÓÕ•÷°Gyàù36èöÚü²×ǼýÈùS®X ÈjúÎF MÁàÁÞëéŒûe9¨1âœ#χ1ꜣOب–EBóî:®_Ebàè挽‹ë˜J·š’CË Õ“c«„Õ´­Í•_E¥'~ +W®W:Êx=V“ÆÒ­•ýì Þ\«z£mc‡vß&]…Gݱ¼ïádSQ8xȺØÛŽìa\UG´lKèŠÊ¶<ª#2N×øöø†ÝËUACEqèÚ© ÛR¤tÆ6#±Å„3»ÉÈzû¶üZ™¥EÁ†Ñ kv~ntkm×Zba,oË?]¯åëwIWlü}“l…=jYKèØ0o+çõyÆG'šõ[a^NB: ü{¯FVS­Ž-ƒõŽŸ|7!ñéøkÏÐñÉöWÛ°¢äY,Æ1XL"Ë‹k0¸b],A––*§¯øùz¿“¶'º„#$¿%%‹K ¯ÂÎ+ÝÞXì‡8%uHV;°’Õ’ü¿%¥ÜÐçvh +®Ô phuD­– Û±¨È,­•.åQâÿh•«¥3Œû”ð⮉¸Å¾1Ÿa糉ˆq¼Ù0€ƒˆ–(PD”¦t`×”ž—ÆäÆô^:¦4hxl{øe?QÍËkR{Õ "¢˜?8LÄmµ,áÝ¡…Oç—yë@³t®­‘¡+vǪ̀Œè¼¼Õ{Œ5 µÊÓ»~„¦Éª\F;FZX‹ÝböÛ²åE§GÉ63¶,Z¬RîßxîrÅ4ß!!ì9’"dqK”ÀË>³Ú5^šáñVÔXlu²LnÕŽ\¤PÍZå9@é鶣^)T¶b±›nÇ$jµ"ííÚ9y¥·²«÷69#h>±±ŒÿŬÅzß ,Ž–y*{ÝósŽ*P…Æ¢÷BçQ7ˆÆ~†î}ŠP½Æ§‹ÊÚT •ó"7@ %Zs¶+Ñàž†DÛÐØ–â õ*ž±DÓ\­Îìlª8^¢AS•µÅ¾_ ™‘hð j=ÙRj5N‘h[Þ‡y;ƒDC­ìJ4-ÛÛÎÁmc)©Ú9]¢¡V$‰¶‰[Ê—^¶ë8Ú¶€rÂŒåʈi¤ï‰\òË!Iszf³&¹î춅¶oÔI2‡Fý:9•hÕÈ®5»)ºí³š]›³ì ÃÐÚ&R‰ö Íb?h3ˆ^²Ûž…‹Éd·}c‘^”ìvr¨ªíÚü棿à`ì†hQrVà ŸF¹Ë-Z° +#¢›ßç“›y•Ó«!1çöâ.™M1µìM2íQFF’©ÀÙÖºdl 08S.¢1²èýF&C‹ó˜0ª–Zb˳ËÓ0»tgwoŸòè‚#E+Îãã÷ä¿ ÒušHMSîtTí? ¹uɦۥíÔ©æO7OÁ4:šaÏü¡¦aλiþŒsbÛò€ÆŒOAÐiJk2jÌø„Cú…tÊÙ0f˜1s(Æ –BǘJ¢6HUàwÿÃ{zÙ3éVç0ÃQ›¯VqYJ¶vÆЖÙušØ—-§j@c]l•ÐûìŒ-%ïI?Ú“§”:;äæô9gN_Ÿf½­ìjöÙcqü ŽW®¿èâiåqœ‚§mæ˜Å~Xxç¸Ì8‹ý N‘ÙtIé;uPDÆ Kê3UNÀ“©ˆŒŽ—¤ŒÈÐWü8 ŒÈ”ŠÈlNœÖÌùº<5lñ[’yG¤çÈç€,_›‹]˜HϹ +“Ž#‡¶õ+K'GdPšfàá°ó”JGFdT©( íÔˆ ÎÎSFdôθۇ˜àAÉ9»Þf—’qzÎAÉ9h,áêJ‡šhØ÷ì¦1c,ƒ-g;='±lv'ƒlÏ•ž×2/Ÿ|nØF#‡œ§§¡émÙÃE“~°šÚº°KŸòÃhÎMo6Ê«ÛÙ4«i]ìÍ«;tïú®—„c*…dï^ „Î%›Ü¶îÔXG­í?¯ÏÜZ™Ù|¸=çõ)NXKRgÄ;îp;&Nk‡*Êd;o>Ü);TÍçÃe¤ž/y|çÈ7·SJK½ÆN͇ۜªa2Uã¸|8=ðg·ÛõÄ÷né;"nf½©eÌÎyÅÇæ‹°'Re[¢ä³sí‰llÝèSx¿93k¿íé1ä9ÒœPµ‚*x¬nÇ8Ëb¾rì%ÿµcr)oïY¤8¹NÁ„ªÓ´ßñÜžï²!ÜS2¡Ö.slxȞݧQúÑ9¶&㦔s±aSkkò¡Ö8Â÷‘n´"´¸÷t6D­¨˜ðïUhçDH½L.ÔΩG]àVöÇaÌ™öBczË®z'QÄ¥G£¯ÊSZuæ°nFêëßY2RÉË=‡¨˜ÏH%/Õ~ã ©ä%cÖ 5ÊHí^M$Ý› OgÊH}:SFêÓ™2RŸÎ’‘ú¤u ´Ìã3‘¿¦œ0Õ1Њ ›Œv²9Tl¨q 4ÊÅj+0³»mÏ› +'Œ¥¨£ÅΕ +wÄYÐG¤ÂmêWj6v®T8·Ü⦅˜ +§éWž=N+ªpþT8AW*MÃý©pæ Ãí!š¹Õ‡lâ='Âkl%väjZó©ðÊ^CǞņÉø9SkI&$1Zîßs&î1Á²lô¶¡Ò;L9 .É(B¹#â=¨[îE5ã4ÉYœ¡Ú/µü²ú¦ïVo³“³úRtÇê+ñ9TÎ<ƒ®ÚVï÷OýIZ=}ÉêÍ>fÐTR“¿ÚL絪ÃâÕûâ[}RrÏ’´/ä\«ÈPb.©0¯w½¼6*ç÷dØy¢Ô׃PÖfkÌ'/zÉnÏvËËüQ†Ýç]Mè5Yzïë(3ìÔÙXéš ¨*ÙÍö=Ü +EuXüïêw3Ru†ãjëÇô3숿ЊC(ð˲·êŽÕš|óÕ³:ä%ðøJœWæyð«ûæ}éÍÎúwº·EÖö×ɵî÷¾üénsN/J:zM©LQi ǹ{¤a~­_%IkËíÎYjJ Vcè%»ïØÿ]}­WǪêÈËûx|Ñ/l°çJ?µGiïÝsuŽJrZÖ¯l-éL•äâuäŽÂeÍo‘4ރꢹu].}}ÆußÎVDNwóôÆ72Ù[Qew|Zû“Q±6ãZæ»P­#t[)ÍòKdoÍ›å4Ñê;c6º‡(î|rf'›NË<‹óeÓi¼µ8Ï’M§rÖ8yòÄl:­ ê=Š§gÓiåÒéus|6ù¨õ)ÙtM‘§¢•M§•Kg¼Gñ˜l:­u!j}Îl:-¿Y©+Ï‘M'CÖFŒj­½ž–M§•K§—3r|6ÝÖ«–Ÿ?vîl:­ÙÝúûçʦÓÊ¥ÛYM89›N+—K˜³fÓiÍæ—³fÓí±”Î”M§Õ”î +ïÑÙtZMí¯)|h6ÝÙ0¶×&<cÇeÓé`ìÌÙtZ¹t¦s¬LgÓiÉEËÙ³é´ré,{Ë8šM§Ÿ3rÎl:­Ü/™÷z¦lº=§Îž)›Nk†6ìÙ²éLú•'fÓ¬¼Ÿ1›N‹Ë Ï Ò1JQ—‚Íd'+wTRoËž_éÞxt“®—mO­Ýħœ:qvuqD½:-ƒÇȺ8®^Žu±·^Y<9t»$[K2ƒ§ý†…& ìÖ¯|[~›ŽSìéÒFhi¿.•]2Ã̲Ì£Ní³ötI’0Ð)Ó켯KæÕ¤„‘‹L¥G[©="”Tµo½Ò\ì´2w"ÆŒ Ýb’k–¹ÛSgDý–¹Ó©–¥,twdÒ㖅ߟ|H™;ƒýÉÛBw'¤) eîNŽ(š*sg1µ åÔ2w›½pâ7š…îNÞì!X}euÜàb?èÁ̳  ÎDò«ÚäÖ\+ën>dh.ƒ½ +$Ò)-ï£öZÃœ=†_+N½Æwd:3°{²ÒʺÛÚD†m~”fx@…­}ùDÝw‡ÊQj¥¹ŒGmNÑ¡ô@®;hwzõ÷Œ»¡ ±s톪þšÜ eœæÑ}7SÒDæ£ëääÞ Îæp¹On‡ÀuŽöHK“íxìªN¢ËLu2;»PS~SÒÒdb­kWïµêg<3™ob1‘qR7)ÌäºK‰Jż ®)SurdŽ¤a"Ãæ(f9¸6^Þ3ú+4UçÔ—™êmϘ÷íºQ6fª´¬¹ +†Ë±þ6VÓU‹Ôçùx€9¡¿«³qŽÅ]ÜÊN Àí˜È µ»·£]\ëˆDw*¢®±/•aîî«@™x™ùÿÅ$î«pg.¿òÔ +wêÜ7Sœsp…»c­ñÃ*Üf>φŠVPnõ9ÚÙ—Od¶RÞiùDÛJyúlxz…;M c²‚µù +wGœjŽ²ŸMŽ±OŽ=/±ö ›9 +~9>±öÉØ«6[ëùõï”ó©d™¾3$ÖB+ZѬ÷\ íÁ܉ 휞X ­ž wX~;*—§¿-n­vª˜Lcz_ì²!ÜÛײØM°!ŒêE·Ðº™$&¥ ;M›n"‰é}¡ž—£žÃíwÛ-&÷÷…©0µnÜR‰1ö<~%ÌdÓw€_©#¸Z%1‰P ;uúAú2/ÉA¥[mŸ:ÇU}ÐñQ†¡X)ï|9®m­ ×­gqhŽkº56Þ4+[±çE?ÇU½k㨣©Äs® ±• ËÌ„ ÓÖÊp=ºRžÙr†§7 Štg)÷(e¤ž#Çuk°£íµ•¥æÑŽD‰JVw9Bâ$=”ÖW³zßu«»žbÑUUÌí+¿‰@k̉Š'6Ë;'E—¶™S([0juê U„ŸÊ2wŽ«Ù\®èuØœ½«Ç±ÜW¦¦½Uœëøtù4{¯Ôb +ÝMéÈ»^^ÇhÁÔZ(,ڲȕ: ÏöÇ®_õRÓ òáBÉGÐMj` g9F& ½4¼à·;ùäžë%áégþz¿…Sçþ½õY›}höô€vµ€âÌzŒ`"¬5V1‰ô«dÓj}µ± =ôz1PY·r¬7תYE¬éÃàñ•”‚¹˜xÏb_†îmC3-^ÞǬ&Þ[¬ßÇvYüD ä³Sb]øÚëT©N#÷éþQCÛ©*¨¬Õêõ¯j=h'vzB³ù[†ô³äG«iV13[åkoÅi¡KXåÑOm:hk•®¥‹Ï¿Þ³ÁÔl$ ðTÕÜ€¦¹ÒOŽ½µLg¥¶µÊ ̳/+ízŠxÇgvoJqÓÙ²ib|Š+è”ÿp¤kwI±ãCubÛaH'ÎÅ/Zû´6‚«¡½7V%¬ÚÞéNÍe>CŒ¹íU翃ÍÜ2®ýÔÉgÝZÈ®½4á³îšáY6&ãcmïü”¸–T#5÷š5³¸»·¢žvdY&-Íeu­RWbÎud#jj³KK#c¶$÷¦åîYqyÕ–iÍÕjS¦{ÙZŸÉGΟç”EçG)wú»æ 䵎—W—3´S.·yv7 +Z§.¨âüf³ÛBúUzM!Û|¬ŽVŸH¶{þØ éGºÆ›üÅm Ï ;q•(é)5Ö¸²S +y¿'Ð0ðjþ¾éTÎéž*16n*•S'QÇ1¨3¸ eeã“R7Týúb‡4Ö6®ß}Æöåò„±=+—‡ R”hçÁØPWF$åë/Bcúö¡N YgóËÑY€fsMª¡×„éŠz›úÈGeO>6 poO ²û¡Y€fs-öS²ÍæZNÊ4‹O¬‘Î4›¨ö‘Ë40uWߌ³ÅÞìŽÊDQ>u€ÿNQ>%%ïÉÚ:º(ŸÂ³ø¯åӌ½(ß¾:ïç)ʇOhÏ®”®éÙ‹òéFáÎZ”O3gäìEùÎR¿roQ>ÕyãF2°…Þì=êäº~ÆUýÎÉu¶³¡ö×õ36Ô)uý¶C;ÃÙPºuýŒ£Bj;ùغ~ÆUýŽ:J£®Ÿq¸L/¿òк~ÆUýÌP²©-‹†Uý4Oi>¢®ß©™\çØ­(fr)I¯ªßaõ+õëú·<¡®ŸrÎMVg8¸®ßá;T©ë§•Ž¸/Ü¡uýöQòyêú+:Ëž¥5³uýLd¥¡®Ÿ”¿¥]ÕOç?¶®ßá4vL]?­tÄsä¼+ëú·²¿ß©¥l¥z|ç¨ëgœø¾Y±:±®Ÿñ67íSh¯ëgì©íîµ>®®Ÿ6GKUýö罚«ëgŒÊíJâiuýŒ7\[vÜ”ãêú’•v®¼uU?]ÛòÀº~§ð¾ùº~†i’YFêIíŸâq@=¾3Ô±žX×oÛŠÖ²ÕÆK:±®ŸqU?÷O¯ëg+°ØÏS×OØ…ª~†CÔõ3^oÖ”cGÔõ;dÁñuýä;¨w«ú_ïâšFõøN`CY+ˆ O<½aS×Ï þµÕ/Ʀ½‰º~‡¨sl]?c‡z#aN¬ë·ÉßÒL0‘{¯fCÒZuýŒÍ¼ßò uýŒ«ú§ß¾,\³õøN‹fmëñV×OjE; ÷ =WuýÌ%ÃkÆƨëgœ /ÔK:½®ŸŽæ«úéɱCëúWõ“­¼ŸT×ÏØmמ—ÃëúWõ;!n©Ä˜¹'ÖõÓÊyÒÏI<¶®Ÿf—6Þ÷¾ÓæÍÖõÛ5 åUýtsE¬ë§1±2Q`±ë£ro]?ã„X•=vt]?­\´møØ0¢x@]¿ýÙµç¨ëg¼¸ ?·ç”º~þԬ꧷ßòк~F!‹Ž}Ý=‚8÷¾ô³ºÆÝìøIKUh—Ðí¾…v 6Þ qKeâb^µK8#a}Ø' +¶G&Ûf± ˜E¸¶hÁ¾Xu¶Å¨ÊE¹oÅÏz½Î=¥Ÿ¬p¯6_yf‹•Ž7ÞÚN«}Ê1VG˜È[ݳڃ• +×n=‘I8í‰Çh?£üí rwsšÈó¹$‘{+ïú‘¨pé¢òòÜ'nÝK?Q‹8‚Dí=‘&?½ÑtL¿‰f…ü#šóÒñ”èe‰·ûq™x[ù[ÄûoJ|¸íÄG´ãBù•w>Çb™zcËÙõÍb^½,móô§Ÿ®„Öbfç׬gÖÛFÚNqήcXµ5Ÿëñ«é"¿¦˜÷;ÇG-º¬—ú>O=_uÄ¢CÖ³I´ØÅákÎÇU®`JnÆ#õDú |K$âD¾þ”' +¶Yu± = p&é&#•qÕ=±€W£¼rs¹ŸÀbù:‹ {6•Á.pÉ–}â±¹]YÅ«b´µÂ+ü-L¸ßòkT³%”ÏôÞ>µ¬N_÷¥Ø–П*©Yµúׄ¶8ªµùŠ +iò¨s[i-íN®’!<[©ßYe™*?=uGÝ¢—]Ûn"«_u“‘Šuyd#ðV<ýÍŸüA‡nlὦùJIðîÉ-Z°¥dŸB̽½Kº3dD|½ñÊt¯21éÁ%Gºw¯„,HП5Ã4&$CˆbBÀ>÷ xå>€Ž–óâ}’ð³›uÓWüï +~¾ÐÛÚ˜†oëOܵá±Ø<ÀÿKÚßè‡å°Ì>û²nô:ü5u4òÑó³Õ ¢ì.´ä#)z´YMª†>N3çi·G9â—Y©=WÉb=ð¡B>éÖ³71³FÕ"%b©SÛ‰§\“w[®?þãá•.³x ¬xqÂz÷>„ / •›ÂÏF@\y‡ëAö*7.¸z!èu¨8CÁ\õº´t5`pâÔŽq‹>l€ÁÏV@üvüBHWR6û=0Å*q±?ã-{бÒïW~ÜþÙűŒY¬iètˆE†×gæ›Íߧ'![H&F;ŠYi€¶„¨ƒ( «–´/’ʪC2é„«.)] ¨í{ (a|«F´Æåý ®šy·+áš¾ËÛüǭǪš¾~_rD©à Â\½±"/¶›ÌpPZ +€Êjf…£*aùj¶I¹éº{v‚ t€Ü\‡ñ!E«×•¨kÈÍ+™|-ÈMaÊbm'ŠÀ4)'f9I„Õæâ+Ý?´ƒ³ žS•AÈr"Q÷¾’HIK´|ø3ô`™\t iΟŽ?”8S„?홵í Iëžx$2½Øm+;zµV~!1ò†=Xç€Ë•´cJ RïʪÙG…iç\› }Y óÈîu/o@%Æ3˜¦ÈD§'—ÓüVªâ±”ÁÂãšÅÌÇ85ËñBØ…hãM”",ÎÌÚ×=|{'(²ðÅ ŒÝù…ŸÅ«d [ŠÎhåžä˜K.³ +OüñL÷Û2‹q'œ²­f¢NmÇDu•ëÁô}\¡ªÖŠÓmB-}2;êº*ËìM|Ϻr.7 T•U˜óÆ]ð3ÅÔ/1°O³`=ÎÜr[”QŸàÛcË“ròmzk]çØÓWY©þµªn5j"5Aæ[rã§E¶:÷ úÞQ¼‘Ã&0"´8¦sé^óOº×^ ïõ~ꡯ¢ÑL°˜ä¶˜G-œ´¶P6;òûHòïVô %S»'M" ì1\)ZqêD[™ð€ôãŽâ.gâe¢°ïƒ.ahî~,×@­É­Uæàý-¸^ +V_[y:‡k‹±–uÈ ç%,Ò팧Í!#¯À*LAèÜ÷!çt0 +¤S5Píð žåH€þÈ‘0Í…Y]$i +ìQ뇄&°E>òÄ"³=…“ŽŒ‘§ ˆ•ô)nL—Ý”îƼo ¸Š¦þµuKVfùrm‚%ãy˜´Ó®ò Å7ÿåOCB‚ߧKÈ.uIX “Z„„į Ón©‰chÃhÙ°ûúvzM4 z¯ÚMdü¾Ó†Ñ$®b»G³ “¨A‘Hj[]9ŒnônÛý2!Cò&æbo䨴ØÕ½ð]ݸ‰åe¡˜öl›q¿,è?Ù{…ôŸK|/ÿCnß³3wÙÕAú'Ò˜°è4«0þÓ輓$N¥1Ç·óT#¦®ÃE¯¼ŠÇ»m@FcJLÈ›ØF‡; •»4æýŠN™ ²P¹T³«ˆ1& ›h8=‡÷A®ÅÈBÇï=i6ÀÀôi)‹Ý4Qæác [ªôìÚ“†Qôå ]]ˆwªìF‘­§ô Ô¼ˆÈMEfåoDe}èuì{tÖÈF˜è}y<§õaŽrxOšþç;MZ’}_̿ϸ1ÔC}6³ÑÈG²x?q“ÿ,Þ'å?)Åì÷Ÿ_Ò2ÓuåËú˜ˆü'ŽÊ&’1ùÏb>.ÿùPIÈù…r=?&åÏû­”ü礓ÆN ’NléJQ£m¾Ïdž÷VvÝ-T2o%Þ&Æ=‚IŸ,ó +Þí`),)¸S¯)°ã^xÂN¿SVÌuÂQѽNÅØLkì£Þ‹/ŽQÔ·å·Oð^Ç–N4./_Š{ÁZ_ƒþ0.ü&,9ƒŸa À‘è­ðóm9ÄqBÇÖëB +óËbß„9Û0'1p:ÃR˜3ì–ùö²Ä“Û€æ›<ÏûeP<ÊbÇ‘ñóµGʦ + +ß¹å÷Ξô2øû²_Ì`óÀ=>$! aÉvˆ+ïH1(xD?ämƒ@&ÖƒF† ‹ž“÷v&L'pbŠ‡Ž¸ bG™TM^øæ¡›¥qÌTˆ˜ßB9#Ωûä±ÅD2‚ DèD}õ˜žø¿Ü©jÿ³’-ßXkÛ€ö?ÅÓM•´v“¤3DÍ6«jT¿žE1UlÓl:¸ª^ oÏ¡¯Tm}5Ê=ªh®Nnˆæƒz[w’" ´;ô&¼ÊÀX¶HÈ&¸MÈýɇQIe2HZ>¤Eƒ'h»÷†Üè'RŠ™=áõú¢7WŒÐ@.òËbÞ[|ïcxÞ¬;<›+ÝQTg$õæ™–?ÈŽ¯¤ØéOPË3+Åú×Uˆ &5{ÎË»:ÉѼòȃCÎ_aŸ€0 íqA[Üý¾ù·@ék×=BêϹzBQ•7rsEÉß¼ýbÐ=F£7ùf;“õ„\ù|¶¿AbØ ³Xª`) på3Ž³ý÷"˜h,R Óó_‹`Zd1Ìÿ^­%ÉW†þ;L‹}Ã4ÁœýoÜÂñ yÿדáâ~1úM/¼–ˆ%º!ÉÆt0Ë/†ÃúðVÙYý;œ®.ÂT-ss +f‡ýÙ`xSnƒœ,Œ#0§õ"é‚È~ò…qÑöëf?‰v\gwÌë(ÎÆ3 +žÛÑù¿/V/•¯YÅ¥ýl ‘ŒŠî•5O2ƒ4ñùnEg….X²˜Œ–ô¶î«;b±ëwÅEc(¼ÿˆ"ûQ«}H–QÏjèg^êÃÜ®Þ÷ [±—–÷åbÛ!ÎÚ3ëìs~ØÊÚë\æ­ðØbï2ƒËd`-%ËA$ÏÛÆÕÜS’îDž+ÓxaÒl½¦Š¬µçAR¥q’ž1‡Üs`ÆŽDx·Óí:àVcM0'y%9ŠÙ­KIl)2mÐï®H'_c6@P‚œ[°'Ƴ¬¤``Æ/}˜lxœ¯œ:¾ß7üá’?a…àÿ1Ë°²{ ¹Ò9Ü”0kH€@8Á”0kH`ŒcJlV&´ µ !l+:[‹:æχ›ø€µ ˆÃÍ‹ýpâpóÁb?Ü€8Ü|Þ?Ø€ÍãÝ,Òb•n{r›$2i­V¾Ô”àáëÅäžÒM–2QInÎðà¶YõÄyþêq¾™­ÿ»ú­l}8ÁuÚì4)ýŠ2 ú+0v÷²„½&ôJó¶á!KÚ´²Ùg"Z -± bs•´¬1¸mnÿ'¼/|¢7Šm>ƒÕ^=åþÚkù®CL†;É%ÒÞ\3Àñ’Ùl'6Õ~<›Õ8bx (–@ƒE –@žÝ5ÔDMÖÀÍ«×/5àÀH¼ñîÎmÖj‹½6ùbï3UR-ö¹è}Nkµo÷ÂM¬M¯‹Ûõi„áÌy<@hw*bï-zЕs/°¹óâ­¡ÍNÐÈÁNÿ³ÊÐZÁó˜Z¿Ã"LXÄ|S.bÊWrÛ+¹ø<÷C×ïá_\ÉÏäJ®Æ:®[†‚—Ý“P&勘®Ìó #!Á¯¨ÿðÁü©VrZÇ•\§â|Â]P±ˆÅÛÅ ~Ïi‹ÙÉ5FZ”9j%WJŠ6µ%@³üÄ&¡SNÒ¢PNìÞŒqðÆ¡˜–ù h^ÔMô–'ã{­ZU1f~6ª¯êÝ &hZq0Q¼ú®ÃfQY.µ6€_)†ûJÖD"ó7S41³îïƒ&*¥í÷ñêâRj¢ý»m‚(Þ¶ûrPí× ý¶e¯,WB '3œJcµéÉ46\¶§0±žLcÍéÉ4Öž"z¡ÞB«‹ÏFÃø>•[¯O›ö»>»ZìæšèýÒÌj"Óül´¿59~KRÂF,ÃaŒO$ìötOÆBÍZœ!ð¾^/Ö—§õáÙfÛ¯‘©åë¶ «£ù]“7Ñë™Ö¬êEoø·{úð-#)¥´4‹‰Þxyª´ìM÷oS3ÔC½?5ƒkÚÉFtÙ[[å?û¶KÅÏk›â§ëJ)aÆߊƒã…âçt©øù·Rü\­å?'6EG&×—J™Ùâkú¹‘ÜäPt3YΘÇb±ëf²œ1E'“åŒy,Ê#PvóNΓDz=`m'“åŒy,»n&ËóX®ÔÉd9c ŒE/“åŒy,h,:™,§ç± 7z»–„÷¿×¢ÌJ…bPGTVg"[c”q×Y +’jtY½XäÔR.~¡j­ÈfAF(ktm7ŒÅ«$öŠÞmÀ¾i¢Prg÷&ѱ«~|fÚR‡¢+tN.(ⱇ›]×Ò£² åÑÉÍê[ Ofì›%š²¸–âmà°åÀv™U!Ñ*(ÅCŒ3ªWØÍB«{³ÂìöèrL¸',t!é…#˜€¬!ZôåI¼ü£XKÚ®mr9ÿ7n‰Xìh™õ=7È—X-v;Ü© Wë9z!øž~¦•î¿Ã……¼þGÀÿÐ_Ž¿ ©Ð  º[éYœ?“Qo5[, 1ßçz2ñMf_3×Ee +ߧrû{ µXeGýÕh6í.þ½£[­ÛJã&{¾ÐûȆXŠc‚"hþ¢Õµ"FØ¿ð£?pëŸ ’¸¸½xy#.¨#– A^øX†¾øµˆtd(¸Àe—ÂãOtïùí¼™þ§; \Æt„Úk«ÅhúuáìŽÂáÇaÕ~M†ápf¶˜õçpM È#.ÃîDçÕÇî`´^†Ã¤jfÔ/Ofýñ?£åPxÍtgëé="{”Bÿ^¡/7ÓÕÎ7ÓÑjÔ<¬»ƒEwº:d€ô=—cò”o‰C:IœˆÔî†ìÓbw:˜ wÝß¡vëÂ]™|íuûã¯êý;ù®-WH¢¡¼7NõAC<ÎV]$)d‚ Ú‡þüZÄ‹ŠëüDú¯øàÿÒÿ ¤ÿ’>ÿÿŸ@2!´¥2`„ -kd”)ÿ3·¢ñ$˜¦`O‘`‰úšCf×ñ’Å—,¥º$Ñ%þLv‰?ûDÁreCÂ'Ð&·mˆÛ6_]²²¯qwÝkø‘µ€ÍOƒ`2˜ φ5+Ýgƒ,ÁLˆ¥C,jçá>Ãûša ‚ ‚…I^Pá‚ÁɱMÒ ^aýäç2Ddì^ô +ÍÃ+$4B3$íÀ˜Å<ïÓÅÒè•Ü!h‚a,Þ‹ „ñS$¼ApUÄœŸÁB¦Án… ÒO3t‡²4†ƒ‚+6Hó$ ƒåí‡_€,0¤¯$Žæb"^²ø2“AI##ß'CâÅ,zA© Çâ$(ð +Ý„äôzBð&ÿ`N9‚’ü •‚YäƒhIÑ4¯òdˆ¡( ”òÃ8IžB·Y&Œô³I3Ø5,…© Èæ¼ø¤ñJóó!"ƒè?ÔîKŒŸDNHˆ +14I]D„÷‚Ð’"ƒ,É\h“ffKÅ@½]@"<„‡¸ ø€¿ÛÛ0<†gh +úÌãÉ"¦|‘H\!‚‚ùˆÈPÈO@7)pLÐAWúxb"ÈÝ +i5ÃÓ~ ,„q’à9½Bûð€:Cϵ_ ú)îE°$FÖKœŸá(t“Q,i”b@îÉ„Ìœ0ÎO„h’cIš +b€» 1Å©#6³M’?TJ’ø>'Ü'€Žx>H!å Dd<ò…D¼Fj¨2ü ßs 4õ´Æ+hШqÈxF÷0 Œ,áÐ,¡™ q@Æ4O Š +ÀBg@c˜ïv_Æ„é$ øÝ} 0¤/…®•Ea‰çP£»ŒZBÊåMšrks_%·hl•©åM€-JᙚrK땹¥õ’RnÑ|C€šæv¥¨8?Xw˜¸4&D-©E#Šd8° Aöí-dõ!Ù* ¬gMaƒô¸–¥5U˜IP±0«øê`ñpàvsXïÀK`§‚Ëca%P,Hyhyô4ÈIŠÅÒ øl81” ”D °ËÎAd8aY‹VÒ»ï0`2)°]h°q˜ ¡+ '‘²‚ JpB «H°4(­!nàƒ<x I +YE0< ð÷E‡7Qȵ@| f°)²WY´ºŒ_ÞÀh‘ÿ Î=€‚)òH‘69L<,rÃ@WssH´öñ<Á`@a2!N "ù ¬@‘ n'„è 0Ó„WBH̓ɆŠGjœ-"(ÀrÈòùNô£ °Bì(ˆÆ Püì ô + +?€¥-¶Ãó$p ‰-ôøôàÅA©Ý7ИX¬áB€ù ¬Üi%$Ü$Ip×X$×øÍ]+Y°pŽÃ*\¼O ò¥À¤D‘R•¥è.ñÚE@±‰ïIƒÈ¡Ñ¨y‚5+Xt¦Ž¦±ð¡@Ô8þÊ„‚”ücFyÉ¢@ K!‹É¡í}BAf ðV<â} ¨Q0FÀnAA¼è_D 8(²zèŠaá°âú½ ñ + ^¢Q<ú"“Ñi‡E«‡¡ ÈtRšk… +@¼Søsä%Š ± Š‘Å‹‚SèÐu0?4Xžà +!DÚÀ¸ÀëH)’àÖ".é`°)QL”ůÝÁDÓK¬ø +XÈE†æw`t09í9Ñ|eP +Èap%êH ‚|^˜ ðŠ|i¾B¢ +¦)J¼jç%P- ² {`£Í4Xà /Hd}I~…Bzî•Á›ˆWã Ý6¤î‚0^‚á/œ®‹Ö“…Ħ°h¡3x_™ÒHšœBlÂîÒ}‰\ŽEþ{AÒŠ=#±Ã#ÃN0 Ð]ºÛ`ê ñ@'£z +%à@Ä@O0+Þƒ5.‹,¸Ï!ä·÷¤‰ƒÀ¢È!åQ¯HQ4°¦82ˆÔÜ…IE1 ðëJZ" Áòà€‘õ¥…›Ð+z£´ÅK0ÝÁÒ& dŽÐÔæ>òç€áa ˆ\ÚtÖÃ¥5¯C§p5üŸ•‰)×ÏðÎ&°ºüÈø¦BH!×TvMxá²"\‚¼^¢‡¤$û€Ä^Šp)ZzÊKäå!‹‹G^9òf&Ò}Þ=hA:$/Z/@Þ(R +Œ^»}=̶wAŠvÌ‘ŠB½ÆÙ 8FÀ†`ÝÁ_´€„oãâh Ur{3†8n,3ZBLL *(œE¯pX³‰kDJ!án_Ä£Kq‘Y "@ '°¼DH`OúÍÏI·Q¨d ¸Ö 6‡1Ïñz9䨃 Ö‚çÿ½7ñ—Ü8î<ÛëÙõÚ3œïìŒ×טã±=¶lQ}÷kÝ÷I]”(Ñ’[Iééb5€nê $KåÛ–g}÷ŸÐ?ù6,Äû!"2@¡ªTÄçÃ&*‘@"¾õ‹ÌDFá¹Ð Eoõ!·¹‘üçê{åN­Àíí­—«‘ûÃfd<:·Îu·ãv»?ˆèï[õÀ.FÄÝ­|~œÕ þ^£~Rœ òÍg_àÏßÎüÑ°ñ­gï>û½ðßÇŸýâ­z†ö^=º¹uë^=¨;šµvwCÿ*ø7´"ô×›g9!þ„ÎÝÅ­šÒ‡¡‡‘…Âý®ä÷êç¨!"í\ëïK½ºâ@œàúÛuˆm8Qö"êNja¤ú“u7] +x†AK37bßmåü¢„hƫψ2¡ó\Ý»úF·jíV.åv™Þ¿Õ<8¬GíM+øÞWŸQn/$o£¸€ w¼úÌÓ Äš%o~¥xòÕ¯=ùòm+Ò%aÞ|ö¥¯>sÇ^½X(Çï~¹½ÂÛM—â6\ahìE-˜­ØµË†aì"&DЛwë9yý¢yÒpÓî}µ¾–ÖOõŒä¥TëëzŒò°q~YB4¤>•,FN»ÆHƒ$Ê«Ùy¾BÝ +0u¡¡½uõò.ðRòNŠ ÈðI}®Çƒ¨1i`¨W8ÿþ{Ÿ 'k$|9}/cÌA'?¸»0àñIgÝk‰›ÍH(tTÙæͦÀÃîæû×ÑàA|ÚÔÔy红;×Õß~ÐݼG㳉ñ!ËC¾˜†ö³Å4îí¦w:‹iBWÁì–tÓhEîðÅ4Z¡›ÝÅ4ê§àl1ÍEw1MøZ‰Å4øbšõÔßõbšÝ(¡³˜æAø±Å4÷ºÔJl1Í=¾˜æÁûѯí6ï7›õ| [LZ‡ž÷Ÿýî3õÙùbšºùwq1ÍØ7ÇÅ4õ â‹iîðÅ4õæ‹inuÓ<¨G׋`šQÃÃîb­È}¾˜F+t§»˜&Bլ܂Å4:š‡ñvÕÓÅ4´»3U_;‹/¦¹Ù]ó ³Å47ùbšÚ1l1 ¯&Œ‡aLûÄÓhEîòÅ4Z¡ûÝÅ4õÅðÅ4ÜPŒ/¦©'cv7¦îWª·îZ`ê ¶&ä&[LSßO¾˜¦[æM¼h;Ùbš¸¿‹Ögç‹iâþ‡b1Møœ`LÜÛ]L£¹ÏÓ(…ÂUvÓÔw›/¦á­ë»qb1̓8áÜÜÒ8á\ âfÔõº›±@œp¾ÞŒj'œ¯7ïÞÖ…ÿâNû¹ûPšö³‡Ò6KÛà¡ôŇbÌE÷¡´Vä.(­ºÕy(ªã‹iÂ1øXú¢ž¹d‹i.øcé‹zj-¦¹ß}.J‹Å4LÔ/n?‹iîñçÒ¡$Óðzní"ûÏÄÍÆÉ·ïu7›YÉúœ|1MÜÿP,¦¹Û4‚/¦¹×}0Ý´³»˜æ‚?—#±˜æv÷ÁôÅ;b1MÜËÓÔâ}QÇs¶˜¦ihØ‹iâ\rÃ_Ls³û`ºæ‚/¦yÀLxÅbš»ÝÓMh®càƒiý[Ò‰Aµ_`AÈnáâfçºfz·y‹?˜¾ˆëánuL_Ô“l1 eAÅbš›üÁtƒ[Ls³û`ºö_s»û`Z+r—?˜Ö +=è>˜®¯¦»˜æîÃgõ{g.¦¹h)ºÕîçºuÿŽ¦[÷ï‰E0\·”"R·”BL·ê©S\LÃU«^ÄÌÓHÕªûPÝÅ4\´ê^[LÃŦŽol1­z|w1 ¯&f4šu÷úû{ïVw3jSR»‹iâþ{b1M¸U±óØYLÃ5ëÞ±˜FŠVØÅÓpͪ»¿l1MÜËÓ4šuÿ¾XLÓ44ìç‹i¢Ãùb®Yõ3'¶˜FjVèµóÅ4\³š/4Ký†t5«Y€ÓY5«q]Ô¬{·tÍj÷w5+\_LÃ5ëÞ]±˜FjV¸|1 ׬Úál ×,¥ˆÔ,¥׬ÈÎbšZ³Ô{'4ëb·8³¾«m6n6ðX7o_¸ÞlºrMg6#ÙæMª 6ïÁrêÝ}¿ËÓìö?ì.¦ ½±˜¦Þ{[,¦©¶Ôûùbšzòûa=¿ÍÓÜ}öá͇|1MÝ»‡Å4¡ÃÍÓÜç‹iÖS÷l1Ms?Þín6wéáÍ›ÝÍà_¶˜f·ÿVw1Mèý‹Å4º‹iê"|1Ͷ˜¦.ÃÓÜa‹iêñÅ4º‹iÞ¼-ÓÜê.¦ •‹Å4wùbÅ1ñÞܺènÞ‰›·»›œ¢kÈšY¬fÆ+n68?ŒËÄ®7ã îÜïnÆqpz½OÛÖKg +}ñ ÷[Lóà᱘¦[æÁÅ_L‚tg1M蘊Å4wùbšº_Ls¿»˜&ôÃøbš‹îbYâÞ-¾˜F)s§»˜&^Jw1ͽîb¥IA|ÙbšúÖðÅ47»‹iÔËoÙbš;ÝÅ4µ øbš»|1M]ˆ/¦¹Û]LSá‹iîvÓÔEøbš»|1Mè—‰Å4w»‹iê"°˜f—’†Ë`ê°˜æ–,Q·é.¦¹¯Õ²{¼ÞYL³Û{‡/¦‰ûëi¸îbš¸?Îë<¼‹i`ÿC±˜æ&_L6Åbš&@ݼÓݬW0wÓÄý÷ïðÅ4»ýw»‹i‚rÂbšÝ-è¬ ·×ÒÜWŠ„ +ÁZš;‰zØZš»µ4u¶–æ._KS—ákiîv×Ò.q-͘ÎZšº¬¥Ùµš­¥¹¸uK¬¥¹Ý]KsQ?ªa et×ÒhEnòµ4J¡Ð“ꬥ c~±–¦+žý㾞&Øî\»¿~ÜÀÖÓ4ûñ|= ÝÊ=×Ó b¹YR3õóäñ‹r†~_r‡/Ê‘…BG«»(&ÜB·ôÌ[Þÿµï~óÕ¯½ð¡÷>ûÒ'žùb õݸ,·Þ‰µ„nÃÛõOU¾ù‚õu=ºiÏÖ‚¢cTuᶒöÿÏÞ©?h~hóî³MÏüîï6-xÿ˯¿üÖgÃwñÞŃg^úÈ/]¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ·7nœúÜÎÈnŒ²S_µÛl{N¦Û$vüK·L;&~Τ›´S¨Ø©o‰Û±mr~&¯ÐmÝv|BH7f{°ÝÃö¼Œ£ß*·CÙIðëÅÒ<7› –Nãêm¶îÉä‰n§ÛäÓLZ^ÜÃ&òt·Öm€MHà>øÆ2³äœm*AàP&sšã4ÎÓr¼6šÀw·Ö‹1Ù»ÁF3™Ù.·ùØ>Úøå³—IæP {[ç4ÎÄr|4—£ÌÀrZ Oê·‘b˜Oà8üò±dN{ÝNb#Ä0a9Ú%ϒä +dªr£á'õÆùÚþb˜C  ÆF˜}^›É| æŸÚ-çe½Aj%’º|ëeÒÒiœ§í ¡ô¬A ÊÕWò,‡Éê Æiœ•M+† B•@É«4Ãú 2ñ + GÓxjG­Ü GCˆ.N¨"7ÈRX¦€Ì§Ñ¸-§v×jm*1´!L(‡ùÆ°L)Cv +H§ñ„6šCB)ƒÛnØE0^n=Jai9!§öÛÚ,ŸÃ”¢s„Øì%ð[-…¥ $“ÇL]mã8ÌC#§ð{å•W¾›m¡°Še/RU]iSq(#2ƒi` +?u~Æ0Éd/LÆ™˜zc·ÂÔ°ÅÄ0Õ'T!|¥1‰_,ù½>£:SL¦€TåQÒ84LŸÚ‹·©8Üv#òVô „¿X©Ù7[S?%,‘ɪ<ª4ÆÔ};µ3l#â2ãPífBHê'‘û~k|ê°±ø‘ä“1)Tå1“FvOÔ»wj.Õ†r¨v·Ýžá¶‘ %Œ·o÷’ɘÌ2»mfÅ~cŠF㺠²Ñæåðé£Gz!D‘±§Ââ±r¿Ä™d@¥Ñ…ñvU14 ¤à‹ømºöÆpÎ'üÉÊÄCåÈ$’Éc¬*6g;é–c“s(ƒrÔ ¡”A$©+úL‰:É€Œ}ÈM;Ä&yD±ß(Ãô ñË©=¼Û“Ãø§Ê¡C aŠÀM ~§1u¼?ŠÅLd’)åѦqOa<µ‡—aª$îÉ¡!†ŽB•@ïµ®…Ú¨¶ñ#‚±TDy”4²1u*L»0NhÓrHbvbHᘠ4Œ…7KðË(¬%[è42ñæ8Šû˜ÊáU74§8|±»Ê 9Ä ŒbH Ç!HºÒ˜ÝQŒeÂIËL%4¦î Ó©¡´£˜oûpˆz˜êªb¼ÿÆo¨?ŠãjG1¡…X¦€ ç¥/£#µì4R˜vaœÐÇ!vI ‰C‚0rH’Èö+a¬£õ6d8#Ê£J#ÎðP˜*ŒêM>µÛggƒ8¤;lp¨RˆC6<1 DSÅxŠ°3n°Žb„œ˜d@† CyÄ`-iÄN£-Œ©¡´£ØkGàåap}˜°pL’~‘Ç`ìIí%áñ¨p=Q HêÆýH#ÓFÖiœPOíùy™*‰Û®É+9ŒãäË‘C¡‡BÔ@Â/|Ä,lb‡ [ˆÉq&¦3…Ñct¦íÃá‹íó”‡ÑGÈ!¡DÞ¢ë#aÜ!$üÂGl´²éŽ\"™áب–d©0ýz›’0BEÕT¯¡y‡l°Lb(!D $üb_ŽF(…ÑGDfD.rŽ@FöR4ÊNc¯0zŒg“p¸içUeçP˜†ÂaÔ@’8b/T·ÕéDêþ™ HIcžñgxˆF9š6„qPŒ>5'¶AªSÙûphˆ!ƒz‰?ì¦fi€Ld"²I?Uã O¤1ò6•0ª7ÿÔ8œÒ&ä°‚ùÃ^‰:C˜H#„_8Å!ÑHÆȤ’hŒ×Æh,ÛùÆÐi4´*Œ£óM•D•C6u³‡Ô9¤a2bIÂHWD {ƒ,FÓÎpÒPŒPd@’c°fýÆ8ߥÂtŽ0zŒÎ·^åwy*c Ê‘º‘ãÀ„AHâûŠˆœÑQŒÝBê[2 ¿X,*£Q†i&Œê£ŒÑŽbÊÄaœ·Q9¤Á2ëRÏ0졉> !í!üpº&ˆÆúŠD&‰!÷Ø@±ß÷°0#Œù1Z:âÔ\ÛT¯2†ÌŒÃmûH…=Oéå0JåHÍõ©ÒP%î¤H­ª"ÑHì!$Ä'Òç0±ÓôF6Ç8"F«Ž8Ä¡ª¨bhŽó‡’CÒä‚rd#RÇzƒ-Â’Øc¡9^˜ŒÑ±r’º 4ü‰%chŽ4Ê0#Œ8xÙˆ¹nÑÌöáp+1çpH“6q°9¤Îaô8ši€,!$ŠHÙ0.ÓÓ=ŒÑT˜÷àˆiÄN#…iUmLé8ŠWC†Ì9SˆÛv=6{¾lp +DWRç1 Iä‡ö°ØJ„4df@"Õ$é'=»¡~cÜM 0­ +#Î1ʽmWw{wQµ^彚ŠCšŸ!#”i™‘š†e +˜·A£ž!õHêjƨ…fÜV…‘æóctª»(ýrjLnrX‰©•Cê‡U;XÆÎaÜŽÌÐÀ$â¡BHpÆ?Ka T˜Bbt&iLMR’ Fšc”ÏeŒÎé.žŠ*‡Wæy‡U3·ùCƒÃª™0¡¡.ÁCUÀÜ ˆ²†…éXŠÝ©é\8Û ¤ÞBJi,³ic1z\wñÔ°ÐFp¸Õ¦n‡8…˜âú‡U³r9¬`Á uóˆ!‰IJŸ4’ÓRLHRß’ª¥®& Ó¡9øQÔyÚÍd1zPwÑ@q­4â0sêFʦu_lþ0Å!uIО(>„ +#^04ãz0­¨È$†æ¨¨R£N¦„¾ä£UÏ°»¸‡[mê&õHe(‡Ø9DTp© BÈ„‘v²Ž"팄`hFür KCc Æ Æ*=×í#2Uq˜2ËG{19…qˆãeÆ!%;3 ™6RÀ¥?q'†iü —‰Ž¨ ÍêvÑÈÐà%'FgŽ\¤§N ÎÄÖË¡ ƒ¦nTã§E3QcsHÛR«v°ƒÚHü x¥°ª*'&‰d†t¬¦•he#FJGðÔýꫯRŒVG.½ÝÅ£8¨‹hsX%†Ì’Ã8_ÝË¡d’`L’Nb§Q…FX€…=I”ñ7Ta4b´ì.Ž¹¬Ån3†ÌÆb ë鹞äÐ`2–—Á!$±BY#!ÅcÙ¿j *:°ìŽ¤¤01:¿»x†ó9ƒ8d]ÄmzÕMªÈ)Ä¢}¤2ˆCÔ†‰ÚˆBWÂ3š™š¡¾aP¦ï‚ü +0̉ͤ¸Œ1Zí.:Šh£9Ì23ñ‘J\Û`sHlÐC\Ñ´ j#•¡C˜Qm¬0¢XÀÀ $ieÚ›ŠÑ¬»è(2S%q‡ñ¾¥8”Sˆ9Ê*ë­±n[Ñ>$m$0T´È*M31DieÛ(Ũ¢jŒ.ÝÅð -3Ñg‚b/‡Û±Cf{ +©ÈXlsˆ±˜í)óÛ¬[%žô•0É®„M%É=Äc/1Õ]d#9ˆVQ4æsNÒ^6!‡•6TÁ©›ÔTvd/v®*16Q9DPiãqk¬0 +#‹Ñ24Ý3v#«ö™KJi]^Uª»H#—²]ÁÑr>gÅS‹*‡W“™+s*;ˆ1šÍ$ÑÝê“_¶ÁShµ‘ÅY)¶(ƒUwèÍZ$ûtK¹Tbû9[m>g­(âÐ2¦¦nÈk¡<ë+’V¢è‘±ˆ2ñd†z(QdœãõÄ=ñÊI! Gcw±ÒF.4ˆÞg>g•(^rÈLS7Ew*›qø²TÐï ±Á†9O?LñT‰CÙ,º½J†+ž”.÷ÓÚ¶X&NR©#—©ÑKG±·‹¸'‡±‹¨NÝÈ)D¶!û‡È!i 7 c!Š•D¤™<¢NJa”§«ºÏwb‘d0¾ÒÑçŒb/‡ÛQCæMzÕ=uƒ’g¼™ú!‡ì¤Ê1õ+»Ý3ÙQd¢'á¯`/N±‡1g5‘ ¢Ï Åi9d]IJ»ê&5u#c+ʪöYè¤$†@²ÕŽ" +\Ý +å B£©3Lkzé[ QŒÔ!Š*‡W^íPiS7ŒÃ +æI0K1@ËNûiT ;‡2p³HM°1 Ù~RÑ°;„LÌi#Ü¢×7Ë=‚ÃíØÕrÕ rH?uør<ËndLq˜ «îˆ)eÑ?š±ŒÚ!Ä?7m‚ƒ Ù4rA1 {­‹ €Ìçœ-ŠW%¨« ÙT6AEÅ”Œ°é뺥 é”>$JO*\jNߣx©ñÚð'¤è¨øc>8ˆŽ(Ê©Ås@q·cW;lº«npÌBÔÉpœâK"H’"  B2Uå³,SÀŒ%SoÔsêflÚ¬jZasÙÔâY¡¨†æAæ ™sV;È)Dbæq»`Õæðq7‹YÎR™¦U݈]¡,ü~°±h»‹!‘ÉÑr>GåÎy ½P{9ÜŽ]íÀ†Ì±ÚÁ˜º!a$À*‡U·—Ȱ̼¬VÂÊWbÔŒƒbö/KÝzÃæsŒYî×›—¯­E•Ã«é†Ì,QeÐÔ uõKXÚ*y3´$§Q[åP²Êh”`KÞPrËîoâ ÑMM-Æ¥b+Fq‡Û¬vS7ÑÅaeõ~pÙ+Q ÔD>±›—’D‰"FpIÖŒ¢Ä‘ ÓC»C‘¦W†âÕÔCf{µC%†Ìä͈% ^Ù'Œ²¨ +ëþÑG¬BìF2ñdbG‘d„±ì¢ ÅJ›åf(ââœu ¸‡Û)V;`_1ü)§nȬ÷eü‰ÂH¦þÉ°Dåd¬ªz+k–zˆÂXÂÈ…‰dkƦBi¼š7ŠjhÄ!UF¯v0¦ndDfk\S:É¢¼H‚Ù‰ÔŽ"«Œô΋”âPšæÙ,÷ù ØË¡lQæyÄj‡Ì©B.šŠ%ãÐ>KÝ#+ºa㲬£3ýË„‘#5MãPh6P|ã7ªî³¿u ¨rxu˜!³ºÚ!sê9DK1[€drÇ$KJÈPd§Æk š‘vÔCY³ú`(nà'å _o^¼µ>¯Ž>dÆmr«:uÃ\ƒ€I·¢Ó!¦c2:K“z«’lè!#Ù¦ÁK³Üq*;E¹8':ëg?ûÙ"PÌçðÐCfÚ&fpêU…ñÀ¤I•ŠÉ-©“Ñ™Kòø=*»]GvIìa%Fá¢ûLQÄLSƒè«ù¡ØÛE<Ü™q¨NÝ°¸VhBúWrh€*·Ù¹ŠÈXNtÎÑC¢ŽúOà-o±¥”…Z´¡‹nÞß:Pìå0¿‹8É9gꦨ +ÃFþ)*DX/Eìf‡ ~ŒÃ ñcsÔ:†"=p‘+"pØ:PT9¼5T™pÈLw¸HOÝà¿’“‡¤`,ìâG„_*:³ú‘(Ä’!ÍĖΈÚÈ®?ÅÐ Ú!÷ÜP´9ܪCf{µC}E2Ka$ç"@—B™6ªez£³TQv,•áÇôP.ñ3ŠñßóA1ŸÃq¹ÌÕð!3&îÚÔÍ^d†p²h¨rX&Œ}ŠÍS5” q,Ä3aD\q›ˆÿ"Š±ƒ½J{»ˆ£‡*ã†Ìä” $îÉÏ2;L³@Lä0{a“ô–i±eì·)Xrbüˆ‰(VÍ#_Vƒâ$]D•ÃI†ÌÄ!›LCð öd˜¦òR%fXX†cV€ý‰ zHC3D‘icÁ!ŠC9ì]˜9d¶W; 6²*ÑQdŒÉ{qHFÿ:~¥6Zg]…BŒñ BÜSB˜Æšøü(…¢S0gÇus†*å!3mP˜.Cæ +†- ¼T`5´jŒ [ñ+ ËÐ2¼éSù»Ôöø‘º8g}(îÓEL=UI Uì!3nTÚù üΛüW¥NåÓÄ!òÃêG¡V È%è!•aÝE*ÃP|Òþ 2C1ÜmD13ÓjA(^ Í™C2‡Ô4†Ìf¨ªZªÊxÚ«™²j žHê¡<ÁSQ$ Uc·gPÒߨÀbÃ%êŽb¾$²ÑJa†fRBÀxÕ."ýK³Ù§ µ ×”p¥J)jJZ‘1¼£*V¸ÒŒ€d(âÓgÚ^:Š2:çKâVLàÈÑ +Nh³Q3Æߪ>oDv@‘×E¬ÄXFâ*%ŒRxKÐ%õ®Š*‡U;]ô±‚iœ£x5\Ù­”Ýe±rÔŒßôfol~*-LãGìO•Þ‡™’¨–Te¶÷@ EÒÆÇíëª×‡â„’(Ÿ­à³f Í8¡Í¬”Úì:‹ÈX²ã,SN,Lg¯º=2!•˜ü”"«’º]@£HöïŠQ¼Ê˜K4$±ÏVÊijfš´¡›Yš¡9¥~tUIDÍQÁ`–BÁlI´Ãw*ˆËýŽ¢â8I¬Ä³•Ôhe#ÞÅ̬›"¨%#Ã2F¥$¦0’¨Ö š<»¶¼ù]8Cs¢3{âI$å\b¦$ª£ +ÊOº¯ÛN…f©‡LÓì8hP70‰MfUl§¼Y³£hDçJÌ%–}’Xi£•¢û¬¹èNh—"4£ÕRs8É„G•\õOºBö©ÊÕ˶µ±\ŠùÑÙ°Ð\b¦$†ýøh…±BTiCu;%ŒÌ³¥SŒ¶¢5Ü#·EÅ«=$QKÌ—D9‘X‰ápÙ•);òXHuۯ⑽^©´ÅÓQ¢-‰ö\"JbÙýÁ¥M÷Æä)ƒ„QýkcOý)é2ö§:„òªè\Žâ¸èÌæphÎhI,º9S2WbA`¦0Ò¿6•Ö·T­èšJ—-§jG±·'pn(öJ"‹Îrg´$Æ? HéÜÔ6:Q†uöo™1¦QBÆ©bì²Ù¿RŸS‡;Šùѹ‚E8¥6—XfKb¬!~š/ŒÙ¥+mTŒOs‘aW‹é(Ú(fFçʰкÄÌsüTJb ?¸]vÙËFÿ)´r8T‘“Ê©Æq©Òª®ª–B«Z.Š“DgZ"« endstream endobj 128 0 obj <>stream +Xè‰süHJb%~Q?GÙŸ%˜ +ͬ0}d#ak)#P^O)¾A²†^=¤cE;:ã–ø›,:Ç›@táS•Þ¦]‚xÆ›ÛL冊„PÂf+R¦X¥‘B]桘:ïY¡˜·bìŒÑYX62PuŸ83¨2%±ì©.VÝš)A*t *Ã2F§®–ń׾ò³E‘$ñ²}GdNt¦÷ QtÆK¼]òÁ +‹Ñ)I”{(Èâ~æPƒ“ÔÎÞFtfæ(âðjlG13:ã€ã&>q¦[͵%QRÁjž-`ÒRíp¦ ’ õîQ¯ÿt{QTŸ;ŽÎUwÀò¤ýÉ‘¢»t‰a©EC•4¬ÇF•Jëã±SôòÖ{"GqOsf¶SÑYXè6Æ®£ìþ`l?s.S³ŸÊíK!‚×`ŸK­­tMÇuí™mK°ƒñP 8ŠÓ¢¨Ÿ‡ŽYHU%´å1_%«¬<}”B(u{¿,à(ŽF‘&·0“ƒocI ŸÙs– “©-ïpÊÔðÍHà H½|Àrj³«r ¯ÌÜf“ŠÛŒ™œ21|¦ç,™cÃÑUbƒÜ©b9HÅ£¡H“Šl&G¢XÀðQ,´ásÕí.ŽHEj5øª‡Wéè<ÈŒcs>r3QÄG-#&q#® Ë>ÓÍĹ2fXLÑÌõv€–2Èdm«Žâä(æÌoÓLNØÀ œ¢»L‘Pd« *m>PÞ[ÃX ª{+É,ÃlPìf9ŠE1¾Q Ê™¹P6µŒí4·ŠtŠ„*±‚"…ÍÐ6Š6fø§£8ŧíkªE"äqûÊfQ¬ÄÛë?º{̆vöŠîh Ø…õžÈøÈQ´9¼1Ñü6þB-ÞV'Ëî Z… IPt"•±M…Ê%Š*H©«u„"[©(—‡!ŠñVÐ]­´IEöo¯ß{wÚjf6Š¤Ì¶0²/BêâÅc¢˜zÔRÁ$OÙ–sÔ†Åkæ£2mm02iµ¢ëÅS¡ˆZpy Í0d¯l•ÝvÕÑÒƒR¬TòS0¢§š‚ME1ó"ÅLé©ßÐЩG-U74ÇÁµ”>ºo¥CS`¤p- ¿W»ØY˜ek Èå(îƒ"K%Ø´9§U÷tŠ¥˜Ù¦ùíRƒqÂü«Z‘>÷å(.Å2û41VtŸúÑíU²¤ aNaþR»sû H%£¥º‹¥£¸‹tÖ³q{{M¢(jn|Ä>uçŒbümÏŠ,• •W¥Þ^é_ÕG©ÂꟆI&Å3D‘¹~ŠFYL5<(Q,»",ÍQœ?ŠìÞª(¦|D>Åû ±BGÑQ”N)´Á,.éU+TÍ@Q-ì(® EէŇL²h›9ÅFцÊQ\:ŠŒ‘sPTÅ ½ÉPDGÈ™Szi‘¨GÑQÄÂ…öÔÝÁÄ?U òY ŽâÒQ ;Ÿƒ¢Ñ-”{EG±ìC‘ÝðC (¥2…¢ÝÉTcן*æ(ÎE4æA(JCœX ²ƒÁLGqM(fNæ8Š¬Œ£x„§-’¢µ%<Ž¢£XEy穼JŽ£¸£Q´WæŒC‘ùH ÓÈa) R©sÏÅÔ"±}Pd^À¥Sdå¸ÓQ\Š—C~ÑnŠx{%!äSÆ¡ +•¢ÄÃQ\Š¤YU‰„‚ÞUÜòöJŸ¢6¦ rÅÑiVöí•î(Zcx0O¥ˆrgŽâÕðâžE™Õb ˜rŸüÔF1Eù:õ‘£¸8CÛã0PTsýT&A1E3Gq>(öþ|S/ŠL÷GQzJ20ŠFŒV“:Š§E1þ–])ùôKÈ™yÐä,“ò`/9ò#õÔ†$–Žâ‰P WïÀÓŒ_K¡ØŽB:C’^mL±á(® EÙ]L¡x™ø}EziK/Šê ƒ)¿³j{Ù°ë‘:Š«G‘Üñ¸1t™ª)ZEGqŠñVÈ.Òe™Ú÷K’Sl¤ÌQ<7ï(Ú(Q´ÙH}ä(.ÅMû +¡ÌßâFÃvÙ÷È r%ÓFô:Q%Ç0Gqž(Þè[œƒ(nÛ·Y]f¿¡ ìþ,|™FQ:HÕFGÑQTQ¤ub©7ð>—e`˜6P”®)Ä$s}ŠµZû#„ŸvO‹â^7i X¶o³2P¬Ú%:ê5€$“žJyRáQy+Å¥¡¸Ñr +rPÌM†t„Ðð2"¤þ™B1õ‘£8+ÃÅ +¦²E¼c*Šù ÕýŠ¬ã‡õ;Š EçsrP¤wüÙ(>o³²µÑÀ#GUåŽâRPÌùÙ†"`(š1`RÞgŸ¢¯ÑÅ)%dŽâêQÜÀKx«¶ÇM¾n’6𶧼_j(2Ç•Ù(²jÅ¥£5p?&†(nº/á5PDåLÑ"Ž+3P”æ( Å«ã¦B³Û+õÝs©ÕÛ.Q”äPm*~Žâù 8.ºìŠd&ŠFm% å(.ÅÔŠˆM÷…VÓ¢ˆUµ‘¡¢BÅvJuׇb\È]ŽEï°t“ +d•x­ +fŠÅB{ í(ÎÅj`V~ ë·å–„PIR:šy6…b™­ŠŽâ©P¼:V*ta¾æï°t±ê&»ŒÄ‰£1U¦ŽuO‚âþù§ôJèbàËOSΊbiꞬ„}ä(®E¦‡Ì~-Ú Çþ´Ðç8Š Bq\*4ë "¶¬‘_TWJG§j;Åù Og Èr +¦J…&?ÚÚ˜Âc*K¹<3Gqr·bä’ƒâˆüSúi^s´‘UÛ‹GÊÅsCñù§ ”÷mrÅsCqYù§¥£8o·ÓåŸVÚ”s +yD½ó •Q½äà†£xo¬=ÿT~:EyÆT…¥£xH·fÒ_ØØì—Ên¬ê”GÙ HÔj{?bÂë(.Å䟪‡Hsç‰âfù§‚©ë2ŽâÌQ¼\Wþ©Zaé(ÎÅù矢»±0Ã/Eìš:ŠsFqeù§ÒÅ•¡ZzèüSÆ€ô]é(ž+Š'Ì?U}W¦ñsç€âÕ9埖 ¤‡¢˜*,[á(Î ÅcæŸJSQd}ÈÔ±6Š†—ŽâÁPL­ˆØÌ>ÿTåÁQ\7ŠCóOñ4»ÉÒS*)¨*S0ÙQ†¢2§;ŠGCñj¢¤¿êðù§d éq•4GñLPœUþi)¨6ø‘{Å™ x>ù§)ÆÅÕ Èô°2óO xÿ©ªª¿$ )?æ(®Å°½²üSGqV(ÊâÒóOÕ î(®ÅÅåŸö¢Xˆ©E£ZGqA(Î6ÿÔ8ÖQ\%Š³Í?M•tçŒâvfï?ÅCTå4Ì ” +8ŠÇGñÆùåŸfå(Î ÅíJóOmåSçrg‚ââòOéOGq(n–™JgQK²:ÙW@E¨tO„âåªóO%TŽâ Q\Mþ)îï…ÊQœ9ŠóÏ?eeÅ3Gqžù§TÞQ\7ŠæŸÊÛŽF.HNwg‹âչ柅ÊQ\ŠóÉ?-Û΃£¸\Õ³KÏ?uׇâòO™#˜Çé[0U¨TŒ±¼£xL¯Î8ÿÔQ\%ŠËÊ?í-ã(ÎÅ óOé¶lf–ª–‘\!]i½ÅS¡Xe'ýU§È?µk mGq(^.9ÿ4õ‘Š¢}”£x ewQEq5ù§Æ~Gq‰(.7ÿÔÞï(®Å™çŸæ’úÔQ\ŠsË?Eçâ(ÎÅíŠòOSG9Š§Eñ†çŸv‘H™£xr·ëÊ?¥?Å•¡¸¬üS:KêDeÚ$êe8ŠÇGq³üÓB$ý©Û*!©O9¬;‘smŽâþ(^.-ÿ´L+¡£¸PÏ!ÿÔ6Gq†(®5ÿÔ6Gq¹(Î<ÿÔÇƹÅE ¸ üSEƒOGñ(^yþ©£xN(..ÿÔ®ÐQ<-ŠÆêÙuäŸÊ“ʪØGŽâlQ\Jþ)Û™êÈ£Ô2Žâ!P¼:›üÓ^s×âóOUrìÅc¢x>ù§*9öGŽâ²P¬²“þªäŸöîOÅQ<9Š2éoù§†9ŠGFQv3QœCþi +žAõâ(ÎÅÕäŸæ(®Å#矒lºzUW^Xé(.Å¥äŸæ(ÎÅM»{Ýù§†9ŠG@ñÆ™åŸÒŸû ˆ—'·ÙQŽâT(n§KúÃ0MnJEá²+>TRFv;3ýtř䟪۬ªû S˜å”q{QÜ É?Å»7çüSµrÛ SßGq/§Î?e énçCB7T‘v:Š+@ñLòOÅe¡¸ŽüS•:Gq•(."ÿ”Õï(®œ矲´-Ë#Š6ð†¥+ÅQ4ŽFqù§S¡¨~ä(ÎÅYåŸ"²˜£8S+"63Î?5(u×"Kú+ûPÜœ.ÿtrs§EñêÀI˜*%Q½ÛªCÑ° £—|4ZëòÍQ\Št‹J1µX¶a]½ÛÒ;ÌeF™r°›oŽâ¡Qœ6éÏ@üÙÿ¦Eqªðí(. Ų;û½þ)Y%¢¹áôL„™£xrSù§¡dü3EÙ”a:eUw m>Šèè}ÌQ<Š²»˜‰â‘óOYµC9ÁJö1Gqn(f&ýÑM®NŠ• =*³°£8g§Í?­ÒIä&[÷\ŠâvHÒCñhù§9tQGq‰(nÒé-Fþi(p¸üSôi¾ú¡Ì:ŠsCñÆìóO XÁXj(Ú<†¢º=ÎÅ#£¸Gþ)Ý[ÙÅòŒQÜLñÒIvŸs€”Ž+jõpÅÔQ¬ò9Š'D±‚ùÃC䟦èE‘v:Š«Añruù§„öy{?r„âžIŠE×2 Ag¡EG±L ¸Iˆ"ö‘FiEæÇ2b +] Õ¸Åù h'ýѳ?ôm  `г)‹!K,™£¸?ŠWδÚ@þ©¼ÛLU_‰Émr"ù"+Ü[^=Ð6Gqþ(V{矖 fªgÕQUßÕ¦4ÌQ<9ŠÇLú«ºV¦2‡Gq¹(¦çLˆ"ÞpéMHV˜¶™›2‰bæ(.ŧ/D7£òOHjÅr-(^%éÏÈ?5¦¸¥Oe—OÒÛ Ã~œ9Š Eq3¿—N:ŠóGñù§2:WCòO¥ï$¶ß¥9ŠkEq’—NªÚ˜2Í ¿÷>ÔÅ9 x ¤¿hƒPDç:ŠkBQvsPÌé$õí¤?;L£GlRa%£ÍQ\"Š2ÿÔHúËÑF‰¢#… +Uˆ5Ku5jèýÔQœ-Šã’þ¤ §ªïYÞ %HvåFý¥£x`·£òOÕ¤¿J›ÒQ]©º]ƒ•¤ ?•Û걎âIP¼±_Ò_*ÿtDÒŸô²¬IT)sÏÅ°±«¢/é¯ÌÈ?•Î’@ª½;ÕF£(¯ÄÞ#w§Eq{”üSºÛª³P¦˜ï°*­(ªtõîÁÅ£¡¸9uþ©, ^ô½tÒQ\%ŠÕØüÓ}’þÊ U¤ø©Ö{Ïî(žÅË¿t²W™Ubj‘Ü„eÅ5¡x´—N2mL‰¤ü4¾ók3ÌQ\Š›á/Ä;?Eú»‹ƒ”PbcïÁÅ“£(“þ6£^:ÉP”@Ê@¬ºËSý#ÌQ<ŠW³OúÃH­:"…"™*§6?©ÔOÅ¡¸ÿK''GÑ°¡‚é(ÅÞÕ³Ëzéä„æ(Οz¶‹"ÞóRÓF5^£[éLÁ”Ž0Gqn(VSP¥óO«v +±lêô¢(Ýï0‹5ÉS½¤9ŠsCñêXIŨüSÃqF™2ƒ4Gqþ(îŸôy‹øÑ*Å,w (NžÚ£Ås@‘éa5ãüÓq@:ŠsFq’üÓÂ|ÍŒAë(®ÅxŠ'é$ùËFÂÞï(ÎÅ­¹ä ˜ŸŠz8“—NRý½å3+wçŒâÓ¼t²ì¢ˆõ³Rldš£¸PçóÒÉýQì=…£xh·CòOãK'7{çŸ2mdÊÄ#UÒQœŠ7fÿÒIE‘sà1PÌ4Gñ„(nͤ¿Ëù§©¤?ÕËj×QFv*GñLPšô‡=Fv· ɤûJ Z^¤“þÅu ¸™"ÿTšêkÔF!E:Q&H½æ(ÎÅË©_:mŸüSr}Š#”â(žEœÏ9\þ)ÅÓ”62«ÄÔ¢z £¸VšZÀ¹×õø)s+ï›iå(®ÅÐöqù§¨¶ëÑ¿)%$ƒÌQ\(ŠS埢rªGRHä3l›£xP¯–ZÀ\¢ôÅ$(ör%Oá(.ÅýóO‹Äƒ¿2ÅÝc’«"ñ°ët„bjEÄfù§ƒP4ÊÈË.ÅS 84ÿt3ü¥“ Hr7Ö e3Sæ ] +ÅTýŽâ>(^M”ôW>ÿ”L%ýk3fà”sˆ£8gç–jÐb0ÌQ<2ŠëÎ?uÏ +ÅjHþiÑÎ1Ý!sŠ„=Q”曣8CÃöòOÑÅŽâšP”ÝEÅEçŸæ0qç‰âòO%*-X›£x†((ÿT’¬b#´q2ÌQ\:ŠGË?U uW€âvºüÓMÆK'ÉMª;ªn/QUNõS»d/œŽâAQ¼±üüS¡=•ÍQ<-ŠÛåŸ:Š+Fqæù§t +¡Lsgˆâf™ù§Ìï©CRæ(ÎÅË…äŸ2ͤŽâ +Pœmþ)+`‹êPd'UË;ŠS¡¸ÄüS•GñLPœ[þ©4GqÅ(N˜*!)J!¡b“iŽâä(^Aþif©-·åÚ:Š³Bqþù§Žâ‚P4VÏ® ÿÔQ\ŠGÈ?e®¡Œ™¡‚é(Î Å«•æŸö +££¸V—’*TÍQœŠæŸÒÚÌ&ÿT˜iŽâQ¬²“þªY柪à(ÎE™ô·”üS¬s´*öp÷GQv3Q\Jþ©£¸nšjï”æ(®Å“䟲Âr[þi›£¸ç“ÊÊ;Š‹CqÓ.ä^zþ©£8goœqþ©£¸,·Ó%ýa˜&SQý…ò(#{/Šrô{¦9ŠkB±šYþ©£¸7CòOñf?ÿ´Ð’þ2éTØQ<&Š—S矲Ш`™$0DÉ_)BrêDK)ªq…ŽâAQ\Jþ)󩣸t—•šOŽ9ŠËEqþù§ŽâŠQ\qþ©£x¯Î;ÿ”(VBÅÙ¢x„üS$Gqe(¦VDlN”Ê|ÄÌL OŽ9ŠóG‘%ý•}(nœJöj£87¯œô‡ù§RÕ›ŽC&ÉF0phsç"ݱRL-–mXWo~Ê¿¢Ø«œùÅÅC xˆ—Nª(âƒ?ûñßT(²šųB±ìÎ~"ÄQ•AOa%ªaá’1Gñ$(ÞØ/é/•:"éOõ¬ Ö$‰6ô¢(¢Å¥£66`Uô%ý•ù§ÒwHô²¦mÅ¡¸=Jþ©J ¢HQ[v2 -»Ò'­Ev:Gqn(nN* ؇£©Ôe¢¨*°£87«±ù§£“þÊî'…³ŠƒÊOê2Åã£xyà—Nöj£„Šù4EVm¨_Gqn(í¥“ ›(ƒ™¡(J rèb;Å9£¸þÒIt„MúÚQt7xé$CQrEÞI1f|$ë¡mGñÈ(^Í>é#µê—Ñ(2ªÅs@qÿ—NŽCѦTž?rg‹bïêÙ#¿t%dŽcÚØH rè²ëtŒb\=[ŽE]Pjª¥Æk†n°šÅ3A±‚œ‚*ZµSˆe»P§Eò2YikÃ$½#°qç€âÕ±’þŠQù§†‘`¦‹Q/ÀQ<Šû'ýEÞ"~tßJ1Ë]ŠÇÉ?•ÇVZWùé­ÓQœ!ŠÕQòO÷Q02Gq}(N’Z˜O¢%Eèî”âa=ƒP¬ºó¢êáòSGqBãõ(žü¥“ ÕTñt—‚âVŒ\rPÌÏ?E=<ÜK'Ù!Ž¢£H(>=ÀK'©X +$V8UÞQ<+OøÒIôlfÈÆcÅ¢¸’_:¹Ù;ÿ”i#úˈȒ(I²I=íqŠâÙ¿t²E[Gê(Î Å­™ôw90ÿ4•ôg¸žued7Ö€ …W-à(. Å¡IØcd7ß`‰Lz³ìC1eŽâ:PÜL‘*Í€¡( 0Çõ2Ù‹bêD©Žâ1Q¼œú¥“Ñ&É?E Ë´<Ò~Gq¡(â|ÎáòO íic^ÞÅJ{”ã(ΠŃæŸ0d6ˆ’Ÿ:ŠŽb +Åp+Æ埢6Ú(¦¢¶ñ‘¬ÐQ\%ŠS埢rüŒ@QîWwƒâÕòO ˜K”®a(J–òQTc´£¸&÷Ï?-þÊ.{ $òyÅ…¢˜Z±9Qþ)s;Qê(žŠCóO7Ã_:É€¤Î$CŽ¼–Cîqg‚âÕDIÕáóOÉFÀÚé(®ÅeåŸâGq¶(®&ÿT*­£xn(2=¬`ö[æŸícÑ2~G¦>UQ”:ŠKG1lÏ-ÿTB’ÒXGqþ(ÊâÉóOYµê§ø'9TpׄâÜòOea¶£x¶("ÿ´Œª1ÿ¢ëY¶ÇQ\%Š'Ì?-5Ò$ Žâ‚PÜN—ºÉxé$yMõCE%-…vç†âuåŸJ,S(bGq(nžʬE)’*]l§£xrç™*…I“õ;ŠËEq3ïüSµžÔ~Gq‰(^Î,ÿ´S‹ŽâêQ\Mþ©*ªŽâBQ\Dþ©JNj? Q4®ÁQ\ŠóÌ?5Pd0৽gqç†â„ù§Ò/Gqé(^­:ÿ”>RrÏÅã矲Å5¡h¬žmþ©=rqWŒâòO™§h'CÅæÁ ‹Ïdõ;Š‡CñêlòOÕ¾åéRÅy¢8ÃüSUiÕUSåÅ£¡8aþ)Ý·Í òOS–¢à(®Ū»»‚Ùï“䟦*ĪÅ%¢(“þf•Ê´ñfeÅ™ (»‹™(ž<ÿTeRº¸Lî(®Åù䟦D+éEQ²ç(®ÅæŸJ0òQLÕã(.ÅÓæŸ:ŠkBqÓ.ä^bþ©¤NÝé(žÅkÉ?U©V©Sw:ŠóGq;]Ò†iâ‡ÝÕ‰(2²K‹!/M+…ü:Š«G±:âûO¡Xjb›:ÐQœŠ›!ù§xo'Ï?eûG£ˆ´Û:Šs@ñrêüSöš|‘‰Áƒ]*­Žâ"P\\þ©¡~²pé(.ÅõåŸö~¤Âã(.ÅæŸÚ°Ùæ(. ÅYåŸfFùLs@ãhç“ŠfwGñŠäî¡(ÁÝQ<&Š‡x養">ø³ÿå£(mOÙ±ŽârQDÇm¦Î?UK²ÆŸƒPd´8Šs@1•JÆ?óQ”½AæÃÃrØ0qO‚¢ì.f¢8ÛüÓL6ŒCÅ¡˜™ôG.¨jØT(3¥£¸pO•ªbfè(ÎÅí¤?†â´ù§è5ªÐÆ/…YNGqV(nÒé-Fþi(püüSD´³œ2ŽâÑP¼1ûüÓ¢ûOÂ&«*´Ebù(¢9ŠóAq;üS¢KFvU`S(ª§0ÌQœ9Š›)^:ɼ¤ +O>Š©c s—ˆbó‡‡È?MùÚv· ž£¸P/ç—ª:=UÞQ\Š{&ý(]Kic/'ãPt +GqÑ(nDÒ¢È&D#`3i UhƒhGñ%Ò)¢Ræ(®Åã¿tR:ÝQ\ Š½«ggþÒIGñ¬PŒ«g˱(2ZTmd@R¯²EV ETÊl±sk”wƒb9U:ÿ´j§Ëv¡N/ŠÒÝh*!Ìé™Dæ(Å«c%ý£òO ·ªez‰Ê7Gñä(îŸôy‹øÑm,Å,w (ŽÈ?Mq;:"Ûæ(.E¦‡Õ¤ù§dÕ¨ô<<ç,©ýŽâlQœ$ÿ´0ŸDK–z£³Š“]³£8ãå(Îö¥“½@æ h‹:Š‡Cq+F.9(æ矢îÿÒI<|¨T“çuW€âÓ£¿tÒ†-E)³Žâ +P<æK'i¿…ÅE£¸’_:¹Ù;ÿ´H<†®Æ&ý©ÌeÅc¢xcö/tÅËŒ¤¿Ëù§©¤?µë˜‚¤Å3ª9Š‹CqhÒö™/ ÉTRNO #ãÁ(ã(ÎÅÍù§ÒT(VCòO‹vŽ±è™{­žô—YØQ\Ša{†ù§6™ùÜ:Š'GQvUg˜šÃ’ŠzGq¡(Î0ÿ´ÈδrÏ +Å埖À¶DËQt™Ê<[æ¡Ø[ÌQœ3ŠÛéòO7/$'ªÎª†'ý¥þTiwO‚âõ柪Û*Š¬€£8O·‹Ê?E¿;Šg…âÉóOÙþŠ¬NÜã(.ÅÍlòOUï—ie%ŽâQ¼œqþ©ú©Ä[å™Õ“̸*Gñh(.(ÿ”vRm²ci3æ(.ť䟲È.! +X~IGqV(3ÿ‹Ù(æ0æ(®Å9äŸæ€g0V Y{æ(NKãhç–š|{³u8U£8g瓪"”BÎQœ'ŠÆêÙ埪–BnP%Žâ¬Pœ[þi¦9Š3Dñjuù§ƒ(R÷;Š‹Fq)ù§6lŽâ¬Pœ0ÿ”nãæ0ù§*«9ü8Šg‚b•ôWMšŠ¦*qׄ¢Lú;yþ©„ÄQ\4Š²»˜‰âÜòOKA2 úŽâ*Q(VcóOËnÔÎá¡aTÑ’1ÚQ\"Š›!ù§x«÷É?ÍÁ£^ÅåÔ(ætðòÅ=Q¼œ:ÿ”=€&×~gð;"Vå( œ矦;Sº*w:ŠKGq†ù§Ì•½ä”Žâ9¡8aþ©R¥nOñzñSdõ—ŽâéP™ë{ÊGq¨9ŠS¡xuà¤?Ì?•’¨ºFzÉd̤bUÉòLoÅÕ£H÷³S‹eÖU×HW2ÿ"ºì#†¢Š¥£8ñÒIE|ð—ÿøÝšŠÎ…•¨µ9Šg…"2³9Xþ©ú©ºÌ8ŠKG1•JÆ?óQÄÞ Ò˜âM凎êE‘!1EÙƒM}„;KG1EÙ]ÌDñ$ù§t¬JÖƒb>ŽâlQÌLú#TSäŸVâÙ+? Š rGq("ÿ”ùK0rIß^vgˆâvHÒCñ˜ù§è}‰¢$ÄQ\Š›tz‹‘ +쟪©¢(َǪÝ(ÊîbŠù/¤£ô'=•ƒ¢,Oúœ¢Î6Gq}(ÊüS#é/G1øbµ¬¼Á›£xž(ŽKúKùKj¢(÷#NŽâ +PÜŽÊ?U“þ*mJ‡1@ÞT½¦¢(Ùv—…âý’þRù§&ý¥¼¦P +°3Q´÷8ŠóG1ll ÁªèKúËAQzL9ºEI‹£¸,·GÉ?e®aH©ÌôB%?uWƒâætù§hªª(Êèß{”£¸\+˜?”::é/§£¸2/üÒÉ^m´wÿ”¼l8.u ’CÇ2Gqe(N’Ê€$SQ”ªâÙkŽâ QL­ˆØ1ÿTI¡\2 kèÌFÎQ\ŠCóO7“¾t’•ÏÉQœ'ŠW%ýU{矲*}Ê] IoqÏÅ óO¥ÖM‹¢mŽâ|PU1P±!t×âIòO%0‰™ÁU/Š²ZGqq(N•ŠŠ"3GñEŽâù ¸™Gþ©¬©N¹Ô~Gq(^Nšÿz(Š²BGq(Î9ÿ”ñ‰bj¿£¸ ”Š‡KÈUvׇâòOS{$-T¡q £¸VO›*ÍF±÷{¿£89£Qoì#•dGqM("ÿÔR’BÑ(ã(žÅ«æŸ"•–J`£h”qWâÑòOS¼9Š‹CÑX={ÌüSreÕ] aËcŠ¨ÒQ\)ŠGË?•îf(’g§E±êÎ9Š‡Cñjùù§)H¦B‘]ª£8sšªþYiÃ"FZ)xN‘æ(Îť䟪á»Ì`’qå(®Å*/ÓjŸüÓ +:ŠE …¢ñ©£¸eÒßIòOE½(2®R(‡8ŠGCQv3Q<~þ):}ZÙ½(ª×à(žÅ#矒êJDÕ’Ž¢£H(Nž*fØП¬~,ÚvWŒâèüS µ†R˜¬Í@ÑØï(ÎÅM»ûhù§Èëû2è(.Å É?eœÕª¡(™$~Rzî(ÅítI¦ Eô» +CÑ`¯w,ã(:ŠÕ!óO¥œ¦ÌQ\Š›!ù§è‘ù§EŽâÙ¢xyºüS•+†b© ($0Ò ÕÞ¦£xBg˜j€¤R¦AuŠâñóO%?L [QÕOe ŽâšPÿ´—ÉŒ¬ÖQ\4Š©üÓP2þ™"YF£"ú]2` È„ÑQœ'Š²»˜‰â1óOYt–®·ÍQ\1Š™Iä¬*;ÿ”‰„°åvŠªö:Š«GQÎr>E %Š)êR("oŽâÒQÜIúc(î™Ê€ÄCH¶*Ê:Õ@ï(ÎÅM:½ÅÈ? &Ì?% €¢ŒþŽâP¼±äüS¬„Jʘ˪ÍA‘ËQœŠÛÓåŸÚŽ–("™(ªÅÅ¡¸™â¥“ŒŠ{¢(Å6EãÅù£XÁüafÒŸjéè +b«"VˆgŸ+uvGq>(^=ÿ4E î—ÁW%ÎQ\.Š{&ý(]cE:»ú‘jŽâ +P܈¤?DQº¸èÎl£ã˜ lzQı #ÇQ\ŠvÒ=û“..úü¥PD©pŠ½òè(Î&A1•Þ²üSæÄ2¡‡èJ¬ŠJ™£è(2«Qù§z¼Ò 9¤:Y äkGqÅ(ÿ¥“!“DD‘¡Å +;Š‹F1µ8gBÑ_eB% Å *3'Gñ„6!ŠO3^:‰(nòòO%<Òé*¨½DåïWas§5v=£Q¬²“þž¤óO'Oú³‰Ê߯s§µã£¸É~éd)´Q•d,õ8ÂR}vvGqœÙ("ÿTFgæ ©6j™üùæ(Ôâ‘_:©FUu§£¸b”ôÇh4€”(’s –ò©Sw:Š‡°Š²»˜ƒbþK'©Ç˜™ô‡E۪ȈÊ•ÈÙáŽâ!ìÈ(ÊüS#éÏÐFKy8+€§°±toGFqÚ¤?EYOä(®Åí¨üS5é¯Ò¦t˜sÕxM4Øs—‹âý’þRù§'Iú#h£x>(† $X}I9(ª^– L‚boOÒQ<¨ Bq{”üSâÇÒø™AµõÐQ<­íâæˆù§*'XÌFQ­M=ÖQ<¾Å +æ3“þÐS9@2G§x£zŵ¢x9ƒ—N¬¢fª«Sé(ØF x’—N2‘d~´QT9tÏÅÍ^:YÁ3T¿”ö†{GñTv8eÒßfÈK'q£ê:9¤S§X„¢,é(Ú&Añø/”’(ëwE†âè¤?t:’ö BÑþÔQ<­e¢Ø»zö˜/”~gŸö’f”)Š© ß[î(öÚ„(ÆÕ³åXÑeeBËlUÂS(J}ËG±7ècÂQ4l*+È)¨Òù§U;…X¶ uT HI ÃÉ.ÆÈÔ±LKøâæ(f»¤IPìMú+†çŸÚŽVqb‡«(Ê._é(žÈl÷Oú‹¼Eüè>—b–»‡&ý©‚¹ŠòÀÒQ<¼E¦‡Ì~OõÒIª÷ØÌ°jÙvê,ŽâT¶'Š©—NN˜j™’5ª™Žrb¼þA(NûÒÉ¢û$ZBBG©HŒF‘ubS‡ïƒ"áç(FK¡¸#—ñÒI5XK’Dz³ Þ…6™£^9¢ˆÿÒ ÆŸ|!‹v%+èªä)T!•_":6>Ë‹"㘥Å7ÞxÃQÜvWÏÚ¯ÌÀÅ98~)`À‚Ï£‰«Ôš1éh ¤ +Û¶9Lc×Yj#—"ÝW$$SûEpaQ»Ô´däDª"ª +•¤NYéhø½(º}H•L:){ôLX&Ü:œuÌG1:nÝ(f.Α+"ª¾.l(Í~½$%}È‚dë*RÄö¨§¨Ä°ÿUÕR2Éê”ÙEw¡XµÅpÃ×âÕaç¡ñ ö™î1…,EtFT¨PLT>‰I”,oȯÊj!æmðbŠ%äXíÌö™£x5jqNê14=ûË™å–Ë¥BJÞ)>KMÄT“Úˆ'M•AÀÔó"™e‘ ²ý^lÚt?B‘ÆÚˆb¸Ûˆbœß^=Šû<†.šYî@&›å¦^b zHî~ܘ—«ÄŒbÜß«oj 5Ê«±8µ¿aZ•Jù)팷ÎF1®› }uù¨ÅF‘uÉNM_ǦEQå&åÔ"ÆèfrU)Œ¸Ç.¦THž—&)¥b•˜eøaýl?!‡ÚH­¦Ä«™M€(ªOýÎEõK³Ü˜÷Gó9e7.ãpXâ‡X"ªRI$Šˆ£q*»Ò§c–âQtóûJ˜TdÝ•²ùյͱ² –…bÎcè¡S‹UzÍ€¤ðÍx¼©´0!U·%¥*«²Öƒ—ÇF,#leWqj‹­…À%Ü Åpÿ×âQ?m—3µXd ¢1:ËSl ’@[6{YU9dûÙסèŽå1:³Úh~;|G¬…Àl{YÎ9 ¸ÏþØ,·áB¿ù‰ýv6raÝE6ŽPc´„“œ®êÕ ÉX—@VÎ"õãöµ×*„<}Žß_œTħ~öZˆ}–p/ÅÞ©ÅJ›Ï‰¡™ ¢‘Š'ÚÛÖd¤–P±z02•t˱†¬‰Re(»‹Xã2[ü€õPÑ~ÔBôö¢úù6Š§FÛþ(öÎçÄA4\"{lJGí.â6s4Q*±,DOO•»B o‘Uy8þ[uÇݲ¶¿EÔÆÆ5ñw!2ç·×âÕðYîÔ|NÕDË‘ {úL=%5 +—Ý¡®!eL©TnU“háÐI-†ªEŸÝÎalÛϺ(ÆLCç·ñô¢—pGëEqŸùDÝ‘K%¦2Šn,µŠÎÈn¨å‰ v +IµDQ«¥=!mc^’>³™6¿-µ[hù(Ž˜ÏÁ‘K)ž¹` fËË„<2aTy3úŠ¥ÁÆN‰(^†*‰$ƒ“×(Ú˜‡ÏSÍoK_ÏÍlùœËæçgSƒh¹¨Ï\pJü+ctJYŒ#ZèÓT ï5¦œl§ìˆ¦ä”EjÄ’-ÅIYäLÎZ'£¥F.*Š2F#Š•6r)ÓÝEŒÑä;êV±ÐÉ„}]vÕ’üÎè•Ñ\kÃY +áUfgA,ÚÅTG15fY÷¤b´ŠÛësJmäbwÉA8ï-ŒI¥ÔCI—UuR9é#Y!+“’Yüà—EΦÝÜ +êLÆ«RÇ,Žb/Š©w¸¤º‹øU„RHV “)=Dקh”x”iÝ“dIüˣ¤¼Ó¿U»p¢3m”]Åù©Ãç5ÍoG“WÈPÌDÛÝEÊþKÅhƒC–L¸˜<–b"ZöBe|§jÙW©Ãëg@²þa©EgZ¦˜ê(²åaa? Ÿ#ŠqÌ’9©¸i½M<þëí.ª1Z2V +LA¨vä7;˜ª†•3P“*t*ä$€qF±LtiÌ"W*ª39‹CñjÔ zDwQѬI%¨ã„2b mÌ"c:Æ$Q=Jêmê#V› +$žšô_ŽËÑQÌŸÉYÐü6Y~wQDçtcÈÆ'€4{Fò(µ£èvþ”à RIådŸ2ñd…Ù§)±¥ ”âQ«6ŸEQÄŽâŠÇ,Ñ&¹Èã*²;x¡'BH? *…Qõ¾Ü`ø©ªÉ-ýÉøLƱZ +ÊtO0:cEí(–cÇ,ËEñjŠîboŒ.Äॄ䦻4…¨`éU ªè1Å“Ê)Ù6*/…6bc™$±±í¸`»„¥Ý2:³ÅÛØQ\Ó˜%Z/Š9ÝÅTŒŽ¿0Fãè(Œ4a[ +a$¯¡B¨H†Bú!¬`À‚JHåñÛ¡ÒŽUI™è!¨øuc’H¥;§¦q¨£¨Jâ9£8:Fg +#I"C±è®1@ŠnÌeÂ…ª(UŽ‰[Ùíï±ò2Fcs$ŠewÑMãSP.»Ú^ŒŠÎë>GÛ§»øèÑ#ö0ZÑlð’Fšcľ[ï‡4âziB]ª–䣳QXªn ,e˜fíÀ%,1"Óš‡Þènu¸á«ì(FëE±·»˜ŠÑ4×m #S­¢ûö1  +n6Œ4V† …_v^Vžq(ÕUJe¼¶U±Â$QÎl'³£¸t¯ÆvÕ)Œül鉪i(†ØIc½;5|ã~ur•ª¶eÚ,⇡ù ¼}²Wó£ój&·Éöì.Ú1:Giî—` ­"‰|2c’(ÿUbu²úe—7-”Á² ÖšãÖK”’HÛjt^wGñÊDqŸ)ŒOÃ0M +‰{H*Q2%±Ð"/‹ãU_wÏÈôóIûN.üº¡Ò%=i_‘#‰ƒ¢³ÚQT;sÑ]”1ÿ³Wq¾!yÜþ Íi3):®!zŸþÅJJaLEÙLé‚«ÖP*éBNæ‹aͽ’XfDçüŽâQ¼Ú#F÷ +#Í1ÝyJ. G„(V2.K¤!‰Ew‡„RÙé +a f5¶¥hß$7TI”–ÔØyeÑ9Ú 1Fƒ—aŒ¡*‹²­e¦KŒ¥ª»&ã©Ê+À8Äé¤(ªLñX8ÆQh¶%Ñ°ØÑy}(ŽˆÑ™Â¾0™¿ä6PÁˆ€AX´óxe7¦¢¯(Q¤¨P¶£'UqJñ“²$‰ññJJqUظè,ÝzjÊrmtŒ–ƒ[Õ0-½&ÉŒåYï+V^hV>¯)ºAü¦(J[®†¡²ÚRìᱚQÃÍ‘’(öm!ëÙŽÎ í(F£ó…1z™…iö„5ŠŒAM…Ø «DG±ìN¡‘J˜e˜Ž—Á4–æšT=d2ˆòš’HçA’¸¦è-'FÆ7Þx#ê†iÃ^Y$%yd ‘¦¡ +0 Ð(­e··‰Ví™è¢}=Á!}„¡9>q.ÄÀYJb%,«ŒÎWŠWSc|Ç Ó‘1ÖiTiŒ¿$ƒp’<Ò6’óX¬x,`&Ù@1V^ÀZ/¶¶‚•lR ¥6"‡4T‰LÆFáh%¾ÂO8£$ÏW£(n»ƒ—La¤‡/j˜¦NcŠF6uÌäQNzÝQ3…KL+0ô©pc'íO +T08Â3býñ‡Â$‡¤eÛE ø•Úh¥ÔÎ{F祣Ø£3…Q Ó‘Õè;ÊÀB㟛ö7yªîSݸŸ‘ªXµ©vÕÀ¾bJ©BvRCÚƹDä†*¬‹(G+¶$öX¤+OMÖ`£S˜ +ÓØiLшÞ'H¢ìTOÚ7q0U¤‡ÚÌÊMŸ¢üâIi¶S^ I\@×Ãþ¡Êa|µ®Áá¶K<+I¼ê‹Ñ9Âh„é^iL Ä`ý¸]Q&Œ;“X’b+ +#ÓCúå±j†ðDàH‰eÏøã±¼¸‡8Œ»ˆ‘Ãøs²‘C#4Ÿ•$FËFu(Maº£iIcB2i†'zŠ‚uD7$Ãï1<ø#ù*`Ÿ!‰TJî“nR¶ +!‰!u£>Çë¢2YÑx¼2tÀ²2¯ò„q+Æ/a浑fxŠv§j&ã¬Q‘Iø1&I ™ôÉ1 SEÂoÓæë1ËöáBˆbHÃ8MXæp˜šUI\St&!ŒF˜fC›Æª}ƒÁ:’ ¬`‚™$ +2G>U‹—]JÙo$>éÔa|1©_ÙNÚP_±—ÃœÐ|V’mOaTôM#ÍðD1XÓž’I¶Á¡Jtwii#þIˆÒ0$îDãGQ CO˜8¤yl›Ãx3Có9Hb´|aÌ Ó’FµßˆbÏ2vÆIÄ’éá¦5šÙ°ñ‹F˜!„ñ\!Ep&†˜ÇNq¨v÷‘ģȄ13LKS£˜”<¦€D&Q'é)p¼Zš+§qÐ(@£6Æ©ÎÈX85É ò¦BÊÄ _®M÷yŠÚ?Ìäð %1Ú>Â8”FUcOL2òƘdRI<äÓ°^dñ# D¤>!ƒPCù$‹Î›v0BXʈüZŸ±`ãÄ/ˆ³…6„$†x¾ìŽ°q4ÒÍd4â v™<¦€L1É°Œï¤Æ#Ù·5ceØø:Öê$\Q3! ‡3)(ãð|B3Zo˜Þ¦;*©`mi0c7aü®FçÃÈŽjùÆH#ƒ dAYr(û‡© s†’-GUÕH-ƒ5“ǯ6“ K"3'.ašÔð“æC(ÅÐ9a“И’ÇXàÑ£G) ã»—IÂ’ÈŒp2ŒÔ±ª87HøI3!TÅp‡Û³ ÍhCi”£UYï‘I!»—IÂÉÜ4S”d¯§ ‹Ñ±Ta85â' !CÉ!ö%‡†/ÎÄÔæßÆíÞ#RŠ¤d’°D2ƒÅÂO‡X<„j j_}õUÄOhCXA^€-†ÎaŽe +#£Që”<ª@2‘”L–H&ÂÉ YM•!ÝCöÊvz0E  a¯:‡ƒlZs€¼lGÙ)4È”|ÚÆŒµÑeйRÆß3 ÌÃ|ÏÅ«±4’ú9LFÛtíì{`62I]/~Hà¥èJGˆ¡s˜²Ô=Q4hÌ’DRe±dd¦µ{?ŠÂ½28Bçp¨ ¢q U‘D&–ŒLfÔÛd¤!lÒzñ3dЀPÞçpœ ¥qªH2dX^¶O·§2V9ÚàUÙ2È ÜS Ef½7ª—FÈ”HÚXªpJ“çJ™¬| ˜"pOÃ6‚Æq@J”XF2U8GOâgèßäV—¥ +§4¬¿·°OömÕ–ª7Ä9œÄÆѨº)‡I‰¥çþ¦^p*î“IÜBç0ßrîäP s˜4È”ÖKZêÂR畇¨ÚÖ{÷NíÛEZÎ-Íq}/“Û¼q‡Z¡a9uªø¥ÜBçp˼·C´±Ì‡s¨×iàgèÓzïó 3d÷2Ù‹å!ÌV¿LóoŽÛT–sÃodˆd4€CÀ™^~цÞ·É-óþç3-‡ƒZæuŽ» n‡³|_ eò8p½˜Ñ­v;Ž rÍh&‡â:Uå{6Óí$6ÔY诩șÄ&i‘ÛÉm„ûNNæ´ï67ÛÇ­ªs§¥î@é6gÛßÝû{×à6+›‰cÚ©ožÛ¡ìÔdeÙ©o’ÛiìÔÜ9xn–9unnnnnnnnnnnnnnnnnnnnnnçizFàææææææææææææææææÆíçN}ÛÏ ;õío²M+hÕ¨Å6.§QËkÛ€V-©mƒ›µˆ¦jÕü›¦^ñÿ¦Ø²š–Ù(£q§nnƒZ•hܩ۠؈V©m;u;˜Y­úyÅŒ¦º)K¶Jk”Ò¸™6-Õ,«U¼msl™Þ,ºø£™Ò¶ÙµLk–Ù(Þ¸y¶LskÕÿ.Œ·Miڌڥ¶J6Š5®Û´Ù´L´«Ó¬]þa¶%œ6“v¡»°U×ù…ÆxãdÓfÐ2Ý]Ð,lQ× m×M›KËt +©Yبÿ Û¦6íÄ-K»«mV§I¿­ÓºNÓ”–¶]J³°U¿¨ZÛ¸¶iÝ–Òe©v]7«mÕ/)Ö6NiÚ‰[¦´ëºY;gµ­ú·ÂÚÆQÓ’-;m»ZwÅïÖµ³ÚVý;fmãXÓfÐ2Ù.t9«mÔ3Ìvƒ¦uZvº†¥ÚÕ~·¢³®õï™Å¶Aӧ͠eÚ× (¤fµúÌÚ¶µMÛ9-¶ŒÃ8vµß­Ø¬]£þc´_þå_ÞmµmÛ5mç4Þ²£»Lã¾]fÅFýrcÿW´f»m[lÚÎi–Âe¼]í×k÷íÂf5­jÚóŸ®-¶®iÛuÓÔ–×eJ»ÃN³êVÕmù¿ûÏÿ9þ¿mÜ®i¼e'r™Õ®»ºÍªì¿Dk¶›ÆíšÖ8-Õ²#º¬·]Á]M³®[U·çW®-6šœÖàH-k`dúq¼†%ÚݛնêW~åÿ©íW£Õ›MëBÛš¦E§]·LuÙiÛEî +ÖÍj[õ«¿úkýú¯ÿzóÿ¦y¡m±iµÓ e-ŒGvYº]û„u³ÚVýú¯ÿXӾж]Ój§Õ8Æ–í`<¶Ëð Ö _; kwÕëfµ­úÍßü¯d¿ù›¿Y7®mZã´Ø²  cWß®Ú_ôõŠîª)lšZõ[¿õ[Ïî,lÖk›¶£‘`<²ËìvÕ_¯»êïVhVðUhUݦÿì· uãÚ¦íœÖ´ì™gZ;.;|ÃX»~ÚõKÔ®»vͪ[U7é¿ûÚÂÿëÆ…¶5MÛ9­mYý5K¹ìð ëi×®Y¿Ö4+øê·ë&ýn°ß«-ü¿n]ݶдӠei—¥] m»žé¶+6«öÕïÔMúÁ~¿¶ðÿкÐ6jšhYÇeG`±§]ÿþº]×ͪ}õ{u“þ Ø›j ÿ­«Ûš†-£†ýÛ#»LúëvE9$wÅfÕ¾úýºIø‡øG…кà¸]ÓÚ–é.;BÃíúj`ظ«iVÓªºMo~ósÑÞüæ7‡Ö5MÛ9­iY„±UÆË‹'n¹«iÖ›êF=÷Ü[ÞrsgoyË[BëbÓ‚ÓÚ–5_³¤Ëø%K¶ë»í +¶îŠÍzsݨ[·n“ݺZ·kZclYý5Ck—ƒEEèµvE ƒ»j +wͺuçn°{ÁÂÿîÜ ‹M NkZ¾gákVÈ.;‹Bv ÿûïÔ6ÍjZuïÞýû¢Ý¿_·îNÓ´à´€clY„±qÙ.–‹lX^»‚l4_¯úÛ(ŒÍ +­ +ºxì­o}kø÷â"´î^Ý´à´ºeõ÷ì·þk#º¬Ëâa¦G;þjúЮÿú[5†ÿã÷…»f=­zë[ßö¶·G{ÛÛBó.ꦧcËê¯Y£ŒÁeÇcQÄ]»¢Ãb»~m×®úÛõGo~ËͦY¡U¡Mïxg°w½«þ÷ïxûÛš¦Ý½pŒ>‹0r—QŒ>pÔÀÌÚä°þzÕß®Ú]±YoÇ;Þù®w¿û=ÑÞýîw¿ë±i÷ïݹ[VÍŒ;—]7ìÀ_²þFí +²¾^oúÃÆ]÷î_<|ÛÛëV½ç½ï}ßûÞ÷þ÷¿?üû¾÷¾g×´‹uËÂ÷ì‚€ü6¹,ÈÇq¾dIáÐÛ¾^Ã[wîÞP{ë¡U¡IøÀwöк÷ÖM£–ýÑ›þ †qç2Îbû%›¼aý‚xÝ® ‡õ×ë¹›·î +ßú¶]³>ðÁ}øÃiìÃþЇê¶¯½ãío}Z´ñjw.ë²(¾d“·ëç ¡oâµëßüÜÍúÛ(|ç»ÞóÞ¦UùèG?ö±çŸþcÁ>ú‘×M{ï{Þõη7>»õ–Fr²(¿d‡k׿émW­÷kw5ͪ[õ±ç?þñOììã¡u M NkZvÿn#¹lÇ"û’M®–з¹i×o@»†áÛõÎw¿÷}øà‡?Zõ‰O~òSŸútcŸúä'ë¶}äÃü@À1¶ìÚeu÷ƒ±x õ0„ÞlWí®÷½¿iÖ'>ù©O¿ðÂg>óÙÚ>ó™BÛ>ññä‡BËÞõŽ·5_3rÙoüZÔÅC«‡-ô±#úóu»þÛu».vîúPlÖ Ÿùì‹/~îsŸûüçÃ?/†Æ½šœÖ¶¬†ñÚe]Q=&lXŸÐïÚõkuƒÚu?¶+¸ë£Ïü“Ÿ~á3/†&½ôÒ7öÒKŸmû̧?œÖ´¬†‘\Öañ€êÑ+ˆJ»jÙx{À°v×Çko½ø¹—þø _øâÿ¤±/~á üÒç^¬Ö´ì½ï~g€qç2b1~Étõ8D»„ Ö¬§´íjä°þzÕîúÄ®Y_ü“G¾ô¥/×ö¥/= +mûãÏ.8-´ìÃ|ÿ{ßõŽÖeÄb÷K6yÃ2± ̬]A6j ƒ»>Ý6ëË_þÊË/¿üÊ+¯¼üòW¾üåдÆiŸþäóýðkk—½åÍ-‹»/ÙÁfâ®Ãí +r¾^5†Ÿzá³M³¾ZõÊ«_öꫯ„¶=ú“/¼ôù?ó©O<ÿÑctÙÍç®Y _²6,-ˆ(ôØ®[»v…¯Wá‹ŸošU·êk——_oìòk_ Mûò—‚Ó>ÿÙ>õ‰}¤vY-Œ;Û/YG'm˜-ˆ×¬îpüÎïuÛ¾^×¾Ð4+´êëßøæ7¿UÛ7¿ùжW_ NûâKŸûì ŸüøÎeîEÛ/Èâ®a??QÃúz¾Ðïs½)êaÛ®O~:`øÅGM³B«¾õí×^Û{íµo+4ík_ N{ô…—>÷™O·.«Y ºØ~É‚z´²ˆz?A ëÄëÀÜ´ëšøÚõ¾|ø£ÿä Ÿ ~é+M³B«6‹¢(Ão^ûö7¿œöò—þä Ÿ±uÙÛ#‹ñKÖ¨G”E¦÷û7,%ˆBèÛv=‡íª¿^×_mšZUVՓƪ²x¼ùö·‚Ó^ùÊ—¾øÇŸûltÙ»‹Aë/ÙN=‚,Dï31æn»j9 _¯€áW/›f•Õ“§¯¿þÚ^úôIU<NûúW_©aŒ.{ÃbˆÑoúýzJ +}W†þaóýªÛd㋆_ÿfÓ¬§¯ç»ßûÞ÷ƒ}ï{ß m«Êà´o\~õå/ÿItÙ‡#‹µà7êÑÊâô 3Qú0® ý^jW/}%`ø­×—Ož†V}ÿüà? ÿ½ñÆ÷CÓ‚Ó6ßúÆ×^ýJPÆà²ç[o=êQËâÔ ëéùþÇVk¡oXh׃ÐzoóýúÌç‚l¼üjÀpST¡Y¡U?üÑþ´±ýðo|ï»Ái_ûVøšÕ.û̧®Y|K£ײ8qÃ2{¾;AlÚu÷Aè÷Ö:ß´+ÈÆW/¿ùíà®×C³~ø£?ýñO~Ò¼ù'?þqhÚ÷¿÷§åãoó2(ã?¿cq×°¨Q§ŽÐ9=ßÿr-ˆMGêÁÃЮ÷·í +²ñõo¾ö8¸ë{¡Y?þÉöÏþüÏÿü/þ"üógÛŸüé‚Ó^RÖ06.kXÜ}Éjõhe±ÖûC4Ìîù^ }˜ëv½çº]A6¾õZQwý 4ëÏþü/þò/ÿª±¿ü‹Ð´ÿéßøîëUñZpÙW}áó5‹áKö‡$‹“7,Wèkáˆ9t¤ÞþNlWMñäõà®? ÍúË¿úë¿ù›¿­íoþú¯CÓ‚Ó~ðýcPƯ_ +,†/Y«µ,¤a鞯&ˆ1€=|[·]A6Ê'ßù^p׶nÖßþÝßýô§ÿ÷?ýéOÿîoÿæ¯þòÏ·?þѾ÷'Ë‹/¾¾dA=ZYŒz¿‹Ð“5,CcÏ—„¾Ìï ãÊ<ÿɶ]A6ž~÷ûµ»þ¢nÖOÿþþ¿ýÏ¿MûëºeƧÕæ[_ÿê˾ð¹Ï|òùkõˆzOzª†õ ¢&ôM‡£n× /¶íªž~÷Öî +Í +­ú‡üÇú§úÇü‡ºiMËjƒË‚|Ôºø©7êÑê}È&lØ°ž/°¶]/}q×®ðõúу»þ&4ëþñŸþù_ûçþ§Ð´ºeö“—•›†Åð%õx“Ò°_˜ªaiAüOLëÖæ5íúRÛ®üè'ÜõÓЬþ—ÿõ¯ÿúÿû×ý_ÿòÏÿø¡eõÛ?ýá÷_¯ûë_ýJó%kÔ£mØoCÃþÝ$ ÐóÝTb íúħëvýÿí½w¼]Õuï›—Üܼ›<%y©÷¾Äɉb°Íñê—˜jÀ¢ƒé! BÑ›è!BE4Ñ‹@u Ñ;¢‰Ž1ÆvÊŸï÷s®¾öÙåìsÎÜþxÝkg{k½÷w1sŒßšk­± ×)§y6Âu1±®ºjæ,Ùf^5ãJí¢óÏ=ûL†Lr‘ƒlר?ÚLmÔ¬ãN³± ÖT¾©Ðk®Ý÷×ø„ëô³¦3\—k欫¯¹æÚk¯½æš«våå—^|áùç d'?¹ˆA†™Œê°0™¡» 6° V*߂Ѓkp’rs쫯¹vöu²Í¾hBvÁ¹ÓÏ<õ¤Ž=zòadTÑÛmè}&5ÕàÁÚĂЫ lÏ}ö×a)×ù"\3ˆuÝõ×Ï™sà sæ\4!C2"dÌE ²qB= ‹Ô{ ö-)“ò¾[`- bQèebÞÿ@p‘r]t Â5‹Xsn¸ñ&n7ÞxÃõ×lÆ—!dgŸqê‰ÇƒA&걋èý"]zÀTyß9X{‚ÈÊ7zNÌŽ×QÂu6¸.½á¨æν™Ûܹ7Ý0d3g dçM?ó4èâQ“&B=¶#ô`¾*=P,6jÈÚkYóB/¡'æqk®3Î>÷‚‹.½bƬkf_?çÆ›n¾yÞ|Ùæݬɮº!c.b)õø9õ~Ëd†VÅbƒ†¬]°ÆÂÑPS¡Ç†‚ãà‰GuŒÄëÜ .¾ô +¤áuÄš7Á-·Üz뭷ܲh ›}Í,„ìÂóÎ>ã²ÃV`?+ƒýï¿ëXCáHS¡—‚câ$Ô‡šë²+¯Bιqî¼ù€ºívn·ÝzË’]]qéEçCOÄLõ€,î¶ÀPz4ûÃŽÀ G*ˆ¥Ê‚¨&0“ŽD}Ý®™WϾþ†›nÖm·/¼C¶…@Ùs®»f¦ä"Ô#ÛjÀGcA¤%¥…^&0GN)r!\ €uÇwÞ%Ûw,$ÙܯŸ}õUÈÅs9È ”Eèýèm¥¦ê.XSá( ¢¶¤(ˆzN`ä:vÚÉÐyáºföœ.bÝu÷=÷,Z´èž{î¾ëN’Ý|CvÅ¥d˜É +`›'`ÿª²Á‚5`bRÑ« ìðÉä: ó—p]7‡ixÛBb-º÷Þûî»ïÞE‹„ì–ùÙµ³®¼ ƒ ê!²¨Á¶&˜;`=Ć‚(BÏ lòÑÇžpòig&\^ n½ýŽ»î^¨ûxàûïÚ=wÝq»„löÕ3.¿øüs¨»ÿ^ª¦’*X5deo °…£Þ +È*z5=õ„“Èu‘æš·áºûž{Aõàƒ=ôЃ>pÿ}B†ÝpÙ½W3ô ˜jȺ֬â( +â÷Š‚H¡ç6õø“N=s:ê áš;ix÷"`=ôÐÃ?òÈ#?ôÉî¾s!Bvãõ2ÈÎ= ²(Ùð€U…#/ˆýEA¤Ðs;þÄSϘ~^ŽëŽ»î¹X?òè£=öØ£íÁûï]ÄÍ»iÕCôž3´ûq7ÁZŽZAÜA ¢šÀPHM?ïÂK¯®ù·`x!\ë±Å‹üñÅ‹{ô’݃͟;gö¬—]DYäDÆÒCÀ¶ø±jȺÖh€…ƒbEUE¯'°3Î&×U Òð‡ˆõø²=.d܇ݶàf 2ªÇtNd˜¡u±¸ÍЕgæ¢pqt"ˆ"ô,¤.¼äŠ«®&×­·cx1\ÄZò$·%Kžxü±GFÈî¾óö[n¾ñºk®"ا`†FéQû¦øoƒk2ÀÊ‘Ä]µ ŠÐ³à¸äò«®ž=GqÝ ®G?¾äɧžzšÛSO’Œ!»ç®…·Î»‰êqÉœÈ0C£¦ê:X³VŽª ŠÐ³à¸|¸nšwËíwB6B¸žXòÔÓÏ<³Û3ÏdÞ¿`ó¡;çLÌÐ0´ÐÝk8ÀJ–¹(ˆz51Ϙ•rax=†p=ýÌÒeË–-Ç–‚lÉ‹}è{ïÆ £z@1‘ìPTÁ]« Xu€%'ò‘D='0p]›ã’p-]¶|ù +nË—/[ +²Ç{øÁûî¹óv¨‡€{Ö©'{ôÐ5`9“>'i…(‚(B‚cֵק\.~áZ¶|ÅÊ•«°­\¹bù²gž~ò‰Å<„\„zP/KÁÆ£oé*XE °’p”BåÌk¯¿ñfÅõ°p-]¶båªÕ«W¯ÁV B†\Ä »eÞ»¥‹Å®ƒ ˆå–Ž¬B„ ¢SÐsbׂ۠‡äZòÔ3K—¯XµzÍšµÜÖ¬Y½jÅò¥O?‰\ä Yä €8`õ‰˜`zfV^›òF!JÑ©@èeb×Âõ8¸®ÕkÖ>ûì:lÏ>»vÍê•+2ä"Ù·ÍØU—ì¤ã¦1‘`»u¬°B"æg0=3§•”j™A„ÐËĬ¸Ò\«V¯Õs²­Ùª•Ùè"Ôã6Uœ¡Y,X£D,°Ä¤ÏURZ!ôWÏfÁ®ûÒáZ÷ÜóÏ¿ð Ï?O2$ã2äâ£PÈâ\LdCV§¹DÌõÌj€‰I/G"™ b›ë»)®¥Ë‘†ÄzáEÙ€¶îY$ãrä"dQÀ®¸øü³OGßB°ýöÜm§íiw ¬°¼Ò«1`¹ŠC ñ"Ä›æi®ÅKž&×Úg‰õÒK/½üòK/í¹uk¶ƒ ê!zŸM¦7 ü7ñ¸ V +˜R55§‰˜ŸÁ’FO +‡*D-ˆ˜ÀÈõÈb¯µ׋€z…Ø^|þ¹g׬ZÁAöȃ÷Þ½`³QS¡¼*°zåÈ'"KÄd“VEU"¨E!ô˜Àî{0ãb¸^~åUÙ€öÒ Ï3ddE6KÀNî6X5`…©9IDU"êž9™™Çr8[ËSY!¢ò¡W\Ok ¹ˆõÚk¯¿þúk¯½öê+/#Ÿ]ƒAõ ح󆬰¼r¤‰H¥WgUd€ÉÌ|Èa“¥µT"; +ýƒ<öôpåšg™†Àzýõ7¸íU† ¹õxœzúF‹è[ØBXrd‰˜(½`zff &•+_úN¹^xáÖ›²í5„ ¹ˆAY|è~»NÀÎè6Xã€)åÐS³JD”RÉ – 0¶`l™!¨|!ˆäzò™e+W+®×€õÖ[o¿ýö[oMBöܳ«¡Ðû +ØatL‡¬0U#rjVŠÈDT%b6À83KÅAáP‚øèã ×K/# kýúõ‚†½ô"À K¶¥ªà+/MÁÆv ¬aÀtÍ‘›š%µÒëL0Uq(A$×ÓËV¬^«¸.P½ƒ hoIÈ‹k†‰,;猓O2°bÀtQŸ(‡jšÓDD‰¨g0™™µp(¡O¸0¼Þx“XïrÚÛ*dƒz<¹ø»iˆÁªÓE½V55KÉ¡Qzf`˜™Qq(á lŪµë¬÷¸mýÛÙ+dk‹`3ºV©k¦•#UD&¢(}:ÀXqháÀ®ç_|ùU ¯·‰õ¾l@{g=BöêË[‰ `w±oR°´J¬ ˜VNÍlšÓDæF2„ìlY6—nN—Áª™(ÒQ0UÔS9Ê'âL•ˆÉ£p¼ôÊkàâðB¸>þøn@ûpÀÖ¿EYLÀîËÀΰªtÔlËm¶ß!¯œšs‰¨…C¸¯ ‚õ)7IÈ8ȶ¥Ç(ïï°‚t$sX1`TŽÚD”l…Ì_Š XŸqš„LÔz¿vÀZ°B&fÒ>¬(‰:`å¸ÿüsE&¹øö›Ðû lal÷Aƒ5ÍDUt$’X ˜žš“Dä & \ï&\Ÿëí3† º˜‚-Gy?\`:ÿ<ËDU%ªê’X˜(‡žšE9ƒé†ùëîϿPc†\°×K`s†¬&*éPe=¤ƒ~@!`©rÌ»ua>_~U\3\_|ñ n$S¹øîz€a†NÁn¡¬À¦X5E:P%¢èØaÌaIÀÎLv;k_¥ˆë’öÁá¬/¿$’qØÀ ±B&R:¤¿d»Â9,0ºœÂPûŠ"J"Šp`| ×—j#sQd34ŠÅåÏ X®N,eb"è/UÑqh°Yèšo¹]”£ˆáb´~É d’‹#V—‰©t(­gÑAILÆ®Y+¦f”R’ˆáÔW_%dƒzp†°ê+e¢T™t°èàÆV˜(¢ 0⮯dC†AYÌ=<´`Å!–Ö‰œ7NªéW”t JLæ°Y$2`©rH"*á@¼¾úêWØH†UÁ?|ÿp€eCL׉J%Qu(é8Ò*EG"‰:`¬¥djF"ª–p CõÐ`/³Ó,‚Û=°ê˜bl1YØËì,“˜®:PþB:PÖ£J”9,0¥’ˆ)××ØH–€mÀ bñ…á+±¤°W™˜T“§(é`•¨æ°BÀt" +—Â4Œ2¥ÞW`ëö$Àî*°ZíÐCL‹½ÒÄtC¿"Ò!Z¢ƒsX°4®_cc̲+hG:ÄDì9;ç2 &úH´ží +«_%‰*`*‘‡ +K‘1¡à +Ö@;¤wþÞ÷U¨ggÑDf"ú-¨Qtˆ$f“D$Öo°‘,ö.Êûá«hG~Ë 1ÌÎÔÄ4¥š¢t”&\_ –!E=†¬aÝ‘i‡šÅPë!6‰I&Št°J”9LŒÊ&\¿ý­&ûJÀ>9°²vHst˜Ô‰œEs™(ÒÁê70æáo¹i°_*½ov0ÞXA;XOm«ËŽÃ(ö§ŸÍÙYe"&±%O+éxýM(0•ˆ¿ÕȆ¬¢ö©(æ´cs€eCŒ­ó¥WÎÂì\ÌD-iÀ$^ÿñõ¥²Q¬h‡šÅ0Ä(öRØ—2ñM•‰"‰’ˆÄâ2äâHéiLÔ^‹¢Ô™vHeÏYL†Ä^fçT™‰Z:TÀ®ÿÐ!+­Y±txÀdË©}"Š¬€óÚ!³X:Ädv.f"ç0IDBý§,¦±?ËÀ*¢(Ó³hÇôó9‹¡VCléŠÕ9Md&¦ûOn*E…Ge£-PÅý)ŠjzfeY,b/bˆ±c&R:8Â4×H‚U§±LíÓ‚Š¢È +XOωv¤CLÍ΢‰…€ ™!`jÓjOG +*Eöbhž9=+íà,–1ÎÎI&¦\5`¯¿2¢`è2-€éJQT™(¢ev<¦´‹bJ£Àþ [=Ø‹CÖ|~N¦1])ŠÚ£ Ò¢8O‰b¢Rë!–,ûMöž!`Ù4–¨= +ªTR¦çW^S³X6Ä’€ Õ#öÖ‚%…ægiŸeC3¦Ôž•*ígóœ×Žtˆýgì—lÈ cáÁ¦EÏÏz;ùt4cJíï¤(>•ˆbN; +K™ûh˜ÁþgµT,œŸéŸÌ˜j??§öìÅÞy/ÑŽ¯kÁ¾–ò~¤ÀT©øwÿûÊ`ºi‘Ú>›ÆX)jµÏ‰¢ÎÄÿ2 ¬R*JE¥»16-˜ŸYۣ˔i,©°D;ì¿ÿ[ÈL£E•TTèƦæÀ¦`R)Rís¢H°ÿþo!£z6ívcIáÁùy…€qSjOQümí °Ã‹`2??“ÍÏ©Ú‹vü—ûo3Á²â^×ÀºTL*ª LÏÏ™Ú÷ØQy°¤¢ZS–dbu®®s`YE•W{#Át‚íQ»!&†**¶Ï= +v¬›y­rúô³ ì?Íû‡d-×aê劲Î#[‘\/ŸÑ4ìÏ‚©•9²€%[ôÀ£?¥N®¿ñVþTmîÄŸ±`~ìØdeN²€å©e+5Ø{•sÐƃmµ­^$ƵT§•,9ÊÀÔ:Þû†œn°Ÿ¨µÎ9°ËÕZ*CÁZòß*g%NÌ™÷‹òw•­àÖÏJ˜–7[ó¸oØã6ìoþ®ÁBv¬`ÁÊŽéO¶üi­¼°æ$´1`-‹ÙbªòҜǴjz˜–7õ*±‚cªý·5º9‚ýka%fÆâ VõßNiâ¿•×(صh,NlÁXÌ/a°!ñߌÈûk×3 +¬›þ›I`ƒôßÞ)øo Øð/À¦ú›ZÿmŸvü·ü2nsÀí¿UÞ›Ö ÿÍd°–ü·E ü7Áã¿U½£Áùo7´à¿ ¶ñ ý7#ÁZöß–ÖeÿM›°á¾ÌªE°¦þÛ@6•`Cá¿Ö ÿ-UíH€5ò:õß>7¬Mÿíeå¿åÜ£ÁZôßÊ6Õ¯LëÌ+_m(Ø ü·‘ëtý[σuî¿™ Ö‰ÿ–y=ÖŽÿfX·ü·BMeXWü·ÊJF¬[þ›Á`ûoy›Ê8°AùoŸ˜6hÿÍ0°îùoƃµä¿½øjÅÍ1¬ÿ­ÜÖÐ;u`ÿÍ°¡ñßz¬cÿÍ°Îü·‡úoF‚5õß_1œ˜éÝßF +¬Ëþۧƃu࿼Ê#Ë_Ú²ÿÖ`5ן¶æ¿ÕÝëÓ\°6ü·œ,þ§¾q䈀uÇ+{=Ö¶ÿ–»=kzdãÀ:òßò7 +6¬Uÿ-ß·6Xÿ­ìæ˜ÖuÿÍ°.øo%›Ê8°Îý·O ë¢ÿf$XÛþ[›cØàý7Ýi–Q`X»þ[O€ Â3lþÛH‚ ©ÿfŠ7gS™ÖÔ›*«]&ö±á`ùeb­ûoïÖÑ2±‹*vÍLbßb4Xãeb÷ÔØT½ÖÑmÒz¬Þ¦JŸúp#›Ê<°.ùoF€5õßò6•öß®nâ¿™¦ý·Ä¦jæ¿•L£ÁZ¿LsC +ök³ÀZ^&viâæ<ôXé¡ÊûßÖܦšØšM• 2ÓÀJ—iæý·Ô¦º©±M•‚ýÖ°æþÛ¸Zÿ­Æ¦R`²™Ö†ÿÖh™˜Ñ`m?&´dz˜Ö•eb½ÖÒcB3ÿ-×õXËÄÌkû17gÄÀº¿L¬èæ˜ ÖÖ2±¢é¡¹Fl0)¨ÚT ™a`<¦ è ˜ Öþeš¹eb¦€ þ2Ígêü7ÃÁ:yLtš_› Ö’ÿV^&F°_õX'6•A`ƒzLhŦ2¬›—i–Ê{ƒÁZ½LSÙTå¾¥ÀZZ&ViÈØ/¿übdÁw™f7`X×–‰e3´`ݸMÚÀ`ï®sdÁu™¦±`Þ&­è ˜ ÖÖmÒž3¬Cÿ­bSõXk—i–WSÖÖešbS}j>Xþ[›3¢`Cà¿ Zè¯3°¯¿þÊH°¶ý·BߢlÅ‘ìeš•ú7‚ ÒKÙoF¬;·I+úoŒÛ¯Œÿf>X§þ›é`íùoEÓÃx°vý7£Àºy›´žkÙËÙT惵å¿}Ôƒ`Íý·²7`X7ü·¬¼7¬+þ›KÈŒëŽÿf4XGþ[Áô0lðþÛ/õ+ƒÁá¿åd± öÚ+/ŒX»þ[y™Ø§MÀ^6¬-ÿ­\Þ› +Ö®ÿVé[Lëä6i†€ ÿ¦À¸ŒëÐ3¬»þ›¡`<¦À4°nûoºo1¬Sÿ­7ÀÚzLAÁô0¬¥ÇÔÛTû5¸Lëø17‡`¿NÀ~ñÅg#Ö5ÿ-3=z¬%ÿ-³©ÐiþªÀZôßòÞ@.d=Öªÿf"Ø S`4XWü7ÓÀy›´¢éÑ`íúo†‚uú˜‚ÄÍùÂp°vo“Vrs¾N¸LëÔS6Õ‡½Ö²ÿVöLëÜ3lpþÛˆ‚ ‰ÿ¦Ê{Mf2ØÀþ[î6ioÀ$°vý·6•Ù`m?¦ lSÖ¥Çämª/¿ú*ûê«/kñ1©›“É¢òrÌkï1©›Ó`­?¦@›Ÿ› +6˜Û¤™Ö•Ç¼Ñk`­>¦ è (2ÃÁZyLAÙô0 lp)0¬)Ðå=À¾Ö…‡‰`mùoÓƒ`_›Ö©ÿVçæ˜Öéc + +nŽÁ`-?¦ oS}Ø‹`µþ[z™fÉ0¬ÓÇäÀ~Ñ#`-?¦ gz$dÆ‚µõ˜‚,ËÅëþc +z¬½Çä¼#Á:zLÁ:“Áõ˜‚‚Me0XÛ)P6Õû~œ+ïG¬{)(´Ð=Öâc +‚}þÙ'†µ÷˜‚kë1Fƒµï¿Õ¸9šl¤Áºò˜‚‚7Ð `-=¦ lzôX[6U \†€ ê1yÓÃ0°Á=¦@ÀT§ùKcÁ:yLAjz¤zŸ}ôáû#6ÈÇ ¶áýwßi°SØTŸ™ÖÖc +*-4É~eX§·I«‚ýÊt°ÖSУ`m,3¬ÝÛ¤¼‘ëî21–•÷¦ƒµt™æ:“Á:¿L3µ©Þÿð#ÃÁÚ¾Mš¶©6ÖÁeš%oÀ°n\¦Y5=Lkë6i +L²„ÌT°æþ[Õ¦Òå½ù`--+º9)¸F¬ )0lð—ifW36[½âSÀš^¦ùtÙë1°¦þ›vs>3¬ƒË4+nNìË/¿0lÐËÄjÀ~ñÅ矎4X§·I+ÚT¦ÈÌëä2ÍB m$X»·ISËÄ^é°6n“–7=T °¯ÀeØ .Ó,}¥ÔÞ\°ö.Óì°–.Ó,»9_|ù¥Ñ`ùoì4¿HC6R`ÝñßrW3ªºGÀZºLsÝ‹¯$n뤮 ê2Ír m*XGþ›a`]ºMZï€uê¿õX;þ[¡…6¬‰ÿ–-ËÜœ¬ +6¬Íebf þ2MeS½×k`-øobS2ãÁZ¸L³bzh²ÞkÅ3¬ þ²_˜Ö±ÿ¶¶ö…i`ƒóß²:—i`mûo™Me0XGþÛ‹½ÖšÿVY&f,Xçþ›6=>í°Vý·¼7@²_*°Ï>ýØ@°6ý·<Ø/k÷6iuÏ›êíÞkÁ«šFuÓ3¬íǤ`iy?â`ƒ÷ß +6U°wÞ~ð¶ý·¼éa0 ¬ þ[©…î°Öü· +¸~ñ¹¹`múoE°/z¬EÿÍH°NSúo…Ú<°Nü·›Ê,°AÝ&M›ù*Ø|°ü· `ŠÌ4°vSÙTï~°¡ÀÚ¾MZÎ0lPþ[oµë¿}öÕãKp Ö¾ÿ–TÁÜ~a&X›þ[ÖB¦ bz(2#ÁZyLAÙ¦2¬ÃÇl*)ï kß[Y“Aö¸ kñ2ÍÔÍI[hF.£À:Z&¶¦'Áš.[Zû¼gÀš-[÷¢2=tMe6X«·IËlª´ +.ƒ½õÆ«Ã +6øebênþyÓ£wÀš,+»9‚ v™XO€µu›´ª›c,X'—iæ[h#À}™¦²©´7VÁ†ƒ5½MZr5ãó À>þhƒ‰`-Ü&-ïæ¬Oõ-ŸõXË6UÒB§ƒÌ°ÎSpû@`àq°Á]¦Yps>̃}ú‰É`m,ëM°–‰‰Mõ¦Á`]¦Y2= Ä21£Áq›´^kõ2ͼM%Þ€*Iö¹y`íß&-Kª`€}n.X;þÛšëÀ›êå +Øgy°—^xÖ8°Vü·b§Yö¼Y`­^¦™‚±¼ÿÔp°V/Ó,˜ª +þ,öþ{뇬 þ[n™X-؇Þwý[¯›Öªÿ–¶ÐÆuì¿åÝÓÁÚºMš€)Óã}ƒÀ:½MZa™˜6=’bÑh°6ü·å½ÖØK–‰•MÞЫ·©z¬MÿÍ,°Á]¦YqsY/€µâ¿©ZªàÐKlªÄèE°zÿ­dz,dF Î{ûÝ÷°ÏÈeØ ü·¤…V`Ÿ™Ö¡ÿVps¤XüÔX°ý7ÃÁÚñß=˜_&Ö`­ûoÚ¦zÃl°Îü·¢7Ð#`mùo½ÖŠÿöd,-MkÓÓÞ@ì“O>!°nøoy›*WÞ«€}ôá悵⿭.€}bØàü·ÔôHÔÃL°vý·´ÓüÀ°AûoKz ¬%ÿíîœÿÖS`SÐÀë°o“V²©ò-´™`m?¦ äæ˜Ö‰ÿvuÑK¼ =6 ÿ–ÙTIL²OÍ«÷ß®ÌùoyÓCƒ‘«WÀÊþ[Ù¦2¬ÃÇôXËþÛ¬Ô«˜Æux›4–uš÷Ø€—iêÕT)X2óÀZ|Lrs,š½ÖúmÒZ[þÌ’kç6i›Š¦Ç»=ÖÌ+˜ôXCÿ­Ö¦ê°&þ[r›´Å‚uÍ7çõ*؆Þ3¬ÿ–»MZÅôøDq™6ÿ-“šJÈ kç1K}ôሂuú˜‚œÿ–™ ·kü˜‚¢›#å½ 2ÓÁxLAÁ[Õ‹`Íý·ÌÍ1¬íÛ¤åÝ)?6lPþ[bS½VûØx°S î&¶l°wÖ¿ùú+¦‚ ä¿•Üœ*ØÛF€µó˜‚Z›ÊP°ÎSPrsò`ï› +Ö†ÿ0¶Ð˜Ö¾ÿ–ÙT4=’òÞT°vn“–³©^í°æ)(ÚTlÃGŠ¬‡Àšøo¦j*#ÁZòßÚT=Öì1 +,í4{¬…Û¤ÜCÀ:LAÁ¦*zû\&ƒµò˜‚Ø›ëUéA2p™Ö©M•5d¦µþ˜‚âmÒ +¦‡é`->¦`¡É`ƒ[&–Ýô¾ÁºMZbSå²kí2ÍœéÁ*øÃkþ˜‚"X2óÀÚðß*6•i`Mý·S Mzëó`~øÙ`>¦ ss’Zƒ1`¼ÿ®Ù`Mmª•)Ø{†‚u´LLÜœŒëì2Mº9…NÓd°6Sð¸ù`-=¦ x™fÙ¦2¬eÿ­êæHME² kë2Mí $`ÖÎeš%7Gª`ÉEr™ÖÒ2±ç‚½öÊ‹ƒ °LLlªg{ ¬Éc +ÊnŽtšRS}8â`]Z&Ö£`,«ÚTF‚uºL,ozÖâeš9›*×i ÖÚešr5cÁÍQ5•!`ƒôßr¦GR,öØÀ·I[Ðì½w׿ý†‘`íøo/ׂ½e.X 6UÎô@¬Èò`Ï=» +`=|ÿÝÃÖþc +jl*)ïUÈÀ•[;R`_¦Y¶©ò`¼Ÿ{zÉcÝgX ËÄÄÍy5ã–‚½l:XCÿ-gz Ö©ÿVÛ`XGËÄ´MEo@ÕTØ;†€µ›´œM¥:Ílƒ™`­/{ ‡ÀšÞ&­²LlEOµà¿¥nÎêu¹†ÌP°Ž–‰:ÍžÀËÛTcüAO€5»Lóž +¦«`2“Áš^¦Y°©’Ú°n.K:ÍÞ«óßjl*öŽ‰`ƒðßV=û\€µê¿%6U¡!3¬½Û¤5¶©r`Àe.XCÿ­²L¬F2p™ Vã¿ hSõ +Xÿ­¸LL™ÒiJMÕ+`-úof‚µ}™fɦZ¹–Þ€TÁJ=zl`ÿ-1=°z¬‘ÿVrs¤Ó\ß‹`™ÿvz+`ïód‹1`múoÚ¦ZZcÀ kÙ+^Íh&4}èäÃ=ÖÎcBs6Õ’<˜ +ÖÔËÙTÓCÕTƃ5|LA²L,usž^®¼ ÆÍ@°6–‰e¦;ͤ +®ž«.«¸9½ V¿L,çæHßÂÒã-óÁš_¦yËÂ{rÞ@ìõ×^9°Ž—‰UÝœ:°—^0l Ë4ØS†ƒµ¹L,çæ,]™5doiµW`k öø£ +Øõ×Ìq°6.ÓÔ¦ÀXz¼ÙìöØ1#Öâeš n¿;usTy¯BöVìÞ»†¬ÿ­`S‰é±¶ÇÀš<¦` °WMkü˜‚²›#`RzÈf$XÓË4+6½u†‚µù˜Ð̦Ó#×·Ù›-í6ô`.+z/÷Xy™XѦÒ`ªôx£Ávݳ֦R-´ê[^{½9Ø#V½L³¼L¬`SÍ«{3¶níªKŸ|üÀšûo7Gyº +~Eƒ‹í˜€-&» `—Ž X6UÎÍy¬Æ …Ïû•À®a°ÊÕŒy›*]M•º9¦ŠEÈâ­€MQ°lªœ›£:M ¦CöÆÒ@?¿n Á?òÀæ'`'Vusr} kª—›ƒ]€8ì`ÍVS%¦GÚB—ÀÞ.ˆblÑ·UÀöÔ`¡gXƒ‹þ”7 ¦*ïÕ Mõ Cì•—d5Äòg–$`×]}¥€Ìä‰# +V]M•sst§)}KZzÈ KÁ^xŽË<ž^²øáØôØ6[ X§ý©•º!SU0ghQ’½þºLcE°«`Ûo³Å‡ì°f‹Žôé[t±ˆ‰LË"ÈÀí“Š`=|¿›uå%L?ýäã§h°‡,³©\—ušº +V34ÕC‘1`Ô–Š +ìž;nWà¾%°ùç°¢›SòtC¦Ë{USAÕ #ÙkJ;ÖI üÄc)°Ù³®¸äü駟tü”#lWÛ,t `ù£Ê`ÿWg`íxÒBKC–TÁ,=žxšzÏA&d¯‘ëe[¥Àî#Ø °1# +V^é!-´ô-,ïu±H/z¿fÊE’½úªb˜ÆصÈÝ›n¾aöÌ+.>ÿìÓO:nʇìç#VºÓ‘^‘+ï“ÒCÉ"™„Œ&¢ÈRQŒàì´“Ž;z„Àvšªo‘*˜Å¢*=”Þs©\|å•Wñ•‰E¨6çÚ™—_|ÞÙ§H°qcöIÀ‚†`ä4X›#¦jȲ¾E‹ªôX vÕƒƒLBF´—%`ë”(ªRqÁÜ9×^uùEçE°Il»­Ø÷6Ø? X½7 :Íì.Ȫ +Ö5JLdEªÇSK%Ÿ²—…ëy1hÔó³4Ðvê‰Ç=éql‡í¶Þœ`ßÿÞ&ÿ6Ì`¥ò^‹Ié¡&2¥˜¢UÈ^|饗_zéE ‡DQÍÏl /»èܳNvìQ +l‚ýh³À!Ø· +`àÒ`Ø0ezüyÒBgå}n…ºš¡e"£,Jü$sQ… däBÀÔ£(BíY*ÎàýO6õ¨Ã9è€}öP`qöþþoØŸv¬¦!Så}®¦R3´LdJ¡d|„ìù€öâ àBÀ‰O/Aÿ|ßÝRx TÔ§Ç?ø öÞcçÑÛn0?ö×CVSÞˉ$]zp"S®ÇL¥¨=t.®yd@{áyp=»fõJÌbJ;Dí¥¢b;&7Oß{w‚ý$ëû§F°´ +NMn5‘Ésظ¨A¦rqÕêµ ÚóÏkíêU+‰OP;(Š7\;S +÷‡Mà]áì‡%°ÿ÷/ÿ|Á*U°”Ê2½Yd}?_Ù#‹2!{vØÖkÍ* ™ø(*EhÇ\=±¢’â^9?ùaä;ýßÝx£ +Øÿì"X¡¼WUp±ôàDF½‡,¢¾§z`I."dK—¯\µz а­]ËD”€©!FQ¼ê25I œ4г ö;o¤`6x°Ëû´Xdé‘LdÐ{-‹—\1s6rñ¾‡$dË„lÍÚµÄZ½‰øÆL\x µC‰"§1VT{f^ÎP X,ghê=de0Ôãò«t.ÞË-yú™e+@¶l«W¯Z¹‰¨v§gjÇ¥@¡ö˜Æ’ŠŠÎ€½éwöÏÃV7C§zOY„z ¨ÂÍ\„.ÞÏ!—-·•ˆ×R°{%ç(í€(Bí9q~ÎúÌ ì/†¬8C+½gGÆ2ê!ƒl–䢄ìÑÅKÙŠ+ñŸåŠ‹ƒ&J&² :[‰âÁí¿·šŸÓâ^;5ÐC¦KÎÐZï““šûŠzpM×¹8òqÿƒ Ÿ|ú™¥Ë–-_¾|Ù²¥KŸ~jÉ‹}ˆ»Mgâ…çŠv@µgEå¶ä t–/ËYNH™ä"Š ’‘dOÛ3Ï(®‡1Â(7]ÏLÄC¥Èn jŸÌϪ¢2°â‰¤üDV”Žõ ãLvá¥(>$dÆHöÄ“O=õ4·§žzrÉãäºvó ÐÄË/æô|+Åq‰(fósMqßM°Ü _8àfêÁAÆ™LçâÕ×ÝÀQv×"![üøKžä¶dÉ?F®{!‰Øœku&žt< *jE‘j/Ó ¬®k ÖHï3õAv¸ÊE„ìJ²Ûï¸[È%·Ç_üØ#?øñVŒ0JÇÅÌD™ž1Ä”vˆ(ÚùÂã¯Xx ÞhVÐûD=rƒLrñÌs.`Èfß0wþ-·ßI²Úc‹/~ì±G}ø!Æë®;n“†€QeK‡»1%Š…ù¹{` õ>•E¶Y’‹SO |0d×\ãÍóo²ûxèᇑ Xܧ¹TÀ *³!&Ú‘ª}¡TdÝ,Ñ{Ê¢d›qaðè\.ž¤B6cÖµ [²»î¹h>ø¶xàþ{ëö[æϽáúkf2`ÓÏ8š89b¬µvhQÌÍσ+îÿ ñD–Ê"ýÖdÌEÑEÌÑÓ$d—\dœsÉî¸ëî{î›l÷ëî;Þ®‘ˆ3’€%™¸‡®;íТصù¹:‘ez¯ÕC×di.&!›~þE—!I6ÿ–ÛížE‹î½w¨î¾óÅ5göÕW]qé…0Ì·,™(C uGªÝÆ*`™ÞkõÈY’‹"*dg{ÁÅ$»nÆÙ-·Þ¾ðŽ;ïºënlwÝI¬[Ì®™W^vÑùçœyÚI˜Ä&‰&"9‹%C,ÑŽîMcõ^«G6Èt.rŽ†| dÇxÊLÆËg0f7δÛn_¸ðl Þ~Û­·Ì¿ãK¸.¾à\J"Fé€&J&²ãË´cÈÁ’µÙ C.RGï ùP!›zÂI§9=!»þ†›nž7Á-·Þz¶[o½eÁüysoÒ\—0O•†€A:vÛ‰…¢ÎDÖ‰v4RûÁêÕ#dY.þôg;î*!Ã(›‚d<í¬sÎÙ•3¯¾öº97Ü4ló,X0þüy7kÎu×^}•â:ó´“O€$"`"ÔÄ$³!&¢˜¨}×Áj™ÎEÌÑÛí°óî Ù„‰“Žb2ž.d—]yÕ¬kfíÆ›nš;÷æ¹sçÞtÓ7\Ýìkf)®sÎ:ýäiÇsä¤C0JÊÖSÈDÎbÉ+«ý Àje±8Ȳ\„|ül'„l¿ÇÂd<>%»bÆÌY×\{ÝõsæÜ Ûœë¯Ÿ}í5³fθⲋ…딑ˆGP%`˜Yv¨LÄ,–±¢Úwö„“NÙy\|éåWíêk®=û:l³Au5°®¼üÒ‹/8oºâb"Ž»¿ +¥C2‘b¯f1±®iGCõHY’‹*d[oËQ¶×¾cšpè$ ³NB̦Ÿ{þE@»bÆU3gͺZ¶Y³f^uåÀºèüs…ë„c§yø¡:`ß$`?N2bŸ ±íXƒA–ËÅ4de»¡ü8pÜÁ…ìÄSN;ólí¢K.½ìò+®œ1ã*l3f€ê2`]pÞ9gŸyšâš4‘‰¸÷Ï%`Ž4µØgC¬ ÚQ˲B.æB†Q¶ã.»ï¹ÏþcÇrÉŽ?ñäÓÎ@Ðλà‹ÁvÙå²]v饗\táç!\gœvò‰Ç ‰¸{.`J±Ïf±¡«ÉÅRÈFïÄd<@“M=~Òhçœwþ^tÑŲ]ªóÏ;X§ŸrҴ㧂ë0 0&â®;å&³sM&^²4E>²ýt{IÆ„ìècŽ;áÄ“OÚÙÓÏ9÷¼óÏ?ÿ‚ ð_ç{Îô³uêÉ'žpÜ1G3^Â…DÜa{0‘ÎιLìÚ«Ëçb!d2—m½­"ÛdŸ|Ò‘h§~æYgŸ=}ú9ئ +T§kÒð¨Éš‹l‡Ÿm»µH¢g³œJ¤#'öÝ«d: !“d¤2ê˜;øÐÃ@ЈvÒ)`;ýŒ3ÎÄvƧƒê”“N<áøc®#?ô`pQ80À¶U‰È–¬˜‰]˜žkÀJ¹˜™ 9Ì BvภHÇÉD;î„i'žtò)§œ*Û)§œ|Ò‰ÓN8X×a‡N'ñ¢p`€1WF˜ +X9» V—‹…}_’à B²½öÝÌAã>TЦL=ö¸ãO˜6íDÙ¦M;áø㎪°&<þ %wÙÂÆDt¾IÌl€Lì ¬:Ȳ\Ì…ìß6ù®JÆþ;D“í³ß˜±ÐŽ8ò¨£§3õØc“íX@M9ú¨#Ö!טý÷ÙKqA8þý‡’ˆ˜Ã´$ª€å3±{`µ¹˜ÙFLFËõ#m2Ž³=öÜAÚÁ‡N<|Ò“wôÙŽÔä#&~Ø¡ÀB¸öÛgÏ=vÛY¸¶ø÷mED"¢èH¦¤£«™XËr±²¿ó½ïs˜mö#aœí°ó®»3h8vÜøƒ¶ÃwÄdÙŽÔáÖÁk¯Ÿï¾ëÎ_Â…Ed"fˤ#ÍÄîUr12!û® 3’aœmû³vÚ…AÚ˜±!l‡rèĉ‡É6q⡇€jüAcÇ°ß¾{#\»ì´t#á¢"nRX&ÝÊÄÚ\,‡L'#‡™&Ûr›m·½#‚&hû#l7~„ƒe›0aüøq=pÌþûí³÷ž®ÑÛo Ý…ÃEüֿȦöiÀ²Lì.X%dÿ²dìWdÐÆ-·Æ@Ûa'AÛkï}Á6æÀÇŽ=H¶±c{í¹Çî»J¸~ºõ–›'ñÂS‰˜Hb5`ƒÎÄb.VCÆóìHÆ +ÙO0жÝ^ÐvÛýç`ÛgßýöÛÿdÛÿýµ÷^{þ|ÝvÝy§$\[üäÇ?Ü,ÏÅD”€ýU0%]ÊD Ö d(?˜ŒÉ0Sd~ÿ€é¸µ í¸Ó.`Ûp{í½÷>²í½÷^„Ú}·]wÙyÇ~¶ý¶*\. 0Q=‡ÕHÇ`ÁJòQÊŒf ™í‚L‚F´í~6l;n÷=öø¹l{ì±; @…` Ã…áú®æR,Q-‰µ™Ø%°jÈT2b˜A@„ Ú(鈠m«m~Š° p;ï²Ë®²í²ËÎ;ï´ÓŽ¤ÚnÛm¶Þr .Ì_ßϸ”"Šrüy÷¥ãêr12IF³„ Ú¨Ò# h›o¹ÕÖ`Ûp£wØ|²í°ÃhBmÇ`m¹ÅOþ£+‘†˜¿¾›q)EL•£°Áƒ5 +Y–ŒfŠ ÙøíMT:zóñG?–°m½ à¶Ýn»í“L?݆T›# øƒ˜áBbþ’ñ¥¹DË+HG7ÁþG)dE²¾-éh9 +í¶9à¶Úx鶵@mÎ`ý`3…%i¸É·àêrÀr¹˜Y-Yß7¿µÓñ{ý-JØ~²ùæ[l±Å–²á"¨ U¨±˜†ßÞˆ:O.âßæ¸$»°ú!ód'dP}4-Aó5Ûô£ÿøßÓíÇ?TBå%X×Fßúft^â•q¥‰XXWÀ +!SÉXŠTÿŸú˜Ži‚fk¶(Ž7Ûì? 7¼øÁf€J¨,…Åp! ÿùÔùW!uÀº‘‰u!K“±D†„阠mªÙ„!øÒ- ƒÀ×Tßßô{ Ö79¼0/ç¸ò‰Øå€5™NÆŒŒó™JÇ M±tžŸnø®ëH¬ú Xjxeº!¬šˆ] +X,MFf™NÇmc°1n€³ˆ—n¶m[ Õ¿¥XÿH®¿ûÛ +WšˆÝ X=ÙŸ¤Ã¬Hö94a¸M‰—ný”@‘ªŒõ÷®d€Õ¬»`…dTdI6–ÑÈƸm¼ 舗nßý.™6Ù±"U+Ç5ªÌÕõ€5JÆ"™ZŠ¦Ù$pßøÒ ÿëÛ„ÒT –Wë5âê&X2ÑÆ,h +M³!'‡Ð/·áÿ+¡U‹áJu>ãR‰Ø퀕CV ÓªŸ-AcؾñOÈIÂaûÖ·„ð_Éó-"}ó_…X}ã³$Õrýß×P¬²™–-CCØ7®€éÆÿùÏŒ¡þáÿ£ddX©l WÙÉTд„Mà„ŽÛ?«M^#…’`±’áUåên"æÈþ0?Ì4Y’ŽZÊ&p #^aÃ[ ©JXzx¹†$`Åi2¹ i´ŒMà@G¼Â†·4”¢*b©p Wc24QG…V`èˆWØðV¥¨ +X:\®î'bY.“ i´àHG¼âö·Â$PŠª„%ájÀ5”`²t¤ š›°ŽtÄ+o-L¥©R¬b¸†š«Y.hM¦ØG:âÉöך毙•PeXùp =×€d94Ŧr2¡S|Ùö—‰P)U«®"×€ÕÕ åÙà%ˆÉkù‡ +Tjl)¬J¸†”+Ë)ˆÐ26 ]˜múÝ * V k8¸*duh:ld8¡ûrˆ‚£¶T.X¬á᪒UÐ’°¥p¯nûÓ*¡ÒÁ¬Úp XŽ,´- [—àÕlÿ+…J¨j±†…«†¬-—àÕlúßÿ$O5RXMÑ„-—âÕmzÿYC•` #W™F˳)¸¯~ÓûüqFÕkè¹ +dõhš-¥+0æßJöûyªkXÃÕ­Ä–ÂUs@9¨„ªk¸¸Šd´ ®ˆWÞ²½þ¨B52XÑ2¶ÜÀÛ5¡f®Yž-70^~¿ÜŸ,V Zž­H×dûÃÆT#ÂUƒVdkŽWÞ½òy#ƒU‹Va+C6úçê' V¶èZ†i*Ùê~W«t þv¤‘Ò­Áï€o€¿i˜Ò6À/mgiŒúíw*Ù~'¡²íw©°ýîý~ûýöûí÷Ûï·ßo¿ßÚÙ6ÚhëÉã·;u쨽¶µÑæÛùcð¿w{ÌÔ SFí8j£1ßß|ÊÔ­&Ž›:ñÈÉc§LëÛ oYýŽ×÷ý]'ŒÔ·±Ú³;õí4eâ!'ãÍÝÆ4a“¾ïa×à?£¬¾Í'Œ:ÿg'üGý?[þß^cGñ¥zk¯i£l7ú-Ërƒ ômÏéÛÔµí¾#FÙžm©×£õkÛòúã0píض|ωùnõÛV:¡ëøücÛµúcÙðqn ]û £G<ÊîÛ|ò¨=FÅ}oҷמxU‹®yðkÇ +ô®iô»ñ/¹_žü¯šßÎhá×7ú&þËäúŒ·¦ŒU/7Þ|»¾ÍzdŸŠÙÄ£ïï6uÊÄɇ¨Xõm¼ùø#š0fóíâ1;tÌ„)ÇM?æg¦Q;“ )~ —?™|ää>;p|9µ1æ +à †Ò \yÝo¹¡8.þ;웤ßw‚ ?Žb7¶]Çν÷;N9Vlùaöám»ß +m|pìò 8!¾Êõ£þÈuBËÇÛÉ»ãFÙN¨×£“׎Õï9vhEŽk’;Žoñ{üþÐõ܇6Š½ìýØïwm^£éù¡gËÏ•p-·?Œ];ˆ#Ï ƒ oýnlagÇwZ í^xøºÀHÄwÇ1•í\ZÛ Ò:9xÌÒÆI©ó·> öÚaôÛmÕ·YßƇMšxÐÔ#§L™0yꦓŽ<äÈ©ÓŽš0ƳI£¿mÁ_c×Âè-d{:˜i{®Çxã8¨×£“×z€_û‘Ú'.½–¿Õ»†êÏøÑQîã¢Ü×È>ù×Aî#ä—çXü­pp-ÿì…ý!Ž6‚÷¹üÀ +,/bä$VÄúñe!#TòYq¿xAˆ”¶]~§çbø"7üÈŽ,;¨ÝÅîwm ñb°ŽU³“õ‡¶ÛaÇ1üœ°?öl ;ŠÙ%À.6>Äõä˜a¿?pbà:øìÂ7,Pž€dK~•ÛQ€1:–¥Y¿ëû^ˆ¡:QÄϱú1Àðs\?P¿Txø£RÙæàÀÿ´ñûý f‡-›@ÅcRò:P¯c|ºmYŽå(T¼7=õê¸Qòõ>(Œ¦0Ɇ¦^‡D>ÎéÇñ‰°c¨äGt¡û8Jòy6qŒ}FÒNŽ´Ú£×aÒÅþ ±|üð€‡Ñ¶úƒ#0´-Ž@ì‚„‰ãò7¬ÝC8·G¶Ïÿ#_UÝÉîGð7r"ϵ¾$­"ä~íØ~`+ÖšüÜ2Ëå­Fé#†4‰ChT…~ËðHÞ!Ñu\*Š ¹ìà‡ú¾eë],(£ëúŽI Â~ ?Õñpœ-¯f—q*8TÊr<ü²¨îs\ËéGzñ¸ÛV,€V?Ò9Yqà×ï‚7b;v‘­_u'¯ß ¾—Pá×XÈÛlÛSC” ˜-#×L(’žrôô¡ñ5%Ô¾œàÄ\H 3´-±Ã®>ÒÍBÆÛŽ:Ò>ä“4˜|Kiý ßEJâ‹!gÙÏó“ ©bCNRNœ{?î1¢ÝØÅ/V9Õ'cÚ®3Wl•iq€ _àª1]Ù ¡Â·‘”¾:â•¢~ËAyâºQ[¡:âŒFÀÁøµ|Mݸä(g}´]ÙͳD‚K½¼VR)¾ôZïãú¥×j +PŸ™-ûÔN‘ätˆo¡ã!;"÷p9r‘ ê£PÛ‡EYbþÆÁ‰b ŽJë¡PÉÖoCm€ԮÝÅAYâ!‡?Š‰Ce'?Îf@õãBÝèû1~ÆC(ÔШ ‚Ð!•]—{ýH ØÆ÷CüÕ|á„øѺå…j4G^?>Šà3d.샪b¨ñcIø}¡X¡Õ͘6ú}J€\lå×ìÂo +½~̧‘R'ÜÚÏ ô¼Ï–@^ëh _þµï¨×a¿íãØCÿ1åÞ1¶,ò@ýd_ƒ°$³}ÔÛ²3æÁSi µ£¯Q1¿p¶ DLPÖqˆØŽ‡uÄœþ%âÉÜ„ÉÊÇ—A¦C(?Æí÷"È +õÀ“iÈUïÆRˆÙlj§c̆«oÁ÷G(ÞgÞ ,Ï’ŠGgôз<¥j¬uÄÆ@¢X;•Ð d¾^Ɖï÷û–{µ.+a¡‘`.æQÏ·Bù`ašÁ,„\—)ÛÇæ8ÈQd>þ¹¯ÁX)NM LÈCý±D#¼P†S¨_§DZÛ¨~ñ5‘”Âòú éǾÉ™I†Ú+´Bc®nŠsCˆ&ÊuxT³ƒp# Ë#¡Jxh8Ðà`X± +ƒ¡'ÀÏP³¾?S¹¥_e§?+|¥qe'LH}d;T¤S™#“€:®a_ýÑÛ²¬™“³NÀÒ( ˜g»u†ÑÑÞŒ4ß®°š]ªVÝ©,`ž¹µˆgaþkô 5m?zµ50tT¯_K,ÛCóŒwüZóXR&1Õ…A­ðxœöÞ}ÅlÝ '&^Ä6Æȼ°Nä°‹—éWRÏòX[véµÒ)ùZL”P‘“{ßç±Bmèà(éý©á¬0q€Pæ‹€TŒ¨ÌßAñ.G½FÀ0¯ôS!Vh5â:óX#»ì|¡ÒG¨£YE8#)Ñ‚TÁ<;`“© +ò*ÞÇïBbDnR°«¸³×gÂÙÒÆTŒ»Xø-1@Bù…5 +†ÆoĈėú¾_§`ž*>Ê +V?XŠ +ÆЄÖGV¨ºRL…O)˜z]£`é? %34`6 +¸Ø­S0=ŽEé¨îvÍ.@”é϶úÖicŒÂÁ¢›àXa†ÕìRÕ°šÊ&i ,Ô.F²Ö°ÚãWÑ0L¡ª`yhÝ(­rÕkU¨«} +¯­Ü>¹×ZÙ¤fÌ¿ÖéèÆ¥×Êmп!ÿ:g Úž4n86!§d›…JG~¯ú” j´U¨ÞmŽôœP4ù!Æ©FâÎý(4˜h®Ô¤,cïCÿ1¨PÇD*Õå‡`LÆ0ë.ÛO$­ª† KM)ôü‘ÅbŽ¡SÅoDçP&û¤eŠ<^Îi½±|)šTÐ(ó­À ²ƒåy¥×ú`ùVéµÏ¢ÑÂøæäåFÙ?xlN0†} ^1?d˜±†EÉâJÕ‡B# £C\ï"þZ`n’IGÐâÔ Äˆâ/æ Æû æRÜv?ŽX ª”*#tå¡þ&ü=𘖎ƒq‚9ÈAf‘ú½®LÀ! + +49´ì–Í8‹ªx,[-º>n¤‚VŽ>8ATz­fà”^—Ó)—nâw(M½ÖÆ¥×ú{¢ ôZï£ZÝÜkýýÉçg_ å@›.»Ç–žþ´Üt€_Ù·ž‹8âPa^Š•=WÜ­›<Ÿí½«¥‹ó.z豋Ç]–À˜/=Ýú ãG…z‘ªúš³|ÄÂ7VøȵØÇO£+à²t}Q; 'ˆcU¢`ïÈauc‰+PÝ%¦!@1¦© ½²2?×A¥CŸÝëÓ¿ó)'_O¹8f4U‰SÇ„¹ +c‰ä¾*ql ¾ø«E˜žó|üÃn­|U—õ->Fy^ø5øtT]®ÈW!~ÌùÇSµDH#ä.FWR{Ç©@Óš£=î„nsQŒÐSŸ1)"œØ%b5€Ê" '&»ÄüMè l+Ù) %‰y·é\ºq.¾++‚†œG?ÿuIŸì‚B‘‰B+Ò¿&Žm d„©="ˆŽ ]ÕêÂäË$ágù2áU?E¿kÛhñ*]œ½mËD ñ´x‹õÓ%!SØA JãUÙ¼^6Ù`¾e¡Ä2‚fdî}¨´€äq⤡¥p#DZu1øp[ ]/òÜ‹ž‘€kXJSöüÝ6‹¹ãÃ÷rÿNÌ·¨\P戧à³l@¢PÎGe˜Ñ™_HK(%„Jû5»ð@c'—v~J¤šÛºÏAê –ôcUØKÐ: Ð%Gí2-K¤Br' +p$¤Ó¨]¹K×Jï‚B„í/«2âqŒ0èQ£"ƒt½ëÑÕB"‡âFÈä¿Ï +’rñ€ì;4Ѫ;xb¾„}—uS0ÉðòUŒG½=jã7éûοªù*RÜtü”#:æбã<¾…ß•žHܵ|"qsíñâ°>¯ïxüg‡¾}mžã³¦µm$Vzc«oü(n?ZL˜®o3ñ[’¹ò>æ=d jľ.ÛùâHW»Ä^þoÄž´kÞf–@PxZ“ô"®û[|4d_Fc‘eBõTváǧWÞÇ'_‡šÏv¯úlùü§ÍäÇ—ßf‹W¯ümåðUAí‘7ê˜ÒhÊ‘ÇN¿éAGN?aʘ`àSÒÛ#MCn߇‰!a¯®ËèÛü(þŸäG928I:ÔýK´³„€ä¡»ÏEÅiL+%Dúö8~ŽfÚNnÝ_'q•ò2Žê~CeuTñù•IB *òØ ÔüX´ó¬1ÃRR¤oËTñ+]9ˆÕßPq,[iÎ_¥E)¨q…9*‘?'NÕOVW4¿VV;p‚öCZl¯|YhÂWì)þvñ¥%Sÿ(÷RýUvÎQý‰œxJÿš/ýdKá¥Ú¡î„5ÀY?r ±ØÁê}äª;z=‘£Ê^v~„©Í +é"¡@¤QÒpDcù˜»í»°0 +"t-hÇìÚ=l”–LÅè´¤û©î†èÞÑ÷ ìGžcVÑ&øÈ54_è2ùcðNìD Lø¿‰gÎѧ¡Œ äćÒÿÃœpˆ/ÆF@ ÙÇ÷ ŽtÙDá`õ£tÇ·S;yâ>ÀƒÌñl´Å’ +»°™·ù<õüF…ÀiKïoÀðsÑ¢ÒÜ“½]´¤N ]iÀŸ‹ã€ƒëGRãøòõ0Z •ƒèëà@ã#y›GW’P\àÀ ¬oc¬†¨i¡MèÖ¼PúáÀB´ñ½h_ñkiÕÔìU@Çèc +‹lKÎ!Wvòy*)”!_ÅÇÍ»’µ9[te} F„"`òôp¨æwõ>Ò×sh¡4—8¢ãAÿ=€Ê;žÈ@ƒƒ(ÆÔ§¨ß Ð'óž–Õì2N"ƒãè1!b=ËŸà«(M '–Ôˆû’é솴…kv‰¤ë–ó‘hxd¨ÔìÄuW›q¾¸ä®„>Ý·d y²E- ο¾jtåÈDR[×¼L|x¢=¬»1Ï:–ü‚€õ³8R<¤!~³ƒèì¥*;É×4~-#b„’\ÙŸò›b‘ ¶žª˜æ†›¾/MŽOñPsä}Žt‡eSà3fš~Y)Á¯:j+í‚o +¹Bó¤Ãe`ê—?'H¦”üÔ1m”¼¯#:…—øòÒ‡Ñôá"-žDHÞÇaÃ\K?Ýç1‘÷q|úQ›ó¬½kPœà­Øö\‡F‘0sE[ðF²’·úh‡ŽƒÈ¡ã‰/ÂEˆCî£NäZ¡,‘Œð)ç—2%n8oú\Aˆy)äÉm³å(.™‚r 6A@«Jc")1ÍA yÆÏ•Ú‰ñGP0 ;1¾QV–ÈȲ,jf? G¦úx<²(”CÈÓlP­~ìx*Õ,šqјô%º1f)ôç<—ŠYÐïãºG¼‹_‡‚ b€Â#¶ûêLaRbZ¸r¸,?‘"k8+!¤—g&­€ »cÛD’cäÇ3Û˜eæ/ÕŸŽmÆ5S¿374YÈP³GÛ Ã±ÃÜëëB]Ẕƒê +!r »‘(Ï?ºž‹-×U‡¦þØ ¸ÔAN"ÕH˜~¿,a®ÕH˜Ë5öžðÄl,kd*V·KEÂjv*K˜ëpu©ÍE¸1 ¦ CÑÏ+A„ÒVçJEÂð˜—hêû\ÅÖH˜kC +‘F4ßã@Ê©²öH‹‰8¡¿D¸"·VÃd¡1´4¶yÆ„¶jõs,«VÃä}5¢]»øRi•üd·Ïµ¢´ÆÒ÷Cè¦ÃäÀ$ª¥ ¥[ µ¹\ßñì ã ,Va£%íWUÃ\‡Î#R;¢°kD G–ÕhÌ¢Õ’ÅÊT1$׬azAK#+õ•Š!j8BQìR,$ó4(ÞǃŽ9´è/+c–ð÷¢Œˆ}”5*Æ,±b2Ú¬ëU Áés©+ji§NÅ\šž«3s¹äÂæZQè£åy‰ŠéÐYi«*–¾_P1— @MÇsF5Åïä©a.?õXÕÕɘä€ÇswP’0ˆkdŒá .”å)7׫‘±º]*2V·SIÆøk"ݧL}˜ê^EÆ\/RÕ+k¾ê¥”èj‡üK+Û!{)…ž›Ùnf 9.¾«A>,÷R}±þu®´h8 +(³0ãEô4ÔÛœ7Qz¡þ"ö–\ÅóøŽœ‰u•Îwƒ€Ë¨C/’µ8È^.™ +CßÂñB«÷ñ#P«ã§‹vñj=Ú‘¶1 â0ÖÝ Úšë²5Æ.pÈË“3øŒœ‹ +ØEÅ28ÁÂuϨô¡ +vj™¸¡[x©Sä_Z4DþPTDqò>‡Í%/E/âPÃŒæ±x®X^úPO^rT³£ZE¤RJThB`sõ“üX~°w€lè¶ËÐPC}-W~fÖQ‘¬%¶Ç¶ÇÛãŸa´C‹}im5=`.äñµ#žËCâÈŠaYeÁb-Rêañ%¾Šçœ$båȨCãYQá¥>Œq\|YÊ¢4Çd!–òÊÔKÉfÏñ +/õç»Å—z/(¾”oM?7ý&ÇEûFMç´è[ºþ¦FÒZ‘¥™ƒò Bˆé!TfTv‚2óò.Wæ¢,áÄFl]¤>ía—€§ÑyÍÏi ?%ÒÈ0qBDidûhò;dEdyª£çÂ7K¥YpvżÌÍóU3ÈE3؇‹¬¨Û%æ „êšy„z@Uy'94ãp€-õU‘œixÙ¯'ÔH–©!ŸÜ¸†Š# ó•ãÉ7!“PO©f)òT×̧£@ éÜàà8,Nð`àaV®TÀ…J¼.fåîpA/ XóøÒYÓ?0™É¬!N±„Šþz”]jF•õè,8eÙ%wÁwCïÐé]d]¥kÉüزKÌBsl wŠøl¥B‡ç¤yWÇpŽD7¸´€ë-.‘íã.<ÕÉã³ôW9>¯d å(b^0Á_bDZÌ{•]HE÷ž,¹l¥ú9ªâU!¯Ö²¹à(y×êçZy¡#×Z©÷•_'Ž)J~Ž +G·ç|é@^#¹2 yî¦3ÃKÄXdºÊÈSö–g£ÆEýŠtÏñ.5u!e!'Äô=«ð’? l¸4Àba“¼ÏŸÌ¯æòÄH®½ÔïÐGòWA‚x’ØñS,Qðäðq©!/:âµfèöÕ¯Ns^ÞsðÄ í™ÏË0¹fïpCÍä!Ø—Õî5vT ª®} ”qÎÂU^ré;^FVñ¥˜éòg¹—êÏt†ËáŸà3ÕÄ ­z#ùx5ˆÒ—j‡7T®†ÍS\ý [Ò:yŸ(ÄÎãÉ_ ¡§ª +ŽV\ˆtvy•¤Èu§êä]€T†PAuØŒÖíáôóê+À±ã:’q£ªû ? x2ØÇPÁ§ ,´8Íœ˜¬³¨­âK«ìµåšVœªE³$cQxq¹p$‹•¹ ŽŠ83õ.Uždõ\Y+©“¿,*l~íÅrùëâ˜Éb€•w’¯iü. +ë;žLË~_(¿/è÷]^#m;¾\)­ßG“§—=9çÍ÷9ÌyR¥Qh{ºOÅHåü.çÏê’¨Žº)ò"u´+û„ý\H‰#éðN r´-^`Ë5S¾:¹Pakzä*göBU³× 夳4ÂòRéy_êÄȽ”i@}Xîe¾«ÎÏ‘§OT`VãÕ +6 +Yó¢ß‡`³j´y…§z5tQÇô3ÐM ßûÐô¡àZžP‰t+ŠcËiC®`¯Ý…Wká(SAåÖ+uûX8|8¨Ï«`ð)v?û_N»näé¦ÃöhCp8û}#jz)tŠC5gÈØG4¸‚ƒßãÉ4âÓ#V§0ð,ÞÀ0òø)6+&®Éõ]íB–ÔJÍ«!SÈ~˪Ûß„ùÉ‘¶„IìGuŸã¸5sÆ´Q‘²‡å »vá%[^Ê‹1\¤bœ½ÏEÆ<_Ȳõ~ÄuÅÌcT«¼–)i=qBs‰+6 잪dKžxÄ«½ØÜz\Zêe#9O<À縢Ö´“Ó‘LOxÍ áDtË•ßÈ>(òy='ŽMñ0+_"ßEò9œQ(¹úü S„^T½ã U# ÛTÜ’#VÄr&•¦ÝÂì†ìÈyÝ+1¦>>ûÒÅgËzšŽ.ÊZÚëÈf’š¥°ƒÇź¥µ~Àæ#f†Ï“; Ö22qL©ØÙi¡¼üX”ž–\sÈ÷µ"óŠX‡-R©ÆßO?§†ë&5~%-&ž9å]ÈLW–KgØȪU+؉qb¡ÑÃÐYØŸ™ÉÓ²zÊ¢ ÄåÿW»ïVÄ;=ð]õEÕ}PÛ!Gø;IGšG6Æ.šY}ŒêÜ€çõ¢È­°äý²€Ea€Åh/݉ð‰¶Q€ÕìR°š}JÆÅr¼Š1‰ü:C1íó4z¢ÄA,+½jE—“Ë-kª¦Êi +×ÆùqôHŒ—ôÞ|Y\U#a/HqxÞ¥VÂÒO/I˜Ÿæ øRK€#×)ñ +:?{Ÿ¶ +0ü|×W'Ä#!bñk8£{uÆ!åËB Îøa½„Eô¸ÆÌF½£ô©,a¥ÐƒzñÄŽ%ä>º^u‚_Š±½TÂbˆïËÄUž“¶hQ,W. Ç¢8ùWÉrx¡‹*/¶ë$ŒÃ…ËœP ­z Cðâ×ݨ¯,ajBYÂj‡LQÂBÞë‰+“"¹v2•0½Ø. c„%ï%,äUi<ÂxQ†qA"ïÃójÖkoÕ€i"â‰àTç +q#/Cr¹æ8®‘°š=*V³OYÂøS<Þƒýª:j÷Õ¹Š„Å–>W}ĨØI ^ý’µ¹Þ!{)œÚ!÷RJ¼(³¢Ì ˆeeNî¥Ø ±šúÃì+r‹ùb_ËËÏAäІñ'úº ãµô¼D—Æ]ÞíwØÀSÊäB}~X,7(¢Á9'Ö¢ÕÌ÷åˆ#÷Äs’“TØQNþ¸\fjGº\‰}Z¨–ÅéÆ"p\Ó“?©£”ëÀlŸ§IT„Jçôb¹`ýO·©Sßr˜b×)¼Ô‡É³‹/ÑðYÙ–‡ô­ô}šr–¬Ó‚ò ±Ç;!8¼²ùੳìnÞ‚Kee‡Æ>¯¶ðeí 4œ·Xà}lu}!wbË€¢Ž—ö¥ëßØׇ^šËm3|7Š<&¼‡@ü1#Pt¡#¼• ×!ó–4¡î.oŸn#¤!æ½êÐNã0*lÝ.ŲX òÁ’hËšØ裄…—úHªú6{YN¤,ÏB‰#ôK•Ñ‘[x©¿ .¾T;ت:È¿V_¦1NºXÞ¿ŒK¦C^d¬×vóÖŸñÎÛßÑÖõû!§Oxz]i§:c±»QT*kå?×ÌðYì"÷ÚÄ[½‚–"ëpš´y~šýeȳռßYìÚzd‡(؈ ÆãZí«Ú‘s”¬HìbžO÷WVñÂÁÚ]xoI›’kq±¶|Uu'.©ggàòbv~39¢‘k©KÛ9¥bØaÂÂ\*ÖX…ŠÃIÃ5¼ÿ“Ø;¼õ ¯ÔH¬Šx‹³k†ˆÆ¡Ýr]OÐÛbIÄÊ‘òyÒ‘¢J›aXµó²Å Ö§ÛL˜\CžõäWErf”÷&á•þ¶ÚIîÃnò +î› +„´Õç_ISÅá&aÄ庼°#Ô·õ™4:Þp@|­-Gq'Wjº\N£ú1®Ø°y¡ÏîºøœPN±ûŽË fÙƒ÷:¡Öñp…2MË.†¨ÙƒL˜FùµøI¼¦îcb;1òåž4(<'y—˘§8,–Låê}:užºÖÁ ä‚ y_›?tšÐ+"ݱ‹—.: Y°¢@§¸jHǹózrùdĪ*àüx[Õ8s”ôêä%‚܈Š×Lbà¤ïã'³”xò˜G%}Ÿzí³C„Ja´¢•ï—UCrº¥­NžÞÂ1ã‘@iÁ»ýavà-^ì8¶kvÁ|N§}+¯õn\û9ha¡ª¬ù”ЗãÝJÎCr­ ²œ*Ê.[Œ);Ép¦RÁŽU«Á#È›‚aÔ&Wx Ãy¦êAÈ/§õ^;l)»Mná‰áñN¤qÍ.Ôônâ Ë‘øU•Ô–Ðèð]þbYP&'×C•dmªÃŸÒó[9¥‡–¡Ÿþ†8ÿ[šR.êЧ´™‚òRNE#Z´\;>)y?à}ƒP_p­ &ph¨) :ž;W+üñ.Ú7tsè>ü8Ò'ÌxZÏqÓ3<ªÊãMŽX6á3T­-^•Ã¥Ëa v¬zñæMS^pmæϲuò¼?"ª ¹á#“–kÚÙuÊ©™<ñŸþPNXã»"_¿Ë³é¤®^J #^è`ËŠwý¾twÈ>ZM²*xtƒ:4—,·tÒvôé ÉG6aʦ›ŽÚh£Ç2a÷)c'Nš0eÔ!ÇŒ=nBßØÉ“œ:vê„£ð/}‡L™p ¾iBß1‡y<ßÁŸ$»o´ÑÖ;m3êÿÔ; endstream endobj 129 0 obj <>stream +%AI12_CompressedDataxœì½éŽÉ•&øþw~ l¯ÜÌÍÜÝ4î՚ѥJ­B¡APd(Å“L0™Rkž~¾ïØâ¶Ýˆ ™JRR„KÜÅÝÜìØY¿sοü_¿úòÉáÅ›ßß>™öãnø—9½½}öîÍÛŸìäÕÝO_½úîÛwoùÒ~ýÅN-û:üt}>øÛÛ·ß¾|óú';åöJÞ¼á·ôógoŸß¾zùúÙîÿ}ýòݻ۷_ì~ôÞýÍËw¯nñþ½zù{|ýííëwO_½ùêÍþÙË/âíq½ó³wø”Ò?v?Vÿþdw¿ú9?ðìõŸŸ}ûíËÿoÏÓ:áµã›ï^¿xùú«ã›ÿó“ݸ{2› ï©içðæÿ|ùëÛoïüÄùÍóï¾Æ<~õöÍóÛo¿=½yõæí·?ÙþúìõîçϾÂ;ÏvÿqûêÕ›¿ìŽ¯ž=ÿÓ€ç·Oo^¾ºÅ£~ýìÝNM|ðÃO•~züîå«¿øîëßßb´ã«ÓS¹â¿‹Káªü?_^žþôk¼òåí»w˜îǵûõ¿óYp®?úÏ_ß~õRökó¿¿—}û曯Ÿ½ýÓ·òH+Ä?£ó7·_ó +‹(O¬í¸·»'þŸü—ðY<Š|îÉ´bmÆygñ¥Wÿö¶>·~yû—Ÿì~ñæõ­_„ÃÛw_ú­0÷–¿ý;¿þîÕíÛÇÖcv3_r~~þæÅí+|>}ÿæÕ3yzjûÛà7ÏÞ~uû;øæÕwï„ÎÖx¬òÏžýõ–[%WSËÓ#Vé5îóúÉêåžþÙSçÓ¯ÞýD-þcîé/¿¹}ý›7¿•GY°r猪Uïœ5;çï?M +Lš—Úþ7;¼U¿ÆÇ~¯W¿¼~ñ4œ­Ûù¬Ü×O¿€p~RúåÛ—xüŸ<±3 |öDöoo_¾ØhlÑ»Õÿ%k¼ÇbòG)§G§ÝC_qò³ÌÊ®Ê臼â×{ Vð:n˜~zúyFÿãþç_âQðä§7_“à¾åÙæ–âL€Gø÷Òÿå|ý»oü²øÍmþêíË×¼æð yg}ú«Wßá­{ûæ»o~úúo†yÞö+Næíë_¾Æþ¸;¾ýîÛ?î~óæÍ+pªâá-¾ùöÿŽ¼Îo€y}óÅgs¯ôÞ}ðæßË=NÏ^½zùÕÛgßüñåóÞm:ï§ûåï½Ç-A oo·«È¯ñßû¿ýåsÙÄÞ\Ë·Ò ÂËï1Ã⿽}Ñ ¾þb÷Ëßÿ~ÁUDXí~óöÙsœ,üž>óÚ—úù縴;ùÌFû×?½õàC¶»¼x‰¹]¹×Ÿùò/ÏÞ=ÿãÏ^þþÛûïö³—¯›éÊkÏÞ¾ûË›·⢽¸}¶é ØÜ?Ýâöͤü«~YN_ݾ~ñmZÿëF%?à +û×0Í¿~ýû7¯^~ûõFzÙ+¿ÂD_>uûå_¿}wûõýW;ßþÏ‘± +yõòúÏ·¯Þ|“Fÿ¹<í«g¯Ÿ½­¶ýgB[Ï ¶ òƒ·ï~w×¹rxùúNÕ—ß½|w»ñž7_Cr÷åŸ}s+O?ùeº )žI¤'OîUzÜ_gïÿÛÛg/^B +BY¾yFåäñ×/†üÈp½;¾þs÷‹[–u1zq£Æ^™œµ‹YçeÑvZð +Ç^¥–Ù,£]W=Y¼bóß¡³âZÅ f0»yz|ۻͮ¹×iêÛìšÛìšÛìø]èžP‚ KâŽÐžþ€w<~û7>åïöƒ=]ºžíxN4I«Om¿|ûìõW·ÿlP\õ.g=Õý÷a´Ù˜ÃØ^1Åûùçz¯a ò×ÿÀ•§ãùx9ޜƓ>M's²§ù´œÖÓátžOçóùr¾¹Œ…¡/ÓÅ\ìe.Ëe•+ã“ >‡•aÂÿL5¦fÔŸ0ƒüÅ+ßó\P®|9gãÔÇÎ8t†óc¿xå”6ϳ…Å0ÍzVØš{ÁRœìѬ³«]ìl­5V[…-½1<ïÉÍÁ8³šÅÌÆc&£2ã0ÝL¹òtêŽãÇ¡ƒüõ?"7ÂrOaùÿãˆdXÿßd$šþ/³^qôÖeuëq=¯7:å&gœu³£Mst'wv7‡s1{Xëáp8NXÜ›ãxÔ˜º9ÎÇå¸Ýñx<õHn¹:HÂÛÀ ²wÖí÷¿ µñ¢7S:ªã6.7ÅȱÊEݸެÌþ„U=`mW¬ð¼Z¬õ´êU­ãr³\ð\Ç冸.àd ˜àþ·¨eœoæ Öí4çÃìfŒ§›b\®ŽÎ£ Ì‚²´Œ)Õ´6¯ÆomWÀ¿Cv±ú²øÛ?Ï2­ ð#ærÁÅ”ÁÁ‚(ÀA;âÀ]Ì  „ŽâŒCép<8¦78´‡×à/Xžê<ß Ëˆµ›°Š%XÕÃr +߬#Ö{Z=ú9ßœªq£üßéæxs¸q7ëÍr3ßXF¨DɾŸÁnø+˜ìr™Áop^…ï_ÀOàËNÈvôw=Ww>¦qHÃecMcÉÆìǦ䧵 ¡ yRˆŽ"Ä`£õIFÜêsÂ=à ®8°óÑâèN8Âê8b—Ãûpp8âËaÆa78ôú £»À?ÏàGwWXÝþ`Á'&§Á1üYOãy¼Œ7jTJi5A†cÕ¬µ*§ê¨Nê )uQþ“6Újl¦^ôª>è£>é³¾èP‰&=M“™ì4ƒXH..Ìd~S0׸ÊXˆҹü­•Ù¶`a Ù/=>k +¢.‡î¡ÿró±ŠÑa)åÞV„çÆÃxÄ:c¥e•¬³Á*¯²ÊGYe®ó¬3Ô¬A–zÂRûÅ^e¹W,÷A–œ‹Îq‘!pRaè0L6ì€-ÉÇÒ^¬çÎÃú /opZf956ÏÇ ÏÉðà ð@P7ÏŠü §¬NÑLë€CåäpA¼à˜q­ñÐùC¢eøŸÑMcHã<Œçbœúcck´?GMþ7¹•—;|rr,N>€¾çi„ªf–eŸ­ØONA—°ÆÊs¬xÊ^S|E/ÆŽ¸4˜¸²Ëf?öè'›Ø§ÜÜfu¸¡ZÄê›fpœ™²¼‘7‡±`7ã æ¶ò#`œó¢&ˆ¨yÒŽ·†”Ê J¼b0§m>|Å[‘ñSn›ÌºîñZ¾"ŸÍœü)M½}Ò£µ8b+“Ä.d ÃO·VzZ×YaûüÙbü^aPË/èmó¼_íä²Uù”³ðëUOAõsø>G~ÚŠU@q¸ïæFB(™NÆø¨#ñÁ. ÄÈý ^äö]›^÷¤ýl>å,ü:LЕGÐÐÌøU^A«Tƒ)ý¡¸ù¨cgíu~DÇ5ÜA¯¹çotý÷ñÙ|ùÝ7ôQ¾ùÃ;£ÞýöåW¯oß½»ýb¸ã=ÜkJþCìǤìüIã)ðÊ ò5˜¼ƒ¹a&¾b°G3žAó@F7+̘»Åç ;ç`3½‰Õ&ñ• âx'ÿâg1‰ÎZìšiìšiìšiìšit¶™FtIÎø²v;»ìéZÉü…ŸÝÔ¼ÛôÓNk hp„y7©ý:Cä,n¿@¼|6 w}†ŸÅú9Ûó¼F“zføï¯_?ûúöÅî«ðÒN v^9›èÈÿ=ôx/ý*ø +nÄ£zú â7 ç€¾z¼ÿÀˆ÷RÞ ŽïJ8C›÷ß;ˆSn:q.н@ƒ ÎNºÔa¤«A< çAL¹%¿ëáâx ëÎ QüñÝß9áC|ÊÔuúßN¸!4ÕÐç+‘þ6·,‹?ÛC”67/â Öâ >Û〙­Üo˜¶JÜ¿'qüÒí;Ñå;]Ä­K[ƒ–Æ$6ÆEì Ú´+&Ú°$N4Ø Vì%Á‰)ž ++Ž¼‘÷ú,i[hÚéb¶$7›÷Lx¯¸1b¬Áû@xO'.„ø÷AÜ þï#fÿ>‰3'þÿœ†ì×ø÷%ü}«¦O0•Í±§;FdØÆ%Žaûo7×GÏÓ†Xpƒÿ§:>h@Oã*¾Æ£x/ó¸µ8­¸Wq:Åíx ŽGMhµâb_W‚<‚,ϨóF|íºð¶‚¿ý"wÊö^÷Yüî.xÞÏÁ÷®‚÷Ýç!8àtÁ§@’*CI>ÎÄïñ›Z.¿må0/r´\Ä_æ$ à.6 +sÐá’FX.;Hj{ý –üIÂU°’Õ(>‚I6ÅVñÿ“W%%¡¬Ñ,‰gÏÒâÕfLËn¾£Ü÷'Nƒ5xÄñƒ…+ŽSûKt3ûÝ]$$Ä8œ°üÄ–§eÚn# ú+žë¬Ø• §ûÆ_]…óYd;˜¾†ú²Ÿ¤¸¯-‰Ê_J6”[ZÚþvÕd`CvG'z61hNM`0 ®U^›Zá°´Ådw™1±n†ƒ[÷?ó&È›zU`¥Ud,¬$0a‘±.£±fGÌ[G´ +k™rÖìšíÊ,C »Pˆþ¶÷ Ñô|BÏvÑF‰I?ãú#^Ä’®z\Ä (Žì²Â”ë“nÖ 1áJ¬¤Ú` +KPÝ9!%Aö<äþùLJV 72j´z­[µ|Ï.VÏÆMдåB#ìcj\㼂'?ðKèft¹ÑÀÜëM£Â~Ñ<žœË9÷ ŸÅl>NÝ»úÞX(|€áXÅŸé’Ws 'aš8–bDѸy?í^2Ř²¡«ßü˜‚«T§~†Òƒš{Q+Ÿjô«nÊÇæ>õºŒŒAþqÛ ¢ôlc-Æ’ ¯0m2°F1Š˜:(á:(hÙCy1ÁÿG©Ñ L‹K-öRò(qdF’D’©ÓúX²–Íb4ù"‘rj¸Œ(3¦ì5]êº8Á5ê-X>‰&ãx%‘~6"&ÙáQb-”¸EA`Ä"ÀB#Ž˜;‰†¤Dݺ”ÄIt=ªËDJ+áÑFBGZɇ¯#6âÜöë Q£Y"JÓæ½ÿý9ŒèÁwÀZ$ eDßö>||øŒ2žºñ% æ½øKòáGRâËèé4àC"%E CT0n® +Û˜€ŒÄúð0ã(>Š#Ã>vâ£&>b²H¨d’ÉU‰Š…h1Ø1ÇÌœVرñZ­õæ +«M‘Z Óú ­Ñjo BG‡„Eà’oH„“ <!¢6 ‚ÇÌ!Q#ØI.#ôà2g!„–±²ý•‘m' +Áo9w;Åié$HsÊB4[xf “q²‹6ì¢ð ÙÁÈÂÞùk‚‘¥‹ýJ1Wõ qïÏß õxÁ1ìWŒ\^²šD%·¡³QbbJ«QxðÿˆI±%k1\6JˆY€Ÿ á?9Jí\Œü§ùæ‚m òOŽK*!@•¹›¹ ?2ò2X^†Ëë€ù•ø8cÍÅsø+›DFÙ`üÒü]E~DšÑf<ËÊÞK˜¶°·†8wèäYøqüñ‚y|‘¢Ñh1“½¡lŵ´ˆ«Éƒù(å³l–XYÞtî´€…|“,`oÿNÉþ%-æï ñë¾ý«¯Ø¿.Ù¿Þú=çÆïðœS Ú9áém؉K #O4j"’–yÛì·ôvÏï×»)P7æF€Z:@µf±¢]€k°5FÈÖ©@EzM¸­3ŽÛ ¤iDoÙ÷óª ÷»U:^•åº_exˆcå!~•àù8 Jw*pº‡ +©›pºævÑï dûdëd×N²cðiÓ{’<» (†áŠçð÷Y0Agqñ3¥È£b¯($,W1.=Ã+A9ˆ¥h‰ˆ7—°uscÿ^6·­k°«»pTÅ©3‚L™+ß“ËüOÛ< ¿Æt7oÍ]äz¯ а5 —C6ŽÅ8e#h¿ù¾ÔW4Ê–`¼¹`æåφóã"Tq“a¤¿TéìðäøsÃS#g&˜ýëJ~PÂ1ñtЊ™ˆfŒ¿“ +N”r$⣂síÚh÷¾°–ˆ|µO°¦IT6%pS oÊN5¾É¯]Û{*нW±½9ÝÓIN‡+Ã]k> +ob–{«¶<Úýw÷§<ºÀ¹eÔÆÀh¤ËHðËBÓn™´rôŽãåÝ-Ðëöþ¥YÓ<®8(Úò•µ ’Ù0¤Úô•½ ø½çyË@ ŸÕ´d¥èF5f6©'µL©t¬©‰‘)A}2"¥.JœMàçëŒC ŒûpN +hrg,&‡;𳚕§¨eÖn„Ý›WñÌZ‹“lű:˜§ÅY %6;b·âÈ ˆxˆÕš»›Éj Vª˜Pß#ø™Ìçã|‚¦ë4ÄÀ$Ÿ`°¯”pMb…K$ +xî@º7@wé +T÷¤]Duo +æ¦bš펊fT5EÙÄ«èõͨqz3×:/!Øç#wLàðê'P± è³ðšèYŒ¿ÑG½FªÅûeDÐSÔÏâ[EàSäSèÅsvÑ_šdŒÁMªEqD F`E+˜E3XD;XECp¢%Äq}ÁȘAÜx›šÁÿ×Êe¹ªz\ "çòr o›¬ŒT°e·-CðŠ®éÏš|¨¥‡5ÏYÙ»hoŠø°÷æŠßFg° +.bR‡-T›èuöž»%y©½ÿZ Ç!è²Ç@’Qïá¿^ã½$ý'ê@—¨+'Ý9:¤™M*ÿñÐw->¨ˆŸ72¶ððœ% ±_s…o(¤s_Ž_•ùwïêö¯îjFSúãõå CaãËÍ/3Åê¤Æ9F$›¥V,Cr›oÎô͹îÙ¬™ûÝuþŸ×PPÿ¨hÎ%¯~éãÏ©2{wÈ^8ŽePà˜G²×òWs2?n<6é³·tÄøho;úT¢ñIŸC0&Kt‘ô¢IOù(iu7â4:KrÝIìŽCŠ8ñ2yF;‹VnE3÷Ñ’)DLt`—ž4#{ 7ñà-¿à˜C5\9‚7%01íëv×¥”®høš”|R SbaÌ|•ÌÖ!¤²úÄŒEÄÍ옾%m™ÍšIöÌÒ,óŒà˜ýÓ6TJÛh7ò¤ ç½_yŠÆœÐeafBÚa4jÖ,Dí¢§1:S1Ý!ÀÏN-‚Ñ\‚¤Å‘ïÕœ ÈýA}q˜î¸’›»íêMåÖ¨úÊd¾:‰/ºdƒ£v(÷²,Ô&û´“sÚ¦G'ô±Í€ij&Z!Åa³|åCFaÅQºßsÇüØ$…ÉÉÞþœ:ãxeâ¶ÿÃÝ?JOZæVôNžKÑv]ŠcðBg`­¡ëT,݊ѱHçßX87×¢‹†Ì§¼á©lò'¯™/9÷$ÇàHîHö ª©Ÿ‚Çé,a†¨£SK÷:º}}ÓÒ“žòwƒš>HÔ7jéÔÓÏIO‡í):º×Ò½†îD??‰b~ƒÙQ‘ðê¸WÅW&í{ý›z#º…%›áÊE8/Oü™lL,Þ„ÄöEÄÂQ$ÆÈ<Ä £"Ÿ™tŽÈøï!OéÕsúûTý}öðÈYt»üö¿CPŽi2.!2+ æ︠ ­Å•§Á.4 ºÛÒþ¿—x]£û{¸ <ùCî\"b²zxH•ˆ€xè§(æ ŠÚ +kÈNôÁoÕ¿×,üMÓiûꜿ—ù¦Â¯â“‹ÚÖSÜNHûÕ­Ô܆FqÛÔ6¯´m*[TØ"Ž%êisÒР› Þ”²KТֵÁZf1­ÍnB¿ »è÷‘;yfÏá’wÍÔž\ñéª>W•ŸÓÐê?WÔŸVõÉŸMéÚþ\¨;¹¢³Èû¹Ðb¦ ’ÇÝÅþ9˜ô¿!bXg\§Èa;Ì£‡¦(Ç”ëuÈ<ù÷çZׯøOmªÒÁ‡&×V?öP(/u {{+~‘ÐD”¼“P, ÅIâ TMú“Þ%=ë3 "…cÜ×Ê’ri]’ÉNŸN"Ÿ²1ñÏEöì†2Ûÿ¸•íÏhm²ƒ}â~D´iñtXñgÄQÁ?qDÐ…F‚w œ’ãlšÌ ~³˜%]Å°ì$c[e)îÇ r½Àmb²C?(Û—w‡_¶À‹MÎÄÍ(ée‰JÌEˆ›´Vœˆt ž¡¿øØt||>üyÀ³ÓAhÄ5èDÕÀç“o§z-BTVŒØ¼ÉQZòÑx‰ùÜQõÍ ‹ÉÁ¥2üãbwf^® Y)þ-tt:ÏÿxŒžGéi‘KJ„zÄêEBåˆ='ö¯àö†Ü3¢} rO´±1Ãïm¾ƒÈ±Çg Ÿö®Ù ÎçëÎœBŽ—KR[{EEÄ,¹£ªH¬¢3Ü[HçôÐR:^²}Ñ~WÀŒnùiÚ˜˜Å +îü7HV|&Ÿ/oÄåo¥¦©Œó¡®¥v’E§ºiQKŽ­ö©g6GØgpkíöš¹úªÿSÎBÖÁ)µ’ÙÕ£$3c.NaOÀ0 I“ÃéÄG°-ÔŒl…Î9•á¦ë°sµwP¯v³Ùãœd°O?¿"Ø’i^y¢0I¡°fÔdÒZ¹U + èvÒ)l†¬ˆ•#«B +/vÅÊ òv+`µAŸr$‰T°Ú<sᙈ~ “ NÑ+qº# zÑÐZŸÄ1ËýRîÍd¨7}: W³¾"ò-âorŽËð7[XÊ œ ñ©tgBsfPÎ.€s(ð›®)xº¶Ù‚7ñ3ôpœ’óî‘—˜ƒÎ=HÏ :TpÑÿ€ÜôÄ->‹Æw E¶nB‰-¯©/¢¥ú€âès>è£|ÔÔ círßYŒl'xD Ÿ<–ÀÉ„›ô:Æ #êè6+|çCÒäJ\b“¨>sˆ2û¸ò%„Žµ0Áã Œ{³ü"…}éÇ)o#ô–îëÿÜP§;ˆJ ÅÀgñ±Äë½Ò×ue|òp^¡¼ÒY¬ è >ˆÏ׊ww'.½†+ë1Ð; Ñ'®ºA¼oÝ;@¶L½cr|änºt°îuxÔ.Üé1¤¡g5$Ïù`ô¹݈™ž›»è^gÑy‹bÞ§÷%Ÿ‘ÄB‚Û(smE‹óŠÙ¾þµLüŽT_tc«Cº•(Ý~ô6†©ÈH.)¡Ñ¤/QIð!üçtç8>péuðý~#ʆ«Hñÿ€ŒÐŽ³Ä$Ö›Yðy"ïÒxÇĜĄHú®g Íž ¥ò0ªXp9/·\úFé-ý¢¥Wìa¨£yñODßè”EÒ.aœÊ8Ú ÈÔ:¦R -òL+\ÒKá’§ôpÁ/øËM°ÎÏÏDõ1@r]«en–WRºyô\Gv4%v[õž²|±¯û8MŠ‚ô=—z +!œ­eÔÈ×ÅUs^Ó¹WEiÎãiÖî|VP§<姛ÂñÛÁWÇšwjÚ™W,_ŒŸÚ/K•RU¿üqAµÔY3›3›3›3›3›3›3›3›3›3›3›3›3›3›>æçïâ‚™M™MÿÔ™M‡ã¬sšê¬&[ÔD\³ä%Áš E‘ËËÍGÿÜÕ2ò/HåìÐ Px£ªŸ4u–Zn*tÒÑ* S.ɼ¤T)%X=êb.G7)Qç,Ê·,WBuỸy +ûcñjöpwi'uã!R”ø'’°– «P;þ>7(ãF€‘ž½‚qðÿÛò±æ,ëü€[+U#¾˜ÃýWŠt +ο‘D·Ñž^›ˆå2 ž²²r¼§¼gž™U£>Ý°?CÑÌ­læ–£5‹ïP¸ïNÞuüv:øê–!è.¸ä΢MÜlÚÄý¾µžï%úØLò¬Í©IíJG¢í¸Y]ÞXçý€=ÂÞ'½IÊ›¬¬|Æ—bß,z”==¥7‚±·‚±§¾u=ËÈ*]Ï5™ÄgéQõ¢J ¢‚ödñÊÌB_ðp:AC6A„òóßsJ®ÊXd>´Š„\éK fË}»ÉðuCíÊãZö[(Û~wöÛ{æ¿ I|€ +ø p˜b]÷+Jà?LZÝd÷Î~ꬺ0‰OœT·Ú=¶ZIuq*~Epy§&$ŠdYZ‡Ã`g5,é"…AN’Ÿ*H¸ßÕo¬B¢ØÚ±èðÂWÖ¢æIuŸÕ´>.þêºñW÷…ÕMK6æÖÆû\K¬jÁçûÇÕ +Äk75ä¢ñqÌÙðÜæÈ“n–ÝšFü94Ã;ò}Ùc*Cìç\ÏŽ×HŽ1¨yCáâØ"³lÝnbðñ"êÕ˜ͧmL}z¶V>[óŸìÙRW¶©Æ z{‚öClÇèR8Ã2Tè¸è{.ú®‹s°~U0z·Þ4ìKc‡e +MF(Ÿ|‹j"”¤ãÉI'F›Í\Dù¾"”âJdåÎ:@èi$âå8å÷â[1Š˜>…®!àÆÒ-ä,.…5¸¤9H\…pöºl?s ÁcS²Õ#€R%•÷‰_†„¦<=ý˜0•‡@¥k…¬ôúT†®Ìô*b· å*GWÖØÊ U9gÝ{¼ÎŸÂ›=¿©9¦Ye##Ç¡(óqÉciœšÀÇ¡¡Š|Q*ر5 +àš/ÑíOŠæçÔ|b¬šOä­'áÀ‡®b¨!¹ÄËÔÚä¯Úô ­†¢—@p‹¿_3ªw ¡J2:=ÏÐ=´?:HÊ v¨5:¨"¹ülï¼Úµô¼µEìÔyÙƒ™¼pòyS‘öP¿j©#Îá("–á:ë߶°éæÐÓojê.ÏM—¿µz…ŸZ:0¬ðž%§u· °VEò{ˆ· z‘)¦h{ +¶“³LâsQ ¤CíM }H@ÔKê[KøƒívT¶´ñÜb r4ÇŠnÀÐ þQº³„e&p` “ÅôÐcl‡¬×° à5˜fqØä 6>âÕ2­@Uc¬GÙ#a ÿ‚ÇéÁ£ˆå¯2¼¸ð­ÉØ—ŒiN.d8’ßt†¨R÷F'J[ƒŒU+f …à‹Õ ^ " m鎡×ØdžG±v-™ùãy£±ƒ8f†ç|¯1-zO.:IT/æÍ¡c³Ï Ši?éÞì ÿ Íi;j’vÎÒ…,µW‰Fl¦’÷SôBÚ{uèPæ[Þ â‘Žƒ¢Ü¬á9yoÂL7,¼0•³¦õùôÝG÷z°¾‡èTìÙ¡Ç­¬Fô²úªWspý]©êl€Êó´õ ZB¥§ãtR4V'¸¤Ë`’ª€FúúVÇPl#wžFô£üX@Ê1bç„jŒhÆKʦÅ)`p@žƒ¨¼Ôã\¦olFÐfêOjU=$s'7o殑3‡ÒÛÊS®š8‡PSí=Çð,Â=#èܲݾéTÄͺ 7›³è-./Q@h‰ÎSwñÔ.<µÿÖY´Þg™ñxd­_äC ¤ãòç sß$”íªw鄶‚ân‚?'ÜmÄÞJè?nÝ!óäoÞüS°6 tšÊñm=Kav ÉÈÓŘªÑ&ÀØÎÀ4‡Ìì)ÇÃÖ| å¯ï?ZéJ©Œk Æ®µK}›†tÌc릭ySDÎÄfc±ÝØq³! + B°4C(ȳÄîu©0ÏùŽöuy»­…XCÖÇî¼õ²KÝìbKwô*“ +Ú@SÞ€ŠòÜ ©Óû!Ôû‰ïN©ï]¬äG^Ñ1³ù¢8¤õ¨ ɶ‚Gw”ÖéŒ@,U&P•ÜÓM³©õÃMC<²ááE1"â˜ÅÑ +$Æð ÓUò=•É¡Ð(ÛqM½¼ª`}½òê8Ü7†;ßvï?†ùR>JÄ\ˆQŸƒýí­oÚÞÞò¦Ýí­n{™#‘Åîh'©{£B­›YêÛð<ÝÈá0§9ú ïj*»ß©’yy}Ó ¼ø]çÓ óø§¸Ié|5tf 6WÏü î†½š:–øyS\¡sL«ÂŠ®ÚÎr!ÌÖˆ“pû* kF5»i±£bÙ;&\I¼¢k§ºõ†26†¹ô´_ôºò¶[ð཭<)$Ýq7ÙQ[Gÿ5¥±¶XtçübóE÷*¹¡«ÓÍæê3üþ©»nýp·ü(·Êd{n¼Š ë"ýL¥³¼Õ½QÅ«õûãvlã¡õGvk³­C<ö”9Âw„o8oòŠtyg^ùáï'Ám@іpîuþmšþzöqW7Õ;z©Ê—c;R1«|F”Ï‘²Y·ví;¶û,+ý(ùÉ oµ.ÊHÇ5m¨ƒÍ œŒ‰tà°”f%V×-£xëØßn©IhÌ„2[üu™÷#ølÖ.§o—7æm '-+NŠ¿Ÿ³ë¼`Vë$É}ÑŒN´sbf0±ˆ/f¥\§=›&æýé&ñQç·ÛÏÁËt.ïJ½ž:Z$ŽÕ4di£[ÒhÝmÙ&³÷Þ~˃/-ZT 4ÁZƒÉú^ý–‡»{ØÞ_ (y1/?Þ_¥,q‘k64h­Ð+‡T á•â!ÝXÆh]yΟÉx7…YÊSÂ0B¹¿}Z¬†~oƒÔáàZ£‚4ªrCHÖ³©X7ŠwÝn¡»Ø6ãP'¾!ó]Ð~>a\ ÚÃTßAbky©§1¥‘Ç°u´!ë!ñ0ã+WUy©ò¸Å¨‰~yPÎLÅhå×VâN=Ξ¹8[x7h_;Uô5ÅÈ­{úÜyõ)gáÝYí ìªfŒÜo¿BC‰„ÇØû®fô$u]3{Õ¼M`Ö{¼0ݹ ?Ø$‚SoY´gæ¸I‰lí¤•ð:$÷Õ‘Ö%@ѽ»m^Ñ×Ä̬ö80KîÑûD3ÏO);.Pñ¯xGñ%,Ú¬!G7‹ó&X'ÔPJI‡`ØÃá¼â€+IqeöŸBå¤*ÈTüô“Ïe>¥t#ö±NÞc¼Ç:yuòëä=ÖÉ{¬“÷X'ï±NÞc¼Ç:yuòëä=ÖÉû˜Ÿ¿‹ >ÖÉ{¬“÷X'ï±NÞc¼Ç:yuòëä=ÖÉ{¬“÷X'ïû†ßÙy¿5b`œÅc¥¼ÇJyŸ¤Rží‚H­*RŶòk÷ŽËµ‘˽¡ˆd¥xVúÙÚ!›4êPV c‰â3øø•„q s >ÜsꊆW¹LÈjÉK:>f(|H¥©W×a úà!|OE!Mû;÷%±rÃ1yo +}І˜-&Ç%4ÑBµM"Læ!ôž¥VäóØæå!cÿ)üy2øÖ±2Vô;d¥ib~~"¢!¢y}4 €æÄ’“ˆe3†‹ÍH C¨sN1þH 99h‘s6xçàKôv@¤JÇ‹J‚NÄ#ÿ«Ï~ +º¬×gG!-28š6«á!6 b;χŠ9Q[FT4N!¶¢ðûù}üdgqÿ){‘›ll½Œ[‚YSGO†¾cØûPlyö¾ñ\"íµÑíÙ¶b±ù]ÆÛ| #‚ߎawé!¾¤½Uao·ƒ>Wµ[ ažek·Ò-&˜zV°~WOÍqÐqO'ѱ¼ÍâDó:Ãá7UŽ›7ú|¦[<æ 2øÏëöü4¼n—FšXR¾`I)‡ä"/!H}è(Œ-ë±gk7;+ûY„ŽïúêÈ”ÝáÞXs ê}Ï“í²í¾?4 «=.wXöw¨7øÊî–{Û;³áÄ â¦Ü×C±¯fKaíœWÙÕ!s ôrY¯xPª’/>7†=,±Eð˜ö³vYa¢ +Öf4k˜ô÷Nꔬ«eǫ̈Åàgæü‡æi*|˜¦Nj7Õðs™‘Ø׊e·ñ•q™`‹ÊpFFKv‚I;IîGèNb.ѽAwFS¬fmœ k×Ê_¦ý8MKŽbþ„sø8˹[¥¯¾‡å|¯¥\™ÉzèXÉ÷ÙÈÀ³5‡ÂB~°}|Ý<Ž`h]Õ=Ü £ce!«½È·NÁ[Ô6ò\ØÈAyn­ä"ë&˜ÉC*Ž™ÛÉœ¬jÞVu{+—'Èš‡ØÓ²¡sÓyÈ,ç5Yή±œ»9™ÍnxÈìæ÷°š“IÕÍCÇj6ÉnŽ%Qs»¹Æál>¡!¸P +Ë9YYª@ãØTFÄÛ·,çAˆe³´bM‘Â~¾’¤µ$¢ ¾•·²+/WnP™=='{zIDãÿíXÓɘ>e(rPÁ¬é÷²¥%.Ò5¥‡Ü––žßñ1äL¡ñ‘d˜+îµ5fkz‘XŸK;} ;­d§ã>û]žÓ.›ªŠ»l‚—dN®3¿Ça§SÕïrL|X²ŠšÛ.*Côú‚wEŸs;»¬'“bÐÃK»´µ·„ÏóHôê?=Ä"¿×¯Í³¡c¡Ýg{ßiž …}ö`»ûºy6<Ð>Û,ïºÚ}œ2 íš.c¡õ]¨óEqšZ£o,ð½÷;ýa{_ø]î¶É²ßS¾ßÃö;¬ñ«æš:Öx½ßKÇßöûRî÷еÈËý¾f“oñïÌ(®Xp¥]Þ‚7;þëý^k½6Õ‡;íô;¬ô +½·´Þ˜÷²Ñ¯›èÃ}®ìwǯæw{hŽ÷\ÙéêÊ^/Ò!Ã: wÚê}ßÚU¼CiÓ³kn»–ioù:ƒ_p}Ì„WVe,ÌG–3à+ŠääØeÁ9ïz9MŽ5yèuœ¯ØôŸÍŒ>‘MϺ¥æÛôieÓ¯=“~¥Eo«läk?×°bW+z Ý·tö¥2-öî‹êþïë¸Ñ™×Ý,?ü‡Îž`¸çkï=®]ðþ¾ç: äÏãø¥dÓ©ÔÐp–”¼HªJ=_–NyÔe]£}²À÷ÒQàó¼àvf}ÅYBí<­ì!ªÅا#Ì·Õ%Ð\Žd€™G”9Žà4„ÓçB]â‹7ßRÇ¥.Lþ0mÓx=ß{øŠ@ÈCp!ûTÌ9OÆ,š5Æ+[w•›ÐYÅ'cÆn*ë ­)}#S¯””Ä!M©%ÊÖ +%5?²f'yCo5Î)µc YA±“È!´wôc³E/ƒ7Sbk0IÖˆcJÃ#ët^ª±M{~šìµüÚc‰;tÓsOïÀ¨Fé)zxÜÿêxðÀßÑ·:ñçÒ×¾}º2ŽCQ濇{†ë¡óbÓäðÞ‘Õ»ò_ÞkÌý1\{ãCǵ ÚÇõñ‚ŸÓ³* 碲Ë—@/‹ÒöjºÄÒ´yUSáM*OõЈm Z³ö¬žÈ#O¢W«êÎ:ÍYóö¬±W¯ÿÖµÎ[Gæßל•ã=:n ©õVÛI¾î»Õë½ÕôàÚv\î®×GÓ¡k¸Ò¸ë!£ÛØëzKÙÿÜÎ,O¬Ãiµ¬¾ŠszÆ©q8ŸgSá\ž¥Êª/°:I:íERg–&¹9dŽMÌy¬&é•{#ÝrËÒ±:w6×o¯Ó@ÀÛ E çnworø&—ï–óç¡JK,“ÏݤÄ2-QzʧÌD©ˆ Bí°›”¢x z«W•)YñZá­)m1¦.ú!}mÈc4)›q +9q0úT­’`â$Õœ( #N;OU«9$lÈ!ä­”x;º³”t;‚ßÞ„nŒúç²×û·ëúnŠû^ÛWÉÌØr;?ªå°^«šÔ¢ET5sø~j&IÉ$)š4<¬tf^9óc÷ò³éû×>¾—]Ì +_ ßÃXýôŸg/‹Ý|*¸›Ã÷t&Ónïs"ýnÖ¶í"­ ð­W±­Ö³Ó3 B˜•|ebõeqã4ͳt㙜Å{/Ž£Tw +-—‚ ÆWtÞiG^(ú«_Có¡½ûí¯Úxáé/Þ¼þÕÛ—¯ß½|ýÕ“'™i™¿1üâ¾3ùw~õìݻ۷¯asÞ¼yõòÙW·07ãÿvÊÌ{ÖÜq³ÆÚ³ƒI¿]öÊAæÃ26PévÓ²î¡â© HR‚q¿÷ÿË-þùNþ«Âãýî¯òëÿƒÿþ^ü –g÷óÝþïq÷Âó×ô÷Õs¨oµûŸºwB»Ÿõ>Ÿçg½Ýùf÷ú¯ñçLJ·ïÎ/Ÿ¿{ùæõ³·ÝýD\–?>¾yój÷£ÃOÃr?½¼xùîÍÛ§GôØ’§¿yùêöé¯oŸ¿ûb÷¯øÂÿ?õ¢ýRhxUfÑÆá´­c(uÆâršÄ + n¼§“\YXm¯äSÍJn]Mµzko¦èùøÝ3.™fi9¨l3UøyÝ©uÙB.«>±è–qÕû ÇY°2|`Ío?Šönì +%q§ƒOê‘gIMÆÉ'`™€²?\c6ûYO»“\wñ×Å·Vð~‹úåÎ<Ü„ÙÇNYgëï<)<¸Ýžnñ`ÓÛŸX÷`²áºë~Á‰Ç×ݸà\­voXpÎNRóVfË OkháÛ‹Ã #X¹™…~+—™¤€á:[p>Ç5ÁÜ×QJÛ®¦ÝÕUû|ý¼„Rþx5NëNcjš2¹UáÁdy•¦7]á?‚ƒãCz¯ñ›£ÓØMfgÕ²_ ÌÃòÒØâÖËz<>Ó SÄDÌ~‚šŽ‰ˆE‡O˜=í;g& R~]´ÚÏ#ä÷¼bÕd6jÏdGµ’ëp*Â<d’“ùR(`¾‹3˜Ãš€M*ö:3†½q8°u£[Âì玗Ñħâ28Wì¼jFˆ‘…×ÁÖCà¬m8~*X!–eÀ÷&|‚‹í«oiðá‘æ=¾ŠG¢á8FiŽ¸ÉL¿\÷2Š¥ ?€ÿó‰07 +…6I™x&,.žçÆÍKHÃ5\_‡¶°¢ø¼¸Þ<óŠ8¢‹Ð’Û³¬!ˆ's‘Í¡4Å?® ¾ëŸ G_qN0¸ÃæãÐåž=ó00†‰7X„`œtäözƒ'>,ì1<›/ÐLœ¡_Gu¬,É(•šY‘‘¤G0R9‡p^¨ñ «¢*eؘ—Ÿ¸ïàœ²ÆEpó¤Fœ²FÜŒ÷q,“¼ƒv´Ÿ±/x<…{3a,X’'ø*Ö€J8( Š8ù„Ÿ‰¶PÖð‰‡‘e>…Âq:å‘Ç Èhê*+8-6ŠVʸ• q®'®ƒò\I›…\ –ïŒO€THÿ l¸ð[í¦%­QCZqé4•[¼b0'Ühdb.§1+}ܘ°Ãâ®$(P(8Îø£TðÃ)‡°7ô~ÓŽ—åN?{ÖxÅt@y#î4[vT†¢´j6 ÅuÀ'=É.~.J/|hHmv/`æÔq«EÉ'<«çIs&Ü _ÙóÁ!0×=«Ë:2è…1{¶h\©(ƒÈDk\[ª¦+'2z"°Q;X\3cäP*@P”K†´±;~…{<ÑŽU|Ø>°aìî F®*ÒÜÊV°7zAz»'V¤¬© + +vø´„==381Ïn×ÆA_ik‚Üîwä3OðààéãÈö³àsóƒ 'À+Ø,*9÷ßó¡Ì Ñ÷ä¿Þ8@Ø,>¢ÞÉkpí½ Ú4¸î·{ZáËë…ŒàÏfp8WÑr|6ðí…: çÝñ{|6ÜÎN{·SøÊ(·›˜±AE[,÷тǾŠýãü÷Ýñæ´é7o_€”þ5!®ÒÆ}ûìÕÏŸ½{ûòÿàû?¶Õoþðæí×þ­ ›Cñæ÷·O?uO1‘/ßýºûvûJƒ‡ý"Ò·þè;þ-ÄÖcÞýè‹Ýïþ×f1ü·ïä™Ïò +?Uz3´uÖ`†mC–Tºq?àŽb« àï‰mï)B æ¡ì4™¨`ì Ý jí0Ì %`çh’@êÎà/J‹hšÓn5ܳ'ðê=Cì¥ËŸø6ÈcÝÍTK@B׸œ¦”Çí÷Ò«k2`0PÎ`¸á볿\ý-žGnfãa(IàÃ+O%Q) Z#Ó5¤I×·T‚“K—›&ÞKÑ$‚­=Á€â$ 4AÖ±87/p°…äA¡nHf %gcGÑ…‡Å×éÑÖ‹‹gåÎÁ°+´X#k/»Î%]ö«mX2Ï8iˆU¯=à™÷\f58kË\sc§(g‰ ÂA'ÃòC´ób`êdÒ~"ëäU2†^4¶ŠX8> u +¦ÏZí° ÀËmî¿hÖù!l ㇽ®e*†gdÑj°LXS'_‚!‡õÁV •ÇËÛá|‡Ý à€ ºÆžÙPƒ&Ò güÐGÃdX&ÌÆYybÜÊkϬa‡§ËÆîã Ò,¬ û˜JƒlY°Á¸¸%îé$T?ï` âSPL¡@‘Ò;h(÷tÖ4¡q  yŠZm˜Î;9ð/KíÝ@1QP´Ü/·ü0'~kI0(±›D5@ôá¡¥§sʬ¡.Žmqbv”ª¸¶šÙjØ( @ÉT°Ê–Éî˜ÖŨö^{™©~. +s[p2±¸èS€R-Æœ1ÔW1YÜÅò4P—†Ê¸òu›^–Í'"„uDƒ/ûÎê,hf…yž‰‰È²úe¤*/W¿é­_hM{Z,˜¨+½ˆiÁXÅ‹0O°”nÏmOr·ˆ¡Ä£ "$âéXG·ÒÊ›§ö™š,¸¼L§~t­©§ò±av¬¤CMl‡d¢´1'ˆ!ˆwJ:lãä÷˜ºìLK¶1óó¡vïéôÀ}@²3Ýl +’¥jq¢q x_<• ûˆÓÇÿãìA3â‡qþ©ìS¤ZÚ‘´ ¹N“õÔC« &”Û=‹R¥‡ÑÈ×F4_æ6)v*ǃCM&hW[Ùäü?‚TŸÚ²3=™ç:úy‚ñBùÄÎðàŒr©ÍeËÁ)·­PÑ;¬¨5cyÀ³Éñ4p<è 8c¸üHþƒgGp<†fÁµ@lzž“¬˜@1´ê”æE´˜Õ+íOòQ¼1SÁÇ'×_ÙVBJ@ò%Cdø`'d¶0/ò`#Òó:Šcƒ> nÒN[<2EÑB.“ÂnˆÇ +|(²tغW¦,ÒÖß&uˆ{f¨tàÝ;pªÈ²^  ìk¥5L¥ÃáÀrCæ’!ÖÁè± žýB󶚱aæÂDòÁTÈmD~‚˜`åÎ|TØqâ†ñiÇ°Gû„à¦V&Ë*é¤0‚¨é;³r¶i1óꊎ/I|6J4nq™<âÅ‘¢îtö8Ù:ôd²|NN®îâù“•KYMZ Šnc<°,öoä†cÍ¡gâÉÇ1|žîCpKÈD82{zž@w`½ ¬:¤8¹&´…•Jl'N +´MqýQ<&,*´¡»3Îm‘§ýò–°SS0‘)Ø‹û$  å'$!–xG?—† ¿i¤Þˆ“G#‚•Æ¨ .åÏó)øWšØ0°IAü–ãÝq;úÁ|°ï`H<âÔKš7è7à þ ê7ýlqdq(AeTêÄârê8ëÇ0)åÕ { M‡ÎžŠÓ5L7¿|ýr>¥æÍø –¾‚™çÔ»ÈRü“[úCAÐb –x0‹å +çÊB ¡¸M‹ f€}À”-©=Û º%«fÄh²ýã…kQÓWÛV[Zîò5…D¼…h-¸áRÐŽ\ 6+/v¼Q×RÓ±lGœ\&Ò(ÄAx~(54. ÊÆ"ÐÉE€zeÓy€Æ¾…[)ˆŸx~`)­à~°¨„(%{]ÈÖ`€CZ¦£*NWç¬8]ÁÓá¦;Nq»fǧ2K U´…™€Ÿ{Xò~Íð#=3äÔßXHUE§ d .%3ç~sæ´é"o£¿^ÊøÎt`CÂFnÈû”'ÐêÁÖlÁCqý==X‘áBú/‰‚neläЖ~J¨Õ$Ëð]ÆÕAö ïÐçÄI¢€6¬¡ »pU ®£ðà]YQh¥WSÞÈDä:tºÄš;¼½ø¤ +¼/ÍSmtvBÏ+m*j¹ä·´SFÜÇ OK•TÜÖXe:£´åzM6”–ÚšBF[*Š3‡úY$Én£ö&elJº}Á†¾iÐ↖¿›‹w\㤒z¢¶—° ”  Ö9ª(–90ADèO”~I±!áâ¸Q&€vIæAò³^ü¬qÄ +½‰t¸²u‘hÊ$e ÇyOí ÇEùBÐÎxàñ$ô’c´È2ÎÎô_Kú“¡Í”4AK‹‚" Ü{uZ%ݱy#×8›7£žJW=Ýæ˜Ä"œ*j¶ä;b{a!’*Ô`N}¢Ê`YÃò1¨ÎÜò²ú×L¯E½§”Ææ`£lš>×MÐH`ð/”*¹}À Wc#Èk3ÈxGmÉß°ä™bé ÓÁ>)9}#Š.ŒE2aK•V%ˆA¡$ú“ H+šJ–TÃíÅD&Ær‹'Á?œ]h .™e\v<÷WÇöFCNB'"8f2HÛ·¹6TÌHS4¯£ñÈ7Z™ M2¯•,Ï^ڦЖÀ_x@ÍLÃ,Y´üžQI¨ŒÁæi5ÖÜ~ѵŸmÐá£ÕÍæ«…Lh¥&šé`ä8ñÐÞgº&ÌTØöNaŒß$c²œ\Šjlô Ð/?YFèï……šû ~€$Ï0˜/œ ˜Pc(dRzój{csÀë”ÕÓ\x@è5f  +|pÁS¯ÑmBvK÷*ÞD° ègñÒŽ`TJ»ÕÎÆK}§xØ8\:Œ€ú€õ*Ê’ˆÂJ'Ù:öµp1¶ê÷g1ÉÝÄ‹)N–žž’è bÌQTbf dZîÖj¾aìŸG¢±É}Æu£4Ë}m\/J蘓xªäLœPǧg%6³ÁMg¬ºö úÙaW'ª¦í”¥®I;Æ?4•q‘Ši[sÉpð݈çÂ^cíf’7ÍjÙ^C-Z"¨°¦ùæˆIÜZ©Ä=V‘Ü F¶Éõ‰¥Ž3ºßzJœÁÑU¨.’ Cä‘‘ãîxxŠf‰Aâ:0E¬ ºƒõºƒâÄÑw]¦ZI‘%pèxd@ÎBÚ‰bz¥óG ÇÚ +›ƒŽ¯yyFhpy0z{À÷ÚõÀv«ŒPÔðg™&øóJíaÆÖï¢6LJ1Ô¢ŒXÍøÜÂø±â̲³b\Oü¥°aV +»  `™C,ªþ:μèÍ5µ0¢™uÕhžª†…‚ì1ÉpP땘”‡Îø9w³ zfÿH2óŠ‘ŸD³ T1 Iã¯pÂõŽòFìC9sÚ .6”ÁGšÀâ1q.PFMaCµ|pÊaÍèaEœ˜ÒžnJÌDZUaKÛüÄu³ ÷ày<ÙùÑP†3†þ‡'"Faל.°ü+¼ÒbSCŠÅ#6ÿ':{M‡´<ì“@¸—`vÞEöÀ a¢“dal5ò˜clʼn•'à^oT^p e©_ãóÔp=Τb^ ÿA؆ÿˆ¨iyc”£´ +æ‘öj— 2ìÎxeÃlÛ´diÛÕœšQtz°„&ÜÅl@—‚Ía´Cn­„*w„`@†¦+2¸…j v%…T¢³ñ%.M=7²–gŒY/´ù*!¨hk²*žÒ7€ * ª /ñL9¦°íÔ_EÆ8+gL·²ô²‡6AŽÄ‰‡©E??ÅSK¾µXL©3(* D$Õzƒöt^9ËrxŽZIá" Ð$h3 /C¥4¤ Q3kU&GA5 ¬Ö£x­4ƒMrskŒÑz:6AÇ£ã o48\.×ÀЩÉ{UÎ¥P6®¬yŠfÎ]­(J˜|dhBKÓækôM:nmT3+-UxŸ\Ÿ^4üJÁ%ít(­~ÌG¤/’8&s¼V¯‰Lp² Ôñ鎮5sÅ@ Oz£Ø‹'Бýâð¬a…j»€ƒ‚€=’Þk“BÑlqxËŽKk²¶HšO<:aÐ´× &á.-oâ ÜÞ qäÓd\ +ÉŠ5B`VÑgjc¬ýDmË‘R¨9µS­MA²:î®ÃØOÇÄT´Ö óRlj~‡ö3/ØwËt«éŠ1Ê#éÁ_8CFVº²~V‰ƒ)€N^ÖÆ3Ùýå`O Ì¨|Ö¶7™0Ñ ¸ŽfO’]cµó‚T|Í­ÑOFÏpîÖnT» ˆÓ$ŧ©…ÏÖÞb¦ îÍÄL9¶ƒjœDŠ2~°7GP$ƒÂÕ¡œ@™Z ŸúÁ¤£žñ¬¢ÎÔþòcq€Öœfaq„¿9æE7~‚œƒŸ0tìyµ«ò)G4Á®ñá g.ôhg1ej÷a£@CA$P’è/¼WP?|¼ªöwñ I²z£WUå.ã'FUÊ‘ñ1ƒÊÛhÏ5t‚”"Óku /,X&Æ=fѱ+7>(XÎSÒ(sß 2ÞÄ7‚OžwÉ›ˆYEb|i}¼–"Ès‘,ñp¾j&¦#²°vz—I¯7nýmj]¦\¡Ë@…dÉ=]…Ç«™µÂÈÈjé«Å~x)Cüµ§W¢wf­ŠºWå'æeð°–ð¡‘zkãböÄ@›Â‰EÕz¨e*ÖO"2¬Xíß&ub +ËŸSëj\㘅÷qÕuQ#µ Ñ°>³I±ÂOl¦2.X2¢Ú•/¸LBûðÂBïK †£¨'àHŒñAª wÞ“ÖB‘»k£4ÚH×FÂSMà‚`jDc2Á3P‡=4lX<*Èd¡ÏOSGL¸ìI°Ž³¨eñþ€µwm4 ” +Ýq"˜I„áÌÔÁ°ú2m„­žHû‰ÞµŸj¦þµ‹[ǯl’ãÎ6Ɇ(b0³KS1ðYÑcˆŽÖtÜDT{‡¡‰Ç6GªŽä6§² _9Ýe9ò†&ìÜ°•&jÝeOMлasM¼¼a•!ÈÞã³M`¾a×ML¿áø $ +9DA-€Z,B]-‚¡'ùZD-A[èD-|àE.»[¸F-ú¤G£>4@‘®ÒàLu&"S¢ÔÀXºúS‚iô°?4¸tÓÕÿÌN£GF”OÔ<HP£¸žz€¢¨÷60¤Fmþ³L«B15êwÄ=5š{ƒ–ê Ôª±#”Vc‹4 ¯®MÓ`ÄÛ¨—5öUû‰žÖ~ª2÷"®1k]×Þ,ÁwÑÚ`öò‰ŽÝÜùTev7`ÃÆb¯Š]»¿9¶W©’¢EZö|ý ˆ³q4Ю ¦6®œ}Ú¸ƒx5s"5H×ÆÕ€d7Vƒ±ízÁˆnãMkÀ½G® ÷<{ Ƹö6àäèPl Í=wdˆŽÎÌBÝxA#ðºëD­ÑÚ/6»7n +ïyƒDyt%×ôÆ ÝØ3vƒzoà `¾q¢7xû®3¾ë7.ýé£M~@7˜Ð~½J4™ M`£IlèHš¼ˆ&¾ÒæVÔ¡™6G£♩ë‚ÐV–xò±­*T$OMí˜O=É¡«¢MÔªd‹™˜;ÉqêD­fÚ” ¶A[¯£_P_öT½˜%ÄXs@[ÓÒ@¬@äl?‡ßö,?±2»Uµá<Ñ!铧ɬç&$ˆOm•l!™:´è7 ‡?Xª8Ì"”óê•uXk‹›TçÍÆ-¢ãù0™Ñ¶ñÒEkÌAéyÛB­1b©r;Å•hÛoÕñÝöÎuŒ¸y€:Ôü¼» uȺ]Î:ô-èñz[|ܼÞÍ:ÜÞÒD/lßVýo¨3âÎáÍÙˆ …öXÕø†ûS¨8oŸ¥–%^ÍLg[CªÄhÄ-—|+¬³×ðqô¹T4æí;jΚV$ëâJ*+*ZÿÐEµelŒ bÐ!)»´Y% ý„<7î@ä5ö®Ã}5°1Ô®U:/Z'6,9>Ì(4 è¯ûŸ2â§nl$ ¿ñK6ÑñWÑÚ—oâéÕ“ü¯~{ÔÜÊ: +lŠÙ¹oó‰jþÏ£ó¨øÝ÷L›7ó8²gÀd`º©XrŸ°R¡ÃIûq‚š9bɉÁ ñÈú#É—hè­ƒ—x\ç:õZ¶s¹oOž—{¨Mq°™KáKIՇŤX3œkEå« ŒáËh23Ýiw •Y÷íÙ…jôúSLï7¬T¹€'NÔ!ëCÃ|úEÊ 0f¦KØNûíê|¶3¨vû$=Ñ®HsfUkv•ïC}Êjú[éÐ2ápUoN„ÅIŽE]Õg¦àï*BÚùîYÚ¾U‘ÕvŸšÞÂìžw>y³ZJ§‘¤:G~ya í9‹ßª—(ÝçÊÚÅC@gˆ&’‰˜¨ÑÚRÈ0Q\¼PqX‡%¾)Nƒ…†"X‰:I=ž 9ø,”‰f—Yý¤®©¼P„ñ"K!Â`$4"r”\ÆÛì´Å<0B‹ÄÊž§‰eMäaPT@8«½ÎGª×úàÀJËf²ˆG²R‚¥1&¼ëŪ+³ñf½¿ò³ŠR…¯¯>Œõgi1½‹ƒµaƒà²Vbe ‰¨Í  𘮛颃jŠ¥¶yI¢–¡R»t®µa•%©§j4õŸ`½gÖ*‹ê­={ôlY˜ÐÓÚ[MÂQ¸ +„£8š¬½]᧬ k xx¡ÚTœŽ½¯žQѧ°@|1,IjêÓo€ç¶¼Á" YÓ§]C+‹ƒNÈKMâ„ßHik|¸¿wR,Ö‘,k«½=q–^Wz ééT4îêS›µwæáB§½ØébâT¼ƒ%ƒ<`Äaúvc;VROÒ1JÕ£-®}«¹¡Ôˆ°Ô¾µ^$£,Ì—êk5-ãÝ0ìló¸T9K‚®¿k—Œ˜G–@Z±>¶]ùžÝÒìe/+ԲȒ|]I,yD;kѬ™Û#%BY%iápá´ÅÇ…ñÕ³˜&Ît×ñH(å8=–nnƒ£ý·ÄÓV%F;,ñ.Í1¯ÏbèÎN1ø´W ÀâÈïýuýÙw,Ù#²¸â„%vK ²\D%Ö¬jûRÅå¶ÛÔL²;¹†ÙÖÏÖ0ì¸,‘ÍçkØ +‡z ZSoc+¨zTÐ +¼ššZ¡YSd+|»y#ÄëóÑèõkºwT[µ¤>é×5škzY‹T`‰…5úå†Øúe«½ù‚Btz±/ýÛ‰þËõ‹O–‰È7Ø´³aÉ´ƒLPõ4‚ ÒGé‹êdUnþÛ¿¿¥nŠ…îÕ½iúîÊ6Vê ²¡Ƀ۪|bIé–Dø® ^¤6à„óÏÚ€š%%¡2@ç'î$ºWš’k¥W´"µòæQP¸q ¬£_˜ ¶´¨&%й +#aY•‡­7ˆ;“¢£'3Fý% +ÕJ[e&^g‘šd,+È*s¬Äh kW,„Ÿ²4>ÉCš´ÆØŒQã$i½âÔ&üÔHUüP2ð÷…VŸŽ¦4ñ5øºžêU¬9‰$ôÈ_ð5bBXaµÃ½Ù,Í&¢@Eáìéb@ʬ}¡Áœ’2ó:“cEÃ;áL'-¡#ø?c;²§¢4vY4 {±@S$k&4RSœnxb±¹<ìÔ„;±DÚꤪä"!)¯¬`5cÀ…¥¤#ó È&âá”k5”WC`.v{Š·Ña¥«€•Ç^'ãç!¡ŽZ,7|´˜gÊ.â°n¢%»YŠDº$É•”š£l>)ß–š‡ ôIR®'_~qÆã44™s-Ø…='*îÞÓqPd ë†ÇwNúrA‚¦ô$1Ë`%¤akm]5io滀øܨvO˜ +0Î+c×ÎI©5k +å°N#7d·}Kª7ÎÂ)W–´,®‹oï°€ÒùJ™*«…oj6° ÂÀñêô¾,ôPãÑ'÷¾÷ciBÆG‰Nƒ¤‹N:ë‹«m_%ÜwjôDcìÀ秙BøCB ² P]Øó>þ­ž7qCÁ7D­Yf@™ùøk÷QÉgPa­Gܪ©†UÄÍ35ª‹TJ&˜Gq´{í9ÂÀ×ÑRÞfö…úS5àÆ—X& +IÂ…×f\„£B™"rp¯¡¡&é7„š7+ñ7bOéÙT”Z¢ñ²FðÊ(ºÄÜ™¨ã¬ôf™æŠ¯GO¬œó$fžc™fžÔyÏ£¢Æ»B>x÷tE1ñ ¥ú’'+arÔèX›V&ŽC¸Á"×£â-5iÅÀ%„°'ïÚö*5NÐ(Îë˜UBè&yä!­VºTS25¿L–kØ6ÁÓC¿èìë´ó*Â3¡nIî-ƒy¸>€Û–h¼“¯€Xš'F ›k¿>ú ŒŸÇ¹3%67¬L…ºòc0·p·qÙ *j2€NLk–BÖæ(jâÕòÅg|†>FœøyémÓé%ù†½Ê„Hêí‡BÔøc•]2b*2Bk&™6äȪL€ºBu$d*)R× +{S…߸ó¥Uâv8\JP~íaK0€¶Äâýõ¨õ\X 3&ì5 !6 ‹„ºxu±–´OŒaøÈTª€aDóݬÆÔ{Ÿz?iÕàpK ÀyßtI¸Œó—a‡‡µCOÊÃ0U–+Øjç”dIH&ãÒ´ nI{d@ŠL éùûˆldñçÅøPt„X—'¬½N}HÛ¹Ôg½ÿL5§hצæ6ÍòÖ¼ª»K Ïk6»á› ½4ü·Gw-¯é·#ª3PËq¹b7vºüôÛ§¿¾ýæöÙ»Û´…`uuQQÖ…»—¶û'I{½êÚTÒ½úM˜Œä VÕµéKm +j³;]Ð{¡ñ²jt¯ 6?%±}i<¸ª¶ 6u_ù”ûE³.¨ï Ò’•§)ÌÜ)¨M#‚‘jDµµYâ7£ÙC¤•i jËT˜Ç> Ü[õ jcja­YQ{m jãœú´íºŽ¶feöeé—ÏæcZ²lB¤.Umm­ÇàÖu³5ñ`Üç ähU¿~¶&*¦)Kšdmýl: ˆÑÇñÇ=yêêúÙzay)ÊfkÌFŒ$¢¦rU—Íæu¡¼.5â¶*6¬PÁ–±5ÁèýºÙ\=Ú̸ëwOmÝlÞÉ_‡ØtÕ–ÍÖ,"+E3‹kÙ«Ÿ­m`XqMK[>[ªØ‹mìXB¤S>ûþ£÷ ïþ:Ã4ø|mÖ0† =¡Ž¶¦#’ŽEZŽRýÙŽôÒçª?kS§ïšópD=2HÂØõVH›©'ì‰-汞x~ßÁgäA_„|ÓQÉÆëÃnG'ÅÊ„{ÅüVtKBXK¯¤·…¤¶¦”64õ¤’6Ø»Ø1Nÿà§%!g›»UÒžs,½ïëá–™x¡*ˆ“Y§JÚà†]ÿ9 ½ï©”ößk‡¹1^R®¾õÚaë«"ñeÕ6ÝÑÌ÷¢òE¥Z-SÛtGrcTÙk‡Y+žãˆÇ[Û¦;Lx¹Gé²ð…ºéó¬aj™JMÙž5Ý‘´˜IiI‹±ºÓu‡§÷ŠYÌàºK¿ëÝ°š¬ØH·×¹íºsuýb×òPÿ(„éöºîÐ[êkô«ˆ£¶êº£iäà(2¡Ž&Ûv‡˜'Œ f¦÷ÚîhÉÊ%– 2•ý§›¶;Z#L£õA·rÕv‡Ð)¿(°ÉFò³^Ûé#E>*Së¶;’W¥èW…Ût+Lm–j§£ 1ùFKRb˜¢O/…Ä^-µ^-Ö~ýâF¦ÆòÇ”—ÞpƒÌbÐ*LVòzí´`¾Š2Ëœã!R‹Ícqfª^_a‘gðXÎY4¶û¢¦#Ž¶^5hú™˜ìXŽéر˜4ýªŒ]Ạ~½­æLXà‚Š€‘ +áYÑj>œÐ%”Uo­É9dmI#­Cmìæ¼vû¦·-™vÎâ<ô³Õø:k›ˆæ·°€èTô– QÌ£„½È"1± 83y¦b½ðø{^\<¾+‘‹µNb˱„.ÛÙp‡h£C",¾;V¨e/3§Ÿž3gªm¬~Ï´¢IŽäBQ”Ìgr“WÆ äS*Ú'ëÛ•.Wó•ù5#ÄÂKc–¦(ç/ò,Â1f1BQMÈdŤÃþ<š±mm"Fˆ˜HoY +'o6@1À–±ø»­¿ õQz>b/jé’"jènšH 8aQÖ™!ËðEhšÀ;Û‘2úª´“ ]¸\lŸŒå’FÑ’-ŽƒÐ¿AªŠ‰ÊòY¤ŸØñÇ’¢3oAšcµ>ÒÖzkbÃ[JV9n9³ìklC¡CËblϨ—Í{Wx±FÛœbÍn/¤Òû³Ü^·v6¢ú32ÉÙâ<æ5$:"ÇhÕŒ½Ån´Yã„ö!U‹Ø½Cb«9Àë\Ù͆q"ÚÄ„§;…( õv$f 1ôa• 1úh1A€I䈋%QE+?´1‘«ÉëLØ’Òs¾í y¬©6 +ÓÉf­RÄ®™¤¿1”š«4ÖrlÇ¢„3H²<‘ÒKÑÄEIP‹‰pD¾ù.S,?ã‹š,¾¨ H)µŠiÞÈÌ4oúiKTgöÕ%Œ• %ßÄÆ÷kŸC¿öÙ…ž7ŒïxÏ+I0Z?ÃJè0Ó)Çè¯_¿\Ì©~3= t§9ÙIy ‰¥X“Ž8År½Â©›a^,ÓÖô†ÀŽ•õ'g©‰µ5½‘<F„è†RS¾“,ù#×bÕ +úêâî‚"oÐqÉ)ra©*6,5Q.ÆjK¼õ«0ù©UoLmL›ÉœªèÞWuJ‡„¥ªåà sRL:T¬<¦F5VQÅËO"S¹ ¶§V¤¦K§›8f”ä¬`üG¾A(‹”Ê€ÕØÚ× @L[Ũ«+ùgÅ“rÈKâeŒ%·5­-‰>ͼßO¹klhÚzˆQ$ÏE»1Êuq%ÄÖdXF·±øeqS¶;ók”z£1Þí÷MÔ(©q“¢ÑšÝ³ g”^‹]rIʉrºÑIª$rS1d^K©Ž`—!Ô°b¤ã_ÐaÔ,Iü¡îë¼)=ZKUŒÅ÷ËT%f2°dqÔ«¨œ“ñã ‚*ô¦‰Õoj[ýfÒñ¨iPÙ!wƒ Þ”AP€/4ÉÝ +’‰Æ[ﮫðuF÷é}¾úz®ÓÖo&M˜`'â‘yXIwf-¤™­yGzNæRáÖ“g°¼™×í[Dvп; t:SìCᢾ9 ÷>³ò)âɚ`ª²ÐÊÈØê²Ù£ Û;ÑÞ/›ÃÈWrÀD”L.?Ã[ä×tÃ&ãˆH5ᯎˆ‹+=B9V´$pGByÑ2£–β½Ñr£HwxnæaC³ˆ– “‚U*ZŒ´.Eò/,L¨KÏÜôZ¯IF*ó F˜Á˜]¥œ¦. _ØŒrŸÔè…†þ¨·þ.Æ3Üö¶ô¬RûˆÝ\–½dâ§Ö´°¤êVÞ¾–è.vú ­ngÆ]tr(/…Ï,\s'£ƒb1qJ-y e.…×ca­33' kËÒM})Ð쨗æ~—ø‘­Ý0·Û¼9ò «)›Óe§Mrá!d;‡ù¢„KÙì•~*tT“2›:#œ›™¶î)ì@O{¿hšÂ;ª­W +AA)“€m®TXaN!´².Ð"ò)vAaº‹„lzÍOfÖ±\¦NÏÆÎf}¥Õ‰brÜÚV¯ûI€nUá›±€¸¥Å&ñzMß’8‹^»’4÷ªPzà^s’°4mK’¸–u颴Ý$aÛÚ¶#~{Ûn#ºåšÝ4Åž¡Õu¢Z:íÕ›JdÞ”« +ç¡­tO¿PV8iM­x$›]áøv |¥/…²`‘´…ÄßèÖ! <¦©byQS-ð­¢hšçlm¥µÀSi¶À%»Ý=GmªÁEÖÛöò|ºßÂ#0õ¦f]äþ±Ê]”½ÒxQ˜ÄzzQØÔøZQÕ«ãå[S0ÈÁ¦€`”™ÝúƒQÀ6å ‘Ü”@lE{VA±Qšº‹µ*Ñ”nl‘n ÈFiJI6*P¬B™§^ÁÊFÝj +_6šZS<³QôºE8=±sJÅlÊv>Ñ)+ÚùTUž4*Ä7*5º[µÑ›*«_×gm?Ð+óÚ~ª.í¦Òlc¥t+Ö6FNSù¶1šê¹Á¦ê•ÞæWS¸7ÚiM©ßʶëöÙhìÂXo¸±&»}6c4V;FkS9Ø·ÝšÊÑN…˜½¥ÜVnfu¿ðs°Á·rÑÞFoêJ{¾_•Ú›þmKŒè"hÊawBQD;8šÊÛÑ1QíN^Œ^Íïäò•Âk×H]b¼ñ«t+•7n™¦âytä4ÅңקWj=8ˆšêìÑ‘ÔvoÜOÝñóª)4Ý]±4}ã붵¦.~ルKë×¼^}þÆùWWùo݆Uw€ÚãØí,Ðø+›Æ«3ö4h¤ÝF{µi¨Ðºmë¦ í'zÍÚOÕÜ8”[,Zåˆî¶«hüØÍeçx3“æÝ'j>Õ¬Lí·oW·vû_Ù¥*j6¹ +3´äQ‡(údÖD8jb­C# ¹×•î¡©Ã2ÍÉ«:íá­ãAý³_E“稣O-¯©bW}–UG¾Ö×Í®ÙÄÜz,·‰Ø5 » ö5¼>†û¢¢,6'F"ƒ„jÖ=¹ÖF=k±ØÆKk‰ÚD[s1œB³µÌn‚¹¸obÁ]e¡ %7ªF…ŽÊI»îª4Mä»Ñˆš yP¡ê@{WíjÂôÒÖDø£–×àº=-TAÒ1k,B·§EehÝÑèÈ ˆ¢§a7ŒF=oÀ­Š_c?ú¦B iMŽ6i”øF×ƉoÖR{i¬6Ó7ÖjÐMkôÕp‡|¢gw¶Ÿªí× +fÔšÀ5H©oJקö:5<ª5ë˜U×=P£´’S¡ÆuµþˆÖ÷kÔ¨²Ö?RÒZKkË4׸uÔ\ë +X»®C©Aè5þ¨Ú×8²Z„`ÏÖ kwZƒLŒþ·ÏØsÚ5hÈèékð“o°F_v=‹5t³ñK6 ÏÆ¥Ù`F{Ñp½¨™Ú¸[K'>‰UU1,I’°{§Ÿ’Æô¬”ÆhâfZüZ.Ø4Í"E6I2ŸÊ¶éÃuЮ½OïKÓìu©HÏVÇÛ¥é5§h–؇3Û½©£Ÿí÷‚§ ©Ô¡×†Úb¬¶!Ö<°[“z ·‡¤Žߟ Ái×Ý)ȨÄÁ‚õÞ±• âB{ÝÀ¨·îL dAx&*i÷\—Œç6h‘DJÊmôKÏÓ%2‘ï³6ŸÈÍuŒ’ŽŒPZ¤ÉS[_‹¤¡M‹„Hsm¿\Uào'PWño¤×  ]æ:Í¢Ö ®îɶ’þÚçu»UloVÍ"Zo”o3ѼÞmRqýÛ¾;]=Š¡øÎ}›Ot:´ŸªCPÎMZ>Á¦\kÛ\¢c¯I5Þe• +äŠ ²{× KØNáÊÂ?/ö‡ð+ëʶì(ìk¶Õ­JV6ÊîÔYWêJï ʲvZWÐÌ]\§ÓÄìûµ¶Ò‡ëÆñòM«˜8©~§™ð(õ›éák.R¯TMç5Md#š7cC‡† +b ˆæ¼qÄßò{¾]>Ð@Öˆ!½º6tHÌ÷yhÏZÖ¢Càñ[õ:¤û\Y Hô&̺l +AOˆ÷0Œ½n¡¤àê"æ÷2ÛNawšô³ˆÚ‘J°íˆ§µ­h§°M¸Ø)u}yjßÞV…˜×³kkÔÓšU$ØhYtúbL8C’ØPWÊ—šE4]ÄðâÖÅö½yç¼y7­WšA´\ÿç¤hÁÒp¯îàMw¶,éž2ýþœ\¯n_@-Þ×ÞýÍÒiÀÂJÑ…¥®Ä¥Õk¥ÀO±kž£MͲCM'ÑóÅ·ïö¶MZòí5ƒà§$*HÅl:Í ¸â*œ ¦¢\o.tƒ±µ +k×xUûLDvKMÈEgiØLÙøÕôwn–—x YÖñ3WºCðSâ5–]×MžZä|­ôzoé„UèΦÉt¥E„\Õvhuš|í˜Õ£0„†Þ5ÕiÎÜ@ªtÏ ÖPêÞ±e'±Ží±Ã´Åï43}y;G·~Ð.àuy:½ÌS‡‘HA{ +Ú›Œ1…^"ÆfšYµ(/ã~ý[õýê²ñͬ{ÕçÛ‡¯«Ø· XÂo7¢gB´Zæ¤P—ô¯É¨× yغ¿@CÍu‹‚æPäš3Û!4§±n¤Ðê^C††9Ä~ _‰ ¶”µh˜ZúRÍÓmvÚeÖ›§ =-O-ŠEmÄH³'(j¶µi]êhDcCcxm¨3Jç.q7½9$‚дæa»¶QXšsUש#²—OÝ%baÍ ÃB!„;™Ç.ï×%âÿgïí{uË®*¿Oàïpþ‰-Õe½ï½óU!iZA€HPYÎuÅ8érY¦0âÛgþÆ\û9çYsßksm ÝíÆ÷ìg¿®5_Çã÷ÎÕͪ?  T¢·Q5oãש£ÕqsS¦+ p+ìYX’ g⣽CÚÅ" DѶÌøµ9+›Ë‘ðYDA´ÿí§©õgºh±rv x7\ÝjàŒq³SƒyÐn†LSØé µ5¿QÑÊ Ìá-œg‚lrQxi×oºc¨ù†¡›üJ|Yf¹é®í~^çk¯Ç!Z¹pÍ)²Fµðˆþòö1êtuUê6¯ï€v‚¼°-Šrm^UÝê¾°Ñ×z祔èQ_ï›/&Þ â²&¼ùØ +c–C3“_ß¡èÎàhÖØ9l©m(ºÕ$¼x “Fì^¶ÐÁ8(ÜH~¦Üüh¡'Ž^)Žã쨒ã‹X)—û\Y›ã—ر?Ç/ºHÇ¥°òPǵ㳎 såÅŽ‹{åÖŽ{cÇѶX<ͺIã­¬{}ÿHÓ@„7lËúRƒeÚ~›Û°…OlbXÁ¶nWY°ÑaµFë¾®ø÷œÃ]Òú=2sG˜lbâžE¯½×Grþe;Ê"` E6úHGerzØ–m"|ô‘‰ƒñ¸¨Ó3Ço¡¤Ã>œXÍrž¥$p'= ^‘¸JIŠš9G¿q Ê­JIƒÙü²H@ ¨ÿ[€Cj’ÆåOP3ºÔSÊ/(%Æ&ã†À¿B£”’úá}¼ +’íÜ)%u–#ªý=¥¤~_©Ã@96JIǸ ûº‰Q)iS—‹ו‚Ra¸åR¯æ`²2H%Aqf‹Ø®0£n¤’ çT‡™ƒ[µ3ˆ%‚¤ \-Ÿ¤£U“È9¨vX‚Dõe#Ÿˆžª±½}µ¥u¥ ŸÄyº™ÎsAÚô“„«i7o¸oô“ÖÝóÍþeúIâK.Éù’¡ì<«¿#ŸtJä×^Wf¤=5'|^¥~¾ZÉæ¶êIfù>Xªcnt€Â +òIB½™åï ¥-dóØj ýæ Zþjê«v´$›a·P«¥v[ý$µR`ò7Ÿ€ÁÂ`ýÛ?¢ô“½ +lûiOb›aÕOúbxë'.é2ýèäÕ~o™|ù„쾪îI-Åú“¿¶_ÿâg/ôõ×úñã?~÷Wßÿðþƒ+-ýÁ)·- Tî4Óu¯Tê`‘ 2§Å½¦e`ª‚³E ³ôú÷ÆZˬØäšÔKGPÇ= žX) +ß³p¢›Mrf¡².PœŒ7-Y<,}d]™9<»2FÞŽÐh:& ûxÙ}Ÿ®Ð`ï.Í©¬P ; óbv–ìÈô[,ìT e:Û´P«Zh¤¢¸yTñ~ü­NcaïÆÙvV·2Y€µ<›ÑË'ßâMÀݳ3è¢b·yJ¿b0T›¹‚2Uíüà~O`>¥gù²r¨Ú‹ +r>dÃsdºÿ8p@C8pKóQ¢Ÿý°W®ã`hGgAÙÍÒ' [Õí0µ•-ȨŽú²óp+‡hä Rý†mErÃ8l;bÌ·c9%¬3h=Œ2gpU”üÜÊK¼©è„¸º\ÌmÿY ‘yc0µðö:µ0yñ­ kkON¿ÙNŠNµNÁNßb0¶5׬ü×ï¹xEÚfÊ5Ô«¤Ð§†ëJ<†g“ t`ƒ\6Þ4¡mÁî@¾Æœ‹-Œg4ñàœº_[OãÍJ\äc¸ Ñxkfv¡žO„ÕhëQ¶ƒm¤fý¸.`îÄí{á¦Oqá3Ú/P¯…‘èóÛ×ÌZPn_vÿ• rËš%ÿ{Ár]ÀÒÍó+·²ï€|ö2l4=2Äܸ¢à`×ÑÀ€}W»ÐСaa¹ì8˜t°-Ô¿á¾² ÷<±E8i{¾¢'.Àè í9}u!Æ(jš¦Å¶`<€«A튮öÁÓ7K<¦·̇²ÌJ0(¨£–¶lÆÍ>«Y¨~ˆÑzrœh€.h>aÔjÕR²×ø,%ÖǤ¹\ûº¢lÍk¯Ì@gÏÂØÉ\RÒLÝu/­Ûªƒž™>8 è ‚Olöñ“¹o.—>oTw,®í‡] µƒ~™]Þ­šåiÃÙ·˜tOìm¤²íÓ´ævŸÕY ÏA G¾ÿ@c²lµ!̾] |Fõ}„ÎL âS5‘wg,ìÅN¼°ÐÍþð°À…Ø;¬:ét F0n¹ìKý“ð7C‰Û‡_ÀLWZçPúDSâ"–°•X°:ê@ø³˜^ôfí³ =+q‡=«=_¹§ˆ›¯'½(Ûýv#6lHsjf8_”výì®?«ï2e®Þ©½blxÙ ñšüôÒQ·½mïß|q‘¥`~NÍÍÎ3¦ôò˜¶2g|î#åå õOèñïZ[段a,pDccw–Ó?YËä´|ØÃ|”½h3ù2Eñ°Ï¶üPÎH³“´9ˆŠåüLMž0Œ®ø×”Šµg©À@-…|µÓK ™áÆúøö¶/eöŠº˜$[°E(}³–r€_U,z ­9¬gÛ!8³4xñ17b8ʶ«<«$ÄDºD•›ºÎyz:iƒ}f&[Ô¶t!úŸÝÖ¾VjfäcU³qLl@Än;Iwìݪp­¸o6¹Y¤Ñ4­ÒÞ¹BÄĽOæ»pâ·¸)œ-:b²¯fpÜÚ/$víˆé¡mËaP´ìÑá8 «´@»³5¯7ÑÓ)Ì/š³DÅŽêÐDŽSN´+Q½·Z@Û«—®t1à jËB×I0tiÜüTs¶[^¦øSžÉŸ²ñDa ©Ÿ´Ã$&Y¬VÐdÔúæ@øËÅDÛ +ÁeZ4‡_Jˆ¸Üh#.‘ËÁCEÝ1û¢ŒæS–ôŒY|#kæsHÞ«B*[—ö(vûÛÔŸx»Q]  øa?/ªI3juˆW\Øl < ƒÉf Æu—=¬ùçƒ!S;f?9¢ß¼g¸puô wwW¥·Wù’Ÿ>Î$9”pX>ŠÛ‰%n³¤©(ŠQµ ½1@å0FÙÍžú¸™ìy›œ°ÐU1êPxvLPP±ËÞyÒ`ìÉ|~ßVüë0'… g±#N/eŒÊU§ãCª†¸ P7tï1Ui•"s U„¥ãÔ³¨‚Òò*ªßº½WÈ…Ûuÿ,zF¶,ÊħìJöQ˜m¹^ÓŽbÙ;hZŠŠÚ‹íd2 ‚4ÃõÕX~“ÝÑÃ^a‚uK̨BÚì4å†ô‰ìò:T1´s{ÔYUî¨:¯GTÕ; åÕEê¢W…¥}éL…{Ð/À{a45Ÿ’ê¤<¢@È:¶$ÛÚD„žh³é"* +1µŽå†ò­Ü5«uª{ta_.8¬P²9D™Ä\q6­3Lƒ–ù„YÏÞ#GTÏqì;ž²‘© ”—ìtèµ2óªµEÐ|~~òWOø*›Ô¾DÎÜ|>Œ@Ÿ*C\RÒu º ’²+éó"¥ªÇ\*늢ß w¤äHD‰Ì·LSYʼnç\F­@@G¯ˆ´Œ>ˆî +m/{¶JÉ*/KÝW£¯Çó„#Î椈´¥9þZéØ+™5éf!vV[ +à +#-t±Õ|ßì±¼å·UþØ°(b“:;¦‚p+áˆÝ#Å£ÖWƒ2/=,»Rä_/bÄjÜtj*Ål?ÓÚ@ Ÿ›jsv½cÞ¬æ‹ÔmÔ·««3«§óÉ›ÅÙBÕD½›UÍ (NïLñ—c¿'t¡Ôu!sÄ›½Å×+”¸¨Õ§»ìN‹æ+µDHµ«í?Ἠ$Cƒ¡Ôh+hùyÔËÉsÓµ'2³B6¶7[½9CÀiÙȧhþT2º ›8ìÁêMh—lU;"©Öö¦˜Ê‚aüÆÎŽw«…V`bRžÚ]™¬9x‹•m=ˆž—¥Èó8×ÕQ£¤}Ò[fœ2x3î1†Xžž€Ðn½¢Ýƒ+»­NµÃã`/ ¬ÚTÑ1w4Ô,1fkyçß;±š­½Ó^xÒÜ&X¼çºÐ/ÆŠ5Ôài~Á…1üˆMÈÒÁ¸¡knFÁ,ÓCJŸ¬d;BáU$G@g‘Àî£/ÎS$ ™àG©1Šë$Žªžúµ òuh‰³‚2D{Ûˆ’æZÏ<9_U”âKdÚïdÝÞ:ì€1º¥6‡¬À,šC18öwxAÖ“ZÇdwæÕõì¤Öƒõ_뎛øG¨kÅ Ÿ]JædlÜ’†˜8øSþÔÌôo²6Ø å Écn›Ü…&©f:q ÇüCjo„ê'> mÓ¨NQšÐ•Ô|&aê!Р¦]rÌßâ»<0µæ“TiAØЖã9)ß›î4åYM›Œ–Ç•Ò;&•Åš³TG|÷ßc&þøÛšÇcè¡# »P à7¦‹}°·5î—lwön΋Dé¸!Ðþ›êhƒ„ÙmpŒwª$–«NÄA?ÔÚÕ +êÚè†ÃÓÊ4uÄ$ p¶åÞLfôáƲQÀ¬•'UîK ±'í X¼böíƒPþ¢Áà¥ã¥r֒ۆėڛ{§×Q­“kƒºQ¬äqûÆ´Éì xÿµˆ]Q?$Yû¢bŸ¹û]Š¤¹†66͵thK,UÌNßV¥Xûa«ûjhÕ§Û£ÿkª]ÍvûR"à#µœåØÌ¢ÀU*›jncÒÕw¸ “.°ƒ{¢ùˆ¢n¡ù¸©'ãˆ91dE•¹×"4= -óD¬ö3”°qŠÛ -ˆa‹Up‰Žá!ÑÙ÷Åtz‚–ìÀÚ“5ÒŠò´û¼]Ká·×»œ{×À÷‘ 1Ú¶h(ú8à0êN'eëpÒʼnhBЋSV?˜Ë«}×ʈgñ6~Ü\)/g˜?ȱ»G9bÛáåÒ_»7ê:jëØ—eÓÂhVínbmZºk#Éoû¶3lŒ]×cbK~NŸ.{d­’¿öMÀŠÚ§Ù#{9Ì÷'{ðö<ø@6ߘœ8M\£ÀûÌ/ÿ 1.Z¡°°Û«øüƒîÇI€W¡Š· õ¢µˆ³Ñ!¡s±¾ý>d–ÜJ´ÓC;O)¾Å»s'$Xê—lv6³ždxj„¹£YGDÉ ™1¤*zet&AUqÇÍŒîc4Ì$€üו´ÜìJBt¦ª)± Zh}ñqðÉöq€09:UŸãb âá¹$]/ ¶v8ßodNU:EI6[» ñ†p&ð-ÑaZ¿$ˆ£»‚xu6 Ã*z¢õ%ÞËyø°W2ïÉ|K|¦ó’ÞËÇí+¹’ç“wº§¯ÖBt‹ê¸ XOãÿÙe—Â"ØŠ_è"–ž·Hïd]-< ÑlMçbY•¢Ž”ÊnCe>Å‹^’!ëºošzcœ‚Ù}¼­ÂÛÝÓ(Y„èp¿­ðlÎgaOgOÑ7ûX\bƒ#`µÌ}ülèêBœp¾Ü†ÄÂsÓN{=ãa~3€ö§ ÷iWëÕ@vØ2D»Ãh=¹À£ ¦L§‹²Á1öf³QE#øš-«ÝnxaûúöWó™W°þ 7]ú“~¸­ž£Á ƒm_ŽmtÕNäŠá« ΫñÆ&©7¦GføäóóÅRkzybžühƒ(4¥¥sT•‚nšàKzÒ|›ÔàÌíLúK–g§]ãˬðD!šhâ«·ÀÖ]Zcý1‰¸û„‰‰"Û +Y\¥ËÒïÚRñ¶Qÿ•ª½"*Á@43Åb9›@K‡ènÜÔyGpk Èž´ZÙ“Y©ìLÚ“Û$§&c9K JA)ù:Õ6°Q”zL«ít0qrx¨±FÃ-1f@EßÄÔf‹TòH*pMÔNͱ„ºÆŽˆm ïY•”aœ¿éÈ1MàQŽ9!DWú›‰ßyJ7š¨Íئfp“ÀÖKÊÒ`ûì"µ›ã™Bês1FÉ3™·ºó‘5ƒÒ›7CÏ›'N| YX#ÕÉ›¯€›c6Žø83Ÿ§¬0žg&”|ZðÄLz˜ƒ;ßüaúsú,ÈsÚ(¼Ø&8¯9õ’ÞxÄš;ÛêS­æ,Jë¯þ”ƒc åî l%"y|U<±¶P‘ys„<ÉL»àÚ×Ø­ŒÁ³[+ÍÇP’hì‹Îèù³Òcak%KzB½w'okëL%5¸£_B‘…#ÌL¡[tåÅRMƒ’ïd@'¹˜WZK> ð$¹µZÔ,¡&ÅA”2r¬:5¦nXšÀÍÈ>>ÿSõª!ë‘áÃÓè± +Æ•ä>íJI-E9k5­Ñ±k‚Ê€"©/¡"gvôƒì€mp°¹±²× ÉóÖ$\óŽ× +!GÉsA‹K´ªŒ¶6•û mÎ}¬V¶Aýê<Õ:[?½ˆ*Ìȵ^ÊPãÀœ–(Ô]9BÜ«€@Ú­¨·ÖoÓ Ä!§& ^B ¸1pAŒbk+AÌ*É–ˆþKÙ¦n|­HÛUÉÃÂm­·—»˜ÝXÿòžÙ~¤„¥n^àÄÀ6çÎ[jê‘yRï>ÄÛº¼½¿œ¨_¸fýRß×{¿5˧¦@cT‚BäÒN`Õ +Úí×Dä¡+ÁuÏÂV-]DB@ìÛîç¡gr +øÃy։Vßjm´èV=¨¶rké,ý"Ȇí©E©þz> ò5…¥f¾Ú®½#… l|TÍ<ú‡O(Œ?´'Dl…÷½v±Z½„EƪÝÄnXëP‡ Å⠾ˌo›jö÷¹¶ì¿õx }¹Æ?X(w’˜É¡½g–ýB‹ØâÀënï-ÍÁí&F}í+òæ…ݵœO7°¶'Û­j¹47‰+åìv’ÆtÖiY䕧0-õÚqdÁ©©KäqÌÂQëS®=߆ð‹ù8ìËSS[[Ç$t@ψŠ™—›´´ ÃyB;ÜJØ®Ÿ‰X‹o"² øˆíê8‹¸‹V¤F؉ññÎŽ~ŽÃ°'Á¸ ËÎF(Ìjéš&ˉÅÙšÚ€ä &;€€nc0Doî[Ü,[/aí[Ü£”Š0úÜØLÀÈQáÍ©ý1 ö´ÃYÂK ÷ñÎk¿· •âLVËH}ž|7³~¯¥d(;Žx”ji¨ê®dUâ„'=TÍ®dufø™ö…;Ò +žfº”DÒ–hC¿%ë4Y b-”W)‹rz|+  ¦À¨ÂdØe«ô¬Ò †suÚÙ…ÓjHªži0(êŒMU…”TO³ü©œ:BL÷Iâ¡>ШÜÓ¢yHàwZšÇ9FÎ÷c¬ËÜNMÔÈG«^‡pÍdÞò°ô9èl§4¨ +G’M Ÿó¨³ÔÑá ôFŒ5â‘(*d³Aàw6}|ê +]8Üköò-§;¡*#$vK˜)ݽŠÓÛÒTy3“TT;¡¬à»‹HR-¹ÔTfïDsW[GïÒ(³Yªúê$ÔHí´c©~-gá+ê%¬—?)¶wîF@*Àf¤üúìÌQ$3ßBbóÖ@ÀˆP¤yÿö9ª ØS¨^ñãu–ÿ¹ùîÜÂófgY‚Ý,Ÿ.¡)°p¶_ywaös’WuÛÕŒL¬ ¼ÏPÿ¹ùàÑf;@‰ˆö03VPõ<6쎱CÇv àµnÃÇãíö°€4b7T‹ôˆ¶6 Ç¥p;}cOà5RÛiäŽg<Â៣t^è4Ø^âB ;CQ9Á 1¬')r“£RÐhó9ÄÄ…„• $߉NF‰‚I´L– ½"ÂÆR—í°åvÁ>I:Ÿ¶äHî¼72¤ZŠ*„":3£lÆ=4§“£¢/ÁlTª“L]O¢ŽÌÐ}°vÍ‘®öêaŸŒØæ<‹!Œ·²ÚÓíƒk<?òõÍÝ~`ûâ£Y¾_ôDëˆm·‚¢c\Wbt®ËbŽ.z›ñ?7T Ö­u·¥c¤²Z„ψv>5aþµe4ÀckeX¦@ óèGKEjæ#þCæà7e‚×H\ŸµIóΪ“*eI”»H¾D‘ÇàœEÚT[™(%LM’v§Ò8<PJskµã¡Ù×â¡£Ït8ç…Jq¬qûŸ™N¢Ê‹¦é|¿N Ù[Ò@J¼àÅ›Xºì¾¥]àú¦Ï~ᤑ;é÷iž"w 3óÖ“Ìú@¬•J5ä©aÛ¢ôˆ¯®óª*N–QO1ë™UJLÂ6À/f#¹²| :O̬ÿ“Ü"æDr‹^³fÕDÄœ-g!=nî8Í~™¥ðñ dŠï©ÂÒGŸPÿpOþð° êxØâÃ~â1Ìh dG!1 æ€ÄRWL*Ž¬ž+Í!WZìó¤ð%j·ŸI4Øü±‡TÚ[3ir©§p÷(Óe¡)Ô8i®CPE\Ô¤ðBNy\uÓi«I$¢e Ú¬”èê'®Î VWÊ온HøA{<ÀÄV#3à=pVn!s+01‚Ü[ÉG¾“Q¥bÓpGŒ±Béý˜y¼ô“wç 3â8I r›“L L\Êzb’¿ëö¼Îþî.ûæGŸÁÝ2(õ$;чv± ,º"ý¹ÇßØ&†KXÚ0éObèRáv°•‡À4£'RÒÌ~ÛŽ…‘3Óp„_¶€ó!®¤Ó…¨y‚Þò«Cè‚*ÌvKÁÖvf-½0(N y7àËí;KP È•}bø‘¡ªþÍ‚´áBj³Ð\·8þ+nÚÜžô‰Ôºv"h@Ãý9Ü€.ÒDã™$ÿÚš"êk2@ÿ‹ŸÉ®Ôi›á‘m–倊=#˜Ý,$²|ã_Nýü›×ÁÈGý&>çÏ_ÊÿªÚ<€*¨Ø׉„L±h›· XÙQœ–ÅhL˜PŸ‚Ö`deÞÆ"0„2×âé7+öC´‘˜V #¯¨Oµ±.²EyŒê™(ùª¢™xú,US’ÅlSWòy1øÂOOŠÜ9Y¯Œ9.ò‘ÓoKŠŠWI,<v ¨­yänÏŸT*ª³V.ÿ˜#ƒr•Y'Ý£‹Š›pƒÓÐ`‚’ŸÅ¯\¿9÷’(s±*ãòiÎs›Ú\¨q$ y\×Q•Rû ¡úæçÉ?¨5b^/˜%RÈ©˜{ï~ÓLõììéØ<6sª4Ì@³Ü¼9sèÝ 4~´w>þŒâ§ÅãØ}GœŽF‘ €è×ëÂl9Ká{¿‚€ƒÒè…,§nV"?c0sYgçèi5w7±çYíªà›óN´O`¿Zïa=ˆm$ËL¼Ågr¬«Šð¹?Ê^Ïo„¨Ò‰´Mr¨l´¼T <ÄÂœ@6Œ?bÉ'î¬9|aR(è$@z·ìåóçEr .Ø ïÚf±ÉT«ƒÒ̯‹íi­Ž»Ub·D<.ó1ö82n‘óx8oý‘°É?_·e¼òº½÷O°Z‰ø&VKßæj±¶_%X¾ðqƒÑ ë#߸̢ _WëÆ,+þ]7r·~*>®¦Š dGØ•N˜ ÷@@Ĥ>ÄüOHóÊlšWöÊ»SòHÓ »d²`ŠšOê4NØË´È"w“?/>"Í—Ñ/X-hy>I¥ Œ?*]| ­C¾’Ýb­X e»þ 5 ä¾òåµþSÖåäé'!=&¦å ÈŸJŠ´+AÑèÂiA"À)Ã!ñ‚¹Ý& +3„ä`‰ ɱ"aÅçÝ\kWWB4Jl‡!X^IK!.ƒfÑ… ç½Â…Ï,¶–âYÒ±Ny"3¡#¹Z®´!Ëjr{ãÜoîàÒˆÃ$2GÕñïÚçCr8Ûi*OT‰P‡¬ª¹–”D°’ß+£ÎõæÌo“ç…*ô5‡4ï@9ÛiìÒ”.õMà?ªôd‰ S³bhöêÅ™‡$˜‰D—¼vš"¨º§€§HLxð [\Õu®ŠhRÏž?ƒN¶¼(æ[¡x%ð¨XNê! ´áP›@Äí´d~^ȳ(‡úyàbÊp5$ÖEðñF|_ ´ë(7l6Ëgåf_L§,­ õœŠ˜}z£b£mÐÞ•¡þo«îLÒͲÌâÀ‡³ê †(yV±!‹:áw³,Ö@Ιi“ñ[_p€ƒ•NÏ…WÎôÊËÑö:=Òÿnr°‡+ãi¿ËÚÛ ì蛂ŠYuz¾Ü +xŠz*š,¬K³½ÿ¡ÓóEtzÀ÷ª€x©ðW÷.‹¦ª†R.¦%o\Öuùò"…®„¶moqÀÖcQø&³9uTM†¶ä½¢ë¢bO jLdÏö®KÐGó@íL×uVQÃX¤Î¬Ýظ.‹P™¾º  ”ÖÎs)–Àø-ÛÆuô +¯4ëžÚÆwÙÍ6=Ý9Þñ]œ'e¥Hã8v¾‹0ÖÜš½§œ¾‹ê+®Àö¢ÙÿþŽïºf7òºØÓçÆw]§wi.lª5«ïf(õ… QÙû.õÅA¸Ð·Eç$Û<`ôY‚3¹¤˜Á­ÏjH^C›„X©×Ãg1¹BåÖ–üeû#GŸõé­ó;;°×2’-ÇGiñ_Ÿá¾ž%Ñ,;yÇÔ&*÷Õ’ŸR¨Jn½×ü¥¥kº¡Lº!Ç ›37þ6—CpŠÎàW W!¡`ìè€gE¦ý3|×ïðx`¥·®ë‹?—ËxÊ/ï¸~óòøoÃoY>Г6þC‚Tâl¥Ó‹Ä«Üs—¥¥X€„晜X¯ ¾Æ€Ÿb‘Ìl2ÍU`ikfNG ¹ôi-v_ôÉ`PN³~Öb– snCªi’Ú$E§ÞÔÈ EÃtoÞNÊô÷!X* ºÕŽ ¯•¡ÈŽÐ‹ìå†MÌî7p“ôáìbêÃu=ꡃfM¢:‡äqÐØj®éª[Ü~lÓÅžÚÍÇV£¹°ìtZƒ>Lì nv²mñ4Ú ã=±®ŽÙ Nš +¼DêÚ(©+éîBeÈK>ïŒð*‡ÜßÐ…í½5.\ièó^üS')PÛ7e·oÔÍ‘NOÁ§ÅŸ0½' 4êø:&„‹Øú,3ö-A”~2BN§ªÞ㜑gìË5óŸ¨5¼¿`*~“\§«ƒÙ.!·æe©Už¥r¥ê¸K¸¡«°ÉrœŒÙ^H>Ì?Ü]³Š… áxU—ëEI—Úšê*úÏ#¹Œ­-;‘ Eö àŠ"VS{EL¦¥©`GO­hpɼ§çzÀMšÖ`.ëžÌ6óZ˜yùäVûB=´¯þÎ$£Çã— &š½í’Ðj¶Eõ•ºhð]¤ÿÊAÝl´9ËÕ +Bã çHZGõN¿ ±'õ4œÐJQS>¯£Æg?=m-Ždoì«l97ФÃ8ÎϺœq4‰žÜÜá}¡g;à‘(‚vf«è–j/Ýî/—¨½»2þõÕþ઩ˆào®R5õ,äÇå¼âf:/Y&[QæH/áB嚊K¬ 幎¨…ûøU0CÄÂ=˨àüùIuÍuÛ¸jôú"ãÚ‡íG·QÐû•È¹HÈí<îCÀ½¶)1t{¦ýV Ð²[¹$¿U²F‘¡o‡÷Xè ÁJí©K¾ss®-AêO¿2MÁ;($fCŠn8SÎbŽ/Ñ a|® ’¯Š:õßê<öòQ°6çÓT„¶'0ÃZ‰0u}ùä¾U¥˜ -™½¹rªè¶Óqw?Q^P&e[Ž¬QX<ÍÃ@œ‘N Û@µ® Ä<œÞvÏ$Z´ Û%ŸO³u© 6c½bW:¸M'W² +U?§öÄ% ‹ê)㘂·YëEØ»‘¨î  C‚êÎû¼ £'ÜŽ:³BËG·Ö|lÚw‡#Áßþéuâ"Â{/-OêåŒ\ë¼ÀáÌÝñç³l+‚§áHPB&$ž¼Çœ„AåKž4gèÅxcÒâË~k~$I£‹Îæ°à+”¡^¶‚쩆Y -¢9 § }öљʋy€½' ò†Œ—Û< â.…†âÁdE̸’³] `Ò#ÜwìZ$‚­xýMÀkôÛ,| 1(jRñ…ñþåzäÔ¸Þ%ÒZ©»<  ˜•ΩTöŽ;( \•ÅóƒçLàÓ;ì‹Âé>…P¾ñtP•ÛË +˜»‚SX*îWŒuyF°X+Wæ~¿‚éX%Ì$ðü¼&¥fºau—$´‹”°-Æù*NpAÈQÏϹÒ¸"$ÐrÌ„¸½º Ž?!ë²*À縓!9Œ$%öÏ{6´² Íy6 ÃÉÀ—·í¢¯¿à³}µÈ‡‹…J¢SÏG6Àð eß/Uüú×Æÿ»ÌD:¥Z2ö5os‹húL#]@’5hj*T™ÁP‡\€¯U˜SA"®Ž¾ÏMŽ! ¡ØC×TÀÞ„5¡ï—y-©tbš¶ç¹”¶l2êøæ)º$àa¦ ™€ÈÕ$(°u–}&`öøÃPW$c]sÌ>ù~ïL ‰°›Õ˜(ûL:µ&±Áæ˜ @”&ö*ÐôצÑÃ` шße@tE.(¸‘cV`ööÖåNà£Ô»GŽÞ%¼Ž3õÀQÏî¶Æò°t‰ºÉ«©ä6ÐB=ˆ4l¡Öc“p¡^³5%à“jžJ0žRnG_‹ ÜÕ½—”€•*ÂT<©hÑ×” 1/$ÔH‡U/?¥¢ÐáC_' ¶¾I ®áZþð|“ÅÑJÄûk n›Юƒêº½R¨Ë,S©P—5æJBJ@X `æHö)+R¨. æSPÚÒ¹Y3OoŠ;¹ðÙ¶Mma•À}fF^Â[›Ú8Ð@’zïÏMméÉÀXÌÌÜ̶©Í&gzÙ1Á™”‰Ö^¶¦Ýîó®-lMû±ÆµòVc [Ä6|#ˆmÍâ>·°ÝBp±Ëçö¶-lD³Naþ ˜ÌGlasŸÝÅD©€X[Ø  m’Á6)û6/ö~“;Kmaóm/Ñz ªª%ö°¹[˜Ùå<澇ªØÈ&dTÖ¶&ïj±Ýô°yH{ñ)ñ¦ö=lž Ö?@ Y´ï³‡íÊMh¥•±ÁØîd7I#}_`éaë LËou9ºÙÜuÐ0™]çÝí]{Ù„×ÞÌƲe*b¿ÃÃÑËÖÄoA]ódÔeíe¡‡{ô² ? «Þ8þ›ç×õ¿…b~FÍ™TßL'&e_Í·ØYãù{qﱚŸašúÄ8˜æÇC5Rgh8ñ–ã Õ|ç‚›Ÿµð§r¾î…¹/»—¡"ÒZÎÏ SFªç}1?Æ…^Ç.±–ŸOT·%üŒöðØTîÃë|·tŸ¡k³½f^ YÔc_ºs&¶€!zê3–îR&ã…xVQéPœ +VƒÜbr ‡Ò='—“.¦+–îu“T°*%|Õµ†ŸËàùo:ƒPÄ3%éãAws"~®ÃYò˜b/Ô×"¾€„BŽ™q.“Ãû.âo~¾ñ³¤Å¤A}$±S­Eü-(+ñyW ÊHÆlXÄ·{þp1k:~(=ñ-á²ð˜aE¡¸ï«ùÙBHØPa‚! Õ|Êã”jhVV²Võ31Ñœ¿ +Å|‹0DUgÁqs¬å۱Η n>¶µ–Ÿ‰BɇHó¾–ŸÉ> O +@¥ÆZ>PU%?¹9¾yxOü§”cx¥1„®GÔï—åˆ<„­ +é<Àl³2aé['[K,©ãŲ>¯[÷‰R3=T°ì…Ú×(°Î&[ð;qNÛ:3RbÝ¢ZÌRn²k¶î'KqÓÌXØí­›)û“¶m–ø½E<N‡Ò´-4׎§¾ê¬M¬m´[±…a1ÚÅÅ쟙÷óyÒåSûØ•¬K¼ÿN0ã Ð= Ä­-©jèÎJA§€NœqB§ ³Ù‡è3êFÍ…‚q¹Å7/%KÝÒé ï¼[ƒ0»O4§TØm¡J@«"!Kp2‹‹i=¦éЗò ȤÃr&XƒÙK§‹›ÃÕrZÀb»¸ü‚y>Žê•WyXT/¦:ñU'àÝ * óñàcEF/ö|èam5ع$3¬±È§2ï…"/ƒŽª*ÜEƒí88À‰(•27ÅÊÑ|õß!ža¯ åfNµTWÄ¢(v0ÿÍÌu›4ÈÙ +9À$öõJ +y¢'&¿ªèÓOiCûj™ƒHB´±Ã†n¹ç¡"1ãa¶ðHIó,qd´´ Ddg»ŽÌŠ]WÅàœ’³´2«vÒÐ(Uúgv+ ºË,p0aFöraª…fÄèyn—•rÌ+9q«ê^<.¦× +ÃXÔ7袱d‰¹ð±¶«íÛ›U´G½ú-œ]þç’è‘Ù¼<„Ùºˆš’SOƒaQHfJ€SqTt”JˆóÚ›È˃zMæ Ègœ%é'«ÌUæ: ²œ¼%à¼EÊñê©^NQ>ø4üò/$Õ¹…¯úüD„ø@ǯөÀš¿ðxDá›Q¸Ñèbéóá¨Yá´ÿ’u€«zW/1 ȈG¤»$Q°?²‚ãÉtÃ÷áX¬ÇS9ôÑ/¥d¾‡6Á&½‡[A9Lâ‡ËxÖA›«AûÖ]¦'E¥ä¨“#®MŽ¸2#Ö£eEÏXrŠBrÁiZÈ-µÄ¡j€/´“éצ`S£|¸dXMaTíýWþ¯Žp—ŽNË5E»ˆÊ“-ÇSÆÛ†–:l1sÛYèXp¶„Ð!!æWc˜5¹NérX`^µ¸;&áR } Üða¡ø° ͸=5`B´uA,rt‡2µ +Šœz°ìA¹% #üÎ3œ2ßÂh¢6;ëב%˜¼¦dDjþp\Èîšoc‰2JUÛ!«”ØýMG°·¼¾X]Ò…ãSç7 èF‰û ­VÌ?åDòÈBTxÔ˜õ‰à–^„RÏ›a¿T“ýf–æ%,Š˜fcƒ*dêŠ|Ó)u[®U2*°î¸Qj–ׂÍ"­f)*’Ñ°çuCÃÚâ¬ê˜ßf¶è¶¡Õf55è.vµzT4{l†QíO7º°a¥J)­;G«ù}{L@ÍŒ&Ll9·#èVzJ-ãRŒ*ó3,&¥rË K‘ +›^Xóviê|v¥B*+§‚ ÃDxÂÒd”ç^âh3Ì$+š2–\âu@fFK³ëÌÄØòµ4ÙË”’ôW0\ +¸.œœî᪽õrÛK‹ ±·¨©cÓ«>$0…a §•Ñúa‚Õ¢„†ä‹ÄÈ’àÜÊ>¦$B¥½Ðx4.D·º¸q¡—nË€(ו"˜]‡… [÷{ùì5ÃÔþÈp¦^Ûé~'§ß “ ž>@['S’OG¥UŸx ö›*Ä–åQILŒ¦Y%gè1Ch®K3üÇ<\g ;Jõu¤O›p¸ƒ„™Â«-kç2Óà–!°ñ’D¾1ÓBi›[ ÐDtÏ,Â…ã¾·ÛJuàȬ¬{¤ŒHª:‹!9*ûïmÈì.¾@òÅF¡@%_®¤#¨ß10…lPÇÑÓ^‹wrBBZ„¯85AH½ŽZÞÌ’•CðE;mÙ ˆQæÒr¤Y¥yqË7*$ÿÝâ{ŒÐyݦ“‘Ë{„ ¨|×Z²ˆ°é<^G4šn4kv !B½¢™˜€mæ—-•VÇ?úüãúT|$eöqŒÒC‰•X÷,:1[<ƒ‰qÎ.ƒRç±ùy •ªÊ 7m®ŽØÞx8*<7à"ÂÄð¦˜I(Lè›U‘!Ù¾ñ0•¾\ƒ ‹v&MøQ6_ßn8;•(/ßY<½Ì¡é„¶jÞ,Â6+¨FåÂB†| +@î ˜l»!zWÂl6MU)ÚiøŽ‰²½ÕíÆHlVšIA~04õIVËÂP_Ëï¦Lãø ngn$åhàT%¦Fýô8k4’Ž0£(‡o†ž`ck-Nñxv5Ô42¡™ 5¢W=Í883™k7³wzLV^†ž/º:[b]»Ä,Æ Ú⾸G¨æ,eƒSxïáü¶Ç”¹Å +>´ ­* ­ š|Á\h©R}guëÏ‹ØVÚ½®M\PÎØ%œÎc‹bfÚŽ_GÄØ Ã†ŒhWñ¬‘¥ÚOÉÃc´ÄC3âÀC«´³º8ÏE[¨ccâtÞDº®Ò`§éÅÀâ¡]•Ç¦*ÚkÔX‹+â¸Bç0u&ݶ–Ž/Kˆ[©ÄeÕm…)-XÂ__lm {éJ £Ë!žTè‘}Dá¿Ö}š@‘ZªN3t¯R÷†ðÇ&Ô÷'<æÖ±OØS®‡ñd¥¯©”„2ƒæD¯×/é‹( ÛP6ã§ìÔ€€–Y0¶Iž°aêŒ"ÇA?ó®ø‡]ÚŽº³> 8Jœb^!a„Êp‘˜\û¼³ÁgÂn+Túò&}µO¬àÄv]qñ9GlRépTHÉáíP)ü-`!­õŠfÀW²Ê3›ª€h P…²3ÈÎ[0û:Ýÿw=¢kŒ©hQÕô^9£“›¥Àq¼+‹Øúª§¿ŽYX ++LÄkÙa‚ZÛ—g0øÞ*BÇ€"ѬPRž¨€*<˜ïmy©"´ V¥ÙUìñc™ŠÛBÆ&0Ñk© ljj¶ê—°”ï*fôߺLU¶Ýòv-¼‰D ©mjH\Cí;âQ¦÷} °ÎtÜl¢J÷±–Hç¬#·ýB«(Ö#iö€ÆRÁÂÆ·åL̲î³t>\ÕPíúh€”[®±žZP”¥ U‹äáöuY@Ì”ÜBYWðî1¥D}‰µ4Œ^Ë¾Č²……§¢ªRc…Z0zØÊØb•Ûƒ¢Ãƒ"[¾ûj9Q×TbgºÀ»±’Ø8Cmw^©4ï*û5åÙt¬ˆÎ/ŒÛ?S_š tíÈß/ÊIˆœn{ñ4kσ7xjTôT¡mB|ãgY̶û¢y š~E.zÓÅà”MV*èÃM'H<í²Ê¢;JþîÀÙ%ÁT™É¶£ÊZÄ7>¨šðš‡ÆâÐ$/jÁXc“Z0¦åX`Cà Õ,g­-ZzÂü4ÓæÁÑÅ­àxšFZjU2ƒöDs_Úúbo¼Ú#ø³ªèê’ ÓÍ› £ƒ:±ÿðêB +bž¸T×s³7Ó b…ö…67•¤Gž¯ໃKW7Ù^Šm0ðµ•ÎÍ#½¤Ã̤¨Þ\…ŸëB¸ ÀpTâT ³0À|#Æ—©û¡AõkÝ/`[®f<±vzª!̯ÅÞ4é‹Êv¶€ÈylÚí ·0Õ6š¦¤‰ h—+-âÝ5šfðeÒ†õ©‹õ4êo"rg›Y«7ÜJw~v5:€ÄøH–(hry{#ÓŽ,oƲ Q4l|ûð‚Åc@Û+¢w§³,Ÿi\â\‘4ö¾4¨Ô‹§®…͊ኸ™‰˜Ûz]xÞ5=ÂØÇK\»¨aP0#n/êÚì8’F”ÐÿœžbÙI·Ë݉tìz‰›Ñî߆œ¬D9ljpH?èw×; ÆŽ¸GÄ\…éÙÀX”®øñõŒÙ†êb^€¯¹µTû#ky¶w’(‘Ì)Ô=mczQׂP-IdñFÛk~nhjP£¾c{QñˆJIc>¯n âÇÑŒ)žL>¼`ÅZÅÌ”… <ù Þ"aÉtç™ÍËiIdäÜÑÌãŸg µjppõì‚È®Ñ-¨$ýh`Tîðv’§¡Œ6ëq Í5f˜éßšM7fðÇ5O¹æðä$†Üúä[Ìn½Òx… ÅÖ‘&¤Cr]/hi[}õ€é%$I’ù@HT]w¬r,» Í"|ï†%O«ä§]H^˜ï…#<³\òÆÍyÖ ùUzÄ+ÑwG€ïfïÁ\Î}‹ïC6š]ÞD„òéxÄš–ÓÏÐ*„`÷^R!½gVñ”í5ÿ˜/T M©ªCÉñME€[jÍ“}­ +KjÑy 5% g¢§eK$lÜ*í ].?²Í§R hJ-AKÁ¬z åŽÐ؆ÅÍ¡±ì#SƒB¡ ?ÓÚµz<Îki"#qJ…§º>Bái‘~mŽe«ªÑ«,B½A÷^Oå/+ «h\HûZ$MÛȡg_ÉÛ |DwkAg¤n¸ùç¦Åe»ÕâŠGÎúTJä(9,þ©‚ÉYË‘ø YÞ ÷ÑuƲ¦“£žNŽzÎ~F(Jœ¥RüL$å—PbÅZ —/,÷²Vj9‚©ò;Uz*ôÖj&ð‚- øA(×9ì¢,'aìÕ˜TΈßIÙR¼fGª‚‚$µõµ.y¥—Ïås¬˜†ÌÔ¢:÷ÝR„g›¹mÀÖ|fé©/è#•ºùXêµ ·}雜²Ôw ô©¯ÀixĈYúànVrar¦9ö14|… +uåÏÍL±ôCX´ƒ<1Í–Ñùz*º¿¦),ÇŠÜ-]yêkÞý ‘ÁqNÂã§Î-3–vµœ_»F”L+U¦ùîÂÐÚs"¤/ÚUb5Ðô¼mhõCÛ‹O§á˜ºû}Ûkû ¯äë…Ö‹J–œFÅNÍfYÔÓc'WÑ»&r"Óq¯A.Ä84îïÐ\éÚUäË\ZZŒëÖMw3â£òTïÝh½æ—ÞÈ ±2k_5 s¨{ÍbÍ›#lB]×! ô¶¿8ôz£f³C\Å¡0ú°O~ÿ;òãàÙ€Ž§¿ÿ°½»ûááÖ>y|Ak¿}ÿ~Ã0\øN³Õ?ñŠØ/•yVÜ +^ˆ‹vAìÿ +¦ˆ›hÅc<ö_@sl·o@…¬›–ó*oNÀ·S02ÁÜ­H›­Õ €Ûè¬O0Ó3´5÷+ôhu»üÎ }Úº­€œº^]À[[¿@`Á Yˆímàl! ¸ÅhÝ6º‘y!˜ + ¾Là6°[¡…wP@‰1ž\Á!.ýf’ ámÀX†0ù׺Oá2C!PÈÐ]¼¦!m Õ˜z¬×m +°²! +0ÛNEï.-‹G­Ù] ‡1àŽ·‰fÀ/¯ kÄ@úˆ]ò¼9jIÂo8wÈßoø>ý_1ä1ýðóPŠ0ömI#Àá×ÒHÔϪJÄãïŠ2Íj;a à. …y‚]U)Î%àÃ8ì^…aˆmñ+U¬E´8˜±ââ€Ç›2^œY«€qÆd­$†•mErt uÍ0*j£aäæmi5Lì„Êl˜ú¹k¹÷¬Ð®'Ö:rœVZkÑqêiWÓŽ3Skm<Œ]…²zßÚ–çÃX¨îÇI²µC'Òv†xžµc‡ãÖ®G²ÛuOâ°ÞÚ…‰k''î:Bm +à@°Ò¼¶t–ôÔb‡;’î±;¥8Lߺ‰AkÛãbE‹Þb}ê×V Ñú3¢€$b»­ÑäÀ–îšuH¼J§Ì̆Åk=6ýx÷ô=î<®Ø8$.'ž]»ŽwˆV|gl\l^¶iQ«?bT_{ ŠpšE•¢ô{©M4[2Z}t{Ö~lÏC3é`ð¨Òíººñ,ks8ÞÉÚ`ŽO´6ª?nßÌÚð~¼×µ]®¹˜ðYÖ¶{ü´kçþ±2vÿ¸°VA\œ+!®ñ–!î•÷Û +«øôÀ/Ïä#ÃoÆ„+cÝX8H]­Kâ»é´”*œ”¡3§¶ŒÒ¢¨x.ûP‡fù´yeé@ÒÔ¡qÂß™—O8øõßäI:<>Üñ4°?ŠZ$S*ìz’a®ÜØRUô³ÒÙýÒg¹¼Q\ñP„ë}˜')U +"Ø<Îz„Îù6ÂÏ㋼· âhg>õ=^?âÏ~4ÑýŒÅ'jAJ¢C’è¤X|?ÕóâAºªÖsd•5g¥«&ß@æþêYÎ×?PˆÐìéÇ~œµ»ý¯„n +,Š§åzñ€ç»þ8KWÏ!§LÈÂB3}C.dÁ HüÕQ¯×ûÇÒdül¶¢>JRúIöÅÕÒ‹¿^ß[¸ƒO½þÏ_+±¼ÌÂ@Ê‘Il6‰Qzß%©ûº®‘"2dCñÿºÊÈ㲺çÇ*ú~‘økÐDh`ðëáÅT5º¨æžÃ`Oû7þ<¾áõ>ù î-] ™®Bõ}‘Ÿ3J…†b”Å ñû«Þ4YŒ[Äé°Û™!‡=ØÂ¥&Eã‹”15òS; O7 fzb®Ïê…¶DѶ;OÍ„T"°U‰Ì)¡·ŠòàºUjµ X´‘ÍA}H+]g*m ªPÐY}N™õ:\†-9y‹E©Œê?h£p@̂؆âçô[gаçú´ÚRh³Ðö,2¼Ô&Š„ªOFw\!RÑèãzÝn:KnáLe6¯XpãÉÍÍò`Ÿ”æ—³}_Îç¼·Š_¼KùV}~ĨD,ÍP›¬(9ú Á6‰f°Sòð΀×d²×üÙy게v8ØÌ^Cõ,BIÒ0⹇kQ[ê2Oøî_5Ue¥¹-€áz=”AhîÙ*¤}ýÎm£ËJ8¬dQ¢6ëã3¦’ÛIc¶½¾0´™ôÄúNã÷Ý]¯‡6a÷œeýnJ¹QESß|úqSöЊ¿·‚úåÐsÌ¿%t›…Ø'ÝU¢²ÊÎ ‹¹gYÏh ‰®|·)èÔa-v‡÷g³¹úp;§A÷±/ÃÃîvµÙŠSÚ³™,¾olƒ„Á°ô†ät4/¥Ín;AÖýé ùÍg 7‚®$‚ÂR²çæy}äÈ-Õ©³–_áã9tÍ…®¯”&ç ìR®´~š]¢?q¥5Æ"Ïz‰«¤BêHfËÀY»6« –,ú–¼šP÷j{~pØÄf3ùyÁ×ìà(s–>^›Sº7:ØæÙù‰ûNM>FH +˜’ó%î]»’ÊW–î  nÑ>#N¡=Zo&Ó`JŠku1XÔ7! ¶ +¯— wÛ°4Y©êÝÎùÙò…Ÿã¹ÞA°ÁÛ¹MxxÁè‡wœÇö›¬>(|ÚÕ‹Ý‹buÛ%'}"ÖÂŒ‰C2½øÿùúï´'I=ëÏCòg’¢¢8Ë@Á°÷ka÷¯ÿOg†39©ðiÆ•Ê¿–ÞÔÊD ú†§ó?½#|ÿÿ ²Î§½cîŒ/úßSg ‚ß2u®ýÀÔ¸öSgäÚß1u®\û¨3í¢Î•lÃÓ¨öWžÎÀ´ÿ–§3ìß<Ÿ~™ïëoy:±~àé\‰õMg ÖßrvbýÀÙyëªÎÀ°¿¥êtŠýÀÏ(öÓf ØßuŠýÍyž)öag ØßvŠý@Ø(öag Øßv®ýHعríÂΕsÿ‰°s¥Ú_ ;Ó~ ì Lû[ÂÎÀ´;o¦ý›§óÓ›ã›7ÛèI´ÐebúØ" Æ>öê»pý&Žè¼Ï¶QßÏb “ÁSllTß…úÄ»*aéÜ«ïfi>eĤÅÕw1<ê‘wGÇF}7ß ÛÎ(NÏ¢û"¿›=[øfkŠé·åw™ïÖÛ ª»ÀˆÅâÂç~´i¦ün*^"¹,XÆU~×ò¡ÉÁ¤4öw•ßåÞ܆[æ“&Ì-¿ ­‚/ÚÂ`zÙñr HA7ÍÀ Hy¾ Dƒþ®ÔΨ°ÛMÁÕõwáØ%Ñoúù]äHå©F¦ï;/´Êïæá!ž-+Ûiy#¿›Y¼i3$ëQ‡w=¯´ +òbbqNf‡””ƒ ¯/I­™§9eÞÚ|v¡ayoó”yÉ>˜©lt¯E£—Ñj ç­±¾7"½ëŽüæG_R¤÷I‰øvgnkì5zí'‰^¦;WiY‹#Ÿ•eÏW‘^ìÈÂZHˆQg¨Ù¬ã*Òk8‰féÖ±FQ¢jîîbÞÄH‰íƯ2˜ÆZž'(øH/¦å­F¯ESŸ÷dS¢·!¥•)@Èý0“e×&úõ—{²‡B¯FõÏübkÕâ¯Uœþr +½ï-‹,þ_F”+*àí<_Ô˜\=_Ô˜\=_ИÜz¾ 1<ß­1ÞԘܺ¹ 2Ü\™¼Ý\Ԗܹ¹‡ÈäêæV‘Éàå‚ÈäÖË‘Éàî¢ÜätwAerçí¢Êäêí¢Êäâí¢ÈäÎÛE‘ÉÕÛE‘ÉÕ—EµÉ·‹²“«·‹²“«·‹ú“;oõ'Wo•(W÷éø…ÞmÞT<¢¿[”(-kx¢<ƒzb{yOTçÖ¡´„ 2 Wwè,9èPZR7`ÌyH5b~?ëboT( ‚/_!ÏP1º%0Á72”'ý³žlªPò‚ì9îÎòºAéz¡üÝì!A ˆQÓx·»Ûm·P¿˜hÍ{‹âß·Sf'&¦€Æôe뢴tZKê`L°Qe.é4³"Ž³„ÿÔV;­Y + + ÀîÙg+m“2 H¦…i¾·’ifzÄ"i¡²ÙØc#™Æ“P¶'ÒŒ ’i·j ݶ÷qË«¯ši ýëñ²³`É4n\¼ ~ÀbÍ=ˆšDÇV1MF¹p¿Ù¹‚bZ›¢)¹ÀswmÓê›LlZ^¥)¶­bZËóJÔûê±QLCñOͺjtÏ;PÓBÓ°UL&?mÇöÓê‚;K÷jxRNcJËES€çŽºWNó1¤îcHÀ΃r#B.Ÿr‘wרœ¶Ý$Ÿå|vÂR_=Jìo"éôñçÈ¥}uk|i'@M±×øR Èãaïè¥Ý,ÊY +¨×¯å&¦¼š£þÖæÓ,à„nÖ~×Øô€=§ãùÍ´ßá ¥bö$šV§÷ù=èw×MKêC-ˆÓ– +x¨‘è¦fŠÍF›,ˆ”‡Ÿ@f¶[ø6o»3æc\% =¢ ‘o¨#KD&ÈÅQ­RkÛ±}1G΄‡™/3£€ŠN©6‚ŸãÒ(lqØTr™Ý6TrÐ#%L°†ä#V±a5MÚ8CèÃAŒ{xOšæ°=&um…×T™/ª"¢ÝÌ{¡Þx%\ 4‚Ò+ó^üJÍÉ ]á‹æ¸ÛêMiBh’Å>åÇÑàÙ ‡: »Ã3‘š´;¨€þçùç|G‚ÔTd¿Q‘vsš'=f»=YV Ø¡ŽÊpg%u¸Þ´ïÜ4|ŠrП^ûTI׸ýí˜b½,tÄäxrÚûÛ—ï¸ÜæaP—·ñ›üûAÁ¿¾¾?°ˆÝá•ÉÚýë'ý’Šúæ3’á(àea­×¥`·ph±0^ï¬( ö’·Z˜Á:7+“à†n¿7 ¾7‹šŸhŠÚ¬^}»9 „i„ïf$/=Ñz+D{¼d³ŠU”2á‰|ºüŽÒžß­}Š^^eë/ñ¢ˆ\5AÐÊAè¾ £V{dÆâ<„O < ê>-ZP(´®ŽaŠÎcV†‰Õ°Ê!*¾€]µ¿®²äx æ¨ÁKˆ€aYÜ´õœ½äþ›§ÓôœoRª°¯ÂÏÃÞ ×{|{ûÁT„׬Lx•ÁZm?I°záÓË–G´ÀoV×m·Ã’Œ&]ÖŸòwƒ xÅõêÑ\ÖU;8cUøƒd×mñðÞ¬í¼Bˆó¡˜Æ$|9ÄgAÏÝ|épºpÑYx]ôè|_½Â ‘ËÚ¨¶Ó©"Ðü¦iæ°ÔY†Q"‹I¨WÕÝDnÎÓ^íË (ÀA4¿.W z¡¸œ'gXš·”Q§hLõ ‰.††¶Ù ¦g_Ò G-AC©Ô»N^ƒnöT…˜Ù–xèªK•TL['© ˜¦2Ÿ¤M]h;O怫ÜÂñÓéüyþKã³£:8ø¢ìe·Y1Š4xUƒ$%H™’b24 +ë¾~EG+îêe‡X‰µNñm~Zs•O{ð)è€ãŽÐæc»mѪ–ð|eÇ"Âc¡o3€£à/<Š®m'–E³§êË„¥b«îø¬êçK«AÔçç˜A7›^À™ú•ÿ„OÓJÖ“3ü |* Ä~Þ,÷MÃ[>a O–£9=½#RTÂ=T?µ<‹8Zá|¦³;ú¡CÖ/¶G~¾iMœã­‹À,’ÎSçÆÍ"a›Omß9ëz­çpw=§†£D¾U¨f*ž—ˆÏ|=Œ}ž¤©©l[í«5;(–Ø3à 7(ú‚¢ØÇDˆmÁ?.Õ]P:'·¸lŸ×Þ™¿ååHfl1E™üR5ŸÂºÙåDµä;íô§Ëò²Œ~—Ç× ó¸{?´d 1¾þý<—³9tRøƒÕö%š[¿yu|ùL뾪ΥSÿøåOþÚ~ý‹Ÿ½üÑ×_ÿéÇÿøÝ_}ÿÃO8ø“½#Ì +KŸ.f€K‘>#ªT|(Áz?,gs¬t†¥ÖGŸAðO3˜šƒp¦&,H‘Ñ î‡FCn⌭¥PÚ{qF–Ú>P1™¶xš= X‹O×)È1³fî3‹fQÇ«5º3·6«á4X~;¹ÑÅÙaž½¤ð[ÊSø!K',¥â"¢/Æ­\Η˜Äõ} óÈ×\'”.æÑ1í'm ¸ÁziSp&«¥!Üäï¯2`‘©ÒӛʓóˆI1"*j}ê¤äB7qž¿8(™ò\AQeηè­k–ªÙÎÌ ÎŽi6w#†ÙJù˜;°ÿ'fHm&”œé 5‡š‹»@[®Ñ$6†`Œí•ÂþÂHŽŒ‘´¡ñt Ÿš}íU¨¿´NÏÃo¿9£AoÞ¶N”1L‡³m±mÁ`rI€ìÙ!•±»ÉŽZ©²[’Irv]>9^¦G™W> yQkþ+ñ§Šx,˜ŽrøÜ!;Ú/”]lL€1«rtf°Òäì±eÉ„Sa¹¼ºZÚÍŒL"“3«Yu%L»ô˜-Æ7ÈáÚ'Ê!@•]×D=ièÑËSá£L]‚1ñ+æØ}¾GTôY,¼×ÙÕ»–ÎôªÛXæ“èf5¸ˆh"ÿ&d}­ ´67ŸçUÈནßB±ó]çDvGgØ5+߉+þqàV²Ã7¼„™PfV°+“Ée™‡Ó˜¹ï›Î9‹|°¿ˆ‹Ý6JB^T‹p«¯ŠØ5—:¦¼oˆì´/—ŠÃe¡"O’œ¢ŽÛDˆ¬»BÝ€"šØ@Ø^Ñ;>œžJd;e[>£¦&ò}¤w™‹YALM>S}YsIbžÑ’&³ª¼R÷kžQL¾ð‡Iå€í=75BÙú·´“}‹Ä¸‹•^zÇ—ÇzóÑ}Rs½½Ü›Ÿ‚ª°HsíZ¾fÅIËý•µ)|4€|œNª mÒÅ[ðÑwñ±X‡—Ú”æi×L†ÅÕ«¢.€e•f†H\q—áTÚ/"Ó¦oï‹Ë´Kú»u¹–„(„6'žî/Lâ^L$lÝ©Ý|’íáZ^ËLIãüôeU‹b ÄÚÑÅ?°úèÞàíµ\T7ºŽÙˆöý•XµÃ5Aw“Ê.ëIÌPØ'¶óÖob¡ã°asz³h]ÏŽ8›7sALØGõwŽZŸ—¯§IG¤ zk»’Ú$7°E{ø$ûåq&ªo­Ý« Í›9Pé„ó0dWÝÌ¡#Ö{ GlŸ)Þ á”݃kË0¯ï·%{,:l0J¾÷¦±ŒÖJcýÞP»%ÀËT%°Ô÷R¡Õ/¦iÛ똑í:C÷Vçg69Ízµ”Ê ®ÜòfÍ›kP(oÙ_% Ûnv$‰¡tm·[s\ʲw-Jò7ÙÄAüž€ß»n ´xú¹…fåh”qƒŠìß³¤-»`…-·ZBD&ûm¨šSk$˜àS´¬G´àÿM…þh ÚÛ‡ñÏR=·Àä,ýzÇwð,,*ž…BÛêy ”.Ïê´NŠAeì] +²‡^=%_õY|,M,±+n<´f¬ý»Ê–›€¥â³ïà J¦×$y~ŠF(ßìÏO ify ñmmÂ(Í!WŒÀì½íÜÇo×d»_ƒ¿|'ÅÅØ¢l›Òb`1ªšÉQ}m¨>uTž! …‘Ùe3R^Âbå¨ œp—®Qµ@Û& ×sÛ`VRú¦ÈàŠM!%°moÛ8AwºãšV”‰YÕúhûì$Wµ¢) ‰<ö™¡h!³B6ŽØ&Sᨋq7dx4‹07i¬mÔNÐñÄŸm³Áâ˜!•´×¡ð"Ý›tÿlRÚpPÈŒ‘¥?R„·³kˆš˜ÙëIbØÜ&饊M6r,òæ<•p,¿¸yvÈM'/J¬7†Kð?'-¡²©[Àë©EžÐç:6µ&Õµè*…Ôë +&6ËÄšƒ87¥˜â“Z|úê¼K5i¹\LÑTˆE¡ ä“P†’ßȱ¶DF,f¨F™Í*Nô½)fSDa­€YlR%‘²ÏršÊ}Fp–Ûœg»íQ¹»XnÔâÖZ“W)ûRáQçM¬•ÆN‰•±‚Y›¤‡Ž嶢‰”¼GçK=´3t\±’*>š2žê¯¶ÌN!K—¢-ºÈZî•?ö5bèL]9a)1C{‘Ï»$Í cç°]û'ôxT¿ͪŸ±^~v¥œ›Zûã'^žÇýÝlyOõ|¦áÆd¡ ] ñGk­ìãÆ ½í>àÉDÙr˺v1´‚Ò•cRôÉ‹Kà½6ÚÀ‹_tí/ó«æjQu™4åšáñE¬9i;¹†“mÙtÃÊØXªú¶][úW¶ IÙœŠþ ýW‘¬ œH³lý( q`²be66-µƒn ¥@ÂÚ4œ¦þÚ॓nL÷okg³Ìùx!yå;„  ÛvSÎUÏ0ôDÁ «dQ/S†u„¯¶J¢´è3À qz%±4Ýú8óøs +š©³¨¾<®€*#\€Iª<îËL†¥#¾)ý­ e÷G?ç|äf­)…ݯ뢘 N¨2¼>߯h›ãÈ„YçëWá–ˆ‰SÌsv~É«º?F^ ÃœŸžs¸OFœîu¢És¬?ØÆÉ‹7—–øÜ¥`›M¢ÇZ<›Óš¯·Œ¿o–òÙb~õ{|섉1n2‹$ÿÞ9"d8žm?'¦ +ïýŹF/À"”y¶{—ÂJˆ T âÀéàïžûÚz<È‹§Þ†9!êºy¹­Š8 4ÑakÒ¾ÆÃIGá%‹Z®>#êi¶àB'w»Í + +"¢†ÿ—ÔeÚDûÊòÇ?künnRI U9Þmy¡³}p +çkoÿ6ÓÜkEäÄî5ß{ÿ6îŒê4 +,pDKíöè}ðœÓs41148nao/Ã߻ݓüìû4@B·Oyc,ÔÄÌûo×'ò)ûHÓoÉ÷1kÁBÌRÐŽÖ·F50€çô°·ƒf›Ç«¬ãL¢0=º=…íMRV{¯wÐ.¤ìêy¾ƒ-ŃÃ=Mˆ;™@Å‘ ÆÓcøÓ9yóÈe2¨Å(ˆÝ¯ Ie¼¬käD$Æ’p©Ž‡xŒ'då¤Û`{ê'=ÅuMyË‚gÊi‰ ¡€èšÖEKGºCË+;uK2‹zÇ{k`ª÷œ‘!èÏÿ‚[Ø42súøSA=Ö 9ñqF–OÁöæY \þ”î!ô¿“@È`P¸€7›@4dX†¬NÉQÌp9d¢˜Cªj'¤ Uø5›åsc•#)îLчvÂ<’, -~þ;}¡­®;φ^„«‹äËš¤C=X…ˆ$×\ßõ)Õ‡iÕ˜v`b‹%i( À="*ê]­¥¸F¨KŠG"¦Y´0Û÷ŽD"À¾Ü…èj …lwëwwWGø£œûÏ|×S¤[@Ý8Óî*ŒhA^!˜KÄ^rwÇIOºØAûº Cü»Z‡öïõ&d›Å¤&uhPª{¹‹Oy0 )RºŠUC•¸0ÊŸ&[Ï,sA$O6‡¦ Ÿú宋5û_’Ø Qy'µE@½«ëQzyª6^e¥Xw!3™X½˜ÊÜØfB÷C"µB +c2¶"÷IÝ +pŒÉኑüŒ#¶ùiå^A¨ñ<+5¦ÿ»«"¬¸ÚXƒX±¹±Ž±b|÷õ+ë*nJ3+jy[ᙘçµ>ÐÒ±Ä4ÁÖÛÂTÀj‡ºÖ +÷±ˆßÕÓè<Ôåp}­èüû¶pô¡œ øwrðëÀ¬s†ñµ.†¶UÕ0ʲ÷øC(ã†é‰m8La„r˜ß¸«Îaüc[ªÓ#¡Ò&PB‘<̱lkìñ<³0ÏÍ„ +~»Ù6ÂôNèÄ  ¥ó‰v}‹’]OÄ¡.ËÚÿÐ#Jóˆ,åµs¢LŸ“¶+qæíRDSƒÒ$»¬ëµiÃh½h‚*>«Åv"+HˆXp3¶½"©a1û]5R\c§I‘'<|öÉÕ¿6©ˆ¸<Ƶû ^;\w`¨î×Úƒÿ’ú€÷Ðex6ŒÖÄð;oE…¯+öê@=‰ÆqõÔv­¾ÇÏ×Ö`¼òÚU|ÜïÚ‹üøö)×f|Gkôï~4A×OïzíŸÆïµv^ãgß5nÃêYÛ¾a††qXÇoÛÌë.X[Óq­=íOöñ«#¦ì|3qÆϯqÀ’f`†*tÖÈþ,ïîã›]‹p¦?R,—*L䬋NÁÂE[\²Ù|Â-C.XáÀšL.a „³„7îãw{¯`J£lœÿw³àâ5šëçf ‘í‹$­ +0Íj”Cj© *³É¡õTÞ“ÿ‚{æ¼sÚ$Á‡ EMÿò$J³àh.ܠ̘´o\ +'UŠMÊ»˜Mr Y”šI*$,=<Âú[$îKú¨kpÆÁŽ$”ÊÂJÜÄ#Lú!0¿oB¥hÞ~xH`ðhº'PÌBûáDRà…w–_À¾ûÔ«­ª:P¨¶¥$,&ñpÎ÷È ¡€oN±8e^‹¯` +zxà ‡§5ËY²×$‡…|‚ÖÄûÈ’¬·#2ñà;ψš¬í%¡`üeÔÓËN–½¡7ÃkTâÊ‹€ Û¿ý +ÔâÀ›Ø‡Ó|hø˜u¸´–%D.๮´¸è¹d]ûEU1Æ›Yéõû©½Ä<×ìóª.DÞÜžmýVßÙÕÕSœ| qï¨jnXuÀÛ¡thÙ‹ëÃmw4’hTÙé»Bê ƒå™ÂLؾéBýã¢tæs«qã7PáçYo"&4X’hü¯ø@Dº×Éïïk}- +À.ÛÉ;m¿ðFiê»ï±Ë4âwKQwº±Ë…tg0M”j“$Ã{XKjª‘Rh÷Ý/Hc†AÊT¬Â’YÝ/háP9 ƒD…f‰Ê£7˜úV$·ðA¶—°3aõöõè3œ°€@ ïëÅ>€‚?'Ư^‚X¨nÛ¼f‡6M^€ÉRŒ2+žn5¦`îâyV“n%XÞí»}¿ÛÒ‡7¸:Šý—gý Ág…%\ßveÖgpÃë¾}øv[Ïïª3„ q»±C ìçã ÷Â(,ÔHrðÚI^â]jÚû<$“bGE°½8óÿ!9øoLrrwuåˆS³d•6=#H%ƒ÷Ú ÍBnNÓ%É5)vcçªñj÷Ùik4ħxNhí\ICe8ÈüiJ¡N›n6*©UÝŸ,¡‡¾‰64;™:ÀNPN5Ë¥¤ÕfçööêüUÔ†¶cg0Èùd'ºæx²³Âèý˜ NÕåŸÛ àæÐd`Q)ܶ¨þV糯€jE”`¬C/aHÐãïó¤<îÒ-N®a2Ni˜³'ûnöÖ½ ¿45sõír•lG•hmq©â6ÑAˆ8 ´üìè^ýqŠ<á•ŠdZ€¬ØvÈxm /( œŒ4à¡Ön¨?Ú|@¡Û΃ K÷;Fž¤LQ@'gµedÔÇ/H(ÞªõùBFNó¹«Uêx á* 9$2"›gq‹sñ +<à°z¯4¹ø™“7o±¿µ9«“Øb{ôéc)¦2íP³³—Ú®ššé +–ò=z8¥>ý^þýžãÑè^òh–»4MJjµò!º¬Eÿàþü?ûñßþñ,E†wòæàÿéWßÿ“YWÎ’xÐ<Ç»×ø›ŸÛsÿo?ÿé?ø½øË_}ûëŸûOöŽþë?|ê^x5ö.þí?¼¾™÷þ‹oÿï~üó_üøüÕ÷¿øáSÿÍ÷¿\Ž †Çd0Ì¿ùQÿó·?ÿÙßÿð™ÏúWßÿÓ?üÖ_ê?oWåŸýè¿ûÓ?¯?þ³_ütþÔÿû×ßþì翘ÿòß¿üÑ_~ÿÝ/òÓïÿñWü£7ÿ»¥+ªeà?_2Ë!-äC•#ú¬:‚ˆ²èžüˆL::šÂÅ?Õþïÿô£'=˜;ª´¿ü³þëÿlÿëÿcÿøO/9½ü——ÿãÿL/?õ_þÕ]º{{3륦vÙ'nèå/vG…û‹Ý?ï¨íñÙ¶f~Ú¯òñÿå³jõXVñÃá¿y¯úéåU8Nߢn™äú$Ø ¸ýr?)”Ÿ4³sb¨}fŽ±ö£‚ô…EO䪪§:«ì/@ðÅvþY¿¢if¹×€áò€!â†TT1¾†3d|7ÿˆï:ƒ »ÿØT­ ·[„in +aÔ–ù´wúî +1ŠÓ\(zÒã‡HI5cÝ/x«2aƒOºäáüš}§Ý-ƒj5û^šZÍÑø™+A2Ä/À|›\`± »Ý\W +QLͽrÈ4Cabâw¦Cò(~„K?B.sÄAÐMtÿ'ÍX„б%Ð.8¥•Ä)Èr²™&?‚G×øP·qĘ°$pëdК ÷%F¤NDŒ8N10!Îe= ð~Å$ÁÁJgN¢á +v>&J@¡õ}Š¤˜lÇ©94nP°­q¤c‚e˜x\·ƒkg,ÑЙùÜæ!p µ… 'J"K &xå(E<Ì1 jvÙQ¡Xë"§º»*E ðÛÅ…ýÈ`ÀûŽ¢ØåüÌ( ž¼3éͪI<\ÔW&‹ì „ðhþû9ÔMµôyÊ:š8ƒ?Ó*v‰ÑÓw8:‰K˜1ç(‰—ÙÂU—@Gô®ñûßý.E1ÇÒÎw|Fœøìò µ1Oß+P€éêy/ƒQTѼ@w4×UJÝaÒ„¦Þµ¥‘¸,c¯"îտ묽9÷$¸õ*0œÿ†bÛ):?[¶B^%®§¾šûöˆæCLôê¼éxÐ1 –´YUt½ã¹Ü¥¤„­#Ç(.,ì_kùƒßÿåò[áWÑUl_éñº˜,²+{Æ!*߈™a(Â]ø0-˜µº× Ge5Ó¯:*#‚5˜½&/áˆÊÛe½±ú†ÇÞd£ƒŠú$ا£"”…ŽÇØÇ0¥É13»BN a»ÎbËŠ¢å˜óÒGóº¢sé-?âjbÿÏ !`6d}ð*IðDË|¦$‚á{ìC|]=!Êß"7HG–.D<âôy/[ÇR‘õ+­GQþ•©ïÞ%™Ý'·r²]Ø‘ù¢è£ô5±J +×ÅF%gZðUfß„";õ_g_σy§q¤¦>ä¡Q_ÿ°[¼÷ßøÊR•Æ#€a;™à!醧Ô2åÊ(Ž&X+¶—le9dj`»æ!p=ûe‚Ûö³\”º PŸnGŠs„Ìt5ˆÑ䤀2.ߦ´þÿ±ön­Ö,Ù™Þ/ðX—jƒwgœ#/[ŸihcÓ¾°uUˆ-Ù,•«þ÷Ï3"çúöšk«¥*ô­ˆ<ÌÌȈc¼;lYáôpÈáöódó-BNm.£Ž !)’‚¨!úÉùÃ8žÂ”戚=E£Å tEZ‚+ªù›7ÿ羑'!„´‹LÜ1¯Â/híåG„îÅ…ÌÕüÑ!_UCÌ3æó b!™[´VKV¬xýQA]0¦a!_1ö. ì꺙¢‹qÁþοè„ç?áêç9Pú$ÌŽÍ\ÌÚÄW¨¤ _fZǪƒq}<㎦úÓàY(ãQ µdH{Žº’()B˜R¥.Æl#R–2°Ý‚ ¾ÔWHK£e hd?Ù~ÈØ=ÊO*ªÖ>¬T”xï$R7áûœeéæIç=¨%,Ù™Èq–¢þhDõë÷rÁ¥Ž¦xÒsSÃOyCŠ³{t¬'2a P”8FRbŠM`^€f wzÒñ˜ÛS´¾iÛH3¹Ã(ÑCƒ'Ýû¡Äd௠XÛ:“Ú[c|£›{/1 ÍOÔQÕK`U¹(Þ9¶T¯†¼»xâ1SlvæÔ’?Q#w^kpP¨èâ¼ýýr™çúmS|0j·ðp˜x€k1WàÄàgOø©”ÕÏk0ö¼O ¨õ¿t%fhhË£<Ïò<—?z#½ô¡CñCWÆ@êÃF®=åå¼.é#ÎxÛ°à¤]lqÙ;o¶^=‘3*n_>Ow9¹A ÈÎ<1:S1äñŒszÒÃ4¬®vžâ1Ï«3¹:‹Vß ;c›¡NJå9ÅKB`Ùk8µçyý¦ (檽_ª,lLnØAŒR¡ÀÖÞ}í¹hÄ-ƼZÞ{xÄ|¡"ó8XÞÏsmu pÄL›R¶Hžl%c²Œ_¥ulô»ä üa]n«Æ¯èÌH­UÀ•1‘žp÷~0ÓÀö‚)Ðù5Õ‹æ&¼Þ{ø6 ³4™šû7§Áz#ß⻃B;ô·†…úGݯ±ð›Æx7‘Ë@hTûènn Òh‰ÌJÌ­~þݳE4b{·Z§nÿ„¼ª\ñ7y{¦õýM–ì¥>§ûÚˆåFÌ`ƒ¤ó«ÐŬ14^ˆ.ªIÇdð4õIÉ}¿NgŃì}‰M-×(¥"ZÜ!P Ú•×1D˜$Òóî\!ótñ„*c)¦°Xzýø> Äq߸ÛinçB?Œy> –ªÓ§«º?;³Ø²k ìF;àø¾i ä,ÏM}m$Žá·æ¶º*N<®PÜ-: hÉmåªNƒ§CåÚ°öyP&%‹¨¤ïÉI2ç½5Àûºž'öµq‘«eñEoíîÔe£ŠŸD›ëNŸ£ ¥\¾ ÏÍÝ{ŠM=m¤QÔ˜Z1‡cÈþþW¢Çzœ¹Þ™ +Pq _òj”bÐÉp`ð’ +“@÷jÈ +þ˜ÆU£~)ÂøtjÚš±ÖÆ<4CÇÖ¸&3O$}NGmñ±Eô?ÛØ;Ð`y›ç!ÿvg»3èÇœJê¢o½ÎgƒÆ"þ¥?³Ð­ç [–ÖskGlÒä0VñÜ£’o½ó%¢iu\[’‡7"ŒlSSã9ÎÖû/|N¨^> 9EnSž¬t1$>ê>±þhË6ãú­¼pë¯ã·$úNT{(äZIúCíÉ ’»SÓ{Êë@Kí—É®$Oן5w²lŒxУTß›¸(²ž‘mþ=¶üüó~…+þÍ |¦Üôz’Ūƒ†U\š-H7ÀèçW I4› ëj£äÎbrýâ @EïƒØÑùX7×h‹íïX}ž5êkcö•…z =¬IúB³&’ÌÛ»TO|µ¼H¬´ +Zðó¸†Á¢‚š—©R2ÂÀ¢ÚF>¿*?fþ!×~XJÛ¬$©gòH¹Íb®fÕg®ž¤,÷IA êÙÜ)áˆl^ ¿>©[Òâ ¥¦øžF2>ê©lå4ý¸Fl¯ß~ž~ß‘O„J‡”‹Î¿«Ÿs“'‰l’î­YQÙ<œÆd]\¥FO…fyìkÖ8£à:ÙQ$=Q‚¢®üsN Ý'þF„³’cBêÌH@&Ÿº²—YÔÏÇIêÑèÆ&ûNgM´½>²:*IÏXF¢á&àé,‹l4&š8×|ðƒ#|‡†;˜HV_BUgŠñÅ;œZAS¹¯™¸\ç_wNÆ?N¾¥"á«YcO C­SéqŽEM46|Õ+·´_ÿ~« }ÒÕ_Ú +÷Z ZÆüBüΫKˆKÌ£Ú¬–-±kZ(àFHl'Q[EkƒŒ÷nb&¼ëv䑳c³HáÌ+Åw¤t1³ž$F’å3!ä#2ê,#g™ñ>À–®Òl¢Sî£L |²qj؈#€- G£ +Ä­EAîÔ–Œ±§Ú)>ºâáü%/t[ßX¯¼®¤ò·š…½œÛ)nüˆr§+&Bx%Ïëðá€>4À(N.ÕÑ‘E÷s÷‹_Ž)Kz*íÅXiM­àª»ãFãÍâ!ßÝŠ³º)àsñŽe_ŠÈvEHày¡~@ï66n¢—ÈG‘ÍظÔ) ±S¸ z@‰WxÙâáFßè(\X'›ÊhŸO¯†qôBb”^9väÕ·¼Ò*ž§®ñ3æ/pƒ½)Õü‰óÔ8”‡ûz† ¨CeÔž§§—”åmI¶‡úxŸ à%Àòñ‹Ç<:>Ý&AóG&v½5¶è¤Ë)ÝG¨õü;^—PŽWŸÉ@äcË¢Kþ3VB ”øQ5?×=må:~•\S<]1Z¨—[É”Ë*˜|³©­(‚D,–ë{|éo»ã¿ÖoÎsÙxSc¥ç§EÂQÙ¯=ˆCüœ}¾ñßö:ª¶1´*33"s†; ä)ß™¼2ç¶Eßé"(æ Ýý)wÒ+ž½ {Ò©"ÉV<µéS ˆ +‚_ǯÉÏJ…ôî;enÚ§S:§h³¼®“‹y÷Իјþe.z°Í‰ɇ +È.ê?3;tˆ,•éÌ…:H‚«Žs Ôã Ý÷Ù™Á±dF¥a/¸§vìež–]N{ý=¿è/ñÉë ˜JíªÕN ÞòµöóZŸïì­»ƒ›ß£]SŸ’Ê{ÞÕÖ[þ;J8rð8(æáozüz +ÿ¦@פV:¾9dB<Ù æ(Õúª“ <ÌÈeÆzSÖø€@CîëÇ)Ïj(|©jjÕw¹/&C¾2?6Æ{ #eô*ʳA|ïU™x#èÜ™7\8z§q«Ðäq‘N"$D…"b~UT0ÛtYP–± `ÜWš``÷B®R¡Ò@à]â<<^{Òì°<ØÏA”F2¶$02_WÊ5l0ùg/LéÕ5Ò à†Î.”eh^Ü\ŸÙÃ=÷r5¥ä~ J>O 1î,½mò*wêýèR'u—Žš TŠµÝ²÷F`íocƒõÖ;”™,@PÁ¯BÆo{ÅÞ€o¤ÛštZP@þø~3uâW¶´K{ó©yß[_O(cʈ¾};ͬàŒ–päA[BQ¿ëq=¸Å÷¶Ù=4”1oâhUw¸€ÍÄÜСx8 +;„ Eõ¯=^óHÛx%¢¬ßÏCâS;™x +¬#ß4 õ4S|ŠLù¸{>îò”¢-¦{±§£“ºöLvE0:^Ç­‡/Å1Ï…Œ9bzRgeHIÒŠ¯ å´ûäÝ—X¬â)<“ =Ð1‹S–]¸êL âTîÄÔ\kOQÆ‹'“šÍ£ ¡X +?¢·ôˆ”\´c{IŠˆ’.Ô±·¸4¹xïqÔþµö>V0ィ¥çO+B¼à“ÝzG@:KO+Ýz'ÒîéD`åìÖ¥i¿uÈa×d‘(r ¾ž¥l͈RKì^y×Õ ¿$u]ŸDÂáyö´¥DD|$›»$X3 £Õö| UãU°d*%¢–™<ߦ¤š¥ÇÙI¢s’Ä­­É"‹¼Iý’Y<{ØÍãðÆ;{‹Å|ê¬!¦ò­GÖÍ»Sà „ Þ{) N<ù( ½ ZÉjÜ{û Û"ëý©ÐíÀ¹k¾š)«VÊ#¿ÌÔ„m7A‡èlÓÑJWÔå…—ˆA´¥¯â>ªä]$¨&GC|{ýà¹ít]T}³Gî­ #ñÏb_u¬§½1§¾L0„Ø_âA=ÏÔó¨c.•fŸW™ñz@–AÔô™ÑcQì|=&€öÁ{“*uå„Þ䯾Aãï¤WOïm‚o{`ÛÚ^XŸ/ä–š:ïÖ;oÝ›/Ý^ê¼üåô`¡=êÉ¿é‘ϪgÌw¯˜»¯oÏ3a!ž)Å?ÕãؒΙñ%eˆªÉKžãlÆÝcÁfj÷^ÿåÜŽ\Þ›ÐTjÀÎCÞEº\@ + ³xHœŒGb\A]ü¦ñ?³íhñ™¶ùM/ì VDóᣧ$ZµµÔÏ“ÚT3MPôk¸ôðái¼÷x¶Z ÆIû-‘¹oçÙ‡úSUC @ ÊØrL‘™_{|]Ÿ3”ýÚkôÄoNs¯%vªXfÅkð‘&+‰Ö7W}ÊŒ{î)°M+Ì1ÿÆuÖe¤C†ôAÝ3¦꿱σ4ÑæAdŽ¥QêÒc ½ŠbÜ~LÚñ·=º,Ô %¢+nö±´ ÜýÊ ñx¢žÊlC{Šî¬ËHýÍ)ÛAÂÝÒ²þ* 7¨q¡F6L_SoÞèî܆ÿ‰f¦ŽJ"FÑÛŸ3ß3Ù0QvçÓøz,_ l€µöúë i@5_{°gôÖHP@8­ñ±/Cùn ¯ØmñkcûÆ$i »\9´º!•GÑÉ*–V¼@âjîªãlshË“9îßž<à%û~K­oM‰¡þÌZ4‰®Ó æËŽxU!çóà¯Oí?:Ýzmª‡Ãwºû=NªfIM+ö¬ ; zפԢ]Ü|¼þM{árש‘­ñRDûIìˆCýZésÂ~þ†7ÔI)Míp©×¾[ìjÊW°=•d—N¯šñ…®htR²Ž^NU“HÏ“ˆb#q½g¶kÖËÎsY5©ê‹1|÷:׉7íÑÖçu¥Ðòì•L2py»ýzA7÷¸èªYÖ¦¢Gx*ˆ@lÆñTú#ÊA/>Yœþ¤j¤pjDË„ƒ3¢¬Kçp#•*¤'Æ-d$™!¬íØ8>Ÿ;üP,m&hÃvÖuL¯ ÓšøLï´K#y]™DQnÒP-¾]À'àZ+¤ºÜBÅBëQQEÓ˜ö#:"P:’9‚\‚ˆý+Q +‚jL +yY—%än"¸`ßàòwÏW¹O¸êdºq¿°õ&w É%ˆÄ¶Cµ€að2ï‰'-þåqÞë Îì%Ò>?S—Xy¸)!œ|ñÙƒõΚíbq`ë8í@w9ýõTÙ“å†k!2éî#}ň:FÏ"³² ÓK’Dp°:³¨À8—ŠwI Šs=;qj¤:¶E莣ˆX]é۠ϲPl¹ÆìÒb*ØMM‡Åy=-g l†…N8­=3ñÌŠ±‚ðŠâÿ‡œ*ƒÈÒH…|]¼¨ááluîXÿ¬÷kÜM*¯&Nz¡0iÄï¬ÌäHzQv÷Qƒô‡Èˆó1~gê2Œª”cÌ-„F)&”E¨ vÂZI/V:zMÒsôŠe ÁØ‘YŠÞwTˆi²©3:ŒVì H(l +Œi¼ÐÄ ¢ÃS›¦š/–Žl+»Rá²Þ%/¤ë2ƒ':¨ û”a²ÈNh”bÆÉdÎg™ì9&ù¶ŠqýWËD°€æ„ AA¾‹›:? Ô"ðë¸L“WÁµæ8š²oÅÑô5 vÂCùF«Uõn·!ˆÜÈ€1zâëA/V{"JoÔyÉ[ ¦“Zü”õ¿ ¹?îöòZy¥uåšÆ¹•84rÅpg7Ñ\‰×Æ•ð†Rô"3ÆY»Ë5XÙŽ€6ÚNØ`Q.ÏQ[yA9M°Î“[ª¥âd~J@1LZT S<Ó¹=¼sà"Zý`4’DSl̓¦»©îÆì'¼·^CK,x"„‰"ð® „üç¹TH~øÖ¢é%}‹}•¿%“ÞB +=ÖÛEŸ$’²G“R³s‚gÿI3 ܼŠ?EцUïŒI¦+æ>÷rP¾±ƒèpkÈRá ×ÞÓ¶,{€ïb˜v11WVÚú4uz€%+Œ“p‰§N¹•O¨Ã_çãhWrÒÉß^${@ØÞyÉÔÎHÛ–;kRL¸dœ_Bjž‚ûò½¹ä ã{“+í‚›Z–jñÎlÚu/IÒànv4 endstream endobj 130 0 obj <>stream +™h§HŽ®Ñ@]ô@F2&ê'&J3÷B¸~œ˜É…•¨jÌsÍ#®ÿç·'üF»á¯þøù±×ÿðñÿ÷?ýË?üÓÿýñWý×ÿé×_ÿÛ?þ×?þéoéûц¤ì%Ú®¯D@P?`AíùÇ,,Ð øÎa|ÀöÎñ~ðïñÊz|Ëbÿù‰£',™â|æ¾r°nMlµ 7L 0Ó=Þ†âTW#½À“ŸPérÖ·FÑoëaC9φŽaPÜhXÓµ@Ç;ÿÍhÊ1wŒ&'Ù™ úützª¨åÏ,ÆÌ]6sÀ%lMBùyŠöÄd=wHUæ_};á­¬2Þø-&_Mtb´d8V¢¬û…êO<_?üÂʶ-F‰Ã”Ä Gï]“#ÌÍ #^ÿ¥áÎö{yV-;›è[H(4þN#OB‘³ ý,ÊœM–ΈÉ/_0õt£Q÷ödý)¥AJH˜åÁ!Ljf=¼ ¾YŸKO]ÿÅÿ­4Ï¢—»Ä|*©¬è%™Œ…‰{3Å#†#Fê‹žG× ÂóÌ¥Óä u–ž¯æUÔ{}1y2¥Â,¹³‹À½bžJÿT!Xœ‡M)=*ë3ghíáJr+̼ø ¨Û¯TÒ<¸ŽxWFU•{ö™h‘zŒ‹ÕYÉ":ú‚æ¹XvþL…k%0‹Ç‡Š„LB}‚¨Ë=@*Bì"æ¿”Üí›ïà>·aaZ±ÂŠýÁ0íq÷T(†qð'ˆ^Eí Åõ–Æáfº—Ï’Ê~)‡B¬ÑnO67þÖû˜¾°nÐcƒí¢‡ZwÑ£^ó“sÇ~Ç^íX”7]É…·—w *úpØ EãFý{ÓT…É[§ônÊÕãáàáÖ7ÀõJ\Aã‹°E‘ӆׄÿºž´Ý⧉8åÖÅTói²bD(äB_5äõMøU€ÙÔ3ff¥#Lð*–+S°„ºË:9ÍÞŽ]2YIÄcJ~šõ¶ò¦ÑÍc;T$<ý‡ é,?œÂ "6ËóHÅfþÒ•6;wZ\_c6e,. N¯ÒM›&Ä5Î"‘5\ò!¤œÙà0Î¥útf6QÎH›Ø¶Õ[×Ó³é#×#n<ë=Õ1*¥[‰Þ‘;¨÷8BòÌ>›ÌÞû¨zß©­=âFׇý{ÏmÖüø*Þ*ìTC!{Å}ÙkS"„Ë$3Dý³;Õky«Cô`À°;½$˜oê¯ \"ÑbÛKµÉ½$ó{ÉæÁ—FÊî»÷ìÊVÇe×ù]@ Iš‡¼…Ö5´ÈÄ +‰õG?%!–¿j¥…©šÌÝ„6-ÐÿÕCA1‘ ò*7#„¬rG±ê ÁU±s²«é o1`Ã|^úK;[ Àºbà••ªyý§ÓÊ‘ÙÃ\NI;Dî9Beƒ)5óÈÇÄGQ`I\PV€å[G_P%ú·×SÅÄ2ɃÍ|Åèé$k5ŠjyMÅj>FJE +ç€r\®ˆø¯Œ ;IeŸÔ'8bãÚ•âä‡Ùò¼Ý²q*7Zsi§·YÉå6ž/†¥©cXd‰˜wâK7°ÖýÈ2(ñÙ_º{Ž$,³W  )Ú²ØnTå—ã`@ˆ³„‘©š¹ë~Á;«´ÊGYßk¤ÁAõˆ6«gçE¹®à’¸Æ¼±8¸à´)‹Á¿(¼ùÕÄí™Û)È¢Í!âÁ£æáNs¨€cécÔ)ù—7zôü{{}Á×1°.u‘0(JF§;¼™OÆ€Ža4l!xîÊKN¯ÆDMkeìyÉ#}KĈŒMa,ÍÌÁKªÿÆò㈡ÜÊw˜Ìšù æ ?œŒS—  ³eZ²&öK{s4*­qÇ’çŒòQõ(9ÀÑp—Ó°yC4!ÆX&ªã5?O·„¸áçîSÕÊS”êWµxß؇zR«ìJÑ _|4TBô˜Ó¡¢!e…V=i„ˆýÝ—ï\‘žÓQÈ¢1bÊjcQ¿Z»%oÝ6¨Ø µÛÀËÜÕ¯ŸÎÆÃKñJ¾{zN¦°•n’àRøæQf4HæEƒª‰EJjµ§ÝF{"Šz ‰Ð´¦©¤Þ'''AL­·¾åä+Q½9™´0Ó ‰ =¦šj%ñÇ‹I‡É­çB©iù%2|¡ha¢rÁ²Ô]©ߘEãS]:ŸîÐNÈ}›)ÀT,GT‡ ’fI Š¥á€ÿâZè‹°?ì*5P©À¼.bé«lÖUÅäDê¾es—Broº Ì©¤ªµü?û4jÊÃBÉ%<j¦i¨ØÁœ"— áe°Ñ=%Æ2Rt7;½ É'£öKì­.ù Wšy.ð%=·,b±0-M./xÔ„bM‚òGf†8ËšëÙ×±?RM?ÁSr#0‹’ 9D¸f±zеÌ]ùLÚ$HeX»6ÌlÉRë’¯uû±‚ð@xy”vSý16Ud{?Qdœàâ·¤J¸$ªSÇ3ãû^˜<Ù«ÓÌìЯ§ƒæésN¶‡¿KèуM± +ýóB¬Ó”þqÑ ú)½„°ô~àbzöÐ+E>æ4z$2›É);̼׾ž(´ 6‘°z¸Ožo@ÌSi‰)cçÈèÑÖ¥‡é­˜qM5º¢·C„¿×<£©©ÓL¨¿;ýô^E*Vå°yà¦0f6W±$X0ž¥ ¢;uJ%-’<>ͪšØ}?„„ÛoNPÿì•h@¬Zã0SI»,Ò™ÌÓm-ilMð¾Ôßõ:¯E4–Ì—]{9:ïNdå–F²óhvtÀ-°[í Ãdõõœßäã„ÑÒ_û cšÍJ»RVɱˆ6`„È겄;fþû+ø’mËv?š¯}£vë;aUr¶ Pé]‰mEåN“#q<8Ð÷â®9MQùýAb¥f0ºŒ[á„°h 0 '&Y-ä•Wʼ‚/Dæ•TîǸJ*,ͽQµc3‚dÈ‚m-^]JwšöZS{nv¢ï€.¤  œ¨&5T¯¹ÙOL(Î+Õ½c‘‚aËsþ”XQržx^)+|ß[â?=ºP'ˆÕ9!SvPn£ga¹ì£ÑNñAX%êÙX†d²<ÊMJ\f~öðϲ„';®“ÐɺX{Ÿªú…5ÎRM/ÅNÅP@’c—S…SðµUž_9ø¬E,&¼«¦t ‘,8j1ÝT#ÁÁg 9·ÔZdmICöˆûX¯n0ÞžGlKÌË€Lì‘Õ*,Z)/^iÜBô·³»"z<Œz]©ûYR¼[T„ááéPË“1ps¼±™2‰²É0:äò[t;Ìó_IAaa5Tñ-*›n,ØDþ—SÊ"ÉʤAh d‘äk)Ÿû(_V]í(èð@Ï‚-¿õU瘝ˆz+ªctI†zR5–µÏdÅΖO3^Œw{&½qXa=EuŠŽ­¦[æ•’§Õz:]ik¬çHtèteBb‚ÓóCî„Ù‘@E"ò^ ÂÈÚÔ’ðgˆ0HÊñÏMâuGHXy‘V¤4e¾&¾ëK˜­€Ã ­+‡Û•_ãâ73sìqÄ ™Ÿ¬YZiŠóî*þXcp¦),EáëÙ¾³Iújð2òCÆD—_‰yW&eã]]ÊXÝä<¡ªk9óêu»^‹Ã™ÔÒdv$ Ò÷¸L­ìÑO+Ù¯2SXÀëúþüI ÅÌòaÛ¯CÂ×¢_û°-ça[–¿À•Vœ=2øÚI½FAE¯[E¾ìABs< <†ƒŠÛPß-·I¨I’E&÷‰À¡.âcaU :xÞ®#ÞKlh—xT¡&ã±Gò¼œ#@NÌeÛ!>ÖÞ—\l~4 +ʾŠwÏÞ7 + +“ªÉ á]E]‰‘l$,ÀQ€ÃBƒP^;êŒ, ×IèbȪ%f§¹¢.´¯—„´†I€8OL•MÐ`ª,¹‚gusB²Àj,û¸Ÿ¯);. ‘‘ /ïì±€-™šw7ï<»:Êm©¨ I¡‹ˆ!>Ž¬’Çß×£E”žÐŒñˆ—‹»C!wñs®™CMÊ|Ê[GùÒ‚6rQÈÌKÏÃja®<¿cYا^<öêV°T2O}ÎÒ*L‡æN=ØÚøÄ(µ²ÁÇßès_×O¸Z…õÖ©öÒz—ëã[`Nz\ ò¢†ôˆW½òJwbs§êKp³ˆX÷õÀªGVñžE(… +\B¥ÇTÆ‹WDï™×P¼i¨p ÉÕø«„$>(\0;„Ò—:kê>¿q$¶(·Ì7)%ç¢xg9Œ8¦E9ª_mr^WòÆãJ·œtF™Q̘E¼SâžÌÐö!Rª®œªZ…ÞgZ(ÆTX‰÷1¹Lˆ¼»R*aÇÏ©;jS×Ñ´Ie—‰§aô0Ý(U€é¢xÒüõ ›…´„TŽÍÙ+ͬ:6Å,]0IIûbs#·œ2¿d˜-¢Y”õ'&3 'a¯){€¢V°LIX‡(Þî;uÍdm°„ïndLÄâáÚ:_–ÖéÛ‘øŽ-ä쌦vF+’¬%±¢âOH1(ÇQlEnŠh-©š* +ŒÞqxÍåVùÞò:½åBòÁ2P4ѽH Ôò~>éÉÚÔ:< ¹•»éA]ï_d¬½áŸõ1ÖÊE )x°hH©mº²PËΤ=Ü‹94“Yý£2â/`Â`kš°Jš–YH!ω‹Ø6RSj:C‡žlø †àŠÖ$Cî ‰ê"¤µÕӽϦÍúXŠÖ‘RI\½Ø†F @”¾çNßO kÀf©X-Ž0Ε®…=tUê|=šXB¾¦zÿ„º–EX¹à}ªÐŽ®‚µÔ¦éð7g;'Gƪzƒ5Ã`ÃÉ›$¨V8c«Öz£,¾Ÿ4¹ U¨ãëD¯£0ç981œbb•²p½³õ…jä#<ÃJ#ú5¾ ò§ÚE½0뫼‚rÛY§Vïþ–Ž$¦zÖê4ÿ8ˆL3:6£$z È­T‘Ê¡RåQ=K%¿ RùK"aþûßñKýwŸèwÍÿGÿ÷:ÞåüGsÂ/Æ“r@ê­äz3Ûø¢xى̇â7=‹IÀ¯$y8¥1y–ìÁ–Ø˘ˊ»Ôzb~²pe¿ÖBÔÞ@õbT0ÍdÕ‹ÍÍ:ªÈ"£5Ìɲf{vÄ4FT `Ðf£±fŸ¾Â}øâ \–G¬sDóˆW1Ïki?_6CU良ÁIhNƒ¬{»³¦^òt*éDƒYNî“E¹ÖôÖL„ßßh}T:W%Œ_ÙáØôu²L!3êéÆÐŽËJÜäž C‘‡›ª¤À|=“ð´ŠÁkl¸ð1üyª5ÕS¬g#g#Å,O/¦¬Nê:J×”¦ÉkEô^êü#mmÝš›Ϫíƹ9Ä»ÈßJ«Ñ¯Näí¿_yP´P( Á)Uý§ç$EÚ5V˯/1/ã;+U{5x:T77¢•ûó “WDsm.ËØ|ý;Ò GÐñ­­œ%%V +GMâ\B>…K1×TŠ=÷\ ˜Á ¼4…å1¨ Jï ™"b#ýÀÂlƱYBÿQ§ Š2h–US_un:£aá9ê¨SÀte? An^5ͬhÙ—RBq`~©ÙBwu·A²6٠р(g{Ôõº@”×â{‚¹MU8y9ëdvbj“HìKTòö÷++æy¶/lk—¡Dºg‹%ÃiNÑà­UÙE­&†sɆÇËàÆýù·év3&’„üâüÅ2ê[ÃÏã­ø—"ÊØ÷tô×ÑfYÖ¶É12˜Â•‹ŒcûP`eÖSó]!™ËœnÅèÁ;n-ÅçM–¡'õïNžL„4 +"±2 É©É7ºÔáïÌ%y®gpÒVª'[€ÞQ!_瀹äæïª;ßy0ÿnG}¯¢*>X{̃©Ox ÃK¸³¼¨¦ÆlCæ>§Ì ‘ áWC&Y’ê÷êLŒíê,ÀÎLà)š¼%1^è•å2F¥ŠeìzdÛé%—\¡ìEN”^ðQ<%IÌ 3QœLWÒù2ÿÍùß CšháûßÇʳ"k>‘Ï ö+ê7 'a¡o"X#Óø1-<_~-„]E)ª’)<¢>·c?ÇŠ )L2£šÝ m ®@‰~ÔdLYŽÊ" ”Ô˜”„~N—}T-§àãJeCµ H¿ÉÂ:<ÊmªA7YÓ¦ ÷ÑC°RŽÆJ~÷_ÜhCѯmC”œŠ´ ’þg‹$P:Ž°ÂfMý8I1^ŸI–-óFë©Š\Cº¨×*¹ ®ÕÙ@ŒTñ}0«î2s…‰˜˜÷9ê6ŘSµÜ¶¦ºï¢ŒÿF;v ²¨4êC;&}‡©îß·B¨)[ˆÐ^°Ü~¬qØ8ãâì|;JÜ—l+óè»Ä§Üï ºÁñ-B×lHÕ€Â:»*MÀËâ %¥’Tt(Ðù*:ówÖÙµ5¤GõÚ ®úL-Òˆ Ì ­³ÀDY?+úE+8¯y ; ƒ2ˆ5ÿ6N̨h€šGC‚+PãìçP*ã\`¾*(ÇïYOâ¨t$Bn¼BŸŒEaS°'íté0š:×€ÉôE'óo=2œ½³2“óÞ‹0µK¬åý®$%§ŽÜ 4àdy± €Í-ŸMi,ªÛõéœ yuò™‘ξG"¿¢tWÏãg;½×{d®ê?‘˜O²+²&¡“)R(»Ì"¥éKg’?Ü)r‹ ÒŸK) 8„3¹äW"1†Ô)Y¶ù\üÌ“¯Âm˜ËýÎ[Ñžft꺛—÷^ãÔÇc<½Ð‡$¥^`l¨,Ýϳh»øe8vHR‰¾ôøõ¤h“'>ÊÀÕü›óôÕ$‚.y/ÆH6Pó£a&ÊIJßdf{èÇo½P®Ôá“J´ëø“/gtèÆ]Š>:ÅPBÒII½%»Êˆig®çJ=‰Ç·™W(,2¬JºCÑÃÄ~ôèG¥íA‹?å¶C>UŠ¾Ç¢‘!Uö› µXp£Ö¡›ì5ôòQT”˜®¶©1F]o´úÒA ¬ÃT£–R‚=ØgÀB¾8„ †B‡² +îÜ,]t•&}ô +ÑÆóéº8½õhickµã~Òµ_{Áa þ?±#?~˜ÃËôqô¸Žôã„j’>: +Ý~ù{Nl›[¼Î.ÔðëÑÔKÍ :§.kÜýM•§Né!>È—(Ï[/ %f-Ñ“ÒÜW¦áÅa(Þ4 jÇÎâa\ŽG7a°òh¬ÝÉ7n€ˆ*¼A_õ"#ë¯q­ë¦zæ×Á@-73×E€¢C¯Œ½˜ P­7¾¹PÖrð~©ë¨wg:K§&§  cMö40ŒLÉÄc%mç]r¡'aÿxÀ¹ÂP">3Ï2_Íw CS/¢Ž´¯gk/\3&rjâð(d%R^‰úîŸ +~¦þ;ê¡$±;À„+ˆÀˆÉ‡Èìò+=ŒóðˆVù5ÞÌšçüE…Óùªf {Øy8K.¾×ÁÕ¥ñu’øW6¨£*垯ãÑÒ#ë/“u§—PµÊŠ¹u(Ih"j[¬•óÊ¢<¡8¹Š?ý%÷`ô!†E¸ˆ|UÔQLŽKq<ÇdþÅ(˜œ„$áÜ-¼ÃÒüˆÆ|yúk¯Cú¶6ÑT¹CMö`aqÿíÇòÈn^IÚ^×L90ô<í´Õf¸Ì—/Q^T ”ð–,ýzôvô]jžc}ú¢^ÇK½ òžáà­ù.›'RÌU>ÈRÁ£ÌöÐø^,ê°¡·L–F•*ý•Êð8AWÉa€‰L­Šö¢(KlXö¸Ð’ëRïëArù®{ÑC8j²ª‰»å°*!ƒJÒ¬EЇÁ•ÁB‡4†’d‡„„"ÝÌ… a›EÁÊóxZš@D/ˆÞÙË™4ÐHæ¢Z“°ÍîqŠbJÓÄOb&zH%Çæ‘ÿiªÜ$ Ù«ŸûaÒ¢W«ªmPUÙaˆŸfå"¼d)ÙéO²¸WŸª"8Þó¢÷mêºH¦èúj;d!ÂÚjf”‚Œ¬ò%kò­G}‚Šð÷óRºÐÊìu?d €FS¿WsË[+âŽç¬r „}œ¿:}ˆ+Õ:(Ùçp.ª!Ã:˜:·–âÊÖ×#[¿Ë4üÀ4#^TºR$ZŽ’oM¦‚‰ïåXÅðÄ&(‡O&x9âo2ݯïñ«=ÎÓˆr2InøÊkò —ËŒÂM Òì1³¦4y´@¾6jÂ,4Yt]ÒÏ,tEÜí‡2uNN=Éù¦Û–,œ…äù¡N6fpvê;;)jB}8½cFQEUd¼GPõR8âkèÕx¢=îhßtºŽ8¿:y¼¿z4«¯XÒVÊîWæ†y´±»ñƒìÔAÞz<Ã&‰¼-bÿïzQº[Ò6•Ó¬b/Øw½Øz¾B¹”Û×»ý*’õ þ!ELOôZlÔªUò1 ™²ò›¤²ýwjW™œÎm10&‹ÂmI¢2[|v¯Ü¨­›*+Ð}â{»$Nî4…G…µ=DÖ“™©)ažÃÓ/J;ъ䉸™ÔΟÌÔnVH§×£¾¦^“DIó ÊýáèjÕÍg:Û{|+==< ‡¤üB98.zÍ|»BõQÆÅŠ¥æ@\Ýõ—|ï1~9¦:°œ+½õ¢(ÌÛÅ%Y>xKõ-”)¯Æ8Xü&†'+¹Ø·[)ôºgï‘ ùø®.K›÷·ç¹²Àø–GNâ š’D_:ȗ׌ˆÈÑ_;1BAIf´´»JõŽŒ@Sq"y>È]iG–Š;q§ùÞãùHÑêä#mhÞ¾ŸûbY1 pI.Šž€Ÿ­ßö`{$$‚üC·í´g¯³Šò$Ptd`})XƒnãPå”#6±q²†BóßzäÃ+‰† ¹$àý<ÆÈŒþÄRýÊXª¨~jó]Yåbò FϦ®ó„R+wC3ý˜ø÷" ‰üŠ +î4T”e0åjÙ#ÔÍ`õÔ½RTûú<¯î/7aæç1–çêµæyº÷O¸zX™ŒÈ_­u¸Å÷1PÀyiâU_”å’´J¾ˆAµ3µ7ôZGžK ‘ûÄÆpYÔ˜¯~±V¡–x:ÔÓádxÚN?>8• ô·^ò‡+šPEiL5Db7ˆ>ðw=R=i»WHûÞ ý@eÈ…Ä PÉ.¦ªLüDÔsÍß0#LË¥ ¡±´—JWÍ)F-VX!°_ÆC+…ò=!à!0*"ÿŠÐƒ&[mØá"‚ÂNˆ^÷ëü)ÔqñEM{5Ó{™”s¡ŒJ×tØßfkUrÂ5<_HÍ2ŽæYz<”þ¦Ä{ˆ +gqùæ;\ŸµKÖïΘ5G%ü¡k›NŽéœ ï›[ÄR¼3ª ‘ôk/uÅFêŠí=1S Qt…\¿hÔÇ<,Žë[…{©4Hl™ª§×Ò§g­~¥î°ä£;·Ò)ìÑ€XngÖI¦"E¶ï O–_«Ýª‘5¡ç,› ÕPìºö•²¼™G¾ ÕˆVóÞ°~°ó¥Ç¯OiK·©Ñµ’~?Å¿$ÙŇ\r‡ŠVk û{‡o×Ư4ÃdnÆw{“/P3Š/Q­ËÒù¯ª4œVŬŸúÎ#”'ú7w•ûD”åñÐ@ öâ,*N£¡hGÕ%šNh + €'¡ay•G¤Ã&Üvð¦Es*¯¤/NVR¸`®t7V÷ÄË“þYˆAzu¡‚ÏÓÂ!>…©ÑˆöWO-ŸE +ðÖjTG”<6Pû'¹œ·£$„uÄö¤î,ŸºRøp™T. ÉþÌÊÅ´îùs&³WrùñÐI¾eB=S΢ð!8‚•©`ŸÊ{ @J{rû_÷ØN’ç–h·fHb²e3é¡OÚ?Vƒ¨Rù +¡.^ë³3ï)¶Å&ôÏ¿Ö×»\"ÑÕŽ¡ö¾t)%ÇðÑ„Ý"ÆŒ ÜØõÓC)üE‘ê¾ÖSÉ׆1HÔ§Žï2¾%Oñøh“¾K †ä ÿFC_eR¨»åfƒèuŠËi¡Ò|݈sb\œw¿(©òc†k›>^É»BG‰´ÙPÕt§žØ[CŽÌ¯AÄÛጼ£àº,¶C΢©Àªßï=|ø¯ |ićF<‘·5ÀÚ*QŒà¿Æ¸*žJ¦$›yvÓ÷SLTiû«QÈ Lß|3¿X‘Š²±œPM °¼ü{úȇÔض:Ò*ÛÌ+‰i ÿáh¹)Ö½“VýÚãfÓ¾>±=kÚØ.5¼†6á(^¤„-F +MÂL0VŒ"²º%³,òñ%ŠÅ~ãí‚ ·X‘hàáÒ€dùqôÄÛ.}¾wj•=1bý#t6ªïi°–¼oq‹ÜgI¹åÁÀT7m<š[Ð?4F¤H³«‰¯Óù3†ú"]¬HÇÁ¯ B­ž“}iƒ  –#üˆ!‚çNq•ñ,yõP‡‰¢çï9Kf¦Ð·)ÜšÊ1d£áöAX!ªýëßï\ÜžrñomGj´ZÁãZ]UaLH+‹[š»¶…mÖ«áõÝ¥+.®Ùå󨘡UúXM4¢»À‘ö™<ÃqŽåߊßê‘Ã'~ô`Ô«¯lØ®tcéKVY^/id³B¡¸Ÿ*_åpYžMá¼®‘ ÈÓÎòžê|<'÷q½0Løõ }C¾aJ´*WbâVbÙf;¿]Eº÷¬œÛ‹·Æ¬ã”Æ'Ž¦;ÏYõEP=§4G{5äéj®í:å¤îÞ9ê:Ô“k«pEÐMŽ$ @êÉò;Øh4nF Ü]ãúÃ#là›?,AÀ`I‰—=dL¢€å«¨›·$?C½¯Æ­ˆ™q€ÛÌß ;Ôß ³Ü5ቸ ¿^a£Œ¦…XâÏ}–ÐÖ]…TV²g²Ù¢ä ¼ƒßã»L9Z0;¦¤ÒÖì¯%‹§10)ÇJá×G"­] lÀe‚wp#S&ªH »•©JÌÜ¥VIÞ¸[µRÛxUm] QŽ‰èÂ"^{©^ÍÞ‹ê Á(+?Ž$²cF…ØK©©€—'£­r9’&75ö˜]UÜràÔ* [¹9_ Ü K±ˆBÅK{QÕC°9._ÿVê‡z€Žú3?ü^( öYG 0›‡_Fjîè=ŸK<5•1ÖbÎJw +tìÐ4d~a‡þã`XáòS+ ßÛbϤ²îè—¶¶ÇA;Ú¡¨àŸƒ¿ü%Á6r +—Wøï<Ù…Ùãø™*èÿówñÿÌ¿úÿçÿñû+ÿñ¯ÿøÇÿçã¯þÓþßþöOúûù§?üçÿ÷ÿËßþÃ?ýáÇÿùÿûÃÿ¯?üO÷úŸÿåÿíŸó¢ßñ_ÿþŸÿþoÿô÷÷‡¸Äonî~ÝÁŸ¡?þ¯üï/‚hÐzZPÖÇõK:£œSõ*'㊆;%ŒYéS›,qx­7”ÊÓzU1Ê>@ò$~ýÙ£*€€c¹¿%]Æš’ê© +¡ûÕ–`(E ÅùªuO# f½(DPêm»J¬oàAŽ0pe§üE`fO1£SÄ"‚.šCå4Åš¦.œý£ÂŠÈâF¤Ü iÉmî²hñáùA5 ›ð63é?LÐØ«|Ø£ßöˆ8=•ÞJDvô¸HÎå9ÈÆ9z9YÒûœÿh¦á!`F\‚,÷Lë$3˜=¦xÂx•-{,ÂùÖ˜,föèÝs I‘=%@r~(VPA±HeÅãýfc³¦îÖå‹ +1 ûFqq§›•PØ“X¯ä>áÁó÷I-¹•ã^2Q,ñ1ÊR 6‚˜¡DVbÿ>ªˆNjÅà¹J¢Sb¡‘¨Î‰ªSô˜B…Í%êÕYA‹áÌVsàiˆa]}¥3àd›U‡nwìL!yæO„)?“n'cC'Ôé„Òov ‘NüD¿kÖžaoò÷¹òì¬à¥§ž¯Nã +þÝRT^§wÂE‰DUª±—ÌÜ9hÌ/íŠS˵ÈÍØåЉWJ7Ó§±îÓè[ƒa+B·®"] ‘Ÿã5gBj–ù}#bð/ÌìÚówÎZLòKªJ@¯cöÑrBŽK.r‘=[ßöà÷órE>ŸÓ¿uZ¿¨n;aêw)WYò BÒÉöZžŸjÂSš¡ðµÁ D8$ õí¨;ýøÑ«j½ˆ#ÊÍ~M©pwÚ¯ ¬+‚ä³êž§m§°YbÒìÙ+a4dâÎÃÓ+3žøNÊœgÀ z-QÎqfšrvŸë4ÝËÑ +’R¥ÔÀÙáYˆ÷èÑ0ï)xyEÐé1`~ ´Jú7R™y¥!ÆEnIª»´ÌÆöìØf +E!vÚ‰ãFì·l÷Û㗠ݹÒ×^`w'u{$ɘóîzà«Esí˜6pbÉ×5}2ñ9¸ÉÃ6ÿÚÃ+Ö81VÑ|õoçQÔ 9¨æhd﵃%•¤yà×ß ã·NÀ¿ŠÅa ¶T ÝÔ«Á–Ã^)hÄ)ŽÑg z ²ö â=–ºuk C[Ù¾ºCs(rêuH1‡™¯dø™?Àa VÁ÷ÖjREã•ã‘À(a!1±’ñŽ –ŒÊ›H¹Õ„]§AyÑ(÷^|¸îÅ÷¢!š<¥1{4Òvª°rÃpòR{€oÐS Óšv4ìcæÏb¤ä÷IÕÚ8QÁ2 +jI±@3/E{HÔèü“ ä°A§k˜g}䡤…¸‘Òæç°~¢—y±—RÉZµèAN‹ ‚£‡£ŽôøÎ[(ɻ3HàžW²’ QЭ-š$Vž›jM!‰nó~w†YÓ<ÔÇŸÿH~œª!\IJS+s² +9¨¯æWDIö +…z¨žCÃäqÞï4¨ÒCƒQ4pó³œó7ÄÑèÜy(Ñ8øði@ô,¦!݈ËH#q’BÑÀ󘻻åh6€«Ê:/}T½Ó;¬¡¡`ÙÓ„’Hž»õªŸG1ç¡âN•¤o-)hã'>2Îõ)‰#dbœ©ÿáÛï8ÆQ,&äu«l`€Å÷ŽËsS-2n;bœ›Ðx9øXþ¦rÒö|¸”ìœ[€øð( ¨9óï1#ð÷B²©áN{€}Í+:$;‰ùñÑ£XTüê¦\c#àÎ`ÃÓM7ÆO×ýW¡§rYq”G[Ћiâê¹z¤V£ÔC2½¥ËÄ[CDÈW=¥™÷F¡œqfÄ +òá±ÝìÚQÌ5¡J¤Z^ ywi¢ÄºTqâ~ÕzN?M +aY(ûûåÎ&ÏõÛ¦./&HnðÀ½S:tæGÜñµäµ´Uמä=,8_‚ìyT‰‘R­ž‹æ„ 68O¾j´1l¼Së ­]hÅ|#äMAš4shhbÓ#–E-WšìAZÔVÏÛ`ò4?ÖAUè-mD.Pº²øÞ0Rt!GÙ—ÆÉ|Ôò7!0ÁmW(Ósgƒ·61mDÈž†ü,[ò½‹ó¸?ça6W܃J +²¾5(SqxUo2GœN#ãXüZ„^%õdj¬äˆç#[ƒ—Ésa§­g¶S½B^-|~ð©)V¾Þ ù@žGÓzAó˜g”S%tý¢|–'bøÿ‚(ЛoPÏ +6‘¨wú‘Aëò–~xwÖœitóZ-™ðgÒ®ÄLd-ÙI ÁbÃÇäq]IÞÀF¼«Ô’w3ô%x9}–ÇPš?#ëÇŸµ§ Ï•ÍÄ@Ø?ÈndH k™w”•‰Wº³/ +/DZPšhjCQ¤œÄJ} \åtlˆ0S ¬Sºu@ÆJÅE6a¬<=“o×±'z„ù° +jXo¬2оÇ8FÏ常ö‹›Ê¢ +TpñÂ@ºq lŠÞ~P‹1ýëàëþ”g¦1í‹"€ÄÃÑY™:õ¾ŽŸê\± Ó —›š¦óày‘ «œ²±žhPžÄ$v¡¥–V<2QuõºŠÎ”_³= ØÕš©ýóliütL “LwËÕê9ësö„¹§Ò©zX×ç»K’!L½éÐËØfOm.T/®7VJx¿5€{Q +¿´ð¦IÁaK}Ó$µŠˆ4E³{÷˜^9ˆûÄÌ|éáŒü¨ãjìܾ9Ú»hY5€{£jʘ—­dk‰Úºá+â õÀO Û)˜€ÃL,0‚t‡f°[‘Z)j_WœŠË_ç°61kAÓißôÈ¢ï¼(–&ëoç:î{äú•ßÖWá­áÁÑ=£á7Š-`¬…p‹¶i±róÚ]û ßû±üðŠÊÓÑÿÑ&-HÂèxŽy oqkÕ]Jb,ßÆ•æ{yº¯;a5ô†ƒœ„…“lR1)ß^ ÏËŸnÞØâÍòyÔH¹[Ì£$ꊾlOGb]pÚÒé<¶Å–¾=|ªl;q_`ÏL­Ü¾Žþ=âÆ12%mE”7 [> (¼ì¾ îRMóKÁ¢4@Ê$,øÒÀÈj²u/, ÕDð:1? 8'VUkPusë*…묂+ÙT§C?™Ÿ¹à§!]Ú>;wÅbµ©—Ž†yö÷Œúú[ã—4ev¹6ßævêÉuŠA@©'–¾IŠôiÈß81 f’þé¨;•—ÏƛЄô­aâJøzd_‘_ÓÔJc¿[â¡ZûlÉ$4ú{ ìÖWÃ3ds(\ί£ðáAñ°°(an+Èû_‰ ëãiøµQen†èt_ó5û7•óHæV,~‰yò—îä _l|Ü·£æÔòæÆ«…æ‚;ÖGZÞÍc w X׳*UAÀZåuHIiKƒê.¨Å¤£Ýy Š}²®Ç˜âú¢?UŠ×ÐD¢1Â?fÎ3aŸyáª#u¿Òûk V‰#P’hŸFµÔÈ;¡ÑEø ªœ'§¼1î‘™AûÆ\.Ñ+5–سxr*"Xî5ú< +󃌔WHåó ÞÈ ¿øR_BF›È{bÈÅÐÆ渀°JÄ=úÓÐOÃ’¢÷SŠÆt•"I侕ãŒå¹y”;jOg™6À8m„ŒÃ†Â”§‹‡!Ï3w%yÐ0MÀ£WÜ«jþÜxÚ¥låÝáÞ{.61(*tLDZZô\Kñ<^œã ¶“íjˈnš?'”@3ó7s ÀõUƳS^¢*v¡džør€Á ûûÊç- ^œZkC­^y6çðÑ€žŠy,IXÍ”ƒ7œL‚P€ÈØšÐÓ'¶‘L+f1ÜZ²'+PXAâ^2…œ‚œT‹Š)ñ}—•7°(Б™ÜH°2„_è[Ã]§™™›/€ß‘ɹåiôîëK¤ 9D*ÖˆtRBCãŸ*fEs‡°¢á{ÁœŽ¬{!ݽA| Ê\™¡¯8h½óJðÏ‘|Gg]¯—eF–Y6L×€ãwçÔÚ +é–dEñ-ð“NŽV€H“"ÁBµ$ÐÛmË“È*lE±¦ì!0£«ñl}ˆa[WKoTï)Â#Tz¿®¿Ž^éÓáÍŸù8 À·4>-y^ÇG°²¶}jW}r_š_Ü~ÌÄ;«y‡Ç¡£5äZÞ8¯X7$Ï®`ØêسW´‡‘šQ¨Û' lÄœúçB œ5Ocóè&‚)Ìd@Òç»Vü&6âPBënY6„ú#Ž€; ŽVÎcƒn¯F•Dû™Qȳ Ž´¼xo®„ +yjÃä/poàu»ç!I–+I’óóMÄóÔߧ¦&Ae‚¡è÷Fj]í³á¿Ô° +šõQ±~%¦ÇÇ]í(½!Ã7‡äŒJŸÏõü;Ó]©ÊóüåÆPyÊ-þÚHÕ{«Ê“g)Ì6Èׄ¿ñ‹P×ü ƒ”ù¶ ´’‰¥ IîºÉ2ÿ¤&ä—ù¥G¾†©îÃã†JÐ7çÙG*…×Ù´Ó,Çâ™4¸o=dµcow$i¾éUÒÐþÙ¶>tÔ REs©nR°eº­B:Ÿù†”Ϥ(ßO®É^¨UÖ õšÑšP¯y.B zX0EëKœ =À »…ú1= «IÛ!íʬ޿.äZ^õöYy;äÉÉ°äÙc»™Þrjè£ „)ÌÍì@²¡j&V7û%@Wÿ6檃T>—2”’Uàû‚ÑÔ‘ +¯»Ÿ,íÖGñÕ/àK|ò:ŠÕ“*z‹ Š@Æiyû{¾Ö~^ëë3ûÒ©œ` wÁ掌{Zçžj¨+%˜Œó©È_H‰ò¸¨BQÙýÚã×Sò7û©äó7,ÿI(ʧ¤1˜D-­}o˪æ0ÑH~àËà…¢,iºûà…©ô.‹ÙäÆkfÅÆxoH¥­v”¶ž-á[/**„©%Ó…s5U{êÏï´… ª7.5%äW"à¾^uÄ*¿±~©ßE/e9¥-Oƒ$–7MekV \ð^`•9–œôYH” Bïú¼’«ŽVŠ>4§Jò¨°ãy ™ÑGA>‰ÌÜ?³‡Û­t&H *]]ñ‡´Y藍ÄP†qªïÍŠqª¦ù"ºÜR»S‚³"ò׿éAL2EhÕò˜Ñ¾÷—@풡ߎ¦rÎ;¥pÀa1ÛÆwBX7 +À.Š_{üz"õ +›‘výæ<Óı…+0 )3£ ±…Ò÷׃Z|oS)§¥R)Šâ¨Ø[±Ó x j1¿…¡LÁ¥``þÚã5Q€³…]Ô”†úz¨¶àþ*Ó×HeÄ wô +IÅW“Gº–‘®hçq÷|Üݽ:¤†MQߨÛoœ©’ÓƒT–KD[ébê˜çJ†¢ ·= %t©çíÐË÷ɶ¯‘*¡1Î×:w úâÛRI‰=°H;RHôÐ@Ö½Ks‘åº:Ï&¯´aÙqž–F‹8@­€; :²:H@Ù{yc¬¯Êy*wé㈉½uRákt¾Äu­yBó 9®c¢§6jsËŠ¦%³ˆw¯í­CnŽ”PôI‘/gI'Š=¿wŠœÔ>)  ß%IøJ÷°ÄÁ¸<»Yr À Xø°t+rT/ù^6{âÓÚÊ÷ ·›‚ ‹‘°owÿMDõqË÷”HaÄìw×gn(“y'ßÒ°™9xîì˜ÜrÀTB¨³ãâvßï=²X¾f€ïÞ¹òëyPè ’G;™Ù¾<— D î›÷³E(ÖûS–ÿÚ x¯ºñ1O¯tÀˆ{dB@ÛM¤!©¨íoÊØ®°»Êå…’hùÁîmL‹zs˜¾Ìê+/\Ž¢¨ô‹roöÈM5È”?˸È(Õ×…T8UÌû\_OJ}”[!&¯ +[ôHYâKi—|; Éx;wËs(¯ÆÖ—çƒáQ{¤ÒâJó¢–œXÈCÀ_z)m¬ÂnL5*`|Óƒt[{a{¾4^•«@6fB¬Ž[~œ$ˆC¾¼û~zÄ…„Åí‘XèÅçBî»ó À5HZƒ?LírÜèŒk™åØeeüŽ&_ª›—ÃxØTevÜï½þ˹÷LýÒYØ•ApþnWLvò'³œt`‚«j ±•Yô½µæY’Ž÷¶ùÚ qŠ c>z°¢Syû]‹u@öM@—ñ[á,vX`ÆÉõM¡¸o²[å^ª©Ù% à’<: ¤ùM¯ksfI¿öÂ-P¥]u±3>솥å*¥Ã3E] 1pú“t¦HKÌ bg–”ÉK’ÌU׿1Q>ä§ÀÝ,1¹"8@’VB0É™aaKÕà˜„¡ºm&d˜:å¾jÆ‘„_*]ê"é]1®¼O‡l},Œé6\¦KÍßœ"ºÏä…ÚuÜÁ*LR¿•:K|& 3s$3øLb¶Môòƒðî×?gJe†ábøM§4#ø·[lWSÚ! ïê@(ò½kî˜âÚ—Æ•B* jÊ/ËÓ"ë^ÉrˆÅ´GÆåÇA¯È¾AظŒ¨áÃ`0[i¥T©ÂÀeæCû]¼Ëˆ‘bøN´£rPf¸µ#íK¬XröÇæ]ËÁ[—S꧓æóñKÄ×ѵr†šN#üY´Z|©ÌF³±&Äò®È!Ð;B–dHýO„¦=^‰=­céÕû:½’È@º-ogzÀi÷F@¢P»¦f(Ú²rûâ­c Ö°Ÿ/•¥š/Q[y·ªÛ1ÍW«Ší©ö6Iµ +4]îå.weÆËu±9×Ã’È!‰-Sì#(Ȼٴ”N$xÅ×Ì ùpjLœ“M¬sÀµ•¿˜·¶S÷û¢]Mü.Xòp†õB8F2Õ_ô”Ti§(¾ËA5µü;œa踊`ÊÊ+ÛfJpÄð$—†üßGu³',õb–qƒ°Å·y¸b•U +(ËÐ ÷âž åÖ]ã¼×ŽÙë:IX‰ÑµòpÓ?¢¾dw챧d‚ ñ â/µvDÃ8ýã=!@ŠjI´bfåøtÔ™eM/ëؘ3%“AL/­ +ôÞz*)&¨ õðÀ©V’·.µ?YÏ^+Î1AÔPíµ67‰ÚGEÙ†5à,ëïhÙƒÁˆá3Àè֫褜¿à¶&\Á¢oMY¢3WÜ—þ’1j궬p/«óM´78å‚öT$Ó:*BHÂúbÀ/ò¤ÌÛÈð3oÇGÜÖÎ7 ‚0R€ø§ç7ö…è/—;X þH¨{$· –‡ö^r]ƒ„zíìµH½cØnŸ_0Eèm4™i%%'é1mA/TEÕF*§å•"¥®ðª?£ @5;>}·ÕO5Ân¿ä•¨ïÒ£KßÔ¬¼½NöÁœƒQKB0%ÙÊùZKŽÅøª.È<šœÉ#&Ù!;¥o?òóü"øÕàöÌåŸ9£>£L˜\¨ +¾Jà@#H‘$¿ÍÍþ ºbü¢ZÜÜ­oy2Ç<$ÆÖ 3Ù‘b¯ hßÝ +6O˜c`Ñò½ÚQ÷Þ±9%i@ß05öñlE¹¯+‘Õú€«îmbP‡#o‚¢Cw1‚ËBÁnLéÇÐaÝ™@½N + n•VPLÊ`(u±œ‘ë5O&€=¢á¹È“!ÉgRÝ­ÞéWþã åHé‚”3;S/ÔiY× žÊZ?BäÔúåôþ.‘€ÐÛ­5ÓIjÖ%†tØˬ6{DEÍl®ó<±rŒƒ(Ô™·†M)læeü1ÒÛƒ°nSh—Sqå<ÎÍ̸‘zÖ$eJº½0 WaðÛƒ»»cHáM¥ðCÃ[¡òÚ1çUYz¤†Ñë•4ºhã‚™FÝâ eV6Ôð‘ÔØ:‚]¤®pKYÜ•  Ð-nËn Ï0 hÜŸšΨ4×s[ ÜZLUD¬º\†8-v²MYzX0ÞÅ÷HVÀÁ€×½¦wA/RZ`ÆAáÊ‚£=ø{¤]奔=œ`é!Wºgqf\ôëBìpèĦ›^Í*3¶-ï÷z¤ÚKJµã)HC®»8JÏ·n˜èm½8^Ð`Þ}‡î‘ïa [#Ƨ§) ‘€[Ïò²ë…`;#’_©¹>÷«Lçlb¯wðå![`…ÔˆÌ,«Þ7 ¨y›»¬$JQ&ªêä $ÁþhoðQòt" +¼P•%Owœ¾D{X`H1›8éö"ˆËK|°Áš€ÑœTeHÏ´•À„ +É#¿E]œgM#¯®§ œ±H*³¡ñsb«V×Q¨Çè[ëžàŸ ©¶Å7‹æ›¼¢@|“O®ƆÀEÍS¬ʬ6”Wy4f›nz§QLôè}$f¯[ª¢^dCò_EÀûVè’Å1{ Ý6š¿.L!ÂÌ«Ÿ½(Œ¨†²í5X‰1h€óü:ý%F¨²b–Ü9*†Ú·È<¤Py#uîþê碼).Úϯ"±¿j”‡•…’„§%ëü#~'/‰¡`ɵS »Y4°ªÆýPU›‡vI|RL Ø»¼ªÉ°©cõ˜* ’¨4°ïù! †7’"ÈŠRÙÒà6å%¥íHÿé¼2_⧠õ%Õ/‚ö¡Rºc„nŒHŒšé( +( ú±ÆÓê>ÈŠéÚ®ë©S¢sš¤À‘:øúj*H­¶Ë=ìäš{«Ó8 £²9 ÓÙ•%W§yuN |û­9,r)Crä ²ØV†Sš‰ºx–!²Ú‡Œ7è·yÛ¸M„Uü©Ú»ÜŸØÑÍ@o•¾ÁÚˆj[ÇÇ•ûÝsÉ ÄKu–ÅŒòJÖxFÜ\kFF“ÿ«û…ݬÒ%™X…îífû ÉæÙrEaºè‰°øÐcŽ¨I¹ +bƯ† >'ÂñûÛ3ÎSpm}ˆd¯êÑÛ ¶²!“ší&À”vrg¨–Zî¯/¸!û(©ÂÅ-ÇÀ]WÉ£jŠ#ÁcßöP¸ôfw‰¯iÞ=Ê:ñ%&¿E‚Qã’“hQ\mK¾n™lŠøÖö¹ìü=6¢ùKî؈ÆÃ]uRÒ†MñËâ`ãÙ Þ!ª‰ÉVÎPÛ‡G<‹Ö/LHž=Y¸Žù ±íS}ÛFüa€ý#Ì#ÒÀ«T=Šú<éžÜ?&X$1UììŸzŽ4¢OcWó¶Þ„.&êørn> fišbŽ´³=µ¨ÒôX“pÊÕ%1Ù¹»#¥Â\ ViO †ì +!»vÌ”eG¤Ê|ž +¡X;­ë~)QBá×}1`È•Sm O_»$, ©ëU–¬uÀµ¸z¡oT=Fno'³ý;>†þ=±ºÌ6Õ†G™”FËÉàöÌFRX4ˆ¹è%ÕÏûÐÛâ¦Dlx!Úqª¥Ž:4D6+¨Nžìn)êÀH%þnL>šDùC`aÉ–  <.‘]V`†Ð‘žjïˆXC2«‘ŠïŸœÀ’I¶>úž Ð}¤vÌE•?@ù}@k`qæ,¶UzplZʳ&nHºô<@w3t ½`¢C›c>$L‡.$õ|(ÖsD/#§î!yÃ’°àÑâ +"€k·LD’#ñLØ¿ÊŒsøÅ@2¯ÝRR˜jŸl%!loá½G|õÁbŸC u+j]$Ÿvâ/¤´µ…V]Æʺsf³~€ÑÄçLÆ5ô=X{L–¨ý¦úÈíRª$^ÛÑ_¼pÊ}Nåð•·äÂVˆ5G«RÜ¥cß=ƒ ²€LØ.“Úºû#RD8 j)bõjä'݆ÎkŠ”X9k6 "îTÌ/”Ç,ª¿6—ï?ç<Ïf_HäÞSŽoIJËJIõ—ÊãÎtp#É—Ù‚Û…WüÎ.Cõ^ËñM*ºÜÆ»$HŒ××1ð©<°;9¨\¦)&¹p]Y%U™¹U³ÜÔÏ°%†‹ð8m°ð4¦Í˜ïfX`œÈt씳T^"mt‹_²iRä„:yb㟰 ÞÁ}ë}*„P†I‚J>šó¤*æT£¨à—._ù—a‰; ŒÕ¹MhÙlÎ#ÈÔ´í¤e¤öÃ; f õúL¥áÄ™¡³ÌppR\ôÕ""¦íÆ+áÝgB®ý…,gšwÌ‘>}‹no|w—lµÛlæ4‰œê…1o3²­9IÐFÆ'®üƒ«.äe#ã+Q”Ÿ¨ùsxHãXú7¶]4}³¨g›Ea.°H„UáÒ$+ª rsŸÓ][£Í‚îùõº±Ù†]•£éÆß7ñ šÜ+µ§ë“GCD-¯×­–Žˆ™aJ7œ¬®Ìè§÷óŧÀÔ$aÏìQ K|YrjŠB¦|4OT:Ôc§†%»ÁäR&åz=¯ëkº¶¹ø4þBzßÔ2¥:R˨.pÂOfàPÄó¸ÐA Aòà9l„±p»¦ªÌðÅ_#%ߢ!VìS¸Ÿ†ÌläÞ•.yÙÉÐhÑ*‘ø´‘Ì) ªóÅßë¨Æc«ÿÆÄJ)ñ¶_Òœ¯4­L®¼u‰J a¯¦ôâjÑÙE©.È;"L•hŸGÕrÝAź¨©ˆv`+˜Ö×ñ©²O%·G4LQ(u¸I Ç'_¼ÜE§.‰y1:XT¥GD’V3ƒh‘¹lHŒ¸õO~—\[ö³;e¡•["²†îXt\TÂJæD’Þ;›” ™Ê"-‰øL$p€%õé^ÀCSÄÅéþfb~ÎÍ'ˆ#ž›ò æyž;&òá!•ÈÑFðŽ¿í¥‡+½Ú9Í<ÖÓÁ›Ÿ„§‡ o ûô`¬Rÿ¼‹3Ÿ4ž&ôÚúÍÕ©¨N]a‘.µfÕù£C3ؽ´uÏÏ3ï•¿¿.Daˆýç &˜CŸèiH?ÍðVI·ƒo-:4¥r÷ñ¹'$ƒŽy„4à$›|Í3˜f*/ó¦tsDµš*°Î:÷ÂÝÀ>>çÙØ £jõFX‚P*.N€Ç}`ö’‡6Q,öJ”óÄ_ïö<-i.e¤›è•´Yü¨÷’&Ø& /c¥ç¼†ÑxabXtÙ]ámÉÛ2YÕxmy´Ö¸:an \à!%´çü¦ã~Mh¾N§þ ™ÂÜ”zb U*I+kv²ùªd³²ÝÅ '$ð‹Ž­ï„E \œñú¨êJŽ8,´Øk!ÅßÅš]+ý ÍÕé½·\£c Ú!Aê4Þéª㢦ˆ¡,•‚½ÐcµjpÎcS ÷’hLl*$ÆÚrïŠýÎ<Ðn@€nùcsWUæ'"wd‰,'|Ô‚€Å²µ3ˆ + Ç4ê"$Cn©™8ý¶O¡”T–ØìÇ qâdI 5áiÕC˜Í°kË¡¦ƒÁª1øá^’=_b +Oåý@Æ€€â\ 2!ß¾Õ%µòì«þ1·Ã΀jQ蹄ä­à«¢ $ +8¯Wšç•Žˆ\m‡[¯ÇŸÒgùdPÈ©;CçO3±b¸ºß!¶8ÌWB¹)þºf`ªð°Û»O4NêÎuHaÿUó‘JÆEq€7»Õïý¯špb’éÔa¨“ Îu nÓNPcyˆ¹Ô­¥| c–’°Õ&Ùê(‰±e\¹"=论…o Á÷ƒb‰Ú¼Ž¼ 1Š£ÄD8 +«6yQ²œy·s”Ö” Æ‹X½Õ=³"‘þ¾M!Ê¥â ç%=&Xv(t”øh8-ÝPÉîóCfWC;ߤ¯7 +K¯G‘òÊ*>C ÁrzuËU8yÝ)²™:Xñûzvhè]ÐáÞç‰QUe×Ý«ÒÅâ…·ÆõvV%À +ýIA[ÑKÃ{°r‚Œ•÷‚ï#èÐ~U<ð•at²TQºZ*-³ îëLï¬(ÆD°¨Ò˜×„b;\1;áÊ}Lh(Â4(K™ü•P«  -5äæc¼RyQvQƒqa>rž@{âFã«éÎ+ãðÛÐ5–Y¿8Þ¼®$Dëb²½Ó9gÅ T²>šejpÌ€ƒg² Xúˆ5¶ dààÌÁ¶  ‡¡Ýkþ8C)ÁÉm¢Z& R^`Ç©©;h>'¥½Ûà +^ô0Ë(`š*E¥ þúÄÆJCŠø~[ÞVQŽ9Ø+Õ(ÝJá(&‹}DñVtÀ¸ƒ,Ñ¥ùOšÉdú!žðî¬õJý>pvC 1Á!T·ûJ]1/äðûÿÏÚÛìÊ’cçÙWà{8CÙƒúøOÆÐn†6<±=j­6 ÀR ²,Àwÿñy™ûTæn5´ +ª®dFDF0ÈŵޟÌ×&F=ˆRmñb¡ +ÏD(¢0Ç[vÓ8¡ÄõléÇQ8p‹Îû·Žæª±Að=KX•©„îi€Îj@Ù)õü:¼ÉA%VEJíe&¤ÓGìÏРNÒfï<²Ÿ\=g:W ¦}ô†4ýOgÒBÚÃT/½Ž®' ;ÀÒÒĸΚåàZ¥ñQÏ‘ÑÅë%×Ãâ£ã^2E: y'IõrÛ+ƒn6-8C_¼:}!×gÀÉ»³²l//̳8×ìÀÅISµù€‚Öô¶»À~Œ}âËw9Ð&ḉáçŠ&~,àÖ³lŒChNXÞ“¢€Ó•ÄÔËfûÿPQœÇƒµúâWYi‰Î&fµ„S±ÑÙ]gÿJjä’bOed‘z&ÐFÄEz¯a“Ò¦¢„ÌÅfw8Ëp@Át=+˜œøâî…}ïO„«‘Âÿ6‰/ÖMõžMœü—‚®+ÅrPÁ9Œ°)i¿PìfôD×€t^ù$‚NÓëÆ~âd`¨¨Ä»ô#‹;Y +G¸ÌT3@ó‘úUÑ≴ã@*ØíT·ÚY1åk³É´MÆá‘ÙÝÍö#|‚¼òoàÒ´Æ>Ð@ä %°"ô·HP# c&]„£@ÿÇ@(N¤Ë¿û£FŒÿÊý ‡Ãø'ûÏw^ƒ²;Ê£’#j,fd|í׉Toï…¼7{=fWß{Éßp"[pí°fÐ>\!ù|¹/-'Ê'ç–×k­ +fy9^3e24ÅækfÑ %ck8ˆ ±‹‚‘O¤T)EA!naìAÁLUõB<ïaùy¾‘üÆ«rç¹È]£›Ë¬BªÕL'P3­‘'‰ªyŽÃ‰¥Ý x‰ÙðÜh;v#.òŠÓð 6ќܓš¯Ìß\a 1 +&2£ø«ž=žØ³0á{–åYæ[E+¨®S3¹ò÷ðv[$0„îi³Œ€˜‡[+¬³R:­]ò?©bh£¤r™ÏÓy–UVÄ9ž]5 }Ì›Úæ1–¬;>Æ÷ÎÏ•¤~–¡ &•/ ê'|i$F…·°ÎÑ@ò9Yi~•Ôç4M¿ç¯é “ùý£‹ñÀgEן ±RHr÷žà’׶œ ÙÓ$ +Q·ÁE(G¨GÞP—îû%STä«*ž20…Ï÷PÈG€ñ£-Ç"ÒòÔê‚j¸Ø-Z~¿J£ÄÒ€vYYã󸮤##EóZ÷;È––©äa›¢ÎH3¹fš¡Â ÜÈQ»² á$*_p:Á¹P"³3tý$›ÓÂ*h P§aÏ6¼@g4’=#¼˜ÎK{ÛÓp«ìÅÏwü­R~g–ofWB-=)àv=Œ+/š¡¬±¢áèÀ5¹ ¯îf$öá1HÕÈã|4üjT¼7vp3 \|v¤j¥‘aXLŸ—úVb~Êa´´¾ T~1°p*h;Ø·=•}©2·“©àŸýR•Ý©#A>û§¡[wm˜f² ÒÔžžcÞJØyf ËEÚF¡žÂÿ¨™yƒ’”ïD¡ùÔÍíŽÉiÅnwd,ú‚\dtÉD¦‚;+AxJ‡Þ‚ ló6Ķ=è{÷3#i·ñ“…a%3G§Âñ’HZ¥ÅºEzƒu+]quz™½Y¢ÖàôbWëq¬8î"’Y8§·öO/ÀÿbØñ¯´m’õV3†$²®E–…Ù +§§Ž·§R¤cÉ,†–ŸUåðêÔ±Gé¨I:B<÷\?†¢Ü[hR¦ÈkƒL´{7$~ä6þâp÷Á˜ÍOè7ßÃÕPÜ›6rµ)ñ$ÐQ@ +ª€j!©fܾÿXaYw¸>…”ÁQLAòYuîö‹›i¸"Ìø9¹©¢àŽ9K Ú#8æßË‘Ç$߆“+A“£:°sŨ†$ +« +ûÞSö=äv/Õ š}p1¾@ Òñcû[\4‹y z7tVè +¥ ÁœgMÙýÒn•.”rIPìÏS‰£áïP¶æùûÒBÙÎã`³gÃ&âu"h²on@ÌÜLÆÕTÿÇÜoþŒc[Ä­‰Œç,jì ++YÚÎgx?TÛˆhBÓ^7°I{¢‚®õ ;ͧÌ%¨J€@°2ECÁœ§¢ 8µèòU«Ç^2ž¬€$tªVók? °œvÆÅ+[-ê/å|U Ð}‚ñ*oê=Löò¤82vž,;^”ÁL!ˆ¼R²Z¬5Vr]ö¶PüGØõ–SåÈIÇÇa€€J‘EΨG(Èq +ívÓ#Áp…Æ<Ã,¹O1xLì_¶n½™z̓/ kOúMUþãYš®.+~»d»š4a¨¼wÊšL¹:ò>ž {ß×™"7¡k– û@•…›CÄÅ{¹×ŒšãÞ=àÕDH$`W \¡¥x\æË3¦Ç”A2˜ˆ1¯Ãà'èY9œ’‚H¸±MÇHº‘Qꦉ4e.“¥|¯P£í³³l¼V#“< rеEYtÍ!ŸXêxR<58?‚Ñ ­Â–彇0Ns6{º|ù°|ôê§^A¯•0Q¨E\B8ùZœÇ6S¬ù¨7ÉKõ¹|öøÝÉÁJùN;H )ÎãXÕšT±½˃6°OD¢¹|IzÞ`b»Lâ^À›uà¤Ðì~âÜ|j-¢“‚®…ÏM6ŠPŽÂ’º5bf1ï‰fHA¦ nØ(’¥rø7I‰4o¿÷~Œ\í…ø­û ”HRÑj„Nà>tŠÖ…E:D¯pÏÃ;Ý)b€ÿYõ˜Ù= …EãLLËn(y•Ã9ËݤCu©®%Þq6‘.E«2TIØûõSšØw®¯PUc B‚Ïw=j8ÍRÎêÏÞ{AI ¼?ð?·¾›­n ¡ÆÁ.1|nx&ïŸÇ8>Žk8®1„ïß6úQø©Š8 F15÷yo·Ó¨-ìò%¨óÑK—>2À8jÀÄáwû({À}ˆUÏ<'ž/²_ÍŸgÕuå×b ‡ LƒèÃN.¢¼*õŒ²mˆ]¾«"¦-òÙâK¿Û3gÂÜ EÚÌ.è@ùB†P[ â,¸ë9²‰T(pˆJOä_ +9þ'<â]s¡FøÍcD"’åèL=Ó”4sÜ#ÄLvAê¸{z˜{Öɧäý8K¤ð»Ý»æ§}‰î™ÜÇFüÄ@Î`!µïè{E`ôxXHS9:­µ#ªÇÏ +’Ž¯b5°†’¦È”sò5d.L‚ÓIÓ7Úf4(Ú]û~˜Í›(+¶g–ò 5u›¡#<¢/“I"v:¢÷¦SRäHQs‡Ï…>ÇŸ‰þœ› Ð÷Š4È”Œiì+ÁÜò .7@Îy6Ü.\‚ãÝJ“âvÌŠ[ß³}; n‹]”GíRõÒ`u"¶C@ôCò8–.ô’€ßŽ'³½Xíè¥#¢ûWh)ûþ‹äºQ/gR ¹uvzÈˊǘ_æ¥õž³úå-rÙ 6/;qQ£C…Uz‘ì™Ä™vZ½¶£0Š$ða¡yL[Ç E ì" ¶FÏ7ämÖQ;…B®Ãö‰ýÊ×Ë1PŸZÁ £a¨Ú´×ä"ÙÂjÙÉóÞ.àa„ M؈ èOª±6(3+2y~Æ»ª¦I5Ýr*µÀ}zð-Aƒ cÝKa92·‡z@ÌVTÆÔ¡9 _¯3A¢W9×㬅%LF{ì…žL­±xb²šÛô7ü¥!*‡€tï“.fªs;YÓ½ uq·{ÐÊ Dv¸—gX”÷«œ“<ÈåÆ#ðã}(3à“öÒdá¸ÞK@bÔ4S㞃–Z?5+°aô oG=¥.=:éëõ òHîW5è †–Ä{¬¨ Î|9:óóz÷äpçÀI/bˆ#±T‚‡`¦»‚¼*V¥øaB“YqG{}î%¾;Ù¼¾Tf$µ5-¦^?MÁLp·ãô§Çs=;®°Ç{£^É"…ÏŸL¡X¤ÀˆY >‡¾ƒ¦Ÿdü~¹»{—(œ—,¾«lm:Ó^mE/5J˜|ÃçeZÏTÇ8uŒeþ¼wh$ð )êõ1ûì“Ž–¾rw<¼~4¦«¤c&?x†êMQO{Ü×´xoÈy?Ï7ÇADÒ .%9–uLÀÈ–o{°WaÝèò¹2Ï^ÃYE¹Ià“¬š¥&"î)YtDó¦#O­=Ï’»ûì÷®ôµ¡ŒÌûq®bô¶Òú‰¦ZŠh*+lµø=7ÂŤìugI¿K,FÙFÇ<©ÂƉ|B= ýü³jô0ï²{ìÇØŽv?RØéë¸zµì^C¸™Þ$£÷Ù)pÒC°Íî1ÛAYEnpå²RDÜ¢8Q¸i,ðç<-ØÏú °’:ZŠg"¶Å¤@&(âã"nr/e=Þ„†í‡¾ ô(§G¯DÔH ¸C½dGÜÈ}ª\ª +²·„3õú]ضNšü;t†â̈4ža¢>aB̧SèÍ…ü_S~Gµ=)çúRÝê1­Ó¨- +R‘(º–~Õ`fw{¸Í×¾À,5ô¸êB²Ò™õ˳^'í ÂÞÕùoCùäœ)BÓýËKœÉ¬-êL0îã™”óLÖé¡–jC5àò7Wlôw°°‡âé7æ¼NæUsÏ‘?Õ÷i5­Ì¬mï³Ç(í1§`ÿïÎþé×½T +롆ÔQ±f†z¢<߉ԣ¯þ|/Mïèå>6ôŒúé4­16¹ƒlŽòB€ÌʾJ÷ÓÐH?$Eâ–fž”*ÚbóðÊö¦¬Î:ÓÉoÂËY:+|70¢n£ŸóVsY<ˆWŸðš$áñÙáw·¶¥˜û>æY—C²»Ç6ÕôŠ°„=¾] ?zíÅD±q”§r)OÀyïI[&@ø¨ÀªÙ7P*h>d¿)”=ÿdúÙÂô³Ë“:N“ûFV+ܹA)¸šKQÂä‚ÄÊŒX$c¤.‰B­'™HHŒcÞ·@Dêe{Q&ÐÝè+‚Df`@hü  |ôøç“#rêþøºNMx3w5ùc.FäOò È. mXÍá{)ÿoÏ/òÿò¶L]Ù©ÌÓ‰ÇM§1ÏaL‡aRöœ3zìÅíô˜§G¹=ˆãè1…ñîÕMÝHGLÒ÷Ìiµ4Åã…>øÒ»2$ó?„€‰/dq;ÏX0¤–ƒ¬ R¦ÌÐè±þÒ%r°{Ó¼#iì´Ã27FÈ0\(7-xE;)!Þ=‘>8Ø®(Ï¢o(¢µÜt4ñy›ë.iÏ«dËa&á…‘êU.G¸yÏ…Ï Aù}ƒîš¨x,ãèð9y¬9ešã×Ñaþr!€|漜n!§¯ò ÊlŒ˜ïz¨ñ1(Á’á¸ÖÞwTpU÷ew¡i?_.Ç%¬ÒŸ«Üˆ*Eˆ)Wüê NE•Aúv[Fk!b»r|ûI fk¾²ZÎìUwJ(C"í ³ö„x­‚]$¾g8ÓÒ˜Jf§5…²½v ú˜XšNªVyÁxµ¦ ƒ8BR â0©žíˆ2‰z„ àvæð[WŠ¤ºôÐVp_%hêÜ…šc•ÙÓ'>¢í;—£Ü—G¨nÒJœýw4zBƒí"6ôà"h:_Ú¥Ö’¹œ:! ÛŒVçò Ê Ù‘1‘Ù íoƒ+¼™½úØ×ãÕc{M}¡ZúÃ3Çw-Ý]B? j­r!,R†=ÜnTþÆŽ mëñ¥&§T(¸p"Q¬ûáMÐÂYø%Äa#‹;ÙÃM%€ËÉs8¶…Ç¡q~Ò@h¢óÞσ¼wL¼ú¾¼³ú„h7_ghôä=)R@YÇĆ€"Oô>«X§ÝÏ S=ÇuÌ3z±™]Úp·Â¸a×@VX•ù'TüqrB/9‡Í¨s º6ûz²;ÏG(‰Åeö1÷z^Ægý0œŠF9\'j2û¥¡=Ñ d+%Ri~£tglT9ƒ”í +]ƒbýH ÁùGÏ¢èÛ ²ì†J¾ÐÝðŒ£+÷GÃ8€ì½.@)T‰ „J„¶ìæ@N½‹LP\œæÖ­B‚­'Ÿ=䙫ËψýìÎÖWf÷C𤸂vd +§;þ¨Š<ÿcME*QY晕I@»K+qeg7¦ŸnwŒûæ!ÂF•G`XÞJ:–ûgLÃ1BÏG(Ï+š˜Þ Õ×nh!&;„÷zŒ¯¶y ÚY·4öûEñ<+t£×Þ4Öx×ûgC ~é:¤||‹U¬…Ë6’ú–ëV5à_Ä¡÷ø²bWŽ¥(4à ý¡”ÜC="^«Œ”’ÐàŽJbÔ=Êý"ñHÚ‚€;êL LDèæKc ÎüM—1B ¨" 77`¯ãÅk1pÄÒA“Ž_Ÿ¯ˆqÙÖ´»;m„¨EtŠÔ¹;*pCóD~÷‹žqõ$JÒ»ß|…Á¥þÙ˜D†è’ŸÌGß Š¡,á?&¢£ú:´àþQdâé|>TÛá…Å?±­3# ¢…¬ÊQöÉ—å¹^¸€ §+=œ@ŸÈ‚P<¦|[î¬ó1؉K-ÈAŽ0Ð0O¹ë;¢¼—Hl̓"éïÓ@¥{7²JÐyÂðDõf¾Í*³‰{BØVÎ Djø–Íû©i.Íhc ‡tWþüœ£ l)ß4bÐÔg(ìöæz”^ëÏ¡ñ0gÖ¨{‡yÚŠ5 .Ãû:wƒà2ƒ¢à Z­a2FH 8P¾Z9 ìÇŽ¦M´tD¶“ŠÇ¸]ERvfåè—"ˆ àÎ.êtø²ruJ"¤ØN«ž—+^Twb‚´ŒÝrtgÙÐL4Ã}B¯Y£qv#LÀ;™"–äù„ØnoÇÍ܆Π“ª Õ]mŒ*ù@:”öD=Ú»órN錛ˆŽë~Ôù¡€è(˜ªÜqð- +NÎZÌ6×<«âÒ„ãq}GÙZp +Q!û©Õ: “:àè…ESPÂÉ]}î  öµY)óºùL ášk»õÐ=õ ·C³üžÁêÐá@ïl{hLÞ§¤¨ÿ`.a_§*B§‚¸°7y<{ã¨k=rMØPé= ~:‡ÑЊô¹im¿eÏŠK=¿ ^3 {¤M9U‹e1Pzà°[Bã|í^b k·ó_z ~s_vÇø-=~ t«g¼%ÈÛ&1ûzªË›U¿åpn8ŠCˆ ËàpðOií,M4’ÙÕû€0ÃR¢¦òÙ]0÷Éo¼Õ…̯‚†ÙP;À#â¢{ZÒíGAýû7‚ƒå¤¥_Ÿ cSB~ìÎ3Pjeº%Ú¸{i8ÀÌùú W8’3‚ûòúú{/¡~?bG?ýÆTM"è© È7ÕõïB0”Ül|Ö¼IˆÑEÕ#ùWjŒ|r…C=b?3u:@fFï¹cñgUå£U|}™÷}åR@>ã*¨žŠúÃëï4o¿s>ÃàW}à”û å’HŠNýè¾þv¬A–jëõÙÃC¡ÈC·ñþmºö2îgÒŸŒ„Ë€(øï¦L~jÊYüÂüä‹­Ë0½ç- Çغ·ä!ý‹Ë¡­;Ê!‚'"yª¼qÓ•ŠÔŒ)ññ]æùÌ@‚oH-, S;R,ÏxDêÂ#šI>µ¿‰o°ÔY•ô ,4Žb1üw`%;ª› õ|=Êild¯Æž`a^ÃXvàIèŬ—mП´òøì0¡Œ°˜½Á;hc>J£Åk•¥„Òe7 OOƒ`1à‘…›8 +‚¦ùξ¹Žt…»˜–2\›È25¶˜ä¾ioôd0=¶BÆðÆ/Ðê‚ÇD©£ãw²䲚zL`2þ& ¿˜#Îá\“•ˆÄO"ƒ#soòÂZfçú]cíæŨâªXsª>ç°Aß +ÃZ­­ÝçÑPò§ÑÈ<’ +«Û8aæ®Lϳ${¬pö’azLù/TƱKî +€øa¡ª›VCc¬ë7ƒ0YM2 ¹Ea6]¾,€‹Ú¤ ƒöj˜,‘#«ügŽP‰•;Eš\86‘1­d¢MšþîæìPï cþzœœ¨É<ÿ„:åŸÔKÑK鉃ҋ«Oã¾Ë6R”fg«ç[RÓe˜$ÌŒÔÏÑfœ–Ç‚XNúz–hB¢YBƒ‘èbÌ/GXš¡t“uhø¾7€ ¹[Û÷6øã@¸ÈJ. æ×|¦’Ì„¡ò ÐÇÉ€ëÐ×7=|o~n¤¯÷r‡ðqB)´Bur›¸Fí„2”%دûƒSŠv™àR9;Š0o@HÄ@lÿ"uÉÃSHšP¾Z_wÀ•”%@Þ{ÄþHmXð«;^P?õ­)ÅÓCÌ´#» 1õ³á¢jî`øU£4lpÀL0G–]Ù0@ÜB,%&9 Æ8+r +û­faºŸß‡?ØUtNÐÖ×—–R„XéTí;e!6Nxì0át ?ÝÒ¥…±8\7•ÆÄ4?¢’f¯ËnØûsSqbm²F­ìZª ,<ûoÓ¶'RJ8aêA£† ‹2-ÐËê‰(öðâ$¿üÆˉ‹ŸÔÐÇì¬{jÉ>f©‹Ï5ìqÌUã|UÂW£Ç«Qæëóx¬:dZ'Œüjäv£Çížþ¤ÒÑŸ ‹’sq§òì¾49¿Äª…^ƒÈI„4žWCüD'œà§|}ëÑB40vÏ­ëàGÃ@›ìÞ±÷F¤™¨•gu”hÀQô1ªÃ‡ä®´ÿôù¹Dµ¯¾ Ž¦u®ÿ)÷ù)1^yînû­QE^‰ã<[YÂ?öÎ_‹`, ë¢•Õ|^ ñóp‘§±^r÷[z ©p1¨Åš ÍH¿¬(þ¥»þƒR–Þ‘P±¶7 ƒí$.=$ü1µÈ:¡ÝôÖ*¬–¯P•,r½jÇôPøî +Ô4P£Á­ŸßÓ†G°ÄO.”‰J6„’'^;Ô¿5eKàþ(Ö­}mdø‰ÛZÑô +Håý;V ÆÏ­jp±ÇýêÜc¸AOóHʧ̒}/®Ä{#Óê AÀ‘pÀ˜l«Œ¹(ò8¼Ž£ú4^ŒÈœÎJŒ“7¹ž'0<4tLm&<Æ)ÏbO§ t8ÂjB=_ÁIŠùˆF9?)¶v EÝáSamôsÇø9£Iì¦ØØÄá´æY÷°õ)°ße7¶ Ë-8þ0¨_ß5äp¾ûÝ :ÕØô#ˆ"ïm,ABC”ëUûÖ6WþÊnØÇ5¼ÆÇèrðjÕíŽ PCàáK&L|jü öϱä?J»íW%c· öMÌˈß3/7œGÖÙTgª_\’àì¨×O»mS&PH™ hûú¿„,€MEpôûhøÕûÞ1NMRÞNá¸=šq­šò>Ô´'ICÞPÕþz÷SÔI"wÁw3Ô –Ü´fRÄ4`Ls4¤ÕIôSÇÂùuŽ'¶g¤bº‰fR%˜ú'sl\fôýÜÜ5ŽÌ<ø/œ­¿ßIÀK•XÝ+ømÀøXò.Š¿$>Ú#)>¢ݨŽ3ëøw;ŸÂ(ѵ×õ׳pR,Êý{¼t¯å*« uüŽÇ|&RÃ\7ã]ûØýg%Jl³â,F¹@t«n°®ø¬CžÍ0öP?å@EN>3M€BÎ@tõ ZjøÝM¹}°ÚLBwÞ‹Äá;¤ºqÕ§ƒ†´³†>úÙÊ=Ðà(ëì·—f®¹75 ðªE]y¯$ÄCO˜:¤ïßOˆ“Ù‰ó Ñ„¿ÅÄÂjÏðO‹’±Â×"27ø-r·¨+½¹Tó9 è— Ã&`†1çq¡gê°ß尩ljeêNŒBéóÙkï\bÎ窢‘ÊÞ÷}5¤‹z}¤ÌD92KÿÃ7 ílC½£;îw4ĸŸðÓ÷¯¡+‡H׿9 ¤´yW «;æ,í,"úÑX^çþµ¸×ü‡Nmv;U‚yz…ûížÅrЭ•öÝ#¼Q±ãÂd UœÅ9²è#1icyF‰f÷HõÞnפ±bMb¬ÏŠz{äÎy.x°Sœ© ‰£B¨#­Vœá„12K{ŽÈâ*sCâD¨òôg Ó1XÎÈaófšƒâût’þ¯}‚k{¾ëqt´~Èwòï¥1F©¹è`ùDæ`B([Wšii&Á3ã™ëãs‡Jy~´¡’À’ . +¡;RçfÞ!›Jq6sÈ/‹XìÇýg„ƒû€øàZ$…—.¸² 8 ¸dkoÍ£yöh+á0²@ ¨©DÌß±éä eß öÙàþ*Eù£Qw-«À{À´øjxh@íL߯Fð|J?î]™2ï`^’{É$<‰AER:e¸SøÆ›0~òx#ƒk0uùìWÛǽìOt')\Q´+Ðü“e£Ñ‡Â]oš²5œÇmÈnEÌ=ÝR—5_Bª˜ÏnÀéã‚ž€(¶ó'¢Z("aä£Ú«Šã^4;“áWCÕÓýÀÎgIº›ÐœÐÔDMM$dÑOýæcw¹äVN¾7Nͬ=ÖĸdU¶Û3Ÿmé»å´Ã*GÙü£ñ¯âT{Ž‰ói*"0¢eåŠeƒò¨Š>(„ÔŸp¤bÞ÷‘_yW IуÝúضéeÑûfo›gÿ^…¥Ðñ×Mþã8mEµ–¼q2­GÞyn>¾éñ¾ŠDêë½jJ*òJ¯XšqI=z)úhðí-eñÆEX™ÑÐU;±ek¬-:¾+á\y?÷³ ‹r8JÕØ P^¤kg åÐpB§ÇÎF›<Ƚ¿j†2¬?€1HPñ‚¹@-“IZçõŠ´|Ù½Ö±ö$ÁÚÿóYöoA¯y›c_©Ã46|[ÐùúèyÕÛä=Ïdk©ïGÑcŠ'‘ŒŒ-ÃǨtäÀ>{PÃìãªê¼5Πq+(E¨Æ&?wÄ(е+¨ÿ“ìo%#oÔMÿ7–©D‘KòCíT¡ ÙØcbåg·è.ÒABÉ'­"Csø™ÏC‘aIÌЕœÕ«õ°| œíToêÆãêÛ?8a¶È«V‘â(2ÔP®%ÿƒ†—÷.—È}{…OÎsj{¾@õT6QD +¹ê£m»‡•ËL{Žr‹ ]lÈå•å’!X ÓÉràzS AwòUì3Û°{•€Ϙp»Ð»ß¯ƒz÷dÝ +‘8×êÔøgéiá&ÌÍR=Z„~§>¡›¿Ç}ˆš¤-“EŠëµ@ûqµΙõ²û¹ EÆïÛ¹÷퀀yu‹¢7 oäU÷Üað‚ŸbÔíö¼ÖŽÚp¯*vG*Ÿ˜“-»à±Éí¨Àõ½lqöÐõ&¯=ã8¦+pfÔ×SM2&<XAMi•p[@[Ûó\éqÑFØ€)¸vheö#nfƒ47­\¦u&ö&Þ†ãí·±©9+Ž$ÐûŽï­â%(„š¢~„ÅV¸°Aƒà€% Øòí»K5=Ô‹)«‹ÿIAú«õNÅå+»‡3£mŠ(cCK‘+P'­ŠÐ—A9¶ˆ7…dX† i4Ž‘F»ü`D•ŸîÕUf?¯0•#Þ:W<< +©¦kÃØ!쀶¥žåo¦ÀÀò§l^Šcc‰³Q+vLw£zÙ¢8ï0=ÈØУ×lLv¦IÜ8'PcŽ¬ø«–¨Ú?ÏÿÇa/ HìÐÔ³¦GyìQ­Óã Žä`ßaËš§ƒ )»W«õ3Z6ã.‡™¼¿#Œ½ÕôNÄ ¾W¬E•2ÈB4iªÜ«cë æö'Ù‰jsòëHö¡6ý¼žv Ê‚6‘ +*ä¼½2R×á)Á—àõÛ ½*&Ä°rŠ AÌ% ‰ÂÂJ­/äœbV,RÍÓÁÝ"-ä$Wõyy&VÕ¸G¨rš«1¨Æµi}7Â[/‘Æk'wÁ—†( OÈv€R»ztƒ¥K¨´ãPa5ZnºþžØC ”"ösBxkUÜ¿&dð€U±PbY®%Y÷†µŇB©8ÌMË©‚«l¾wO#‡{‰¾Àûö©+bê/[çî‚å߹Gy½9,Pˆ4ÀÄÅ»ÎÅ`pˆHhÆú1)#Šô¦t±ò’OHå‚ ·8‚•ÄUÚÍ0hÁ3Ä1ø¢4rvøû Ì²×BLôüà»P2H¤è(-é•4ƒãýßOð¢â؉T\ZRÐáPVrN..´?ÝiNDA¯Àa‹›šõ˜P@Ý–ø'µSÊ'w"ñÝû„>.G%òªïðQüÉ(ì†uƒÑCáí„—h'Ä«jèsÿÝYô±¢âå-ÀõÜ÷Ž˜—Á#4‘gVÍO,é¢CgXò„Ì$ÌÀ‘ª"I83ž$ +”¡_lÈ`f0+€Á‘Õ­ô¾ÿ4®`Ê+±jç!‚|ø:Q4o ?É~>60â˺iY÷x¯ÉY”ò5xß/˜¥ž‘¡QIcA±§LeQŽ&<;}=aªÌ|¦ÂŸ·˜¤ <í7 ­Î:b¹Ì#?i쇜§4Ïn% Ý®1˜KÐ$%µýåJÚ›Õðn/¡´u·Á”úéãi¼Ž£Q«" \¡r×Xö½ñl±ÍÉ>«¡j?äDm¤?(Öèy3"®ýv€ýæÏ8–A<5öšÏÞ’ªÍDFãï¢qLSÚ¹Ú¸`IÉORy¾……‚Aµ•¦þ5ºê¡ÈY¬Ë`ˆŒF–TD2û¬é·$'#5Ã’:ñJëÂ'4°Ac¼uæÍÅ”(BSÜG£æ a/†QA¦\±ÐIGaS#<‡‹%:0O+xÃ;¸@ln²Ëž±ˆƒì@Ú¯Fü”"~Šª†¿ Ç8ê€4’þ!£Œ ¢³œáb;æ_L˼{Îp~®Vi¼5åd+*`¼ô`s€ò®~Ôms¨Û&˜€C’¡ØGíû"” ™â½K†?$òœäÛÀ`uƒ"-¹-°ÑE н¶­›ÊÉgakOꃈ@šHøÁœajŒµrUHâì†yn°:ѧʑFì8T†\J0œO,ì›BŽìún#Ï:5u)‘ 0óT ÜÞ\Ólá|RÐIÇýê‘;WÓ`GЃUÖL5ç»ÇÕgB|æ;СªÏ£hXomõ@dÈÄ~ú±OÑ®b¿¡ýµLR(¿5qu™|ö”ÉZ×(¿†~™9³‰Va?=P¢êX“ôÀ+5FÙž¾kõZ§öXX }•pp¦„S|*@/ÔOC²<Ž%ç©PÔ<;6îÑð¸tmœÇÙº%§ëý݉¹9Á"íh·ËÇ*‡ñM;é'ÚÛùE/ø˜ó«ÞÍ/…³F¢,_š +¡•M5ª ¬÷¼²Ó}†W©¸¢€ÎYS2bYÕÔµe/,“×ë~UÉøÞÐü¹U$2É2â0ŒB<Úž‘[2EVÈKw*ûYèÈž^„|0»À€v8Ej²ýtXI$ÞÕ›E ºÄ •y9qîÐ8%…ð¹H¢®îaÔ0Aã´ +° ^²T¨°“Ÿ0¶N)x¿Cǵ +h¾ŒCd0Œºý’†÷[Žc=Dò^Oµì}êgœq?æŽnÖ ·Ü?‚ñ#1€Í“¨ØüÅ×2ÿ$Ð`Ò× +€”`‚².” “Qoï~“ôåóľ‚zü,>±ý*é`Ýq†ËÆxŵóÎJ–¼ž 6Ö¿ÍØÈûßуdmÙ–åUÂv¨Î–àd¹¯ü½ªJ|UEM<\ŽäˆÊñS­Êˆ‹ÖÁâqá‘ÄÔá6ÂÐu*Ðîûv½ýs¨ÔáàØ—“e-‡W‡Xj=2[P}m“ÅÒîÚá`¾4;ù¬e²ÍÂÃzÔå¼)7êË­}é>áBažµ½ŽkµŽc ¡E‘ŽY;¼íŽõ4Êû¿IDÂ~‚†D†·>"!Ù2 °§}ÅÉÐBÝŸjÇ© Í4Y:]ó’ý“÷~ìì. ~eƲÿÜoÄãߤ¬ø›ìy+!v¾2çR¥‘”–~ðת°×é²[°¡p˜Ÿzâß™”p ý+`¿IoÚ_^hr– á0ÔvI˜ìW&˜˜eáÃÏ"jyBbŸHéïzSy±Íö…ppu8{û>Í”«ª zaÉîÛ+=zΣƃé5…9‡5ß½”È ¨ +mû%¿L?.]ÓˆZÒÑ®@™½ Vê©ø8F)•½$ð/úpñ%è GÞ}éIÇßtÀ︬"uºÐƒÝk1™/9}í¢=Q䉒Ã'7‹ÑéS-‰w{BTˆpóPvÚ¥]÷ã%xWU(Òô’»Ôç~Üsø X¬h¿$P³ôhIc]y*‰ÏâùÎwÒ +f³ƒ‘Šb ž¯8/¬ó•»½o%Dƒ¸÷JjÃnÂÎÚ ½”YvExCçÚr39ÊÆ.}º9Ó¥gf&W‹tÌø R{LÛ&XQÐ_gUªûXLý·þËgò›‚_®\`¶sª¶®Øñ÷KC\Ç#?’r‹þDSÞS­—Š$^©…ʨu +ö½š8iÒ)FHa2δ%ƒ-r"a©¥4š¾þà@Ø.éCHšÔëÁ–ù]‹!¯°0q°Ò¬Q¼Hi1Àº,ßà (X5…](²Ýb§JEÂÄõ¦´ÚŸ­È>Œ&=a˜—Kæ\!dï«Ñ{q‰´Žp"سY=ò5›ã]Ñ´>#?0zÃÌ!.6¹F¤À*JûÁ>)”e]Xa&ÑÔ-‹ a‘„¤Mó€`¯Z3EÆÛóí§Á:¹{g,‘ªbçPÔ*hôuCáqôºò‘NÂ&ÎÌhJ‡.ÒÀH‹‡¸ æfÇñãpJJ #÷˜ƒAFla`g9a ¶Ð)€’!‘TqäŽÀ4~êÞ¾>GI,°:eOuëðg¾í¥CV‰mK¾:43Ôþù\âe4ío.uìì¡_-Iíëø$v¯qàK²·½Ï9þ#äÔãŒ(÷ÐC· ‚âÀãÇ +±tè!hâžhÀØ52;`7–Ç!ß%ñT쥩XÔV|Ò,úˆò“ð3‰cX¹Ú±ÆÞÒŽs&ÖmœxE‚e¼¦ó–âõÓÁÉ2==Qéž±ÆZt’ÂilFb§çtKDXOåp4.Á~Zá§DÁL=¹zq]ºœ”æy¯Ë)ðWN"ddÔ’ °¼V¬‹}aÉtµ@a¶=š ™'…ùGŽ´(m~Û뱎왘_þÌ8ü™LàNj—Á4Ã&B¬´;´áF€÷4ŸDãqs)9Üt²©ñ ‡zA¨Væ±.“¤‹¡˜8ZÍœ=›·XKâZ˜ºw‡"îv›é2ÒŽþÎè2O:‚¿IG„‰¬ZÜÝÖ‰é9 +¼,ÃZåm>H̘¦èãÂlîåú<dd6ƒÝ)c)»¬(DR§9éÓ-æG6Ì&nPä ›ö¥ç Ÿ}_É CîÆQ¢) ê}ÚÉ-Šc'Œ~lZ±__áQGÚh§šÒs£Z{¥šöL ù[xÃ¥p½bËÿE:g1^&~jÔ`qˆyÒSˆáL}òR²x‹ÒÃX¤Nr—?zQᦗ³]ñ`&Jî3J2¥S>.0¢‡ãpêÆžíQ]Ø€¯ö8S`N«jœ÷DÔ¦*ª†Ñ»SaSXÜGÇR‘Á¢;ü zx±}MáG¤ +ž¨@H‹3‘pBÖU…Š(ô!÷«Cí,àè{_‚' `õØqÜ:Û·¯ÂÝm9œ$ì7¸•<‡_Š·¨ce lpÆq Lû½uîXsÃ+80zháVwÐ’~®)¨ƥǙ +j’©X+(+Et~ÙÇéEè"LÅc´Ó!±È°®ôå*ì ±£Ëê–C-¦€˜ÄRO\„r]¥—°ÆxfÀ"²< ·Ž;Í1¢Zþ:2ä#<\CÖˆ%ѺJ R„N1K6‡Ê3hÚo:æ¯3‰— j%É°0ÈÔüäÂõø5øÖɀ #•[moQmb…ÚK5•ÿ +mòÀÈÖAbAzÄïº —6ÕÛ.f–29àí±C–ÔiFMÄ-óz¦ˆìHVZ¼ÚÐ!Ó`­@uco"@øìHS¨{¹ÇVÙÓqó–5X³J¿ [H“Gîa¯/ërþÑa†LÝÛ¨ ›k>SÎÆt\CWar £Û +õ›x³v¸arxuà%ôã¼èÏÑWÛ +¢—Bµ¬\c18Eò…`Ýgsجa¡ä-Úpb´I!ºèî“Õ=ôéJÄŠÏgìÔ¦_w“FŠaµÐ*ŽùÅ•s‚8ñžÇÕ=¡‡Ü̆:õðÝ«£hœŽ* õù®ÆçÚ »G2ÅMn\¢nhú$\ݲOY׎ŸgãáN’×y!´ÃªÕŸoaþYñ^P +É"&wðNÌ%TÊwxUëŠÛ»Ôˆ„¼½nlKÅ_k°•î ÷Åråµi’¼Céy•f‹)8Äy„ŽE,TQ.ø÷ +…âĦPÐõÈàOsiÛᣗô>?äk=£>õ( ÉŒ6t‘ÿêß~Z¹6<TÁS© 2ŠêÕ£¤f}ãÀêRÞŽúb@­wg¯d +?`¯3WU ¬톨ýŒ(ºê# Ì|«T¨Š0‚¡e3eÌðt¶‡›Š%êùe‘‚¶ æß@+ãÓBDÎ$¾ öÕ’ñb—vHµ32 á]™Ïúzœ¡S8Cï×n/,Án) +Î +‰MgªÙcŸÄ¾0ѯHä³D(^Š¢úPØÎ̘ðáý«MÃC°R%Çv ù:¯t +G~Ȩ:WG1ÇjšQÒ¤F9nöUð裪vBV’K9—õ#ŸrͬQ|Ë+J‹¤ ‹ÊUþ&ðYÜV4çõæ£ôȹEÝá½øþç,ìÿ»?êpó¯<П°Ž‰²ÿ|gâ"À ^ÖÕ8¼“" ¨ë €5oëîµL¬¾÷A-’2QÆ; ýpµXwÈCÄù$Þ.YÝá$%Ϧ§ûµ…°QJ5`æ©Zg’c¢Ž¬{±N[_[a ˜–Â[{Mn¢µïµ¡Y^3´˜ zMˆ1˜ +]¹§[âòTÆàˆïÁyOª§¦Ç^#C{j͇±BžÝÏŸ›]¡#~è ¡†Lÿb禙1k¼XºÏì(È°î·1í–Ø©ÏäØ3J‹L¨5ô½u  zäƒáÇÉ¥Ä5šaïáúåÑŠ¨eðüè=[©T,î‚ã¢íÕ OöÚ<æÃ.yD +5WFÀ ”ϾdmX‚¤–ŒÉʆÊzÒ ‹b3 º&±Q* +ºÅ£ÅµÑP¡Â@§+ê$*NÌibªÆËÏï{[°î¦öÓ +D‚IÁÒw^¡3">ÜG¡ŠAp£Öz<Šjâ˜Õ›Œ¯Æbž +Âĸ¡‹üÑ'äú|4æX +¼f¼ß+¨R¤ôS”lc)Ûñ¬„óy\5à­æZð½ßÉÁ2ÅšÂÃdøÂ|!(f_Y^Ú ôí6ÒÓ +S ³à’^;(õÓ`¤¾ö;§ºù ãC£y”Ýø”8•ZYÒ.É \[--Có%ÆiÅ\G¹òIE‡Ä@$Ðîõ¤m |ºä@†>?O_V¡õø±P™õ!¬àx´ˆT×± W—ïóú¨•Å™´fe‘©‚727 ¿zúï` !*˜vêN{=F‘rE§Š® +û¦×@Ìi){@äŒ$£÷:Plo?X˜ û7OÈÆñöÿ³ßÁ ‚ +Î8‘"ÈGš…[Ʊ#JA­˜­Àˆõr……„fëã{Xó¹{v OÊ~TTõœUTF•ð=­k%&ÅùËÎÀ´^$Ÿ§à¥Ó‘ÅD r…FYå؇ ,®õ’U^ñ¢Ý ìF©ÞÝÄpä–œäù—­m + @ ˆg¤+…XÑ ›Š–ÊaˆS£pyõÆZh–ákÃK{&ÿ‰Ö%ëÎPp¯Àú眅*àÛddýæÏ9ˆÁCv‰ç{ÓRC+H±ë?ùŒãÂdEfXïaw7^½Žtî¥r½‚ˆÃõ¥Å ˜A ¤’ 4ã(ÛÖ€’sù*ÊC«¥WÖ‘$Á +¼A—·­13›!à6Gi)ȦæëCTÏèr€æOçIÝùHXßš‹h ’AëÈ„‘ÔÐÏçlÑ+|ç;”´è8ùc2G˜ü;Â̽ï="<í§ íÝÈ[/Ï2ÒÖ«>À^ÿø†ÄÇa–塶ÛslxÃþK Zþ½Úáhj( ½\;=|IÛホB¶{÷h@Hé4ÓµGf ¦*59ŸW®¨Ÿ\i0²RÒ=¥M2óï4Âདྷ(ÀqÀ‚²˜¢ h¾4amfƹZî +TÎùR×_1I{šâ_–¨FÂ7ÛSéáäË-Ó –Ù!\³>jÖËrЦn…á¾®2ú×úCáŒõ§I?bè‚@ cŸh©¢Ùeºu¿5êÀu®"ÒG/]ŠÈÑæý;ąк% 0§ð*-E(Ofåð¦úUÄ@¿ò +)_Ñâ4 ïÄÌ>~´ßFÔK3ó5Wä"?¹À“t¨Œh—dzçîgb31â-DÀ½ºyrQ«¿P( ]/Ê Ä2fò@lì8Xˆ&„$ÖUI$sæMó‡7H…-ÌàÌõ‰ü UáÚ\%¨½Sº~ž£úhr®R׎ÚçY{¤è£‘ñ¸ "8n¸÷öƒ›ÀÂ%PM¥>z<ª½õPêXƒ3q¢¬DÝø*CV dX{a|6T½8p’"ƒÕ£¹*’íHöÖ ™V·#ãÚô"Ö£¸ßEµ.W;¡&${Ñg…¥3¼AcØI•À@ªö4ä!~üééϹ­h—ºûî.Q‰<Ùr;LІlA¸-åSºT(L<ëXf:άúfGá”ùœFV4qO:#%¨"*‡3¤Vaw†ºA‰oÌ …м¥Äíaþç(V*Ñ)n“w]ûùˆb@» û›åæWÚÐp‘Å ÞÍ€98ƒ‘/©vÍz¿²gMÔ PÄ–@³î‰—J%«œ%<Å2zfY +2+žW„.Ú +{ߨ¨éÁ»¿Žœ¢~yNÃ:^ž5#=_#AuçîÎL{ýV?(]‚6Ve..ô=Ë­»t=7@,…÷ÀP´µ Â2UL³Ç £¯†r×ÿ *0n‚úØÍ—¨ø åt¼°YFú¹´¨vû—µ Îó¶Køëß`¯¨Ïs̘•Ø-Gbw–—Ø¿¡~ºè/Ò+E`™r·„¦¸&å¨ÒçËvºòû÷3¼ –Q½5˜d#ÆQ+?ôïó‘f„¢gÅ~ÉÂíkÊšHsP´kòyä²Oà dˆ¶1ÆÀÅÆž +"Ô먺j‘lìØ1­ç›L³kg½¾%ßtJGîW¹£¸O!¸9 ¯3I÷ §šgNêo çÁÍyæÁ_5.Õ^£°_ãšê*çâ½,Œˆåõ $²B;PáKr>«ù%1‰K}œ‘òŸ²Àtã5¡ÉšFôlV;>ò¤BuØûì´”}&2 aþºc¢ªcÄÃ…ë¾ÄÞˆ­¨ñJd2T#ˆ`85emh¯î*ÿªÁMnü'ÈCãð6צÇ+9è¥64ÞŸú/Gz{_ÚŸÿj¤ü®nÍ$ @pÄ|F8æ”%‰òÓgƒ¿‘­nýæ[˜‚ž]À>j+^á^—õÁ~_b¡œÜqíT%<“[è€(ÿ™^G!ZŽSssŠRüVóš ýš¯Y’žøB³·#_½¬„{04$¬ÅÍsã:äh)y͆Ø"#“j4ts6”Óp6ÖýØ¿|4öz4ŒaeAßQùd£ðÕÐ ´žWŒñjcN#ÁfÑšM¿»ëÞöí +—»Ð’„†É¾±«kÚëu.¢QÙp­Èë­ Ç*Ë#ðl=ôÊ…Y¸u7ҘݼϺ‡ Ñå)»Ì÷8œÂ;îPä`˜7,‡¹;F÷n‡¾*ƒÄà‹Ümòþ£›c¥Ãµ²ª©µÆþ¶þÔíùjaÕpÒ±S¾ØxÒiÌs +è¤ÎÓcF…Fì1Os-T|ì1{Ý¬Ô©$uŠòŠy“·$›Qíºþìøz‚Z6ÊîP(ˆÚCûñ…{œGþKPµÈ $Ú¼“•òÑþÞ©†< Þ.a2¤  +ÊËåê¨^q/¦÷3øš‚ï30ìªVz|P­FÂ7ïF  +ÖaPÌ6æY"÷³Sº>-š˜LIK© P©Jw!ìq`mŠAw +ö8ì¸÷44-ä=TðÈÎ ÊÌú:Áb«Kké\2|ý‘*ô]e»­´3š®JœàjôBUó9yd¦;+úŸî°ÆðÞ9©+¾)…9{p°dSi€±ÇVΟ=íÌõæ&ß×x26.–‘à0O9ÀšPñ>"öÔ!E¾f5”“}z¥(JòúVx"ø@:ä”yŠÕoŸ_'°×Cý¹m†ºCÖx\JãtZÆEK±s Ä=èúhöuÿ4 ƒO¸w©èêÙê…‡.\–%F­ØÍ>ÁQ¸`#>rYÞ½÷Œ¶q|Aà +=¢ãßT«ÿO˜1b$v¯ÄrT4³¹úiVKt³÷N™§¨¡#Æ7ë>ix¤w36qí³GܶY||}Rðu$~±FUü ‹Xò|öðqÜã¾7ŠLã\V‹Ë¡Í¢g©ò+/nô%ó'dŒÆ«1Ú…MFRëø-`òäCåMþxä?³ß#­7Ñ“##¶´¸*!Ø+¨@['Ü¥™3ßÓb=®ú…(dv:ó˜S“!3Ã?ä’”Šï¦©Ö©ô9û=Î<ì _GëÇp€uvžÛÐ|tÉ4ìEYž¾¢n((p®J Xâ=˜ýycnXÞK¡¼¿BIYVGk Ìn¨ä8ùéWž ºqq…!î |Ï’ – —Ìqþ®S[“˜Jâ#@ÉQYè'R®5”úYüØEJ…CHPbC4Ä({Ž.0ÛÒoÏ· €Â1•†t²òSŸŸ?±ÎÝÂد¯x5¨$ÕgØ9! +½;¢œ#D9Çëó×›¥ÕZ‚ZÙ¾¾çBÁ}oJ›'B%‡,š¹ˆåæÜP Q~gÒ”)»Ú¨^xu\“:Dq—¾=Ÿ“B…S½®Y!lX±»ak‡Ⱥ>8¢åÓ~uá«.ïjØÅ­8Oõ®œÃelê*ócÁke´¸Ùþ!Z¤|óùŒŸciEcãž^^fêæê•ë5»hAPÝ}dÀnC<£es;¯Šh”³Cìã, ë9dÏRBI„j”Œ8Á `¨½ÆD­è4ºLÓ W‘»ÔuÝEväÈ»€WLo¹êH\˜ôÐ’…û8ñY F¡ÝÃ8ÚûúÒí½ÆC~>o½{ú>þMüR>¼s`„d¼…P­úÙÐÛ!€„ï5„³dÁHòAæ|//‚TŸC9{ü…åg¼ÂÔÇ›‚jW'/`µ©›m}CB´˜˜ S2×tÛ Bø·¦ÑŠèÂÚ1,Q€¤yž2|Ìö;ý 0wªƒ×ŽhŠK…„œÆ3~“òùÍ¡ õÑ@õú%qýÞ¸B†¯\Ä›)XE`£+€!piýÕŸË7|7¤n#€“`ìBýj –y !¹nîßãMŽ16OI?Ð!6âLþWç\O¸éLâTK %RKÎ+~ +É «é2‚COîí$#`}Û5ÿÀ~4<ÑýN»~ÿ½q¿sÏÂœÕ%S‰þ"Ñàø²‘„˜52Ä )¼ÅW¬³Z¡Ì.}ˆ(€’/i[àÖ+´¨í‚ÏÝ;>ôà_ŸB©›‘ó#ÝtYôûóú[ ¥õè“˹;¯F&e”¨Á¥¡iªU2S.Z¹tX`*Bs½Ý÷Í‚"þ@ÄÕÊ1££@·G +z#±¤è¼¼—ŒÚïëãÎ"¼\¢?Ê'úW,a‹Ô¦ùC6õÇ_üÛÿã¿ÿñ“åÿßøÃþ÷¿ø÷ù_ÿúŸþé÷ÿø÷¿ýËÿóÛÿü×û÷¿ýÍþáÿýöÿë·ÿñoþöŸþÓ?þáÿþCœôûoü·ßÿÃïÿúŸ~ÿ7¿Ý§øÕÅ=¯+ø´§ÿ¿±Z¿#†=ÙfªLÍxá¡°oý ˜CU–œzR59)‚ ŠÕùj³ˆÌ¡ÊC-{üPAþõõ±ßÒe#Ï Ë}K¶j,£è‰0ØBX 6KrŽüw§×~ÿ5~\„â½èA–IkHÒcE%~Pó5Ðwôèj ch´_ÁbÈ{^¤dQ¿öH'„Gæoe›¸ƒ˜€–=`Ö¡­wdcÑ~ÍZy¯!óý>Õ¤QξØ-ÅZÙjÑ„’Nˆ—Wjب›ãb £ƒ¼ÿ„±E³F˜ô@œ#zðsPô(Ï9ÓÁÑko1 ½˜u£ÎBÐùÚ9Î8 (¾Ž@ ‚ƒ÷ëW)üÓC$æ~RÒNï  ÐKe>z‰*dÿÊD2^L7 ”Óa©÷ +àÈìÐTìqv{;¤Ú¡,{:`U;h¯÷‚Pɼè‰Ü‚FUûpl¡÷i;Á‹aYU%³]/ÝÚ›oáÞ\6Ö×wÈçPÝB@ÊOŽp‡ Úô|ö(ü~> q^äozµpN%æÂSA1Póñe„1sÞï5é‹ +·ÀçòÖ?€Òbùæ[èÞ0Úö\]u¶B£aQÍCå7*<¡ÃÎVérºPªÒ½Côâ6Dñ—^b$²d±ÇMA$E¶¦Cyy-) +þ ?â6z ®²{Ôu ?ô’žDöŠ)½„G¾šqÁZ•öj9ÚÑt“5mïÇs¦>n +PÏËO»rîËŽŽœ€: úŠê<ÉIÒQªÉjR]جê#[Máfö›=¬’÷H.W¦ü³dãÓ'UÁÃ(‡žçõ”â!’jUa…ÆðÙo£å­CŒ±¶û!Lj(G1¶bd=a¤–Çèâ«á»¡{\¢=Þ›Kªºóxe‡12æä|!ÑEYù‚è±—‹cÄZ©·XsDW²8¨A¹£¦3Õ*5-Hžj…Ð^ЉXõáìØõø:ɼÌ@kÅ*Z‘OÂȤ6}Ú=(›Ú #z°=ë$òÚGz‘Ó²—2±»×Ê +.c1×9SFi%zP¤Ç~¹ì±ßűÄ%ÔxWtóÝ×’®9çžœ×!ÉU*!Î+HMê]JȤw&"S¬"¬’0ÍÁfP{úÔ0¼@|–Ä;3Oˆi1ƒïárðçMÇ8€tôBÈ£5ï + ¹ ¬pfS±ÆUYà’ÄÖìª× qµ²‘U­wÊ6ÿÙgÝ«ôRÛ>Gµ¼ìi@£‚ç,™9~0ñÕúfÅzÀrY~‰°è¢ ÑëðêMâQ®,…È+F¹ +ðó#õA¨[ÌŒ8zìÈÇ<‡pʸç\XH²¦{¢& ~ßÊ6+¢ú¥7B H>‘äž Éçþ§^‘ßœWª!Ú@mnqA=ø`jAK@*çïN¯–ÀC¡buÌò„Œ¢á–œã0: ÂU?{Ž" ,-2=HÔ?åøð•àfÝB ™g¬G¢¬4RD·€Žš6{‰’ž1N‡ ‰=äãRøãP¿ÂLp^é¦=‹€ÿÝSÂ8<°©ÇölÀÇSv…g"&0¶<$ÜÈŸ±PÕÇŒØ[Ou F,ûËùÍq¤•Äv"‡>ªŠd€ Oˆt<æzSŵd™ÎÒ.Uk"7~dÏöÝŽŽ6½(†ÐÁ—ùATâ`ã]L‰†Ô+˜¿„¹ªŸj@îeõ°&käàdZjÂa¯*ÜŸ!ûu¶-»ÇuåN¡ÙGˆ†;*”Z~Zzi2K«dN<'êÎÏ^—³¥x6M¦kjø‚"lfyPŠºz6’›¬9T{KhrÜ¢gÃÃ(OñÚH9O 1Ymà:‘Û—PºÂçQ9 ½ G€Ï8OTâD)œgþÞ‹½)€J ›Ë|0&×uˆBÃQ/+GP‹§?ÝÝH×â`ä­R¬ùá¨ËU‚Å'tê””XøÚ"œXb“Ñ>ã?Wöñ‰w=qibKÿ£«ï³§É½ÚëMY?»Çµ:¡SfWº;-a›®¯p`îÑÓÝãqÊ^ö‰…kpš¤%wÛÕkþƒ˜´c8g7Îr è0¥Ç'/?PêNq™;˜S„—¹Âèàpó‰Q%Ì2¯ôiWØ-qèJµ#Ö¢±s+x¤tQÄDx+*2©•Y7\òÒ`¬ŒD%¯Û¤?]A•C¸¿N­,B5£|¸¨ªs‚ò؃Ue|ÈK¾%ôjá ²B>u]úaÕ¼“NK麬rˆZ³Ô{= åô°pm'VZ¦(;°§ÃGö ©¶ýë<)_‡õësÆ·÷3òÛ\±z\@dêïà¿Äv2YS¤×²N‡UsÝY¿ÑrÅ7ä~L+Ô~›q‰ž -öößôPÎq¾žÄ¯áy"†ZψÚšÌðd+8ô•©à’~tÌÑ|5v$Þ㽇çqw„†Ù¾jP\ŸÇIZLbX;š`&<$ Ƚ5Søev>c•k]ñö°×xŽyÇÙ‹‚¨®‰ )R•lHjÚÎq¿›Xø¬p +­pt?‰èûô•dŽ}ôð'aAOÂÀ1Wóq ~ñì—.X÷6Ö¶Jž´ÌozlZ”é÷ïéókpýº^C†ÓûåGĪWÈe^0Ó ¥Æ4àðoc¬\PsßÛ= ºßqç=ñ˜…z?¸½¨†¤ j¤:°(â2>: X„¨48öyý½>zQf˜¾M)xɇöç0µáº6ùõhQÐù¥ë³ÇjƒÍ—^ +¼óŸÇÁHk¤»¼{‹=¾–òŸ;Ú#À¨xk¨ÂšÊ{±.·ç9SИíÕ¬`Šy—íáËMB„½m9ÙÌÁlÉéa©1À£ô=IÌR^g²äIµn=z1ØvX)ÞУ@þ©¥)kXÃAd÷Ðœ†£hÈÔó›"h²Žw¶`Œý½ -à|BJpÏ'f>:µø“ƒ7Óá€"¹ïžg°í[uÞu’_wˆó°]©ß|™¸Œ­>{¡á9zJ—¾ëqLŒöë}y°ŸÁRõË~Ó®|R¨-11G²ß»á¯Ä¯i‘Ìb:~k÷$ø-¸NÂW¯‡ (Ä +‰,fq¡Í•ãHï~ÓcFíÀѼä£W%Ð òKIÐûÈ yLZý(í¤näÝìi»#]¸{¸V¶¯ï=Á:´€{ïDºvOÑ™tmBs™Kéß|Ìžj¿7î©Z½)Î÷^hØû2L ãà ÄÁ·c*²®åB «¾éÀºv-•Lq½õˆ;Ö勃鮺r}§’LëLÞú0œH¬ŸHŒ;VŸØ³‚G+”vÒa9tÔ‡`•4Ž€zlöQ…®Å¯#Ò„óK·Çg¦˜g¶ƒ[sxÅ\£‡ ›¦êÀk‘yä™Ñ C'å˜ûÉ®x$|hÇú€ÅTä ‚KaÙ +…=®j׃YR—¹#ÏÎ#A¿÷Ú^ Þ‘òi9€ëÒˆQoVÖ›©)K­#‰üï‹Ø²üC$³ßªoóœ·)3£ÕpÞ^Ê]O->{¬|H­*ÖWôúÖ«…¨Úô^$ª¢þ»Ø»Ât!½4Ü®۟´Vb¾úø£wåðñ>Ïå®ËíFnèÇž^D,÷TÄìÀ˜ôØ=šZÎW ñ÷#íx¿›¹××qcI(옺$¦È¾•I|ÇÅŃ3+f¶f¤‡JáîzmÞ„±F2.¨;õãzJnJ`p‘9ÿ#ÓŠý#¨¶VtìœRdÑ‚^-pCµÓ¹³ªR7åæg~ôÊáÓØQ" b¥‡C·DX÷OÁ‰,¿^x‡h à‚ªõë[Uí  +’Ù`.Ë 5D +ô ÷î°pÏñ¸T«L³Dɶ¿ª8ç"0 ¥c;¹ÜC±Še]Mrà9·ô·¹Ö>ÐeÛÓÚŒ‹¤ŠWëøìñ»[R£¦9aèÍç³éuêÑ{ƒµ×—“Šu/²êj‰ôøfmüì¶å†{Ø–šû«±ß ¾U …ÿ?³ÁØÆ}íRQ.A¸ö(9š=t;@|ƒÝÛ#Pþ¤Z›b2ä2Õemq§<ƒÏ̆,yÁÅ®ÕY² P²´—Ó¥¡r±g•ý”-!¨àÔ¬£1¹úl¯†6‰”bgQµï·tgBndßY÷žPÙáúD"<x¶fYì.˜«›3¢‘EŒFõ]mTÝ9ìË¢‰2z°ý­wRý^o=L¼Ú#izá®óž‰­;½v´Àj\Âý´±Ê?qœà‰^¹]öpÄìw­iðÌ]7%·Gy¶‡æ+ #‡rS{{^€kN­½v#ÚÓEz “°q¸› ñ4ÇI—G iŠ3êH°.N´ZªÇ]t„ÑÀC¬ü·R¥EYÕ£vL6–$âÚÛMj^éTÙH³@…+0Ȧ4l´Í¿²÷‹„&U±geïøœˆˆ¬>üè½µšnÊöp– ïoB²bÌ3ƒ{<ùß<ÊeØøÒK½4hÂQàwÂVÙŒp@gÕb{x'i‹qžrÕ›!x×'â÷8¼˜¾´±[r7úÙF#ÝÈód÷3XíBÓW—EêAGUß{€ÐVgê~û©“1Áò +Ã2Ÿ“”3"+•”¯®Š•d(¯.[SƒÕDDA¶Œ@†¬eù{‡F +.%é£ÜÇ=ð° +³Âè $'žÏhĈ2GA–PWĬû± S ‡JíOm§ô‡[Ý +Ôˆ'ÚÑ¡àÐt\c[ø¨0%DÆY‘Õ€4êÞ4Å +…ºvD3p“ÊÙÐËâîÕÈÎÓK€4(*ô€¨NÌ +bA‡{å›fÁ©…3o±yTÀ™ òöÍö:S·«âG>דýº{ÌQˆoöÍÔaÞo0 CŒ´Û {Oq`ÙÏq§J-Üч­x9ñå +ÇCRôøPŸÉôSñ%«UzeÁÚ=$m³Ç®ä#íñh܉ªÂÉ>Ñ Ti4²Ñ&ÿì žHƒÂioŒ jÝûуmåÖS@cvLqÚKáQ¨Qž×’N;0¶CN1zP¦ÈOœ+aN$Ÿ`2¼4_»¡›_¤! a%¶[¯G` ¸˜~‰n(ûNWá[;‹Ý«i¢ùS¦ ü亶y‘µ·Q¦ØN„%s¢Ìm›3²CÅ…´>‰@&Ó"¡Òß®/( +L1ÒŽlípƒTCþ½G<4ò«{EÚÿŸõ ú¸QöøÝÂYv™ý©ÃX ¾ ÑžrüRC zG–D& L¤1)FÈc}ÀàRw˜2oDMS:” çɇ÷ùðö]@³ù£yXñŸ½¨ï„e4„@ÿΞÝX·3ûd+¨„ üqShw†–¢8(äªÆg/Du l6bí®l«¥^œ®¢‡¸Q”Z™gªfTµ‡Ó™VtõëL±Z¢äU£×C(YjØÚƒváWhÂ,û!vOž‰]5×ÂÍ+$‡ÿÖÞeך%½®{½ÃiÚj”3î™M»`hØpÇV‹J4 À™&à·wŒ1#÷_µ×& $ÿúvæZy‰ø.ór½–û²šq·ˆ±4t¡sììªXÔ¬4ôo´1k¦^…EîTù{D•%Äy/…ïOúˆê%XIlnW\ùÀ~Ÿá÷mçM¥ÃA~G×™Ëüñ§“5á±k%´—ÈŽS%±ý)ü/PY ²¢uåú!b§§³ùÃg%\ „l!Ìõ)«ŒHûƒõæmþde1O¹mï÷€¯ÆÊ !Â÷£ÀSÏyË›où’4ÑöJKA*mÄ"°kË”kÝs­Û;e‡ ·ôZíÔÍ-ÑØúZØ@§–98š#¼žÈÄF*A3‚Ô•yÌbŸ©pQ»‡%H&ÃZCipê#8uú™,ÖQœO§3\ÑLºwkPÓy]1+RE6 ?¢‘Øå94R¼Ð›(]÷®Öˆ@«Ô«B÷ÈFpÕîREI÷–Z0#¸>´6÷{U3Š zd–ø‘§®»Äì÷UŸöÃq`.0EÞÏŠ¸¢ðû÷¢ÝÚ}YD ]¼¹ôÌNµÌ@xÞ^¯Pø†¾êÁ®á™ôò¾<'ñ)EÔ­Ø!û+ÈWO@¶|éӓ⯹å…a!˜ûG¥—Žè”)x»–mr 0pƒ§OµŸq ã>}ê._ ŸâBù—Aí9ÊfØíÒ&~ÌgÀ ì»îlêÕYùŒª²¿«™G÷¦ û¡­ì×·†ù˜˜»B¿—„$?hß¹D”/L½/8V<0÷ùPî #Äšë‘'Q½Ã‰ ¼#“0 ýžƒQÈ]ÔL÷׉–O<{¿gM lF^)\(‘ÍÒѺȠïÑÿ½‰b,ØÈA«¢¬hö¿ÈS¤³ÄãÔBÓU½ftÀ Í~€æÞ^U¡þûgM„´ˆ UÚ¾°§ùa‰ÔFò a﹊}ÜÓF²ïéjWà‰¸uüŒÈµŠ $$£½›üxœyH«ª Í÷QU”3¯’½sˆÍŠé}½ùê/wp¸›šiã3êoÎ×›±£îC®;£à²‚íµuTeEíZœ—S&9e¿°èUýÑ‚AÚ[&tƒ_-¨¿ˆBYýîÎÀ1É­$¼sZi•;µ#‚áõŒ…lõo}–)SÛŽsöè^£Úp¢×„jW:ß7ædµß£G‘Ùp«GBrØmi3äpÉêd@1é•Ša¯‹8¯G†QrÙhÉbhÑ—«­ˆ4ò(š?`‚ˆ <$mRZºAÌy/mV¯6¬Ð<йÓ#\ hÄrÑÓ§â@ÆôT„Å4ˆ€ h4Àûò(ÕV¡Ž…­¤þ{eþ÷gª0ûbÜ ŸÈ< ö#Ó\0+²y=K(ÃT!톒c줋^ù÷Ï¥§¡¡Ép¢¿>¦iäÓ¤+fóúI¢ÄÉŸ|F°óêY·¨÷ŸAÚìï¯Æ,9²wfŒEpƒ¯ùÖ·AàÀ•­ˬvFCãU€‰º3Ïo)…`@÷ñ›•º~\†ëÎ`—¿ø{±Òþ?Éï2ú_°ÎUŸå­‚ÎÈ’ä~°à¼3—适PC,r>WœŠhò[Hq:üÌDèÚ!ñ 9Ú9òâIQ`Ø$Üz¢;¢½åóÊ…Ì"·@r±ÿ7PÆIÀ¯±%ëf}A¹ñ îîkQÃa,žU¤œ5•Å¿s¾HXæ•gÕá™Q.l»vÜ{ÿð0B“éèß3@­Z‘‡$¢’éÀ³_çLv¦®½~©=Ît‘ý`06æ!§O§iÿZ>çˆL¡Þ²Ë¡%³×b?th–“; ÈÁ?È ´äRŒ=FÛ¢ËÂÆdGmný¸ŠÙ{†øŠý÷'  ê&}™1xGû!¢÷Žá^~þ@;JP¯uH#ìm]"£rÖPœ<ãF|1Ø%&Ê&l¢(y3ú¾ÔhÿcþU$ÙþŠÈÄ1È L€n•…ZÊdœô›Þ—“2VïÉêdi1D ûçtuøs¿=ºâ ðe èAR•>,ì_Ì—F§õ×Y +82à(˜òµì<égMH»kÕYÅÑzäºuœ ÅœàM°„ߦ:[¶ïZ?V€PO èÓLTÈJÀ©‘â™*h}JØî~¥Ö[²3.‡ýʸœóî=3uÁu_A'8ƲM!ïúIE~Ñ,àBãQØÓµ¯ »ŽÊ/(¹( ôti7ß ó®ý;þ^XÀÒMCl±Èrv-+Š²gPÐY¥ó¬7oÛé(RÙâÜËϬ,ûˆwà蕆57ãµ$±}ÿ^¨Qû?awŠ`dk2± µ¼¿°­®Kt— ELâTŒ¸D¼ÞjȬ}%€òX¢:¤«K$È~ùîœÝl‡Cï+ ^Dä.sIêW—g׳-'¢˜"Bj¦R]‹Ñe:À·8Ýn"Bk’‘pèñ ,Í);×%ëú¥C-PdGä54 `û‹v²Ö‘æΛ=ì;ïPUP*ʽ mÄíÜîW‹wT“q$U‹þ‹ 8DuQä½µ^í¡ïß+nÀÇž~‡š 7U†öw½nZT'IXWö3úଚÍEatF=73±iþ††ŠëûÂ6axƒ©#§Œ¶Ü>fRÀ'.Ç-¿pè6jçÛ€ºgìÜ.3$3w˜ÇûJÉ× ošäÈŠ˜MI¥¾‘C¿b?°å¬»È)3(ßK_¹ÕÂÀr“ùScú‚O†Áʼxû8ôîí¨Ÿ(ÒÊNƒè¬D«Ãåû†¼ö<p•ˆ¨ì…¸±Ãó˜B†JNäOÝñãU{‡%Dr2Ý0ïóuÐfèþ Ô øRjtæ(4õ/T\z"¸Ý<©,,D8üÛôøð¥dì9·u·ˆ!#ïG»¢CÃ÷ò§Gáñ%'"‚0zVD’ʱžc ¸Ÿ›?€ÂsÇ)Àµñб ¬)3v6Óv‹Í +Mk”\§¯¸p)Ø(¨ƒ$,PÌÖ)Q?‘1iR±OŸŒÉ}•œŠæ—GQ,ÀRå_ÎÞÞ|ð¯á&ö{À«Åt¥ y…õr….|ã>¬“‚1˜wÆ°¨QúðîóT ]à´Â•¦öÐåò‚3é% +mô>j>¤A†Ì‡ùB‰óu1=ÝOãÎ_‚–@¨¥ëےò=SvÃ}{›˜ä3ì¨#¬s¦€#±žoFÈ“íRLs&|ˆ©ktžÝ‰Ò4 -ÜÙIÎðºRREðÎ×Ó˜Yb• §°®c׿K…_"Õ¥\ßÄíÊ ¼[òXƒV…àkI2-œ„çë {ê–IË67E‰‚Jn÷|R³íG)€L¿'ˆý—Ÿ„ÑïË£ ¿`ühÞ\"ªK`¡À… )§3½ÜšðG;œ¨{å:éQÅ +ÄSx—_B­Ù „½:h^Ï`•o@ÖM„žQFË‹¨£à²m¼Ëò+ x9®k£Ã4$zå“·î½,JCý"Aj¿ýþëñÇ¿â+Ig +ü )ܭ̶T*1:J¢èøÕ° Jxe=_a‚áq&“ÐðŽ@CÆÐD¸R:™1¨N@éÛÏi)‘gÜ™_3ñ%Š¶DŽãH d #å QÑ^¾ +[÷±cA~±6ÊÄÎìJ"EÓBpTEÍøЬ5?ŠºFápŽê‡GMe€;  ,íÕùªÒÕ*ƒIkšHJáÄô¤ál»tÛÅÚKjD^ÂyháíMzØøn™¤uoܯ¸4»A¼7ÖI¢B¾K½¯áqÈÁ‰xÀÕ$QäÓöA"ta$Â×å:Ô¯3íÎ(ÚDQ~ú÷‘3ïIüØ )ù%;s ŽnO*Фßwùų¾H[¼€È0æÁ©]ˆJ:9 ¡ßÕR¦Èò8Ì5­õSA ”žLâô± ó{X¬v<+$¦9œíì¬^óàøÒƒ&y_Na(:Ó˜âc­•ªCç&jÎxÆIW +\€– iaêI0ÿþÒà "2×k"ªrÁ•IVÚ)Ò‘ôwVuVðõ¼gÚ×sÚ¤ ˜Øb ]‚Ë ¸H¡nÚBHDazsEryQðMô nQ‚§Ž-ª¡­ô…bBr\F¬éR{2×óÒ¤QŠùås" ÝànÇü„ù'„Õôí¿Œ‚Ž>ªô‘7žšNÆáÀ{Tî<·Â +œz{¨7iUÁãB½})>3¿ðÀ(@‰¼-\)Y×(á¡`žTî)àyyq9ï:?¬¨÷¹s¨‰NãÊ>€ÌÌ´µ×ŠØ.Òn +e]U: +[ˆªª§—Ùù‹ª¡•cùa·$ÒPtZ†ÂÆJX Tx’ž@®Os6Õn›ÎoÇa¥ÞÜÒŒ5„a–}×x@•†´Lë•É…ä´QvÙ#ô*Ó/RvGÅWLéÁ×w„Û®—£ÞlÀ`ìCÄõ|Ä«HþÑŸ§ªiDŽ–u9²cò}%%îiíÊâz1»À ‘ éæ—¨¯$ÒNTÕuÔIk9<ÏQ@ijïÿ{6µtVòÇýSgÿ¢ãï¤ dÅS¢ŘÓÜ|<ø.Aßîç}­€"•|£u®61,(2ÊG›Vö²ÇÄ̪ìzéøPÍ$íq26"™BH×SNz3èêGhu.‹€ŸDûïV‰„7/§¿pÉÇ×­q²@u9ÙçÚu¶nn#0<œ½ìîÁç`Ògvè¿¿-“.Càâ*B¸ŒÊg=öqyö¥ÊP‹Ñ¯’Dc‰`ûÏqq=#…^¾S}ÁËM_94blOÕNp(N"{çÑ3¹¨‚éæð»9Í_³¨¡¶'Ãe¹ˆ8ósšò( ͱ˜Aao6KèUMÃðR‚Paz) Ïö_‘ØOŽbLÜ0”ÌBªº Çõ¦òõ¥5¹£0jÃo i%¢ÂOÀD„û®–eGr^9¼k:r¬ÅKß""ö#É*§Ã˜¤¾z"ë}DT‰Ò­×öÃwåL$ÕDð$æ»ð*îo|Ežó±©j„1óã[!‰~U¥aéd÷ÊA\u®1ªâäL„oÌØ}ç']ö)€¾QHƒÀ¤·–j:ÍÝŒ3¸Edn¼t^¦’«ÒÉøÁÏ+êC Ú9©gÇ ¢Åìæ?àþ^ú"‹bü—è‘š_;Ê(•Ö̈'©Pñ0kºNý`;¬ôD9‰›>ºÜ2"ú—þ"¯—Qt‰ÅÛLÔ9ÌCºÚé]‡WÂ.ÌUˆˆ„RÅ!´…vD-õe”ˆ|=a )C¢mïj.¤Ø¶—ökÁšè4äìaÿÀìb¤Aª„HÁb‘LÝÌGÌH¾0 @h,l<œë€Si¡€bÞõd²IÁß—_¬½>ûÑ.© fX>ú¼“üíV?ígqÏažîk€kW·3?›YàP¢Ã¸Ôõ|ÌtV—„WBЄ“…ÐÛû£ Š]wtFÇìŬ÷LõPåaª‡è°WˆÃŽ¨GŸ+£½Û‘GöWz +ŒÝÁ­×œ¸$ »J<Éo4Â$†¡Òên ÊC?öEÚ/Sˆ‘Ït¦yìÎéD¾ôtA'4'ž'6?•üˆç¼I&ÝWW]112@¥+ ZáÜ.¼Gò°~õðƒÀ—Q$9ðo¦£¬ðÿÀ4Íu0•ziБAï4³Wžk6„ö˜"Ô#ïÕ)L\]!–¨Ä¾‡Ïn ΢„³ƒLÌ_ÙÝ!¡Ì29?Í @ožD$p'úÄx­¦õñ¼D%^šCá ¢ÇÍl÷GWã±x]¬kù³„ÿFXï'ƒüÔŽÕ7­»¾'¢'Éœ”u³¥5‘ ˆgONJSVÍ^ŽËô‚P…æ;æ=¦ýÑó¬ÏxÍ—]³ŸZ'Ï(åí)9fò{{Å49‚à R°ËËR§KÝh%Ftú,œÈèèÄåð¯>o…7dy„+nŠ|§îȱ4û `;”¡gùLó Éðd±á…&$ñŽöÝí’W,Ç ›3¢Üµ°P^‡ÄÞ§r@íŽäMƒq™®y@ËÂÌ6Ï/0K? +éË9BPc¹ÀÀÿ õFÁ›Öï複¸oðEe'Ç}É–IT-™Ìu8Bí}ŠGªJ©%J~=G +Äyw;ZŸ@§p$ W¨¸^v¾°¢, < }S•¾1·9VÖ ð6¶C‚Tnªõ ],fÛàh@8¸?§t…GÑ™Žî5ª~¡dØÇ}‰V•tš½b}Á~^¾,³½G…²+àm;þœ¿6½Û‘ßF`6V‘Gœ?2c$º]ðžGÉ +Â6ý&ò»ÆÂׂS»N ªÖ¦#€û\!î °t %¯o·Rñу‘!œžî€Òò犤—èÓ™‹!6×Í/¸5‘§Ø+Ñ8#2¢$=áSyÄ¿²b ^€â•…CÀ#Žž¥Ð0ttN…ŠUÇÀè½+'ºòeï·vG^”<¥™Ú0tG0A¤º`³Â …ߪŠyµë#jÇdYX’ÎWC»Øn¶{ô= i~2ç(¥• S }?îGro鹯Ÿh7fsÈÁ]Ü®(áI@ìK‚rfÊʸlb‚I~°ÿ”¼t^™`í4”„y¯$%D J„IVxÀjç3±®Áâtóì[·w?$ +Eæ QòiBÍv”ÅÈ>2¡PªD6„kéÚ­zšh¼þ*eŒ“° ¤7¿N¤gù…t6Ë£B.ͯCÇ–ì|Ö'Ñ„Àh߈Úð!îZñ?qÐvÞÈב±Ñ%À•®;›×Ò‘XxÖf¸:2í ö ˜Ë“ÈØD“ UJðÝ=û óÛHƒ«›{›Ò¢jz§)r·0÷FbÖÎÃ}‡™ #ª€.½¾´5¦ àì„Á±A;¢Á±`¶Ž¨‚ûÞñYV…ˆ¹ë~ SCbT'S·¥ÛÐî ›ì&ì‰]£ ù½žŽv¡^A»ÃC‹PÔ +§Vß<øÐìÜÏ(P0òÙ7Ò*+vb².ï+SìÌ4vå,?ÉùIy8Ù@e,Y¶X_^|«Ñ o_:ô›X§1Í|¨üfHöœ† ™î Æljþ»‚xé£QàòH®BË;Æ®¡ép¥5éôlà˜š ísÒÄ×DI{µà‘¢Ô飇F5HçmsÖ8:Z&ýÓiJéüwµ£²·³s:¦lö‡,¥Ž‡FDÝÁ\²³öSí¿¿ð¿mBßáiî;„¯‡_øÇ(vÀmûg&ŽDÐyVŧž +ûkŠ&‚^×óëLzÆ#³<#ÛŒ¶€QŠ ÷Ãò¡(MÑJFýù.‡,R•“'`æ˲#ˆ¶=c²%1Í;‡Zíº¹ +ÏWþ +FMUã•9Ñ­MI‚´çË9çyšš,MCi_dœHÔØH1ö&h¿¼!Ô>*|„0WµÆÝ4yCn‹š…bøMƒ’°»Àʪ±F’D‹¼£€²ÀrÄ°¢—0½n‡„üí××qÍòè ÚŦ//À«sS¬Š÷æ‰Ë +ÈE“"•ìIœÇ9î>óU›qÞ$"+†*ä²B“o!Tà†$XË'$œjû¶eÜ>=,¼%ìÐr€©U^?6mÖ¶:®t9ÝŠ½ùÍ—¾ôFYï#Z<µ¢œ¥Úã î]8vd§+î Àž™J£ÖùÛ€«N–¼šÞû…´Ä˜ÀSôŠ¸Çéõ¢÷žˆµÿ>©Fu,"øÐ82§¡A3‘,gýDøÏ*+L*úÓc…¿_AS¼Àl6à­ñFä`݈ú~Õò¶fx®<=L@.Þ}  {)Ei¤ÛRè¼wÔ”qe3O¢Ô¥!JéKtiH„±ßEm„t{IÞiÙmDæÇ{ÇC¾))^˜O¸jb^r QW4ú‹~1œìi±êT#´j2"YX”KˆˆÆè“õ×^  ó)Ìy8”çÁ ÄþÚšQéÀüªÏTÖ`0/Óêû: –Ä0w¿Ê½ áï7-* /–Ëâ9ÑQã½A¤RœbN!’ÿúu+Ë)‡î<ífˆ¸å…œ"ýEÑ=²d®âþÑ€9;U ûdqfVIÞg%=ü4Tü¥!™_à9 ·ÓRæ-Q <”þë¥~²YQXµx°loÜöDp*vçŠKZ IÄôá.(ÕU½Ž“uôÌeÇ3ªzðY¿²)L:lA»ôŒ‚Æu3Œi¥¢oͳŽÙûƒ6DvyÔwÑcÀ6žÊ7ýRíð×®~kš‡xfš«ÑÖ/âRÙqn©Kdsj6®›úúª!ÞÞ$”7ö‡Í×¾ÛAÁ‘èÝn‰*¸Ú©E\i"¨ËrÌ•ÎâÀMQŒö2ƒxEÇ×áÂÄ´ÙrRsu°€(§Ë•bœ·$øÎD(K41"ÎW2¿h.Ö¯ð'1)R$䈌Œª)†Â `Ë.­Îhj[\ïªX_{Ù"+gûêx‹Mˆ +˜LºÂ†L[e@šEÍ#ÕoÖî‰#Ë<2fSò‘Ìð*XÒ1+W"„ê¸í¨½ôÈÁª‹Ï½fKßK¬* Ä~O‡df/Í‚ÏöqÅQ®lÁ`ö›óõ; |ðxëKh°Æö`¾úf£k§ðˆä[ã@‹õô¦“FEI WµÉ>ñÎXn„©…¿éÙHRzÈÞHâ­!PAÅbaj†½SxAuÊa¼4£rS°`p5FÄÝ"®8žã3ÊÍc;ØE³î`¢l…7RáÅõÈV6»ƒfô0j´Î%Cî€ýŽõÐsl˜ýµ?£¨\XŽªQû…åQ[º¢ÁNÊ!DØox•"±Í™žP¦Æ2 Ð,¹‹H÷—B2‚AØ«Ä­R•eBåQ—4" ªo¥ô¸æý@nÕsvª’îÒVqOŽÛ@ݯdþngJæ ŠvB+€F¦²Ê”P5ZZ$¢ë«†¯M d‰Ä,×K"á7‡Î¯3ù›ö™ÐÞÕésšjí¼MÞSÓ5‹6Ù-«„¡´€¶j,OˆòE’šïL>A±ÿñ%ãAšCx:ÃúãÙõÚf%ŠŽ¨FüÍ¿ ®æxððÀz¿HÄF$-ÌLfGˆ¢Ó Bfé—ïûývèÄ+%ÿ`X¬–ð;’8 Vò.VÌî¨Ð«ïçM[AÕÄÝl‚”γ:‡v–$ŒJ¼ÓÙ¾Çy.È +ne"ëºÏ+KuÁeoqN6ø¤”–KˆOÎ/1ù;Vƒª'wFËÊKîKÞB’Mµ{áÉ0M)mL2p»õ-xNù&<µÿ,Ü$•jaQj“j4ŸÖßPt’ôµ;Ø~ç¤öX{˼…ª-ô×ý@:8Ñ Ío×å胛ú’”pE`,Úx`öu]ξx!äâëy„H­P!ŸþïO5+Ñy&Ûey_B½*!ÇYàŒU€-R¾=yÝ—€°G°Ë™Õù‚æð…0Cßߥ'ÙŠzê¦]Ö\‘Ùou‚ï êDGJ.œ’—öÏšnáaý¯WD›\6DxùÝó8s¥òVÏî:Û>7 +ÒÇLöJÞÉK5­zÔý@C;>)ÇooŸçpP@Û9z/; +o"¢ +N£g8J«ŒÔ>Ç)A”'þ»½¿&ðßþ3öõÿêýŽ }þ+þ÷“¼ä¾ú¨á¼tA£Á +cß•ë*ñE”Üç +5qìù ’ºçò<•P2‚®ƒ¸÷£¯L+`>§"o{*¹¡oV±ÆX=·HcÖÅ€âmµÁ쨹Íw,$Œè1zFóò8€4”/C ¦”óa$&¦c? Š'K]G±…΃D <3‚Á#íɃÑrŒL ëPÿ:“#‡Uæs¤‰5¬! 5 0•ÞŸøµç\ +gê sPm‘¢ÕhÇ0£w.ÇíqFÀì…™Tĺwe#lS |kkê»Û)D{2$¶ $RäÕæ &%´‚œ×à:‚Z¸óŠÏ’òJtÔ}7ªBEBeèŸæôlôÔlAŸ3¡§ò^j&ð‚؈éÍ6èTÕÏ}DUj7³76Ÿ’ý@ì45\ÛáÖ·àj ]b‚ŠË"”ûKæ?Èáú‰¢¢Š¾ëeh¦~ [ÊÊÚ@„*;b &bèw²Xðæ× "¼aæù)뢿O„è<ÅKîØ3ˆ£Yô z¾‹`Êu4;öÅî¯ÂûdWšL{/sU .s‚šL}•†½×¼ÁÞ!Üðlb§DýW®{“ì#Â3ÝÕÓßÈá—ç‡ÃØ % /ˆF$BV6ªÊgÀ~„ 8“ uá=Í· :#ìü²€üìîÎip/ˆ¹"Å “ÅÑáUՈݿxØ@eïNƒÙ2kÂûWˆ®+ ÒË+{\û>¡XÉŸ +ǘW3©×ɉ‘âd§“འl¸Z5Ny1° š±4 h ˆ âZ)Úе;¿~Ý>ÔbÖù¼B}gf”¾#‡'¢Êgï_Œ°•;„äD° 8Ñ;Ñ´wiÝlÁôøªC6éq˜Ó‘™ËA0ÍŸð¸»bÒ°~%P>£êQ—õE!ƒ¼å,&ï4 Ýâ%F èVAyWŸ•p•ÑNÄaÅŒC¼ûøpbýMѽ¿—šd`\ºu;㇈ŸžÖϨ +RPcAÚ÷ÛÀÔ?–ÁγAŠ‚Ç•í•÷iÙ¿‚ñJŸè,ÁBÔâ€$Kiéz¶<éÜ€‰ ÿf;Ôî;Õ#ÒE ]ÿóÏ9£-,HBtÝû}ºã‹•©ÇëâV›àB®4y åyL}UZˆR#†‰ÉL“¢h™x1BÈî“J©R_t‚øí÷3²1m²fžÙ^„yÖ n×Ac ‘¯‘g’ŠÖõà¿gù‘âe>‹ŽbT…E~·mÉÖå^ÌNi¡˜µ¬êØ"-õwnXb.DS˜ÜKS—©i +þl3àz)¬¡ìÆÆ|~¿d—¢™åH;“YôœI'š÷‹}åàoÔž±Wþ\‰( DËÈÚQ’@ê¥]DR +BXŽ8CF@6:ØשªÉÜÐ%zFÍ8W”¡žƒáºÑV˜ñ +ð Úc’lLÇUûñ@Ô*mÀžþåØj§7 .¡R-×0’¹#q§$ xQ)½ãéJ2Еz½eøíïƒó‚V«Ôyûo…¾œ ëq +yUpócXª£ÇÉXw`ŽãîDî«4®t"”7Ù+oE44È!5æLéiÉBU"¾:Û%¹‘Üóüù­Æ©‰@b™>H·D÷£ø¹=Ç””bø6¥ºõçæQ¶–§-Á@„WâVK ? *ëï¿4ü+¾¨RÇ­zÔ Ð‰èd_$@¾¡“A>‰ hŽƒ0"K&¨/‘L]?r#0à R©©¤ +/ð\Ùwê'yµ½X'æŠýH×Zp>bai¬Þ"žh/£ZL{5ܤ…EÄ> ,„ÇûùS 5À ¾˜@…ˆ¡¨ò„¯8Ú0À!;ƒÜKDIJi5šçíWM¶ë’åö‘:êÉÜt†×úE5Ô•ôàF¯p‰¥Èn¶4#¶Ñè=B™±±¡hEmílOD.&o2½y¨LýV‰škÅ<š÷D¸Ï_ +ñåLÑôADhEHT"ÊÛôŃÂrædsäiZ§Ã昄¢k‚æ:å‰ÀÄ,4m§>9ŸçP<~MÍUUìZ¡1¿âDÐËÑìôšÐÈ -–a½‚Ñ%¯‰Ûk% IHU·ÿ]o1µÿÚXiËî ÜQhp•%VR9YKsWRãm!7@|ìY?|.~Þ&ë]÷4">¢Åog„ ¶â':2œ[5Í`~ðLgÏXfWå’‚¿EüéŒM¢\30?ç6'PÉw1™ôà|0Œ”›_/‡FçQXd9‰Øk]i¹ôŽ°:†%¸Çµ¡˜.ó"eÖ§°Öð¤ÍzlÙ]ï™zÄ™>ÎB œ²¦è9™ü*C·o#z³z-©#}E¬*—õl5KÔh¤ªµ_ }´¸n&eæøHb›F:Ê+z©Ìîù±Ìu FëÎA˜V|Þçì>+\ÄsE¦:VPÓ2 +;FLêV®½búûÚOÝŽ?"YuïÚ¸ÿœ7ç{¼;qB%ϵ6Ïwyø­¢ìá“~>ú7åóß³¨½nÚ§ Oþþ×&oJ\¡KŒ‘}|.3ðÝ/½ÀÏ(œjÙ<±:UÄfe2怕DêúP™5ËW;¡¾¢†{Ùûò~ÂWsWº#;­(R Ž•@ð•Ÿžǘ¶Ñ®‹t‡W^î}y019iÓsHXÈÉ—ƒV Ä)!˜.…QèL¹=ü(¦yz†XwúêÙnw]4_ê>˜®l.`³ÏÊ£,Žî.vU{»ý^¶îŒ‰qïc&ìõ‰;tZ¬k¾œý=_>”¡ ùíßÕ¡©Žh°ËŬ5,"¢__œ"äðE•öþå`(@êΟ#–ð0Ö}b`#ÇåZg¨VuΚ¡”æð¤ÙhS<•¢p|¡;Úi0b„Ð]IMúÀ™Ñ'cŸ¬‡Õj1Ÿø½\è¯Y!Ácb<³S¤¨ªâÔ÷Ê´Ap˜û¸:²—#N¯«¨»T[¿5lO¸u—n›G»ÅÙ4ÔF˜”Ѳÿ‹à'#[X`íRžëˆï` Òæ>›é õú~ñÈñWdd’ {"ÕnŸëhóáP׎ò\Í1îÖÛ׉ÈÓ¬îžDÇÞL®H±§þ‚ÑÅ›­Íw„p/|}øÁýϸnr™è/%HyBmǦ„ +0.¡‚gèd0åÛgS€gG rÛ•ÐQ>ª ¸‡!v·#Þ ¸ý"ÔøL`ê­£OÉhT8?¹Âur(nÈbwª¤o3`ïBs»¾2þ-ŽY; +É–D©mOäŽ €ÂÙð¡ŸqÆÔ=[ìUÞ3¦KÉ##œ_”'Ò¯3¡ ET?߇U‹¨ÞŸÃ¼Š4p.ÁqîåäoÏ‘âß3çorÉç/­¤ÏfF†æC yžBÔ‰0YŠS`ÐÂPD¾ •\d?ÈótεNÔó2Žh0¢^!Á¦dÙçÖ•¹J–P^ËÌÑ#=ûü³ Œué¯m¿sÄΟÐs³¥ ±’ ¡)$0&èÂýÔÈ Ô„§žgý²a¼Z *ò‰A—øÚ¸3„úäÜ(©%'ˆôŒ¦°XÁS…íŸ9Ëg„ßÿðð{6ÌX(YØsÙè‹<ö‡a b&B#L½ÕÞ•âÛ‡$MÖC‰lšd‡ÅH’vk,€ZôÀ +2Š°àŸ²²yg^F¼íÅr†¹©õ;A"GYŸcÇ7 +tá˜@ppÈ¥ÿQF¦Rõ2þj<üe”¶"+¶"Šë±çØ•—^û"WÖªÜÐP[HïÀçLñ>"Þg+ú¼]?E1Û^* Ð6§\€ -þ&w?ÔÙÝLí¥”<‡Nµ/ÊëÄVJ cGÅùaÄU vדÃøâ^!Oã…WüçÛÁ8Nçêþ Ìç’Éß ¼ƒ[ôzŒ§DôAÑÙ÷9«cÎy$ì6yšisó;Êu¤ýMê+o&Ú-AÓå\;ôh®EH“Œ;®[ˆÅá•yžy¶ÏˆÜ’[3×ÑZºB“(Ô»Mêü¢Œ—ȼÇÒÿá#¢¸+’æUûŒB’€[{)e¨Àâ¨E4“û&CAÖàjJ–HfÇOþ#"׌Œ»Ûül +^çÊx†ïáM®YåùÉ$eŽŸùAg®‡ñ—AhP1äÚkôÎkymÊ1bé[˜ݧ›‹‹œ•e1Úz{Órñüñ¾Ÿ°+o!µÿp”ÊäÚñ´ìê›5ì?EX?•Xßܵüj«>áw2ËŠ)²EïdÉï<âtÈNÍ•ú„Õð¬+ú]ö^ÛÊø!"¯žnHÍçq^ÑOhÒýÍ·ú•|‹½øY/<‰âÐæ´ #÷êôe½ÔâoÉÿ½h`¢µ¦] T¸É»¶V¨—šNC[2JÞL-DF,DÞ¢™(mï”ýžÇ|_`ðÈqº? +×M¦Ž1ÿäDHâ9fJpœ¥ÛLVÄW¢±DÙ}ïEŠ5Î¥Ë}*ÛD¦Ðä-uªoÂãŒyž€zîú•¥4•©ùyô+¾G©ò`jY€,Ê{+†6-¥ë%hU¨Û/Bÿ3ªkÈÉ7 cò˜´†A(0-TÔ¾ùC–Þ?$z²Hó‰š)P§¾T9kÖt>ÔL®:ôÏ~NnUŸ6¸†À.CÀ«;'ëqB÷²â©‡â‡3ÍõÂ+ï©o꺦þ´Ÿ«r#¶Ö¹#5wdÁ´B*Œ“bÀ;´Öิ1P¨Äƒ¶ ÛˆÔû.Œ¬ vatkY„6½ gdLØñ>"F€…Ò[ë-{>¢”‘UÑ9b×H„OSž†/ÍóÏXúÈÔƒÛvËŠ?QjÛðOÁjÊ|>´}HGêí‰ÊÕ4½Ú·œ¯?žEØÂpd=áÛ‹ÎrmÈžïýuvñH«õ-ÝÍhóÝ Ù"âú=âOïO£MpUªœ~?Î/}·7ÕC¯ šÈÚ.rï?nß‚ØMšŽÃ¤m…Ÿ\ŽyIJ•sÿ9¨|cçh’Ëɘö1?ìgˆqF šÈ”ƒøCMe/ºcŠ +ûý¦¥¦5î`ˆIjrøã@ºÖ¢“þ¨£44DÐIéÌôcj¡§ÞM)†S×ýüÁ¤þ }DüÓi!¹rÿpènycÕÄ¢u4€©{ÐÆcmlÚ{·r7TðŽ;sT”Êë´’\µÆE+§ÉX>DZ]6á Ÿˆu"Ê:+ô¦A‡\õó¶ÝHCˆBËùð ¯ð %sèî¿Ç°Úr¤æßa•" ?ùŽ•¶ ô^3¾Ž/žsí’}=¹1<Ø;ÈXî· ÑëCÅ…]¥HÀ¡ôä®/„óxf£OŠgöQ¼†‰šfóoA¤{àhË^t= õ¹†?›‡Çnõ~xj Î`A*à¯â¤wº©z¬‡‰ +E„i럨…xH%rÑÊ9`´KšºÀ¢ˆ*- ÃŽy×'èŠX4rEA¯ø…;8Dù…Ǻ‡$dÌ 9M7:~)¨»=·{¯²Õµ®ƒ;Ý_ûzeäž;óC^øŒªÁQÕBu`ô …HŽc3–ôH1ý²;«ÙÆ!IVÎyÖ1 àK …CïLâuX½€ÉJõAôTÈqùS:"Ôe²«È …ÿz}µžpµqX®qc€ä€LV•ÌÍà üb €ã^Ò ê*¢0¬Mi×ä„›‹^^zQŠ¯ÀˆÒ§Ù¨‘(€WDtiõSã,#”gAÝoÉÔŽ¹ˆ+ßüÈþ\…¢÷>stream +MÔ’Ëú@zí9O‰zˤv­*k@€„Íu¾‰­è$_5p[•­Êב6³/ïb®«Ÿ û‹uë÷ì‰Ñ¼¢DÐ5Œ "ì-_Gì­AK{G¶Çñj›Ä¹Õz!@™…]·‘yÆ6«´5ÞN/Eþø…¤ôó'(iÏ^VZtÁA;¡ÿ†YïG„ê`ðT[$ƒ“r|B>“fDS±®I‹w^}_虆å#ŒmäÅß@µ=Ì|ðåSÏjåãüZ?ü9ŒÞÑ“3ÙYÃðõëƒ;­¨½¨"¬ôëZaÖ(A¶ë&äÇ/¬¸Ý[ýÚgçyz!¦K•ã%»ëÏ.sñŸ”'=Õ!z­w„Î_"„óõV*vš£•/J{²ÿ 0Ã>°dÿJ¥EY©šÂl¢¦'ô‰ 9ψ”4Úm2ÝÌ]ãëëºÃ€WúnÿÚðœ+rñ·Wa˜3€V¹ÂQ c#8Ÿû(~ÿ oÍwøÇŸãÝx”ð@…¢èp6òd >"¼#÷q¼ýÀ(¸ð.÷ùvŒ£öúÄþA,2ItñFHî¨g=èÿ~Áh¨+#î‹òÿŒI%{*ý3/uJw|7–e*Å@ ÅEc¥¿ºPõ±ö÷˜êtV úÁÑ`¤›‚¹jý‡†÷GĸcDD³ú…,'ª»‹BÅ\:ì‰\#FÝ(Ê?".S’ ðéþ û´)aÖ¾£!s\¯ØÚþEoÏô>þ˜;¾I,õOQW®¬FÃŽnÊArY\=z’è!Éã:H¸¿õ×ñïWû”ÄÎÅhùs ªÖR$(^ñ÷,÷9ql2†ìUVJ#up¿«D<*Ãîf:Tj蹧£ÏåœHY`ßûYTŸã{2¡¯ò÷%9©8­ÇÄ’f]D{©–\“± }cÈê‘ +Ø~diñ·¢®Aøá#J±Ÿ©ûù¶#nÅ•?? ùd…Ú+ï+‘ð-êCj›á¾Y\á|Ì}N6ÍòæPYg-5_¾G|­!˜…! åæã8{ßSr +‚ëláÔ $WÐ]àÌ%ärïĚ˽oÚ9ºQ+ÒÛ•¨Ði" ©CrÜí Òö¡ÊOq6H„ŠgD ¿AÄ(_kSÉôeeDFö6wï&´ÄJQN:_qJl„ëýB•ºòKw [ü¯‘Ø<'Z,8E–݈;œThð#àÝKñ/>àYõ wò¼MC£t8FLmùÌ+àÝ¡5¯hY2Ž*cr$…èÈØÝæa« cûŒHÙ°Rž8”ÎGm+&³÷G7t—ÉÐW‡6C-ðÐTÀQ¬C.Åʉ3v"D£®¨1c-¸žÃ¿]¼N…§¯ã狯#4.Ó3äp“kxѪž[û­¹Æ[VÏLôøå(X%"ybÎqÀ´ò¬Wl‘#eŒh O+l_AW +Í mÛ_Îk²¬¹ub´×ÎFJþ|‘ '¢>.á±÷Ú¿açv©Éý{x(RbMWšá«Ð$Ç +¸sE:Û{M£;uèþ)¯×©Bî…¤ä‹"ý5Ž“;´¸-NFÆI™Ç¹—ü +ºóD€kŸ9Sà²Ê6¼‚Âߎs>"óUU[RdÅVJ9 Ttuå=ïý…üŠa” Öˆj:@ì(:œDÁø›ó}ž°ÆLj»Ã¾4tL%Z>Œç 9‘%]ÊøŒÀÀcɉWwýÏZGu#w±ƒF+]ý¡ª. Û4K­§ÕíY(2¦¦`ÌËüU"Éüc­"”¥<”UÙãl1ôÈe뉠‡Ñ™#•Ï6­åïQ¥Ä£¡£E¡~äë½;&¤2 HŠºš ôl[îñMz;Ö1818X¯¶èÑȺ—¦òðÅ–1Nkú1•µÅÁØ·”VGtý§Âw‘"©°¿¹r.¾@æ@‚Š¶ˆÀ–ý˜pÉ™“ÒOa|KýEA¨•ôÞ±™Ø„©OÞ6•óCª.mêk/…Ú³¹Ã0Dx¸*/÷¨am€Fû¾à^vû] {ê[Ä j +–ƒÒ†Gï{êÀ—êE!r+˜+ÀáýqB§ØÀ¡÷ý ŸŽì®N«Î¹ØÀêÛ2\"¨#2ÓBPlÖ Åà®Õç +¤­#k<•>wG°s‰PÙkêîÝ™2´¦V_2ØÀˆy÷×ÄùÉÈÿgYùÿʃ]¿Ñšþs¢½ÿËÜÿËüí¿ùoû?þ÷þdå·ÿîø‡ø¿~ûoþû÷¿þ‡üÇ¿û¯ÿùoÿÝÿý·ÿóøOÿùoÿøÿåÿýÛø?ÿöüÿéÿ§ÿúÿÏÉIþ‹ÿíïþËßý‡ü»ÿø·ûñ垯oð;âÿ ÿ?$¦ù–st¢.G ˜Bi£Š4^ég/Æåðo +@ÅN® +ûüM•#Üo–Hÿâ +Yš¯ö¯†ÍÂýD¯]\ÿ(Y€€Jøˆj\Šà;xÚ–~¶€L…nÛluU+ÿoQÊŒPäî ¿F³D,| Êå1€¦1NÞÊÂ"$O°xc”Ta4U-KÌŸ³¸ƒ Røov!f༖ ‚Ë. ƒ’y¦ `ÁÔ ß1@‰¦¨Æ‡Ã ‚#FôLj–E±¶,¼4U+Ç`³e™™ç?ò¯ü“ÜU¶(gê>¶ÿèqRLÄtA†ÇŸ^Ö:½,`ÕDôî1èÅä£G6¨AEg¼€®•jh]!@×JäJ÷Yñü{>õ±XãÒ*Ý9bte…^À¼ÏOË_ èIõjn´7ÇJú0bA  +ÿ¾«cÞõ$»û³kAÈ•è0U„ŽqUp[Í~ºß=@pÄNH–`ƒ™-§Æ…q-ÓIRç×#Ú0ˆ²À, +äëÇð:•Q¨…C¢*XĵKÒs]k¤üógåƒ¡ß êª+¦M½3ŠÅÅ2ѧoéT©^iÃŽŽ_ÐpQ‚G„Õ´y¾34+Ÿ€÷ÏRlB‹…¤Cá£ÀÁ“¢«§<röÓ¾P`~ø,©µ"+h :ÛûïµØì¿(¬UüúL» Ž!¸PýÈÄú!¿­ísü¨žÎ:ÃÇýÜ©JƒÇЃ®Ù¶ƒ8jhV%šî†&“ß?ð”Éå?þêIú°õʦ‹é™ʽôËãCá¾EîN›¯·«Ò*§=z¢¢µýø6çÏ™L šw´¶]j4ò+´@ÁtŸQsq*2)Ç×™¾KôÂÇÑ;LŠÎƒÒRZ½ƒw3ÿ#àYÐp×v÷OÕïœfˆ«Cq§GîÊlyèn¶HƒÆeÓ&äÍ*n¨Áó§ˆaÕƼ«×÷–|"¯œ…h$ÚË©ÕÓ„9iéÌŒ¡,6•†nõïI€ùàyÖˆ=…æ¼÷ßb^¿—¸Acœ5¬C›‚€aòøï?=ÄQtÐJ$—Ø%€B#µË'FÎù+˜o4™„]íèÊ7þÑ—¤ÑÏZ/•£!Ü‹vÔîÎ~¢Ñ  ¢¼ç^çnj›ò2„¡Â‡ôwŠX&ø{À‰Có‡Þšê¼£P í¯wYøˆYúh*¨r^ÝëÈEuµiŒr–Q¹wÿ\,ÑÎÁ—öDÀK#»‡0À‰ˆ¸ØsÜlvÄ^ïs&:3D¡ž^²ÁÕd;cCöaÌ»öè/¶ŽYð3Ç[÷2ðžm}F¸ˆ–x[#µ2çOÇ¡±.,¼ëX1ÔIwÂl-ùŠJ>IW.SíIÿt£@ï=2ù$íÓ(L€Ž•øía š&u‚^Cê‰ó÷S°73¾@³žwaB"2+î ° +‡†›gÕV+HaJÄø¶Â¹_!™ß äºòΡ{Û#tÕb¢/,œKQ%£éGÔ›̵Ûb;zwpyXâM:û»n¶³n^9>¢œÿ˜hœ3=`{q[Ày_ì(Æpg²/˜R%Lío€Çñ^VŸâv÷DßMÀ¤– Ã†¯%æp~–ü´6«MZ¥·»m~R¹3~·Û5{t\iàÎàý½ßª©ãm<¾¼îPO°¢¤¨®œwì@¨«ª#OˆÛ:í÷v¿;#'í -ùp>ú»eI}5´ßÿÙB&p÷Ü\úá=Õ<¶fE±’»Q{W5P¿-AÍĉ^9~¥ÝC‘‰XWöã +6—:"„t¶è3èd”ïqÐïÊй!‡—WPê/É_a¿†`Þ!·"…ï·IÅêy‰ÿùãy§d°5ÕÊÂ¥:ÕR™¢"õ÷' +_aùsDÎŽù4“$@@†§~9L#Ž´³@vñï¦|ƒ!ÝIjø1Vþºs݈R}…4w­~üî×ñ»oãDjïˆ[rÆøÓ¯¯å$Ç¿Ïd”õµhmIe¡"V9©#Ë+0‹ÿÉHí¯@ã½â à¦èAÉéï)PJ`‹m*%øÃq`— ½o¿¯YÂ7jµ]6ü_ŠÉOÖÊš”ë7-ÞQŽÒA`¢AÔd(@‘§G{?¹Eì¡Ú{gˆHëÛg£ãßÇÁCñaúêpiKI”©Ö”럧~Ù]# UñHkq‚Äê’ϵÙðW°2(|²+bžòU«ß5D3ƒÂ@³€áa¯ôE`þ}w;ÉûBj˜®éè j`âeeÎÚ +ƒ¦WhÙ«:bÿÛ˜¼2 dH )5ªŸÏ\a½@@:gúˆª.ßU™Ÿja1 ’ªkAÇB å?¨§î|U~âå3"¿)f­ìÐá·ÏãàlÏbËèÉÔ$]û˜ɹ`oï­øølü!¦.¬\Í2o «:OÃŽ´Ž¶0CÓÈuV×ä6D ê Ÿ·T—s~ïç-GÑž¯µý¹7fIœ…«×•q§,^FÈ_{ÏbÛ°CøvÞWSâTÌãÀFy°z=C "ž;gjröcKEiF);Þ“IµzLÀè +´p–"jÊÿÓ<^š³¢ÖDƒ‡«,’`hùC„lvœà½9ÛgÔÕcÐÆëܸ¥z¥ƒaöb9û»ð­«¶Cô˜Ü?À¡âGDV­Žp :žŽ3/Å?mÖ¹#Éßá…|òz" p(?DAÙcH …Û)¨ôè¯FŸ¹ðüŒ8qܽÈÀÙQÿxŽ/o¡õÓö†w–Ç`?´< ŽX–°°%ññ Ì&ÌCg”ûXkzoFÒROÈ´b( jyçz‰£•ªËoLF•Ì!N³ý‰4\ã¢;€¦êä•ygˆ«ýöå » ÊP¥º¹RÝ÷ Æq' î´C"ÜWTÃ&ÂþæªÕÙ{/é4@£ŸLy«zQp¾®£QŠæóñ¼.t!™aD|›a‚UÁ(ûÍí_‡§UÏŸ;Iã;Ðîê5GDü7éºFè«ßñ|KÁœéC4{< Õ®iQ³ò(Gºëi‘¥ xeäIkï"Eqàþ"Rõÿr.ôV" Á Cî xäµS²KwX#Y ½ ŠÛ~‚ûØU(˜hêêÚ_@wVÒÉó{g¾nýQ/µ70¢ïMÎa»îˆöÅœ¹Ž *4½‘/® +Ahcëg¯E¦¶«O"Ü·/¦ð0gžT%DÜ%™š0‹_ÇW¢r|+k¤I«‚Ç—2Ð|ƒ;I"úTðUûj„ª÷â¢'‡D1šˆRÆKî¦ö@ñªRŠ~£¸|dsÃÌišç`­ÛI~µx§[‰Åû [áîÍ)‘mð¶õž`êbž=™ZI’Ç©{‚ªaQ‹UàG†à,‰½i_ÐÎmd€¼è•"hÚ^†êD…ª®Q™.b.Oµ³B=qœUÝkÛ‘æ%Ë®  '@›vÈ4ía_§9Öµˆxp ñÜ•fÇ9?J=ù2Ðb Òk}=SQ €l?ó>™ÑÓÙðÍ%5£‡ Gº‹‚é1çé©íˆ]××øËÑ{Â=¡å‘ZñM`¦74ÿEÙ ‹/ãj8I¶¸/¸¨Â¿Exž~K7|ÈAGk?Ä>jðÐÉ +°S¨[#e8Òg`’ÑytªýŽZ´¾íE›©©­€çÑQh´Cj«R V-òô§œÃÔ?<0GõXWhéò="“V*ý¢\­ ŸÇA(Æ»?°Å*g_#Êí¦êgÄw´ùûxýe”jKÚȱzbÁ¬[5Æ4W$…R¥³ƒôã} ³%Œ¿ HqýÄG`¿‹Š2~ø—/V;e“›ã–†ÃÚµ¹Dç<ߣ„nùBí•O‰º›ÁVLï9¼þk!¢:!)NÑÚgÄû´M»)ô\fùá8#®pö&ŠjlxN9ö–3%À&e}Žôà?¼GJÕ(V!ù <µt¸D¡tÃúBï·c°ÄåMbŠòàÔ’ §ŠvÛkìj4Óß9ý,Új݉’QÒЫé +"œ»…Æy!H„ )¥i9?)‰S‹ÂSÎTdtà»·óžÅš˜æ!­` .£e/Œ>ŽØ:*›[ÖyØ4æm׌ê[@nÒ‚üq×cBkÎY’ Ç&z¿3Ò@?#®˜³‚Ùºßç{Ð7¢-Aa¬Kw–æ¤"ƒ~%Ú1ûGìö®ß?ϵ"Ì.õqTÿâOæ—×<ß´»yì'½ô#Væˆläëž|BwWàå~BŸ™oûØ<ÛIŸH¦~º7M-«;ÅêA¤¤~F¼¯fÚƒh×ñÃqxÂ÷.d” q~øgêª* ‹·Ïù=ê:6Lè¥Ûwí<~CŽÎÎ ®H¡†x»SÈgõØÿ6×·ˆ\²;Ê*šH¼?£Uµrã ÆúIÇÆIÇø©ºžÏã®þ‚–¯7µ¨R–ž#¦šƒua9ŒW¼ +z(ò©–Œ ià²*Aa®Yc9Çȸ–‘Ãóu&i·vIA 6§¡bk|Žã(ÆÙÏí vä…®¸ÍCªöP”U¤}Ð#ù…hbüÔ¸'»X'Ý~锋 ù覘´,@„ %wÑ£|Ù•ïüŒH¶Q䢒ÎÐüá8˜k&õ ¾Ðú¶ +¯»›‹¸K´ ´_kí+…ýÕ#B90ážI…i­ÐÛ²’qÅã—€@ç—,ë}¼³kÞ+IÅïMÖBæD ̯¸}ÜgÄ#Ëæˆ ‹$À¬ýISí!3 +·¶¯ãºðW´¶²óV!Øå¯y}=ñòë­´††¾RçVøÓ¹¨¯A³eG|iÀ‘ŸÛ ÐGìÎM§c·£0|]r룺e%ô84Y)vHŒïÒhLìävÎôUâs9ph˜)À˜ „’,a#)t¶ÒÄÀáýàë±g&ÁöWŽ®¨v¥@˜¯e9=ÐÕg" €eÐN¡iUðãÓaÝ‹Ú?f’óÒp-ÖË^ð]ÒV¯ÕبÊü±(³ÖüÆt8}VР -€$ñ%wŠðØÊýð§w˜&(„Âeô³«dGÓ69h|]5/Šš>"~Ú?‚T¡ìa®PÖ±˜¢›¿·~Ô;ô‰ïîÂyLL Z$cÿo´L½v×z‡ ¼EzU{¤ß±_ES!5¨DLÁ¨K‚£긡¦'ˆ•sMì¨ÄßSŽÕÓ¢™2þíªeèPÂ"sbEÎ}ž¯þÉRËÚÍšÖ~}FÍAÆ‹ç¶ì¬+åÀÖÅLaHdƒlÖã8õÕ/âÃ(t +r:N-gàwçÏm’¡ÍD§·½Ky‘hs"ú‰xŽw$"(8ß3©œÒ¢gëšÆíÞõS{rï䎨ýØèên[¶÷ˆ(ò{v3¡‰c?"•9§gíiÌß—Qa—½èEZT>%âiQêÇP†oÜa@båŽØuühRg>©3íø+.“FÙ(IÞiŸ.£}@ò(Þx5ÇÁ[W_1P\õ<÷ ¯þg­û¿ît‚ù6ðæ@ïï‹EK/M=S/3 +p™€ªs½¶hƒìë{¿º¬’âè0@Š›#QŠ«î¨yHs,Ø|¾® ãðL¥ð=M<öK{…2¨´E{’¸gÖQ¤G1¶¼ÈÃHÌRAãvXbq0ÊïGâ®^Á©÷½¶‚"êŠ9>ð8¹ÆìŠ ÛrîL‹á^ÿ”øêªÌÌ4X%%MجèÇ k; ƒBõŸw8  žÃöüŒÂÊÒÊ^¨À©ðÐÉ3©FÕÌ”£;çu«$]…‘aý…OX¹Äo#“zžá•¹*®®nRü@ð¯NCÅoVÙùI˜y ¥D?Șˆ³íª’)Ÿ+ÑÑ +]Ñ™ˆ‘©ë ¤ŠjÜcqœÊyD¡îŸQ_ž(´*ˆŠ[¥ßæ˜Ïæ‚”Öî3’e¸Ê_ðòtö¿G©eªm{ö2†;P•ˆ‚t´¯º·áì¸ï¡”ÆÈès?7ìXaŠ£ï¨m’d$s~;ÌçLø­y>D«sÍ|kZ $e•B—17ÂFè‰Ùº[@1øB€’ó+0Ž­Ì'Ïkyǥ橺°F–,Îhûæ>9,6N¤IÔÒ•_ž¶@.¥*ŽX¿7‰=ï0OÜ¿Znþ‘/(ÑâïïSµ*ë±þìƒ@Wßæ. *ÙóáxbÖÓ0,¹ŸŽbh‹4^Ã%CÆý +VÈeäûiÈeÌï²¹²-縿ÿ>‹f¿|÷ËTz?ƒ´.÷9¬_Ä&DxtmÊüí—VX-vÀŒ¤S¾÷œó"‹È=›Ê®=亨ã~Ç[TWn6õÚ ‚Q×oý€>A‹Qý+ð…C5ÿ&%^ð¤÷Q&Œc³íQš>í; ž¹›YA møõëªßU€x“CŽ÷¦š…øP·€‚P õD€†kJ?𹂾5å”k^4Öü:YÌbü”/㶓]oÄ{ŠdqGÅøΉbªõ[¡ak1^¢(Q6ìèKyËl²+PïåŠÅ#X:]†}Vúä1y!úBíÔýö{DnÍ÷´íã8krØ ¿ +£´ýU–YŸ>=@ùz}¿Qš°î¢aŒóm×ù¶üÃq‰¡ò ¸pméÁ>í3âOŸaˆÍ?‰† Õ ºâŒ0D^N7]F!ðÍŇ*p%ÛóãpqA-Q^ ëé‚+Ât÷§ÅsÛÏ=þGŸQøÿŒƒ™BŸ«Ä„P”×@¿µL¥d¾]Oh ˆ Woòi=Hò¥æ>òW”ÆPz‡Ъûd Ժ⊡ å4}G¨iAD”c›J¾_grŸÄ[R±6ÈY$‘Õõõñ8h1œÁI…—üÊÉ3=ªžáéXŸD\ë~áM¡Ø>(aÜÑó¶¡Hm5s¥‡¿33¤£-¤Žg6Z•Ïõ=³ìkSÏ/úŒÂ YÉA—“ÛÅVŸZ‚(ïLÀ^ùŠ~­âlÊ›}øÓI–”#oV!õ‡ãìÂò'H­”‡T;`—ÔïH‚÷/·ÏJ€·ˆ@ÆQ´+3‚bŒÏ ÈƃøæEöq¾ÜÀøñ0 øZIà«€·ãk‰Y:¬|#ªçÔYDNœsÜ]† _í\ëžkýz‹u™(9üD¡$LTt¦ˆ 9K„œN ¤Ñ}Þ9“9Í]ï6”U÷Õ÷Ö¸Û­³ÛñVôÓ.,MCƒH¹GaNÙ’ Ï›ýT#–Ï%ΤéÅè–côƒŽæÚäLš3 ·§ˆÎ’É3µÅá=hzùM;/6)¿Ôû\¨9GÀê#Ha^@‚ò—\˜yJ€ËÆ鈾#-¶cÀ~8ï^ÛgDj#Êâp«û÷ý8#|cd ô£pe%eIòje\që–N‚L}ëdì¥ÀäíâúF[Ö! Ø’è¬ó!“[o´ÚH_ŽÐ®é€öÞ/^ù!âû¦œFõ÷(”%å2ÐÊÍ¢ÐÍþÌp¬àöåéOº&©´º(‘Ç?ª¨òéZîýŽ˜uC#‡¢ßB¡!Ó.X.ÈMعBp3N {A˜ +*cat× 1y,TȺA7Ù5Æ"žèJ~Ã_Šq©«²·,9¨ÿþÌ°ãçB’|eÓÅè«ZôªÁz WÝðˤùg0WD–¯ÏÏ”f¥‹qQ=þ…Ø€ÃÚ'¸9°Ø±#ô‚ýßGèá ^=ˆ Á9uÂ5˜dº€-Z|3ù‚Î"B¯zaïöërQúÑXf× Í·¢n9y$ÏÕ‡âÄu0“FÑZ׳]Œø5?‚Œù!Ã$‹TnEª*æ;‚ê‡ç| Eþ_©eìõëÈhÕ<êà*úõ¡Y,*òðUfìƒáýïÈÓäè0 xŸá()ž C&;oCsž5É[o/Æ¡)q¡Ž’:˜èSõ¤øW9ûhsoèǵà Ö(_,J¦tå+ö*Ȫ‡ƒnZdeâÅé®àv¹;O¡#œ¯éÔ•3X\Àn+îŸö”¸5ÙKL M)(ÿ]¸˜²·KPe€T×B!0üc9¬¶®¿F»²".¥š«ôÊ?W‹¾*ø匽ø@¦ãUUð‡ý(áú52ö0ý5w¥”¯e—ißÁ]¶õ±Ôžt_BPm9nj;jï¼9•0[/F:€î)M4J. ༩a²Ä\àÓV mÚÒLÞðJé:VX·ûMZoÎh\²ôN3JöÓ‘ÂìBê +þÀ™Õþ’—´©Á/èík]¼xCU²ï™UKy‚CC{’|¾Óòbæ{ØÃÚ7-æ5cé°ý ÑüÀ ¬[YÕ…Uã=yðvŠ¡×Ãk;„AŽÌÃƱÿÂg¸ ^P¨îÄ,FS&¶J`„HŽ¡ÕebÆNBžnD+.1—&—œù=Ç?ï« D\nƒ‘[Œ’0hZßr&Ê&"zðmw0ò—ìžAÅÌ1ÄôÝa‡Ä ìþ:ÑUÃï&ËøUê2Û!ºè°óà´ü Ô;ÁýqÃÍ.sŒÀèB˜dîöb²Ñì¿/7¨A†vŠLý}§™MHã9åeÞ™Qðˆ¾Ð º¼eRÓ¬kpyÝe©.¯{C9;u;æ={åAÕ˜'ÑîìuB¶ãLÜ4ÎD¾’ 5Ü]p…*>u¬-’ê#`kð€­Wÿ2·{½}¦ûu‚…®+»„AMC¹rà¬æs…ó€þ®Êïc)j/üwËYnçÔølš8¼Üº0§aÇÅ7ÖÃ…)QÙ¢L#o&oÿ?y˜öó%ð}_£^ŸCaôUÅyÝss°ŒFøŵÓå§Ý çfÎäoÝïþxY暉ì5T®²ß‡u˜™ãW‚àÊǶý…ÔWžn-,~†zûä Î z†™„Þ\rh…¾: y)°ƒf¥›ÿ_GãMáK±ó½ïgùKâøп>ˆ¸øððoUˆ+¯—p_!_+¶†0·뽊Õ8E ítÝPÛ¡%óê“•/ãóžž¼GëzŸ.ÃÔ“¹•š;YúÞ1Ã*ùw*’9K{ó¾åÐïÜûîÿ_y§Ãj’*”wßè{⤆ ‡ùÙ¢ÁÒ=TñH„i(Ò“Âô{ äë§áu rCë=S¶?`"Ï´Ñvò:g +àqÌ|xpÐ_»ÜÑœé~itvQ0b<óÁ×l³Ÿ;˜êP@Îõp”"Bˆ¨ÖHvê Œì&Ãã0ùÉñû¥Š ¯–¾“ñkž¥£·ÌÈ÷µuªîã…J?Ý}® /Kôêü*JæÑäˆùø:Â{S¼©Ü¾s®’›¯Ãÿ4¨ÿÌÆËOR}CS*R@•úyVWy”²XˆÀp ;§;"”˜G¡œ JL¾†Þº«‚ìÃ|ü¢š¸ÈβeÀ·36å+žWÜS¹Ìe¯.×Ñb@WExÈÑX†k‰ÆrS¹ ¥aQ¸=,_µ„ú…jûí÷ß?þßIqDÏ0…z±‡¿ 6­£¿?QS*)puÉû<šñªÎÀRû°BøÌq@&&ap…äæ °›Fd¡þéœ)­#EÐU`žK¹AŽCÅЭ€‚…\ZsÄÊyu·½}!ù&Þ m´%&0Jc‰{›Ð§º°åv›I2+¯Ž­`œ¿uÔDEôT~áìÏÃÙ•¼Æl { Ö1è!§©l_coÚû1¼“=yÓÎóA1_½’¯Þ׫cäûˆ*ÖŽš~ ¢héÁÿ4è¶ÂK<)ŒPçåB´ÈFÃÙ2ˆ0‡(Ç%sŽ§þ:%[·™¯£Â'~1}äDõzÍ¥JÌ¥jÉ/1™èÈRf 6¢£±ïÄ]~1¨a™BtfÚ®ãÿaÓ¾¥iO +ŽÉ%·±8>­´ÿbÕ_Ëdàélö½Ü _A»î{a»æÁèÙfÖ­³çe§, áuoLȸ…ý½…ŠlŸyQËåÙ©íN†Êãa¼Xó¯Dïwã(–Qö]&“ ‰^hö€PsXÕsXÏ{&ropÏŒE130š#%»‡¸¼ê³®ã©IAB. 1;3NÝÊ:†*ÝxOti‹<ÁH³EBK¬DíÞvhÓ$üD8‚Ç¥Çé$?)}9ݨÕÕçþ5þ|…ÜÙä¥Hå¥iþ¹è:ŽýT×ö4vfÇ#Çç5M  yúE¾È0Ê¢°*»}I!ÌšF!,„ˆË ¼Óùú¢%ÖCrÖ~~IÎö®QûÇ+Ê2@u/ô…4qÜ…àÚ8$¡zÌùFÌ';c¿ƒC?l¼€™¡’6#p ì=9j¨ÜŒê:ödÚ±/R>¨ÏASÑÞdÄÃM±J|Ó7Ž+éoÿÞ¸Ö1bY0my@Õ{Á\™+ŠX>81šcúº“Õá…ÁŸô1À÷´—{>bÜ0ƒâ¢è¤ òªÓkG3i½ÒD¬¬x:•C·eØÜÓ CjòVpý‘tÙ£cv¤ŽXegâ‘wì¸åk’æ9h‘\rÿÝ_sH…A»@c=d¿hö8[Oý{ã7 Ôšä‡ÚÆŽ7u°ÐZž€´£½Újv‰SIé +UÐ;B­iƒ¼<ûÁĈÌQãVÊÅ*Vož:r¿íS^"-¢*4O†€zU +Ÿ£<¦’ 2 +Ìw¡‰¯[ã¬Q+Vu7_µ+!¯»ü­+Si空ð +|Æxêh‰þ¿Ž´U‰Šg=Ú¶ky(/ýÂ0`ø8ÕQXšµôz<.&ÕÍøE­¾¸drä`“âû;¯ØÛçPtÄîP‚èŘ$?ø—3š¿fMƒX)n—\S"tK8Ž&Bƒa È3ã}c;òã Ÿˆ³Xx=•Ñ¦‘ÌD?±è†ˆì“®Y?b +KáÐD¹nDu¾Î¤’¨æ”-¢†‰ä'f) +‰”C§¦7£"ñqÕËim RV_™‡Ó˱Iºa„¯ëèH¥we‘ìH% n?–åëD/¿þ‚œ1©d¬7í²ê¼Ù…ŸÖ9µ H¤Ñ.Ó ­çâ}Ùõ +, +ÌRm÷’'Úf(fHè']…Tî¯ãg¯¤q§¸-j%#ز·CïÁEns£ªVšà™hêƒgJëãy9H÷ób‹áŽHˆX +~q=K—)æ#Ç^q&´=N„©::%M©Ãå@3ï=Q|¿:ÚfÙ~4Ÿ\çDùkÖ8;A"úû:/2>9eï'¬ЄúâÍÜ™G4Ú̧£ôÄ ;Ðç¯[ŠÛ>í1}tMêÏca[!0Y8‘ÐA×Í-yuö}™w$‘<°ÒÉÓÖ_Õ…ìŽ#J{Vj˜èÜÐ%«€¤ÔÑ»;ã[²ŠÆ®¶7óÒœ(÷,Ç*+Ͼ YŽk( ^aí`¡Æñ2Óëî‰:Ëå/ÀÊ:úçÖFÚƒû9v‰Ï¡èåiGEî`¾ìî¤ïK®˜2ûŠÍÿc!ÿÖÛûß))÷k_"ãõ™'`ì:óèwÂ4íÚFŒˆö kë ^I¿~$ ö:1꯺×åc_2›ÊížZ£qÜâ*=’˜ÿ™Ë7u n«õð-öZŠÝµ_Öd®¢ø6hœ‹µh«l¥^î3²yÆéósÖR¢hEíÐ~u*]¯šw9Ša&½Ý—;¢Trª­ÌÝOÁð:)7±Ÿ Ðõ\”³”Ð%÷8–"~HQÛ…Î%ªº¸¢ÇгeÛYÏ#"W1Ð,¹ˆtͲšˆÈLìågŒûëL¨Ôïì6òÍ]§}686]öv~Z=?­†Àzk½Ú±*ˆ‡Œ2¾ä³_åúN¾ó(šÝ ò¢i + ŒÝ¯úÙ1 j?²]cÒà(wH}Ÿùêc÷t˜©^\5ö­‰åÎP,ža—Ú— Û§cÌ¥vMµÂN'Ê‘ÀŠ¦Øÿýĵ/-ÉëLT•fµ@L»Âý&\7IèÈ‘;l•'Çÿ·?ž„\µ®dÖLrij=0Ïy/Õ8›)ÛúQÔß ã»tû\á»DznGÄ: Z…7ÇɹnÑKž2ÐÐü:‘Ãh2Ùbb?Î,éð( +^w,¡žœ'êNC]íA^ºë zúç¨ã‡E\ÿu"m»îÃV†¾ ÷Ò©ï÷õÎAH!VÐCcz`z¸%Šê€vPT§È&…I›÷ÞkòÙEäÐ+û­ÙN3…ŒöC f½)FÄžŽ›Òæã×C»„A`þ¤wUaÎ ö2#(Ùà଎O"µQ~ F„ðý;sR­2®;eš +(U6¤ ›*ßDPµ êM7»ûS_Åa ”ÏaTª‰áNÆ„I©ëI©Û}x¥wx¥íewî…ôbfžP”!é̓ü<ˆMF3ÁØY)Á:æ»_ÌÍmÙ?Ø_þjíér\Ó}ð>Øùê6UÂÞbàÄ‹o @'CzÕ¢©ÞŒFvû×ñ–’¤êÞ]÷1ïôæÔßÁDy¦yfM °?ìšçmÿÎ{^éF:/£ý TIHà Y¥Wq¹ ØÌ—Oœñ |+g Qæ;†Ì>ÝNVèìÀŽ–¤Oð 3¤OHÌuÿ`¿V;-!€eÇ#ªì=Œa«#¿U|Õ#rÓŠ ƒvÄüÂ?F±ñí¨¥)ê:òÒF¬7‚f3jv÷}wšïr‡YÍ„._N6ÏÃ4§ +6U×ñv¨Ñ¿µêx®:(*1ù¢a«jMP›“RàíBüæ>DI¿(…£Â»àE¤´{ïŸÂ²3™ ñ#»ÀŠL+€}‘H€ýà}ñ¼P;bWzµä¯áRà$%ª@î]¢®ø'¬:Ð')V¾5i“nÁï œt·™¯Z¸ÉÌØËè݃EVâ­ÑG:é:ØŸ±ù õ¦Æ¾­ÂI‚®õáNá-aƒnŒìH}­2JȱYš¢žü» WtOÑ|¥ÄÓ|ciä|5íbhzmŠ¢ÇÔ}Nv¹1";.g®`… 6ø*3W ^y„¾ ˜÷g\iî ù÷¦‰õâPº™6ÜöŠJ§fþ¥ß˳7§—½ÓÈåyé6kB:Ó¾ë·ÂXø7 ‡¶Ç2m±!ýõlê}OsŸC½cñÀ‡nh|Xi½—Ô4vF÷f¶Äÿ™¡$ÿ¼¨»ŽéÐ0ä‹=ep T°+y [Èì^ßÒ1¹ +Yû±Znß¹_`ÿ¤!S,ÆB™·°‹DÞËûWÆI”ò2´Õ¯\Çwrÿö}ó¦Ç‰ÖÞPÎ.FmŠŸ Õv€Rè;€©BhðÅôcö™ýfñ"¼*l€†Ž†‹È½CÂ3³×µ#x2TÑ ''z7h‡°Ûð¶+¬gEkÌÀÙÿ-^” ‘ûÒ² 4-W¸RÇùÙçe‰32ec’wÅ~ Y”^.…*÷"ÀXñôoü“W)¤É0 0f‰êQ¼¢E—þ¢é>Ý/×ô(ÞÝ×ÛÑ×iÒ3…þ9´:t;nˆZí )$E$½Qö®u˜ÞÓ¾Ì~ç®÷R¡ŒÍh†õ½s(ŠÑ"Á3½dépP\x¤zæxʲs_1cjñ£(ß΂¾b8»^=Nª"Á[wD ¾˜Pït8ŽL$¬À¢8ø­*õgb…oe,ÑŸ87çy½è3å-ܹIsâ “ÕNve£{xU±Dôy6t #¯~w >Œ02Ù‘ùôÎ6Î"0t c¨µBЗט°ÿ|tÜŸ»<_§ÉFB¹r·Ãñž‡ãÝ‚‘Wÿi=:É¿"@B€d@žs"$X‰ ü>'êÑÙ©<Ê+óHå¶þ;μNM]5Ÿ||“ZIôr3É7¡³:Ã\.á6»4žEÝÚ"/’ìHv]çÊ õFÈzBÝÏq†›ELÌà†àø*Õl†»‡Þ^ç ›Ap]d¦T¼Óªó°­~¨0eü»Qu2ºä²à"ƒiV]ÎßýϤ—µøtÒظwðìÚÂN@2›,K +VžŠt`7'áæUN&T9™ ½ÞL*F¨ÛhiZhC7ÀVóy'Ø_³$îPþŽü…%*‰Ñši¶*aÓ/å +í鬸ӌå‹B~¹?ß{¼t¤†£]¸¢Vâ ‘|f¸ÈÚr“ +¦x´ÈV‹'8Ûü¯­¶ÄYpµS†˜†ÜmÏpT2bTWËq]®ø tŸìõïáB³Ø??-iz»z"³ê¦èqåÄK}‰ Ñ“’€óÌ-öHžãwÍ{).³þy†Y¢78þ¸tuE"tJJß•œUu¼Ù-d +Þç4,ã-3wútý8ÒÕO² ¿—ž,m"z²¬³ªwcDz1ëó™ñÚhH²ðÒ#®'ÍEëⶋŸvÞ +rW2Èn3•&M©¿+ò¢H¤Ž8›‡RD·D¨+›0ÍÅYúä=лõ¥86ý•)sLtgL$€g>éƒ_ fŽc)É´Ô2 jppÛ”l~~9Äm kˆªž—P53zBP~‚à”²—Š©{%Û½„ÿ«˜? „-ÖÙÝ\ +M +]î ìþÅÖáƒõrž~¥ïÝȃKdÓ£:É+•€ÆPi‹½réWÓº7:‡¬¯ÿŒ* ø1½U6¶¥)OÚÒÎ,øvÐÚûq¿Å,]2kå0­9ÓºÁ‹ÍïR§ @ûK¹ƒ7ØkÚR¥†‹ ªI[Qôd Û»}UWÀ¼¤h|‘ŠŠ/®ž,·­_¯œëá”ë”dó¨ 6€2_?àíÍB_õnmò ¤ÃÎR¿i½|IÔç>S,9Ÿtw)·h&¶q|¯.h3¤ªqý€ÈcR¤A'˜õ?žç-4£ß?Ì0Èîø)ó`KÇ‘RxAMœTÄÂ7—2ù´ø`äó<¿,é›úƒ +]­—@jš¦ ¥^a…/¡ça'y0PºÌVé¸XFãm?ß×{S{Þ¿YmðKÖÂã½u'¿0Øê±àŠ?å´¥,`?ofäà™AX‹›X&3¹±‚2FxKžÿ}j‹"6LŠÈß›³„&Ï\OÊ P_®6Ík·—'‰ïñmž*iÌδ¥,B:¢io ‹ë²éq›¸çh”•ˆvwºö +ù“ 16ep&¨ˆê‡…ƒøV?ß“w „ -`#îä³6i +b7_Òº#uxÁ:Q¸ý"Kˆè‘í¾ *F\„ï–EE]j òM™\¹— Äú:®Ö¸P„‰!à1¬'²€Ô ²P¬òM´µ¶xH×±sXÚh„ÚΊU% +V$ ö?*÷[˜òò]Kh¿'› Ê|³¡#(?<› ®¹D¡ig3QûîýÍ¿ ·Í†#¹Û.LÓXú"ôŠ|¸Dþã®»#(¿bæÎÛECÁH“ýoà½ïè²ØW!|;hküìö”L´LÉÑrÏoý:8j¥&†uçüoÃ(’Bd éúÑɾÇyôñw¼Àá…\ájÏ›úÈ—.ö¾òâE9²¨Ûx#Mw¾r<÷ÿ¨xŒkUr/Ú-èÏT¹d‰œ '}HeôºJJ¶‹2ÊÏÒKPÒÓåbv 33„•PðVY¬¨ Å‚af+±‡Ð +Ø÷Ö§Ø&À~3}Ï À‰pE*HÏwÖu]ÑhGüO·¢Šæ5,‚ HPßÿþÔ°R +’÷¾žÃ‰Ð/þt"HÖdŠ214üè™í[>u÷/’Œ‹w*˜÷‘Šti:•*~:†Iý–Á=‡ÚEVI+F~×~PÜôX!¦âÏ-„걿ßõ*|°ñÝzrã44âˆJ—‰r[q²~v{›…Ì_b)Úp‡Œ•,Gðn¸·ðkŽMö£åº×dÛEûóÒìs/$F&¨gŠ ù[ŽS2 ƒ¨å×ï"ðþšx¿ûÏzÝÿ+ô;&òù¯øßOvîÒöö‹#o6R[{±ß¥ëq3„·çºDÏPàó·(Yy.ÊwÜÊH$Ö¡E.ßpõƒÔ@àißÚM»«ø=FbH⤜O„Þ³2˜©ð5Ûö(Éq]I ¾Ä0vT³£Ü™ÐÜFÕH»“™.ÓDR3ì"ªRfÄ~Gz’÷quàWŽ‘qaê_grÀ€Ç@_GVX“ L`g0ùâ°@×5„HfÁà<†ÒÂÛ“$B››ÔvÇ£± @£ºqñV¡m„OtkXMñ·9Â3¸ÀÝt«`¶07ó~Õ´ŸÔŒ¢8üý .ô¸b¤>}|§aß-¦Ð‚èéK¹ s {¸Ï9_P„W‘½Ì…Žjƒ6AU¸GªÓÀ?áb ܶõ˜Ú-#’éÒ«ÆCoÇ:¼+J£çÄ7P9öÔÐ +$k~ø8Tߢ*øWíoÎŽ¤½ªy£„Êa×>x (š¦´íòÀÏù +h|Ö­Fsç™Þ /Zsǧ.ÐJé \çõÞ3F!@yû)u•“B»“öpÅʧú÷ æÀ¹û°¨¹ž7IÓ£âyg¥vývù[\€¼ü8%"¹,Ê|q¶ÀDˆsá@È¥“ª·êË®7ÂB·®_­'Nþ’œé+Ãxäe^Zõ°¨ëK" 2F£€²7‘Yô="ÊQAÁ;èvÐ:Õ²<)ì3 +àJô÷0¦PU€r[‚C‚Zt—úȬèÍ.—Ÿ¾kBHø؉ªvÞa² )†U^™“Šòèµ? 6û³yg²`þuÜyñ ÖÜé+”ð· ¤ÕËlj–vГ.Ê^#v*ó^ CØ.g…âÙ¹Á«E[ƒ}ó5ûŠ 8©DVÍ[ó0Ã+YÌ”\¡EûË£ÈsrÈMŠâz¸˜¿£ ­ÆeOæ³ú&BÛ¡÷³îàš%eÛ¨+>®²Bji£,Ì• î(Ià>:=¡Qųê7Ý!Å&O —ÒÚÉC{ç êåq”@êB¦†ôkXƒ“›Üg´¦Nöe`azÔÒÏ^îŠÅ¸ë‰†ãË1r9.r"wº)vâQ)Þ²¯”›ᇚI´¢^ +·Þd*(Ô½Ð0l +…×-P÷œgiwV3³­j¬DÐf1y ÐêSLÕºƒÔƒ$~Ü­Òé,|W¨êŒ)ê/ŒO1¯Þb ”¶X¦é‰Eµ‘h¬Kñ +µù€[Ñ­­ùÑK`ÇÜ­€*v€¿{¤à¸kØÍÏΑ:˜æ“ª15ûBÖ{iQÕÔÕ3]ÈX{‹ˆJSÍ®h¹D½ )Å9gÁù ¨P¥gHÉ2d3ÎÀ¦Í·ZcRò¢vY£–pÑo¨¡F–[›òU¸•9O\©MO„Küeû2®Â<¼ôTy‰à#¢¼Šº5+†h +·GGµ™æ«`ÄÖI¤ö<]ú´al†S§’ÝbÓ.Šiœûåv5bV¢{“fD¬PÅ!_SÛQm«‡h Ñwg¿I…Ê­V=§’Øš `U¯5Õ«ݽ’µ9ÀYÔæìE!œŽ°Í¥&|ðw%\Ö«ÇÆ[Fêò4vÞ¢’®GÑM(N~jȉgjê_ª§¨±‹wô]@­Ô÷ˆßg_Dš3kvå™ÞÏ“HÌ VúŽ{!]Œ”6ÎÙñ(Ͼ^v…òoQ¹m5ì 3l½húÂÌ@4ñš‰y™©*|öfúeÁŠ˜ö]Ø6>Z!o/~ÞµgÓYˆžÚùÕù1´?U8ٷΈxª 0Í Eu÷xíGÁ>ô´¥äðQëÊ+Ý¡‡FœÊŸ‰…£ª2>èãE]ts<—­“Ýa40,øÓ,z]Ù@<.k®¡|­O?â·ˆ$žVסg6øNP£nÏ~X&×ù,áµ¼´g(Öòþ÷Èéx]x>³~ø4ÐKW‚g·}C{`o€ÝRN˜ûÒú{bOÀ&½H•£ñ§¬ÑA%G+$^%ñ”G ¡>‚„kŽ— p òÒ¶ Ø`ÄoòÞ`.˜¢@f(Øý6a‰šËOHZK¤/7»ˆ¼Û3Tõ ›Ë„ÿÆê³Ø°°N›)}óÛwÖáRC3jD\oåxåÀlEáž•(§nlaGçT5L¾-ÙQмN^"Z%0Amé¯ù¨Ìr°¼Uº5§Ië¡Xl ýà +n%~ÍK‘bØz_qzY£ ÆxN?vè²5Û;¬f†¥•m³³—tyñE7ˆ³·Ž»`2Âý¹k´CJ¬ ‘C¬†=C •ÏšïA µμƒâ #úKnØá(æs²‘j›°]Ì+Óâ@Òð)én‹Ã2uT ºÎ;ýk[ø×: "Äb÷NÌ +Ã_u\{ƒ‚Eß'†ßÕ2õÂx›Ç²•ÑæJ!;­…­JŸˆ¢0;Ra®$š§¦= Êë áÖõ.ÉÕû +zÍ9 Ìzœ·§3åÏt—ØÑÑ +©{ +î3’å˽Øn{vʶw$jðZ-¨Â@xZLçŠ.¾¶¼œF‚¨#ߌÝ~$ð^¤ò‡#þ¾ÝW'˜Rç‰<¦i#axòýïØPhWQÑQÆW¾·W°¡+™Š¦žÎƒD“íŽCüuÛmÓ¶éÞͨplAîS¹¡œäq¶++"Ø’!P‘Ž«cyým½R Ð'Ò®?úú: N~ ;šÚªu¬zA¡ÞǨšJ1ôÀó˜/$úûWqdçôËž¨µ3J6øü0@€‘¸QöŒäÞCÄó{D `®X™Gåë= +œTK¾D M)=ËFiá®±3E9CYûöqr2å&ð—n÷{„‚2óh¤rÕoçé-ý ÉÓv€{œæùÎIþ×}&Z8q¥oQÕ!_é¼*ºŒ4KWÎêf–têQ— ?Ò›†à…–pß"ž74üÜ7»ïçYwÙV©;±b(Y °ŠpU­f×ò£°z{á{g”[g#±Ÿ²ùȲylmTîò½é„c|ŠþO³£ö!"ž],ºZº½ç‘ð„O[ûÈŒKû‰³tµPñ8Êy©†fU%L> +rÞ㇋{¦–f”¤š$n•£–*(ý³Á‚§®¨Ë ŠÁgŒ0þ¸^ Í&u!à”LVÈg”fà–õGKò—D¢·ˆÿ“•$gï··e”î@л÷AÔKdô®o ¤4ÆÙ I-îM7Õ{%£ZFå× >ó‰jú^OÕ ×;#VFhr%í iì“ärýéS}#k ÖÓˆO U'¨Îr6´3öœþÒnIjüÞ6ö¢h‰Ð\ËñÿIgAr&Ý5ïÇz±ø &#ØCE…óFʳÁ؈ý ²pHÄâÉQ,®÷sþG÷›.å³)Òòo@©Š·ÇœyüKÎYV­ÏØ©jçÏìïAžž=uß,¡¢ø—VÁM#]ì'`c¬°ÄY¸Õœ¨¡q(„TŒˆN›&W¶ 3^ºÏ+KëP×~8L:Ñ&Á¤S~ê °§Ppjž)þi}ÜrÒý)âܽctW׫Us…›ƒQ +ÒeÙÔ’¸P^o´=B§+p¬Û5ý¦ª¸ã.¡¤ ißQ¥€xæÓÐÊ]a¨6*%‰™–þ;ÔL…J“^©}Ds»$Ó„E‰¬Œ2;ó›žû¾ÏŽV¢“Xf¨s…61YƒHñVÂÈùDª0¢,¬ +ä™Þìdm‹3ˆŒ´Ž——¹Ò€{@ꆚ9ßã‚ê÷Ž³§Â7ZÑÕ]™ªß*6@××#†_ƒ”'òÕBxÎ BXUÚ¶'Þ¼uKVÀo 3žf(d1΀‘}êü÷bb(õU †™e®ÄÑ](…a—A/£$àG +°°‡Y€±Sܖî©w7·ŒäD(Bô\ÈJŠ=ªWZ’Vow¼q%ŠÜ\‰M¬zlHZ¡Ç6ò^¬páE3k\)p¶ÊW•×¯#Gæ<â©Ì3Sà™z»ŽšŒ?žm9ó€Ì‡‘Þm”ô "8 ÈÍW·nê¸1®^íÛ·óÀmµ^Ho"nU× :z-ØêëÎ%y›2×ãù»gý¨ÌI¡:_ŸA—H‚N;9ßÀžÐvSëþ{†*Å:ñá)|3êQxO“~³ŽB-îÓJ3–Ô7Âà×2-ô Ìºäí»¼Æ§ î^Å›·ëÀês¦NŽŒV~q`GUª±_œ¿B+ø4 +—Ù…$ÃJ'»`Jîšl%Ò”' R(Êš×/süIq²T]’Ëõt›‚ &É{GñI÷*{3?ú¢¯Gêâß|çtëÊ"Ž.G4»ÍÂf"7)­ÚŠ'¢êñ¸B#šER;À¹k¼n×U¦2'úŸIiVLf'¹J¡EÕ50Džºâ ++ßÄÓýÎõ~û84 ÏÏãš-ƒøcšBÌ}]ýC„¿ãˆßq”G)æ{”¨{&Œ…é7šrzd¶'Jñ<lùŒg²{05˜My9óâÍû=ʯD& ªªßñZ©D;ó©{„05SŠÂÔ«?êO#AYg-‘µ’ÎÒ®úŠ ªXÒÏ +´Ú÷Â÷[ÄØa1DÙúA.GÛN¢Vhj‚F±Ò-£Ù% x–õbÙtëÁ+ØmÝW°8®GRí|£‡ÄWÂßõu=õU†Oºe5óÌÓÅÓ ”uŒBô¢èi )0®üh·”røóï¬ß4ÒCÈ£ÅÇCúè  ñ yá3Uì¼2HHXs±3¼RÛ¸ ÄÖ_/†íEÔ‡«+êP”Aã¼RÉîV4Zþ}ÑBüquÍãþvPv¥»¡yÄJl‹•` ÊE+ätƒiÖÓBd`AJéﱊÌÔn +Á‚çAÛ‡º!Ú>TK˳/ùv€¢$ÉîgÜ«"˜BM,ùB÷§=€Ýð ªZëlƳ¥¾£¥‡>}F‰I>{wÝK&c'ž—³¾D!fl¼<[€òæ +;Ñ(]AU +‚µ?ŒÔ‚å²CC +åôQâã‹D¸ÌJ¦“5üö»Ö‚ĶK™ý3xÊðÄ¥[Ÿ¶‚=˜|_%·QÝXï\$õ…ÕÁÁ}¦5ño ­ÔU|è…#ýuÐHcðÚºÖ%Xü²Õ¿o¸0è¸èÎŒ8{ì÷ˆx\#ñ²‹:øütž–äCŠ:Ú;´H‘k(=ɦ ÙñðȾï£vÑ£N}ñÅ "ŠÒ&Qô×ÿ&ïçŽÙß<¶ÓêÛQÉg`­góN“×Ñèt/ËxÀŒcÉ~¿) ü¢fô«¨ž'ëž+ìbOŠó³«ZÑ4‹\V¸ç”ùcWTtø—!”Kz*/,Uø‚Õ ˆâA×`ÖŒPÆ +|ö|_[#3ýu¦*-:[ •!KØèÕôµ#@"ÔUû¬–‡#½ä÷5 F8¬G54%°Î×)šîÔØ2zi +ªáѨŸmS6'<}E©q„N?ºšÄ0«ªÓ¯ú­Œ‹ÀÃܯADZáÇg÷|§=…8áLÓˆ]ÓÝê}ÆÍ9ù&¿s4”«fb‚¾±0 D¹´ó΂TÒ]ÚÑÙ,—§v®,ÈêBå½¼G<ˆ¦r ÊÂûÃy(uË—&!Vœš[ûqùA{Ø·°¡8ïs5Þåyif×ÄcA¢¨ÚâY³÷ƒNÃ1ôˆÃ¦]BK•¾Ÿ<§Öª™+K~Þ-±½/1t?êã&¶T¯þúmØÝ_ä'÷þOòïÿ•'»p¬¿¤Ôû?þîüùõWÿæë¿ý×?}±òõoÿýþð?¿þêßýõùÛ?þñïÿåŸ~÷×ÿëwÿéoÿáŸ~÷óþùÿþîÿãwÿáïþáÿñ_þð¿ÿùW½_gþ úÿæ¿ +ÉkôG4öøºližlà†£FQóâ÷g²í ÎJó¥lS¾U±œ_Ðfù U…–»$ì‘_öSÃʳ;¤ÄO¢ tM Ï(±±Ø?qÂŒƒ4'ުŦ~ l;o+Ö˨ž Ÿ€8É%›Ý»„ U¨šÚÂûBÎo*À”³0ðöß7"Óâf¯¬œ&Ä|‹¢¦€?^ øµ +nŸ©‘ýŽêì×$Nù‰ž-“H±¸€…Áó'õ­keÀ•Õ•ò¼?xä7o6³+ÎjÄ Fq¼ TáœG#Ja±®¢ÞBZž|—˜‚"µlÐ gàMÜÙ£kÑ£](䲟LŠb[èLŠéý§-:©ÄTXI¼S¡x‹ö“JnKj'‹+_*þÕš›m‡çV8‰ +E Hø¥öÊIYžÝÍb-M¼x`Vñ©)ê‚v6]-Y{úáBYâU­‡øƒÝŠÓ…õâZvþL€š  à$:˜S®qsý!ȳ‰ •" eKøÂXu*»ÔuÿÃÒoü3¦Þ¢ù'ÿUZZ‰ +¾÷Ù'Ü?Ô¢û€ÔŸ1ýã` +0ÛÃË”â'‘l˜ ¨¯pŽ1Þðé|ª|8ˆÝ§ßø÷Àõ¥ VÙ­›ê”­ÞÙó© ԔʶDp;ÀýTK5Tß,]g¸Ž ¤Tr¾´ÎƒÏ÷ÍýÔRª5Qü·;?•Ðž”ƒ¿Ób>ç›ttd4Ò‚‰bÅ»ñec—u6H ð§¸+µðž¿Èÿ ëÖSƒÊcôfP‹* ô B«6<†Uw(zD|8Qí~û»ï0èÅk¼»Ä0[§®ËS½>‰+`†å«\ÏLôˆÒË/f[òSj¬¶ç@WˆW–mjß9'‰Ù§|^t¶;Ò8T&N·¾4¾õZs}Ћ²ágb♩©: +)î¾kWI­ê?4Š MkÉúà‰‘HÂ8€m±TÀ;œ5À3ÐRRQ¸ópàáÚFÙúSЈ˜ß‘…ªô¤%Qó~ÿ;g%W?œší„SÜY‚®KPBeŒµÓû’ °0®óCò©óÓäR7ï´Al®hŸÈ' +÷.?…Öy“žDÕáäõ˜«¸œL¨»FÛ)ôëÚãu ³y9ì,¯ó3ª¬Ž³<ŠNàV4ÏXÊB’8Kß“døYPâCø‰M1i!šXª‰FÜJjЉU?1U cíÔm)05÷…ëÛYKjà™´ 8Q›MÄID¸Òèr*‰ UK5"(QûgÏ)4Kmì¸$Xžâ E}žMbä˜tù2…h8ïL@2Ç€áÜÓ $ki¶%Õ*3ävÚjhäÛÆî$¤çt©š|³¯ƒß€ÅyûÄQ(þ!Ý•ŒìüS‹•°‚h¹ð7ò…ó|–=•|Qèìñ!¬úe@b}ûY=Ž‡Ë9¡-Vu64UåÈ×E¨Sq\eKö…3B:DT$bÈ@ÛÕ%€ôî@^&®ˆâ #/d½•e×cTT_¨›œ'L /è¡'¬5Çùãøùycšbâ«+‘È{©+I·žÌ(T.Øü 7"`4÷(âð<Žo2” Ùy–͘Ñ\潓:huäâK] ·†'ç‹ eÁÏz¶ºç9½¡Rf„&Fg˜QäoÒ×½ÒMï•hÍp¥¦¢é\ZÅÀÿ¡kVãÑèèˆAÂìQ¥Õ}’äÉk +<'pŠ' ­c|ˆpp©ÈÊ·ƒ Åvè‡`:Ä~ö ÷Jkµ Ài±ùü´Çm`:*œ4P†ÂE|È*wQb‘?¿ãD°žÀßé ó÷‘Àˆ +”><ˆG<qܦÆD²êúLXôw†¿CCóÖX\xÃa`Ä ©ZžŒÓNÜPž5Ô*|q˜ç3ÇNAÐKW©§‡»XgFZ‡jà³Ñ®_ ‹+LKÃWi"&2~q€Âj2äŠ<Ýs°&˜¢ µ0«*T†±Ù€ÀˆÛD:•ÚÊû¿æk½ÄaÛ$]7ìÔAùqããç½þ6Tã9„ÏR!v¼çS¬0 LÚ\MÌ(ò,j§‡¬:ñ}ÚFäï-?ÂÞ§ýÑáµU-mStÏÒöÄÀ¯ÇÁp_C6ë¤J“bnÈ…G+ÚölM%/)غÊo‹÷Öé'ßh… ÚáêÃ0jeO/³3U¿HE´¼ÅÄáé^ïFí¶6}@?P*FÑ'¸º._Kgñ|çOÊ°¼d/¨Ù/z·A?þŽ–¥·0†Rüã äzçe€èG÷GåÙÎ]#Þ³6´¯›,´„.Tü§ƒšI3lõàf¨ó‡8ƒá¼%7&õÃ/¤˜ÌNzñèðèH¦m‘¾ŠUU<Úïõû³KÂP£ W[y¥.ð,Q²Ž·—à¾oÈ$'îp‰A‰:Œ%® +ßc Î37/9Íð›„Ûèõ±I2yEÖ¸ªøeSt°O\¹ê{¿è¿9U³ÒäÞXµ^u}ˆøŽ)}Fׯ£ÔW oÖ¥îrM­UÝÄÃS„¦¬Ku‰udëbz±Ñ¢=÷à7BXO€ðØ÷³œôþ‚3ÀHíýsåQÛâ>Þèéµ a"wïQ‚3|Ÿðã"ÛöÂH­1KšWï+Ì«©¡³„­iïÏh›lóÏhƒXøá4[Áz°LÅÃUïVS­"gu‡=(sòÀ©eN$šþ¼) h“Q× ­‡À ´pr6âRæº@‘{ñ5d¹5i™Dô+5€YRù\è,Yì;ÂdÐ(!ä ÚáiêŒ5i4bSší¤5.tÞÎqO~¥H£Zh»Ä•:n¢ðÙ­1¡CÜQÙ o”*ØËÿß~iÛÔÊ|ƒx.5 `QõºÆ§ˆ+ŒAlì|]ß‚¾A +F“WL»‘˜X;ãK¢tkê=ïïÇãQm¶Áìvy ëÛ9ðU„¥ÁMz'w×3âKÿ±¢AÒ+Úù“¼E¡µ)Èê ¬{ÆÝÞÖwÄÍ·ÆÐÎÄC© EX}œ¼%$ž–Í(”¥™É³»õÊ¿¿ÆïA^wö¯Ë~"%:¹)7ÔÃ’i³<7ÝþÜ/¿z” ÏTvòÈ"oÕŽÕâØ|;ô,–Ð>¥5¡kÎT¸Vf^ê!Ð/°X€¸Çóïe›ä{ÄïŸ~¼TjÙ¶JÞÎÓ0ö9)3‘ß’l…šfÿñiý{ RÓ€å„z® is€¢ÏÍôÜWšhâíÄtܵ8«çf¶]Z¹ñœ£»å³£5eî³ p9û[z kÔ9 ½O¸Ì›‰Ž^%É-ý á´V7pŒ]L§p™][@ e†zúÚ^dÏŠmD|‹º;¯¶2µ¿š8O‰{ÿñ)h¦ ‰tÛnÁsˆ &;iM îÎ:ó½óoÊ?À_ž[ùjϼ]DËÇþ 0ULŸÓµÐ›¨aÅÞ‹OOé&î Ú5ä«<áNëŠ+,0T”ótkÏÐfæ‡ãðÉra¨FE]ÐÍ¿›qzLÆãÝwö\!±é ˆ…Ï¡8ûaT2­®M‡4\ô²ÐÊçd.?ªÍ,¯)–žƒÌ| f©Rù÷©KÎ_˜j7jÃKoÈýèNwó“S»°QÿúòÏWü9·ï‰Ü¹'³íJ‡e +«‹\غ: Zø2»¥w.ÛÅ Ó·lk^äEgRmz‰"–ÀZÓP~ ì!‹‹PÁ;L›ê› ˜¡IB Ý'—vÀžåQ%íéupQxÂTñBeñK¶°ØžÕt\h´*(W *bé'½ÙÉ¢€J£á[TŽ³£ïi15½Ø=\ ?'”ÊQrš`zä‡:nLØ¢•a„í.DêL6óI‰±©=³ +Qövˆ +]"L®)¶]Ô®ö¥åòT0K’°lX6‹ +‚¼È珤¢Íp:¨Ä½®4hšA“Ƹ$î§øñ©/neÛ»zÜ·‘²Rn&©½žy6Ñ\+$‚ß{álhú ˜å²”IŽRNeowƒŽä8p-!Œ¸‘˨ +(ä•ì˜ ,åWÕÝÁ(6ˆF÷[Aúfô¿•)á~¿Gx¿¿+)¨¦²·ó`n©ôZÞŸï3¡æñžPþ÷(làÄÛq|Y§nV|D*¡×JÊ…}0«Ô¤ª®þ·ˆøma}b«që¾ýá<Þ3¦Õ.äBXÇIþÞ î¶0k~X³ïQ´à(–7±ç~käÇ´x¬Ù°™£”-LŒã&¡ÙÁ1tÖ,Ô­×ßdÓØArPß½êšp7j5àÄv ü§+{ pQ“ÍñÎè@xwæuĬq†‘P¢L&ðUîÆ…‡>yPuJÅO ¤t˹ß*ȤÎ(”!7±û¾eMŽ‡BE”e.Úr4 ªZ[ëòi3UJ=QH;ZèvÏs2R^ß" ê¹[}ˆßæ{Æóvh,r$¿Zôœ©â…j;À·GAOËî×›þ=j÷på<ãî#oxÅ ß©I!{m` +ê´‘@Ñ“õ=à÷ a²K³)Sÿûi@º°ƒtѬå@É®çšà¡/Dë;L->ÙB Ä Å˜{ ì‚\ÖÃ"ÁËB²û†=ã{€R“-¥&Ó-ä-ˆ'–åvÔØIÑDòÐÑé~àÌk†=ù¢ÑÊúêϾAoÓÊ»•î0J™jHòl„Š~b,AçÏ;†…|¢¼èR…Ý$#Bj±¡'øãJ±ºÒÞ¸CSø^:s3'ßžg€§&BhãÕ+{"Ü~x%6¥°e%ı%³tš›ùº°r‘Ο'5G8ÀKõÀÉÒMA‹2¸ðÄ¥‘l¥Wý!¢î 4Á£ªÏWz‹å«@—‰Ðvê•¢ï®êòWè¿7MÊk)J?¾ø}fY•[ ÊâoQ7.¢ê†õ”Xc+{æâ׭ן–|þ©¼X˜—Ô7ó&f•÷õ‹ fñ.2~˜ß^SF‡¥êm¼Ÿ‘„æ lRb`‹&@hHFĵeçÃëñð]‚¨éDC?"do"…l`Ó0Æ5?œ§ï”м¸ÄdS×@ìâ|]X†ïß—¨>~ÂY´4¢æÅ<¥›Ž´”-Ôwè’ö(l'rب‹‡M*Ú’PØYTŸÐ¤hŠÉ`ÁJQôŒ±’¦ÂŸÛy'lûÝHžPq…á㎟yŠ¤ Ÿf¿) þ)ø(#T¦îûé%¦Ä xø)dT‚ +ö®òþ{ö ÉÉ©ÓÄ•6»q±¡õ†½ eô³áE.ùl®Hkƒ-]ÇÊ‹´K¯s¹¹Þ#¢~ÅV µ8Š·óè~̇º;Æ‘î¹çÁm·¿G àM'“VóCé} ê!ò([™×®Š5X¶ ‚ÍCèw¨¨:ëŸ[¥Í‘¶Ë¶P³·0URcåRMao6†±Ô É« FVÕo· —¬ÍwŽcsøKra 1v†ñ ®«tO‡ÖÞxÀ?f”°Ž 6å€ÂºÊöÃõmajr85®àµd'G¼xM”\=[AŠ_5µ +ð®x2Y‚Ä& d^4 C>k\twÓ6›ÅŽLwÖºnñVH?¬ZsGÙÒª²ßº g”[—q…ÂÍÝcö:{˜ ?n{2(»Ñ“±˜Ê6ŠƒmZ´Ñ YFÌFýNã97Z×+ÁÓ ªÕÔ"¼‚&´Š)óM*ª¡Áþ…Ž4Õö‚!ßßDô1©Bäù©ÜR™€h­i¦³æÓ­>aO7‘¡~²"]X:&'’Ë’ËYsâïé¾iOe*z‚óŽ¥C¶3êóÁÛuÁ†sí+ôí©à*€ÑNî}Û§U÷Ìä]#º@)&¨¨@ÝŠ +,à šCª PjH\Ìðì T°'Oÿ¹xI°°ºMˆí¸.½ )DU*³~« +C”o(ô‹VãiøÅl—w|¡âàÎ[žlÇ(P¤pd«‡g”¸?«"¸ßuÅ}ˆXJ ß3ŸB¯è*î>jE¹Ò“Ä©Ä>HåÊl[ïKœ€öº“š¾ì²_jüAFºm„‰#+7 u”QdÌAsz¶‘ja°q‘é¢U?h4œéðÑ(fð…ïÛ ­©WæÀUÄ"²Z‰ ÿa ]äÆV£iàÔiÞ\ _£ÐŸÖ›8-%+ldJºèƒìbHk_rþºž< +°½Ä Ä,V:žÕ¡ßâÙI]ñ tH?ƒÎ~HÏ\å1VÒ†ÖÊH;ØW¾1ÞÏ¡óÝVØ +v.¤ÖÏ3žiåKÄêW &oÀÝÑ)ôô¨%Ù£Øíu UÉÌ.åºw0~Y¼¯Wb' ¨;ºC)ü’À°°dœ#DÑ++`|¿®tÇðb¶|1}SI Dª¥ +K<Š0·øJ´/=ïȨQKÁ0hY4|”-Á’ +A c+laÙ;!cÀ†E;zhçï9£íÔ~b—¬*iƒÎ|:šmj!„úŒÕŠÂ7¦ê½P?©(X4¯D/š+Énè¿¡Ú7ðºÒ•˜% ým؆«ÿ€ ‡ ÓSàØmdu1³`$ Ìî®p8ë„ê WÀÖéùš{Ï’?f‰%gÓ›žµ¢'¾ÊÍ°8 $C‰Ç6|¡²3”íÚúª£…s/eo{±4Ÿ,á]8§5£´-˜¿{`“!îJÅBÎÈ,{8 GÓ*J'Õ"¸Ž§aWDô2Ò¾Ïý`¬ØÑîÉØÂ&ÆV7ÀÚñ¹úµJ—ttZ=Na3 +TÙ|ʺkN¥sâ]¡×%© þÐâãµkoI91LE׉=«ˆþ(“úQL`78ëšáˆÐ@s\A?Ç× X ¾NÖÚ”&b7¿Ì‡Üꈒ%#¹V$9JGÃùØ…ôäcPùM8iF„¦_&>®¦F5Jº•¦;Ž?Ÿ„=iÝG ŽÓóL²ÿ*Sãbx ø@ƒší;¿Œ§¶–gK ž—͹É\ò'ðgre$…+£©Íõ€Ø‘UNÀ’(9 +Ç£Ô…î·)ÔXa­%â¾Ä¦ÔªaºY¸ßÊÞ¬@kv ªÀñ;ôÜÒ^WºwŠáèÛËyåØøÔ;hu]úZœwS¤®9GäåâJ ¥Ž•)3­£¬ÀŒ|ê¯CØàÜMÍHõÂ%TXÏpŸ6$Æ3Ûôt¬qp6åíØ©Íhå²CQ'dž‚2\5$ÅRFù k[•'½ƒ(g™ÜVäâw²Ld’WpˆO”Ý`£XFùJ¸qMC0`Ad¾5§éü‹î sg%‚Z(Á\ЗíIòa.4óÎ õ¶ÚX +ù´°™Vµl{Ã`ðbã£3z%Ì Ñ¼#wݩ䦬Y=KjbØäÐ5Ã"ÆX&%0©×ðpñn[WmiµŠ8ëRüÿí÷äç¿à»9A¹·Økcÿ H)ËÌ?ÆÁ‰,³ +¦š$ª”»,é€Å§ÀjV:gwD"§ͦ~*Îý!çYÑá žÛU;ùê§81J–€#8J*R¨åñ×°aƒõË(9¹«Ý }ªÀ‚± ÇÕþ7}ð`õJ© dO6ÕR§eº&T)É´Q¥¼-j6ÝYHLîsô/[$„W$„áºî7ÃÙ Rþ‚: +”’ßV—ÊcD»h“q@ö=§UoÛ­ªPWBôì¼æ&X+T}6JølàbO`aéæÀ­6Û¬ø0,/ÕIp|Nx6Ck³È«ïo oN^T‘…Bš4¥ÁW‘éš½Þ¢p{fÈH_ò¬WÈ(°²Ì;gÒB¸Peö|Ä&²Ù™±ÛóTڶǫq1sZ@ÞÂ+C‡ vì©ÌkÀ˜î}»êáÕèÔˆ-ܺŸîXùIɤÅtNÚ@ŸƒÎz ˆS€E˜€q[_”G ‚à +< nÀR óÆ–ŽY  ³ý|%Ô¹†¨”æÂòˆ8`‚Ìå,ü|Ch\F¨vŠ}~*TŒ²3ùœi£Çsõñéð^?aBoóªú£p¹ÐXožÇNýRDt唇wn˜úÜš~³D˜ª[AìþºF¿«‡”ÛE¦ ¶‹bW‰ @DϯDc׸Š7 ‘_•Uµ`ПócùˆS:ÒK-D÷lhcJÉ/È8"oHšpašJÞ5MqvHwDIŸËþé Q?R¼¦ÅÉMw "ìt#¼Ê 5ªø?z¶öž‰Ó–++…½Áãc¿Í˜U–“TÅÛÙ‘[è¸C+ð¾³7R¯Ç绣l#ΟÒlµ„[Ũóšóîé]µµþÚ$viP±B2*…€Ã”Nª Èè0ôï–Z453 káçÒ÷Ìyy|èO.Úz0%Š™¶´$èMœWç íÛGïE) JÂè +@ÆÐÃf§fµZÓÄb•;¼W ÉñÏGuÇf ¬ÂYQÑÂŒÔ͵ÃlÚ_Ã3p¯=â5»†¤®ª èçŠ Á¡¤¸Ë}:ñz”(àYÎKI¥ÿk!Þ2ƒm•Pëç—ß[(ÛD îÞ“8Œ:¿îÑÚ} Æ]þã•Rgx†ÕÃPT‡Å)úJÖþ™Óa9·äZêõÇEÖëjjôÅ´¶§F\G.΢9/*±G:ÖhËù Ùµƒßiç4„˜ó5CÙÛªOv 3j±ñ‚-^âòB¥ß!t‰CÖJÍþÒ©©RèrV‚ÍgURÔŠ³~÷‘¥xˆj±SÂz¨M}{ïF$ +¼æ¡PAh¾#z4yá€@­ !ƒ™|–é¡Qìg‰×v„ùÊ€ÛBe\BÚùíDÏœy¶+®¿ŸmÏ™0TÆtœ¸Î6mA¿,Ø]á*¹˜ vìá‘ž6|Ö|‰lÔ€Ž¶è„ ûx`ù?ÉC¡4&¸® +­b +å!ñ­ÒK®ïÍMq¡Â›ˆÔ…²öª 6Öh#Ž«†ÚÆs`…–»¹Óù§Û©»ˆ ?~G^ŸV#ÂW|*ü0Á£P±£àCèöó9[Ïþ”LYuãQ§ã¼²ôÇòšƒ™È. +O0}ëÖ†,Ô{:ùèr²Œ…µ¸àfl™þ!e¾–B€jË.'T¥opëi53@ʘG!¿Ñý«áAæTg)nÉ +êè9òƒÑƒ€'×cd*ô›¨O1«QiçyÑ8pº€‡Ë^§Pj?È:+æ¬*tº‚Ê¡ÞÂ8–/t‰¢L¿`ƒºÌæØÊJɈôvfÑ÷£õà0ékI#936‰¿|Í[k&ô¾ÊR tñ¯uðóõ¶pn÷ó=öó*ί`f­+·”3„xÙ4…öé7±-ñ¯O§(vËåsQGÿ'k¢µÏ0¥wÆC=߶(í}ñøç%íWà¶Cù´@7æ‹ÔüªH%¤B°Â3T7¸x Ÿ¢4ѶÝ5ó<ϪV4É€D<¼ØóQë1¡±VGÛâÇèJœ¨™¸­­Áç¥`œæŠ†çÇŠÄ6«½µ¸ƒ„Ï®5'3î‘•ãu¡‰êôb +® 4(UÅKX”$C€8¤ŽMƒßhRbg‹aÄyQøF¸Æ)l»©h%/D&ˆÁJ˜õ˜ÀmfÐB0%n(õ"8çæg_™^ ª^pc@7K”Å>¡>k3Qä +/iå½¥{¶ÍL\Ö%¼v®s!‰!“Bþ~ö sÆöZ¯óª}£®HÓpÕ¸ [®JÀèí7»"O M=ÝÊ©F„%ÄîlýÚÀà©zƒ¢J@QIÕNÔØn^U ¬lб…Üí"Éi»‡r[1Þ¤•ýX²Àô´ +ŸÖÐr.Á™Š©àL­øKdå0‚[úIu…K@™Âµ"À])Ú-F´qR.Ð1Q¹ð%»ôJÓ-Ìj ­Ç¹B¬àL‘:f¯Ãªüùÿ;Ë`;Ø™“§uëˆÚ1³WÜ`æ'Ôæ’¬L牮º7¢\çÁ¨À(rFËçz©””v}rD ’™Âæ"¹#@ܘ€+Ú£…às!»Åȳ±oÙ¹dWŽò¾²ÕÉ"ãB¶ ØV•Œð—ÕÔ[\ˆðÏ£aì0ãúC×dœPžž¹¸CtdÎ Õœ ¯Hn…%Hwžö•b#l§snXHœÑY\ww¨lœ¯29†z¦Œ£ƒù©8ƒ²‘³¦f´.‰2ÝcRAND¨AÒˆ€höHõ¸z§w«þýE÷ WAâ!Æ;I7)£&Ú|#ô¸îÐèø|Ã’ªl0®ZœâY‚‹Øj¡Gg€±ìS~¤14,óZMqp0bžNù—üFÂÉWJM×êû! ’¤M^¢‚:wør°ë<Ë©º/©úU“Þ³˜¾;p0ƒ’¾Ó¿â­YúBÜášÏ4W¦‰ Q×SÔ™Ç+ ¨™ …ü%ű¡¢¾2íaµôÑAD$Œ„(ºoGv>ª>7›–°š¼s¼¡ÌZÔ‡¾¨æOLxÒàŇÀ7^YeÑå²£úS·> ·´F-©?ã9]'¹•"„¬?lˆ¸ :9ôzëÎýSÏ+p'A¿g¸’¯¨¾6¨Ëùj!‘¬Ö¹G:/ÓÌïÑ(©NáY8†êR%¥«¶€£'§Ø +ó­þc© S=ÿT†‹d~ãÆÌÝC¬a[NÓêóž0b?U²ç9ÞvîàrE!§]Iõ›Iõã…êúažq%0r­à¦!Ø™c+:!¼F*:¡dæhÖ§¶Øº‚¶Nú©`I +|¼‡ìÂœêø: +#¡’ÅષÂô0|Ò˜ +ë’÷¢R·#<»P o x“Pš²ëÊç‚êδVqš!–w’-,:w¼éɺ„à`÷Ðï€o›§Ûœ}¥‘4³ÁNê!#t&[ð¢yËlc÷šò€Ò·õ¡üŒ2)lïŠÛ¶á¬Åúß.Þ“ž ÌUĺ ÇU™Ú™b“‹Jv¼Y»ÎÜ$ßþÉ¡†«ØÎ’v55™A}S5óÌgUœQ³1SçÑ$5Úì&k#—O?VóEÍÐë-½XLMª¤þŸ'¡”8rðÜá/¶Îˆ4€^K*QÀpˆªÎÄ-w¦š!X +Eøš!ø «Å•š«%(ýWJ`}PО+ŽYgêQ–P.†Rû +Ò‚pì_d0¬žgtñ=@C'béðŒ]J…çY´‡Ãyæ&F´mgß 9BcF:RÁâ§î0 6ìÇ‚e÷¦»mO¤PƒØ8{>HÛêOxåO ¾ýq]Ð;Æ-¬5‰9‰qÙ×ïä@/€= +¡–Ñ¥;iÏb6zbVmõ-6µÃ²ih#c±ÂݨF#S ”v᪰Q5€T3 =àêA¯Š=íl·ÊÁX0PÂåÈI†ÕYKv\'½ðyו°æŠyÎ|]@ Êåá%µõ’º’ùÖa,·ø»>±´ÿ[ Éã‹îA_¡íC„Öâf/‘4öåbWÏo @­æŠ6âèVÝ1Uå Ê®ˆ ì~p1VO•î>–RD>Ô͢칯ϧLFÞðN·ò†à‘T©èthîÖŸ!1ôا Ò(Ï¥l¶èØ Qš-˜V›~ѶFŸŠ÷ñZö³ùf.Œ'­mrQ˜Ž)a‰ÿç\-Hµàpqì,óÿDZìÙfÚד9tU»Ç-EôÎB‹°¾§¡QÙÀ­èLì`œœ`o³†hóù¨$ E5 ã¥µB÷@<*˜ä¦ÿ|‹|¢mrË¢Oœ™¦gw*9³ìŸù£¤¦ò³äZ+ë¬k·%H™¤še*‡K[m[Þ˜k èRnZ‹U‚7œ¤Éæ¼2ª +œ‡:XQ¶ëdK/ÝÝ–AÈ ©=ÙÓBþ&ˆ-J-±IîXÈ„Ò¨EÌv–’}‡žž;¾s´ƒ\ü¬ÞA¡šÞ›XHä±ó +*ÆyjÁL=,ÃvºD'ú’s¦‚âþše}¶ÓílYµá‹¾Ðuٚĵ!\F5­‡åœ€eýï¹ó•ú3›RW&ZjÖ(§Šš4pòáª`)¢€Š€‘º8MþŸ¸†àÔù(«Òk7¯§¯¤ ®jt²  +y'Ô +£`¦àP‹Îîá†Åx% +Â#(ì+Ó.ÖȽCsÙ¦!;s²úÕ¢§­âVÛK(}6Äh v>9çd Ÿ¨8¤(nõ`Q Õnß~–¶R¨æœ­ÔŸDý%áMÿïŸ4ýWžè7Ü9ã?Åÿ|òɵB‰æL㕮ΊŒ_{IÏ"˜3Ì='jSÈ~‹òa >§h¤|JûqÀõ§5ØÛ{¶qú€\r 1at_±0FaU`ÿ¬Ó0«õhn|ÅM‰šUÄPúìKÏd(tº%àú¤׋¾°¹W%­ÀfT µ\2ÓåyZR³ h Ó˜¡¨8ÜY{ +é´+ÖýöôR ³I]È&Xª¤x‰ÕP×6™ª%3”¯k += +QG½š{#bÆfuº¿!@¯LžÁNó%´òîÔ)eÀ¢QĤ1ÜL³ èPåŽÛNQ’\+̇SZc§ ÞËö쮃Áîá/Ñ"‚ 7ß-:¤0TÁJ*ïðrgk¦ ò•bùç™QD qÖ™¦2ƒ*Ah€;<ûYð5øÃÀ¼‡Áù\+žÉˆåÌ kl¨Ó˜Ù¯•(|pÎt×uÁ|“DYp˜ ‰è†_1øÌK¨)·Í®äÂxB z&­ùº@ÐÔ Eø¸@|“>ÜØ~0}ȱ(ô¸•X-{a­$º/5‘sË‹*ã +ÑmÅ +Z‚Ø”¨w.3@øÑ!V]µÄÚÀâ;sþ«/ÐMÇQ˜<©äüU-z._ͱòG³/î,û‡Ÿ!zÄ@ç•Þ¢®‹v'í¯¡¥w–*°YSý5A,]ôU5?99t»î×ø .¨o¤jö/>UBtCs}>Q7¶¤u~(‹H]û*>yRRÊނ¸Þ¶M’`´H„Ÿ©ÆÇ•EØ#¸a!ÊÈØì-6g'b!‚&“V0ëÇ7°¶‡·iÍÛŽôl+ÜÌ6ùÑ´W%C‚PãP_°\ËHx¹ÀÓºcê åùš%ŠJŸf¹±Y÷è-Áçûà©]ÁSKdÕ‡¨š*º•ð©Ÿ9ýÖ )0XSØ(" ÔÌKZF´Œÿ«VÇoÇìÜ–:4,1O·‘†ˆTxº~ø8$ߢ ½6½Æ¥x~l´`ñ»—ªu+<ÉD{×føzÓüL5‹dlÛÄieÄRàt ;ël0™)„¾¶…¬3Óí™`£à1#!â‘*t²¯§ýC"˜©×YFGs™´s•-üªF5†rîóÆ }p=o¬ ¨ü/A‹gÌÏo•Õ<ð†b™è°`ã¼ó€”3ÞÀ‡j>ð/§` x~»žù’<å{!Çë…%Xºur¢û_ã„ÀU¡»¿GD-(I¯xK—ça‹gYJû­˜K¢ð}ö»Œ·m ¾ç‰Ý¡³é¶‡„¥>2{D Ù³´"!BM„(Êi`TM™ªu4R&5‚qÍ}HË6õú³ ç¿ÒD> ¬l{-·k)" +tJsÓ=€4Ð)8À\±öá^•/îW§@s` 2"õ–btÑÊ=€ED{Ûá`é4¶à/BÓ +ç„ÅÇ®Pª0@ÅQtÊßSÎÓ|zím®¤J+ Ì+®¤`ù€ƒ÷ìËJ$ÍYm‡¥¸³’Î.$s:­î´‚˜× +]áeQq°ËÌ7Bó„GŸNjû(À¥‰g¹Kt¤fd<-Åm æ +X|It¦5dþtþDݶk'—ê(Úȯ¶tVÏ)!M@VE£ J©'ãÜ!\«ž9íjW =®5®ƒ¡ÙíÛ²{И6c«¡9ÝÓ_þAÁ»m>Q«–¨ËÛí +E„øŸË-ç5œ8Òý…~De§\|'Î[Ž£W\ G³œƒrƺjgþ}6ܺÁ‘ s…š PÏ™˜ˆÀëœÑU1åtX;¯öÃ[ÿRÇ«ûk²š1Â-lKÂíîóèëÍøù/ù6‚ʦ›üŸ›Ð>;S|Ë]—n8ðgHáëIy/A]gÉÛ[Á £#åÁ“ª’ mþ¸O`”Ðè?ÀXãJ…‰ Iñ£ñí&¤a*>Š·ó¤™á¥v /ôyr+0v¥JÇefÓ KÆ¢žõ#4˜I0¾zVQºì,Â.ЉÅ:Cwé "*+ég.†Øm äŸEp[…¸ù´žƒÉuBjA vF¢“ +J¿*ÇBçüzb ïù4OÎKiOã[Äﳧ¡¼ƒæ$ûC”:b)kd‡þ;p†2mñÂ~eG¯ƒŒj›áGÏÊ3Û¤õôäYž £¦9WHØ]"σi®B+™vËSÖVþ«+\Qg#X´­DV”ý/ÁA«Ô,¼ 8®+] |Ù«1¦„ðö£€Ž˜.QصùsDø]Ï#„K-^PƒDÌ°ŽÄ&Šw>¼QôYq²Ít¡º\(ý:LÐ-γ'ÚRÑìƒ[†.Ï\¥âË;û‘´»ÊÓy …Þ¢ ) Üiø“ÆÃT¦»lšt+ 1•w‹¹—Š#?ê4î¿Ä4•–ŸãüDÌÇï§Ë`½ ^5}›‹bñýá€y=:ÞíGÝñ=JJr¸¯©ç€1Õ¨Õãm³ýIÆ;Vˆ#Jº>r]gÕY!ŽàŒŸ u)ìP|ã×?ãu'ø‚ÉX.oãƒúzV¼=ò0²¯všne‰½4“Nìáò~e \WLÄ4¥VC¡ô¾}C@RYÝ;ƒÈRP‹]S7ŽkyÅ §ð+°¿t;mç¼Ê +¸1j`6| +"Ì0Œ†(ÂS1a:£Æî°¬c:“a›äýUôþœèµ%Ù´FåNŸ+l(UÍ^As«5ˆE#fÐ}ƒÍT‰ëevûË‚IX-<`M*$EŠ*ÝþÖÑ& G ’t4¿žà=Ã-Ö4¢eÙ +>_H„ç¹PÓ=1ql|03qɃrï Ø´"¨¼Â ýFvô—Üõ”àh#˜ýZ¢qÿ)ŽGÐá<Œ¹¿ îó¤½dØgxŽ´Çæ€Ýe +!¥Eš5¹ó «¼×s~W×"}Jºs:t£†+t—j|b·¬š‹Î©ñtÛœÅÖa€À…zwÞ;®«¬€°ñáÞÑMJufKõ 䣬~F?áéòˆc´L) ììÙô;üº›&I¤— á– °ë¡ðo°œ®à°£î`;6 ¤gœJǹ“ÓJI΃êC¬Øò•wLbwd•< LõJJPàšZ.{ ±îhÙoö90ÚOÊÆÊz¶”Ü›â!š…Ù o8 ÅÉÈÂ*lQñ¾˜>*ƒ‚ÔË|À6'(ÚsÏßÑr‰å(dÖœ<(¤u¸³õ¸UŠ\Ë’ÓyÈKˆÊ~þiŸ 9íõŠ›µåÌì°ÜðÜè oAš“5 îõòl"ã§ø ^4t¬eðØV˜#•{YI…uYKâl~u€[z"}?8¯éækñ:åÆ›%Ì4€‰×$ÿDöÔæS[>{Vx˜òì·ð«Ì3}Ì Û6ÄfžFŒ2gPÒÐûŽƒ"„!ÏéÇæƒ(É•þ!ßšêkª÷Ú$ÿ:Jó:çg4Ñs mñ†X +(=äñ¥eÒjïò×]Nߪ*Ñ‘`ŽŸëVr˜I亓Ÿs¾fBó>!– Ÿª‚Õ:9ÄnÏH¿‚zžãy›6àƒÄsÎL'¯Ë•KȹWO#D²ÇrσhÍÑ»cÈx:×ës‘š ˆ¨o dþ=ƒP,,zQ—ܤ‹?> ¿:à¯|á[p§€è™Fvž1ÌJ¯}ö8$鸫î_¨Ü$‘U·©|òŒ¯ó +5ÕJbÂعdѲ<ï8Ä hãoüŠà·ŸÒ¤2FºžÑÜ3#üù»RÜŠcéÎœÇ*©„¯3Êvú‡îܹã³B.þ-Fož±[‘”[èŠî§¬¥`Ú”ÒÎíú¢œ³¾7™.¡y)å«4vÙîÄôЧ)™uòGË;õÑ9ºUiU Þ F4xSª³úý€Ï„m㧃!xvçÂÚ¯XXO;[ ƒ)uÿîQ%D*a‚‚—ü.þÍ.p!£#bç#ÄΟÝÐDªÄ§„XÍýT›*™zBν½)9⛎ÉKŸX‹Úö`Ÿ]Ü¥òØb]>˼ ÌyNg%¥Æ¤çì?йR²—ª*†#i¹$ñ¶¢„xïÊyb0»@ljž5âQÔü|b~‹™ÛJÔ'sYâk›¤¡Q¹ÚùÑ_]"EWµ©X|C ’ûsg +a'SX™ ¾*„6Bº¨Ýæ×ï*üC+¯òüÏð@%!ªÍÀPŸ€f.3³sn, +àü1ØÒï‘ +a>ž-%åç˜edÖûc‡|Z)TÑÎtî(ðn­ñÞžŸéToàûß?}‡©Û`ŸþÍ/ø„˜¤±(’S'Gƒé=âÓÌýUmÕ0# ‡¥Œù‰¢[n^²å¶®>ú¡”€ r_ÉÄ›ŽÿÏYœÍ’i Æ°hNÃv•¶DCñAÌ8bîPDz’JIîÈ„Â[dcé‰à‰Ø^i6JÂÏD…¬={O|Á}¨oþOîcK¿÷èåþðñ35‚µ¹¹)Ô4T$EYP¯?àVp9Ïn­qð ™ê)±÷ÇrÁ¨–Q割N°áKåy„Ü\B‡#be„Vè-QÑDXá(!ÚG6¾q¥ôxFëƒÉ@Zæ´Lå0¦Û€pR4߬ÙíTfb#Øž1ÿ‘"?×QÚZ•FÑ=wÈÌƳ¼~r½Ï>ž ‹Êú‹HÙ!¡†scj\B} ¢úN‡zÛŒ3:K”8¥ÉjÚm*œå¹3b*êÉš‡Óš ®!øÿNPÆúÚA0WŽ€Êú´Õˆ¡Ptÿ„¤¢teY< å9ÏeÓòN + +î5lÐÆ®¯ lµ$NN§Ú‡¦ ìøE1Ÿ"ÔÏaµ¤©äXã¸Àã3 Eâ©Xa2Ûá¼\3à§ð$«¦ËW)nhÎ.‹½ =ÈÑçIöön9¼ÛÙe*^Ï¡l`íö#[O‘‰}¤Öšu@Úý(F½Gœ'Jo ]¦õ”›Z%–!ëk aäç6nÐH¨Ú¸,ë Fi¸¶1ùP¢p:ú™˜ëµGjýKo• µâFùÚc‡µšû°mt¸`dí>oé?¡+àc/Áf%ì­B!{˜±=c‹¸Œ(”Y£E¡¢1¯Ó=wK‘ºf‰º³$V-?)N O÷L6g E…ó…ó¼ ÆKµˆí§­vˆÊˆ""4©Ðmàæ 1Î!bÒ¨ªg~GÎ?®4‚' +îx‹¾jq©2I'aÖ"d= m™3狇Ü)iG%ë»t߇ŸÌæE +-íÏy÷x¢FDA5"¢K—:¹É¬ap¬JQK’h ÈÁDè Ô›ê €XîWr§L[M +Ý ×®Ç8h5¾Šš2'‚6C:¾|‰ˆ@ý)(S^?è|Ô´{ª Ìsg~íl¡‹T ¢·E|ZZ¶ ž¯'¦¦ˆâ£™dA=¤ÜQƒó¨~¿žÕ*¬ù3÷.¥¼‰Àƒ´ +?»'¡`ñ÷À"·YÀiàî¯Ï u"™íÉ:€ä ½·Æ? \“¬öp=¿Gu¡Ê€õ!9-%O{j4eŠI%5T`UK¾U:ªkk´xA˜QáÍ#EÎýá<Œh Œ z=r¤6ä_}øf#ûI¿ B‰¯(‹¬^ª-XJ 7B·k‡“¨»>Øfö˃†ã¡ ÜŸö:~ü"šÐ60݃ꥒ˜jgØÛƒS?™o‹a Û’¢õ ïø›¹Ì‰‡/iÓžÓ­K‚{ÕAÁ›oFCFäÀ/ø"ß!P¥qïóØóöëÍlK˜ÆgR0+9Íöy Iò(Ìð_ */œ*p £dy½(Vð>Ùªo?³‘…x*ïKÚŠW#M Góá/;â—˜ë[`vg…qï¼Ñ7:S#M#P\"¨a0ùÎ PFJ³ øXç{Tà@nM m=ñ¤yу]Aú* H`¨†â –0 h%j•¢…ÚÕR¡L¯! ·DÅïË÷ˆ±ÃŠ€Bä —mõ +¢ÄÝ-ƒ wéxj+¡ìÞC5 ‡l­ñk,Hº™)è…û8%›Îzœ’G_‘ÈìJ|šâ¡£Ž0 ˆÁæ$½²zåK“îÚ©­(6býq~WÓ¼aõXhÙ*Õq*ð5é-ú*Ì”²ãúxÑ4ÀnW´ãðØÏlÈNCõIþ}$€2O½ì¼\]‹¾˜Eão²-èaµ±—|“Ø5-ÃÍêÌ]†ZñLz; ÐÈDCQùCÿN? ÜaêøpFHàYrlD¡Ò8ê‡ÔÖÈKÎÐ.×z˜Úߢ޴Ti^^Ò6Ï‹µf@%ËÆkšçÑèc@ Fè÷€×,¡ñ¡¿8ÍYCùæ dmóØã†:7,0ˆŒbÔ¤õö|î2#?¯™jEo?¢(PÊN¨ à-‰PݪŽc0º®¢Q !Í‚Ä3EÛýDY5 J7.‹–;ÎÄ'ÅD|”¤ +e¬Š/óÎ{± >¬"?B5¯TäãÚ|aB×~’?²@âb›<¨_`°úÕQ_¸÷³2ìH›¢}XPª(ò +ÄWî°©0·8¿›cÙºGLÖ¢ùc*áÞ>¾{ˆ}40¨bàöäÖêì‹©ä«G+é¿ +©Éx£_zn57A¼9ÒPO¨~²Ï†¾­Ò„%ËcrXƒ·p6Ÿ}Ås´2ŽÓ·8‰ëkÁω¹1IbìŒÔüS¨‚6VÌ í +Ë5ö¢(5 +Óúþ™bçš°"੪‹táí¾Ê‡Ó”TlA<ÊJ â 8Ô~‹(ƒé“ý`ˆß¢®PÅIÈüòJAœŽeÑ ïùœ¸75zf|¥;UÕ_ãìA¯ñ K4x£…mG(;bïð׿ºk ˜2…¢7‘ão0¢èo„%*¸Áz¡oñÃn%Ìd6¾ñi(šôŒø˜êO1øw—ÞïäoY7—ÍgøÀ3bUÅ•†°ù K z3¿=?È%ÝáüX nŠ“ +ûös +dW6“¹ÀSZ´Æs‚3¯…^ð:‰ê ‹¤û./‚°yє̩h¹¾˜À3NÒås¥»ŠÁ¡¦…ÂjL± •Ó…ñ¥†Dů³ØyTO3óïgkî§A¥x H S»€À0 Þÿ:?ä=¢& +<3QÑ|#n®ì*KÜçyÿ)b—€;€Æxi•zĹX8* @:Ï<ßÙžns*t>0 ,ZÖ¼%ª’Ê?9€‹3›ü»gÝ÷«Èë3ýoÅÄ,ˆz[ˆÏÈóóžŸo?ËÚ÷ »XÎ>ßs¬¦_kà ž#Ä«>ª•;ºêñs};÷r^?|Šrç´çφáöq±èÛ«:4Í+½ÖØOžÊÔô|C¼ÁãU6 +"Häð€™"¯ˆºùé‹^¸2ü.#fœ3¦Úå­\#:ï+"1Á$µ¨Å×…¤ˆ"ðÌ°'ˆ>7A°iœ§ƒ0ð³Î7?›Ò>Ô¼0O¹"O)ûbN5O¹Ìuê#Ycó8OÆ«ùj›ä; H"ø®ôPô5gbJ6gš‘3ýùÜëIɃgÜ ³QÏ›®T=5ÃLÕÕä1K VœKµý%ÁÐð‡"ä,.óŽŒÒ¹“ÇÉ­œ<ÎVúk éž~^ë¬À ˆbõ|àó,ñýh9õØì9ìü¶DœZ!{Îœ&[N“5ÎÏDD)Ù°cºe0E Ó(Î ™…ælNÛc9mã’hDÝ—³pVfAÛxq!ül¹ÐLè SÌë:¨ð)b³Ý|=;èoz^°; “1!Ä»?€5eÂߞĬ·¶Â‹ôs3*´gSvÁì.¸ñ0çŽYrp¿8]±ŒB™ˆ*‹:v(bîbZV#¾Uú>'kbuê +oó- ± Þ¹`² õû‚¡g>ÃS9ÛbìhLךÿ3<Ê ¨Šài0ºT$ö4fÞ[E¸‹LCc8"q +0ÆðC]º(¤y!Ú!ÀzsÃŽÊ¢ä¿Q"¿¶nr]EÕpº*]5MÊv·/ ’:¾Ã¿õ†üœ/ÔÉŠ\†Î #ß,Tu/üÁvPö‰ê; +È.È5:¿HE`Öåyœ¨”ä†Ò‚ +Ü•`RRB{ Jè#ÍAs + ‚Ò{!(œM‘dX<¯ˆn@,ÈŠ.)›Ú^2NÕáaõ}lîhz` kÉ ùôJZ{SÔ>“3ä©3ˆ¥pÏÊ,ì&ø»ë{„€õ6j—ò8ó¾Gnb½ØMx¿ævè`Ð÷×£ò¦ž»Ôh½Ê +»…àÈ`(˜€v£. =ÜHsÈr;K®…Ž;‡÷>Rs”¿-кIÆo(=ÁøVz‰O>•Ãɧ5Ê3¨É5ZAl½—Û( +ðÝ#BSvµãüè¡.Lµ‹tîý$c÷pƸϲ\ªüèfO÷$Q¸\±u&iøX,–—ü¨3^{” X,Ï‚ªÌmá”ø€Žj-A&ËAœÀf±Kòµ¤ +Œ æâ7 Gh#(^¸W|8)¡²}ªÈ¬ç˜zÚÓ†Ù +ZéŒËó˸hu^@J™h—ªª»îÕæÊHêþßqèÍ—½d‚¾Ÿ…®ÝlšçÅûXCC uó÷€“«=̪·cUa51£“5è>»6†1U3ˆÄ$è-¶¨$lQKž¯Wʈ!º÷»C©]w#Wº!îsXum3Çš×ð¹AÊZ¹ ^ìgøt=”zÛ¨26£´ïRFƒù_þdÿ~Ö†;¸#`u +,†ˆfMb£0w*®ŒýöHU¬¦<.}p`Ê>#~€zÑ<¿I2÷v3,{hø6R¹¸qônÔ’*›ê&¿áØs¡‘Õv–{×OáQa?žã€VÇy¨(µ 7͉.ìÛHiB%&,¾[¥€Ýòç9ûÒTzì‚&ÏüÁ¶Ò­ÀÑ7»„=XDªn)†É '±íuµK¶qÇ뜌”Ý'*u~SwÏ8¸Ô"EÉmu¨½ž'VäÆô›’vÅæF`-£)LÕI³òy nyÕ†!c¿ò…0Qþ6s)ùDÔ…E5Q4<‰Ö&½Ç­1>KF8ÇO¢6ôÊ¿ƒC¿´ë¹_çG6UæÈvï‚dœ»ìaËæ6Ý«F¨¨](†Æ°Éñ¨t6+WÉ/t[Ÿo“–Z¨\ñ*äÊÚj"Éf‰—xW]O]--D“ËŽüäÏgBÏ&ädŠ?ÚC Rš“ŽA €Œ´–”iÐÒb½g`*¤$ $Ÿ¢¾X æßØ¥P†\ÊÊ<‰ÁF“9ò¬ñZÁYÕqL"—9)Q…­èd3·ã¦580j6Ïc±–5¼‡¬Ö\ ‚Ûpï}ÞÉ#nQ?’v| ×Lº Q‘^ihqaä½fœŸÌsâ rÅ}²Ã ¢AÚò{R»Ö™¡òW˜õ¶¬7 uQ/n…Cn³Üý¢ÚzÏqDŸ¯FõujÖ“Œ$ìP˜Å±uƒ§…ÕýLçh7uÕóqZn‘¡)]~² ø^ ÞF°¦ÌïiÁªÄ²tJz‰ â3箯y=|gvƒg¢c;‹,Q¶ö®æ^×ÌÓ(ëÒm6àŽva_`ûn"Âk£&HÍbé ]±I¼¹]^q›ãüD~‘—«wPêÎ/‚“Õ@†¬Û×XÑ€@èºãUŠDPø¾¸èrî°è&$ÚnÖaý=¢IÀåûA¼Ž}Opu©<€óD(Hœ§Žç«+.ÉOCíéd„ûJ_ŽÕµe{‹ðJ¯Ut5o ŸÎsiOß!}wÊÝgÄ + ÛTÛ)à ”¡¦Õ4ßÜíðõÁ¦¯5çlÎsN‚r?Êú.(¬,(ƒ%g çèÖLiÑbß™Ç蟯„RÑ>e_Qß"üJ >‚,™ýÃiÀ¾Æ¯¿q=ëÊIäij‚¬"ÒÁÁ»Õzׯb&ôæÐgRí Ò‰Ö3ÀTš´ô€¬(“ZjÀŒ¤ÆͼÐÚßçÙÕ ªÝÛià/uvŠ-„wiÈO¸RýŸ"€7Á?¾ä8ä“{‹¢¿:BÕè +Ýn^àן¤‹,Šò é^~— oÏ`c«Ç`ë8â|80ì Á±ÖXìÀ¼ ^¹ÑM<ëêO4¤NÞ•Õ“š³÷¦ºWºsÚÔЋQÂs(æŸ<&Îã N1Ä-ašhœˆó+o#ìR¢šˆ +iä*<ºýº’ÝÎ~cãræô4•â ¥XÉK43  q!óQ4«Z~¥ÈšP¯ÏWBœ•Á&)ÕL˜R(²Ç¹¬²AOdD*¼P¸]f.æÆoçQåÛnNò-"®„Eûôq’3‹k›!nR¥=ÍIÑÁÀ}H»Å U¼gA~êé?) T}~Š`Œ˜Ÿ#iguC»ä-cªYRþ¿Gx% Ô]1ÑoNˆÕR׌7¬Çû•Rüï¡×Àˆ ÿŒ¸Ð·¨PhJ¾&ÌÞð­ÁÒmÝÊô2¨g´¨(VË·­¯÷ˆçú :ã=Èn'¥Lõc’÷?»½Â8‰§9Ÿ2ç÷(˜S¾ ôâLâ0Ä.h4øz|w¶Æã[Ñ/ÿú+'XHÒÆ›N¹îªT4s\¤l´^HÚÍ6d@ò~Lð-Ë'Î.KÔÀS[xõ/÷à‰á4[÷9^¹FÆxTRßþüŽÔ„¬5HùD{iô.w=:³¢¨ƒKÅ3Qýˆøiƒüˆ¢¿)Ñ呈f@Çc&BÒ±O]b°‰¸/† 3ª”»8ÁDQNpÞ_Ç,Î)Tx¼û0 [™svõ]Q“xÞXIÛóÄg‘–üÔ‘î·®C¨cj$º«M|ùìÿvNÄØAÝá•­'gÅ Š ®þõÁ?ÛNº²„³'Òýú+=$UÀÕ~ÒM™úè9Öo6´¬P¦á!eÇhúaOö0•µLÉníSvËÕDÐ1#®sÖôDÌ7¢'¬êuLeBÓ“ 4 ~£OŠ};}RåFðC’Ls¿Gž,ì‰(ÃÖ\§³ODÐ0hÿõĪœ")“•ãtÇÙ*.s˜Þ‘uåfJ5÷H,|€.°¿àuÐ)<ŸSxšKÀ™£ºðëÈP{T°Ãt»ðÊòADm©çuÆl¸MgéCEÀûqv÷N$˜ÛŽ|ˆÀÛþ°:ÃŒ©Ús_C1Aw/å^Œp‘ ùo °ºÙ"xGš(›ˆ&ÞwnH5µØ¥ÁoÃøŒ¡VðŽÜAô0Òƒ¹åž¢Ø€ÂöñÏÛ2¼@ î‡ö‘~ÒMÑ,©ïó“REÕþˆïÛËuƒúFA_s@³UÇíÜgÌ$¡³ôö>^—bj´¨2^_Ô[…Å~ $þDÐØÊs\d(Á#þùùùHq£}Y_8á÷ ½peÚ®nŸáPåÌDÅnÂ’=4¢#î¨îoÏl•šÁO†D A„õDŒL_A߆£‘v3‰B½à@<_gŽdùõ{9×SüsK¼Òæuf³6ÚŸ<†> ÜÝUeßtö®Ã=ì0Ìûµ( B¢ ­ƒF5âuüH‡GMLKuŠ¢:>ÁûæaRk7Z“¸~Þ: ŸótäþÞ[õCö>>°#ŠP^‘DÐJ'â¶O4®`cv„l}¯€em_Ay‹M£æR;ªˆy­çÙišðäL«xœº„ãV™M^=°ýÌ?(‚XË BêýÌA³ìWSM©Ž"×ÙSÄîÃìä̇õ|€¦ßy×%×õ>:çCÌ¿hŒªäd’¯X®,—ýn!´'Okà fHØÝ·Osþ +ˆñûßLÅœx-©x-Ë|¾þÆðNóX ÷Br.ð|¶sKaÎ 2›h1úE¥XÂ~o, +oÝ#PìóPÖ©­=êgD~0r‘½ÝT„³ÿtœˆÌù“"™>@$̽÷lDû~ˆ@ˆ‹Sß Ÿ_Æ¢šv³—¯e1f’û[ϥǟ®›•\éù߈âóp³5_ÖÆøë®ïÛAZ1¡ágõ0bƒ¸ ††uÐ¥?º`­‘—wg:ï´w¾y >:«æjØôæ·ø€_ã +?¹©PgK¸»;€]þ78·KùsÈ(“&l¾î~üÙ˜J‡Ý˜‰ ¥eÃqÈc ¶ò˜f"EéÜ>²,|KÛ>ƒœøC:ûÞ;Ê7ÛI££üáCÐÏCð"¼>¢(ÍY'" ã\ð:|FˆHý0BtN¿—Æ>’Ãî·üñ烅s³à óø8Ø(áØè\¡Ù¹•bŽ¬©òo`^°0Ô—‹úO»$ÆJçí žê²¥C?}Ö8¨zZãküÑkÀfªŒ¼(ˆ(Ä\ÆPÕ)€ +#DQ_l ã Ü÷Éî°!H ùY±xžç·ÒC'3]E>º¬ v*Br2ÔŒvêÛe|h1ÇIÊÆt‚,rn˜f# ›+Ú -yü:S6ˤ.QÉä.R¡UzKÄd0G}"ÊýF ¯$šškq£"B‡ý\¾ž.¤B4€ç]n²ãürPÜgÆö÷ÙËÁÜqÅV—#æïO8‘ ‘Mýðþ!Š9ï8sKNÇ@Ï! ëTcøv _¤wôŸáv|Düù$Mõ¦`صP¡­õqÔi,>E[Û´t¤¶NÉbȼ÷/tÂ>€( mSa[Ê+’³£¼8Å?poÆOyQöêNú×ù»Ïˆ¯EÚ +ÐL/üã8è>ÈÖQø¡å:%.+ë·²Õ ©@û)÷¹Ý=·{¼S÷Û[>@ŸgÆìëÆ‚ÈꎺµPqå1ŠÃgž™Ý H ó]’×Á èëDY¶ÏŽ&/D¢®r.˜õ†tþí_ä€{JÀuËypÎ'ÈÓý»"ž/¤Õx÷‡)Ú›†Š¥0¢X ö­'ÃÝEz»†@^IN‹&0/Ê÷žçÜ:o¡ö…΃t\¯hÚôÞR ÀfàA—ÁææMvô³Øû3dbßòØõ,2»š/B†¿¾éC©‚&G ÅT…Œj~}=‡T‹ôÌ¥„Þ^°°€ÁöpÜSró½×$áúw8Ú ¥Ò5‰ì±<“'¡H_Y‡¹ÄŸ³⌻÷³ÛžÑð­2”äè„PX˜²ÆK`r’þ©öψ¡º+cˆý˜´Ï¨¦"¯·J¥L/§^ ÿD›`Üåîœé#êÑXd­#b0XâûŸh JX1"êL•™<Î{H?Q¾ðuûy YCðcÞçÀ­'’þy;3*˜àA"7í´ xF˜Dáxí•çÈå£ÒZBWÛQ³Ít¯ ÒIh³~DƒË²-[s-ü5Õd™9†-‹½q]o/ÕnШZ“A/kÉìA3\&üÖÝÛÛj¹¬x~ŒXóš–üða´^šèoˆ{ϵªøýS©Pï¿A9·žÒŸ¹W=™â³r8Î<ä?i4Åëcu¯Á:(‡è9L;£è}QbªcCgšCúÛs9p4裒]&ÃlEØ»VY¤vAÎý¬ÌàöÚ °ç3‚aÖt±Ý›Ó| ¨(ŒËÈU.3MBHÖ‡Sæ¨J~%Jª6½°-È¥àúSÄ[ªÁÈ£OJc÷‡ã܇FºÀ:ã¥ãd3y"Ëôñ±='¹ý…òŽ$l Z’Äns›Q‡ W9,‚ÿ®’NJJ‡«CuÁ}ÊK[hA›Ð¶Ã?ŒE”µì !#DºÉX™š˜É[ÀqiÕL}/í×Q¦8i5mèøçn^ÜûÀU“î)ŠÚ'9 r”ˆ 4$7:þ‚@[àáîB®?#î&{¼|Íæ'r +Ú~µH–»Y€¤% £'%A}FýoÄÞýñŸ3Géiiè±Â{ñýoË%©Æ Ì a¤‹® îgÐfrè:ôw¶õEjpãÑ“&“á +ÝvÅ¥É4ùZaH´ìýõÏ]ÖJ}'Õ{÷£™Ä3½-zÇvÙ:¾±‘àÝŽä…³“Wðð/PPòÿ'¾@Iÿ÷œyÀß©Q6 sx*³ýžóîþÉ!„Èj‘oÒ5I»±=7…ä8Mé3ÈÜňŠ‡½/#ä)0l‹yOSti­}–ÇgÄ ‰÷^H9lJ$/˜#JC+’ÖÒwÔ”¸ûb¡ýOaR°k†œ†òbºMûÚŒ—æg¹ªáKÆp¹Ôà”éê;c¢neÒ£~ÊÊi*©lûu΃p*Û߈^,QCT4QÒ ½9Î\D4Û/S³?Œùª_xøÜç )þ•\}×CH0ÂÔVzWÓ‹ÕÀ¶ 9”þ´ðSÔƒ4 M“Í´¹C †:J<êžý÷'‚»X¿(½ôŠÝÍ÷*gkg†Ž›wæ +ãzÐQƒ9¾†Œ¥Ò"¸@çŸ#Îçì•ö‹êà<ïƒ:Úÿ˜V†™|w [R€–•P‰]¬^¬‰ØÒöQ’&&kÓÈ}wªþ9x²K@™Xœ` CÍ3Ù}g>³yã—ùæqFq>¤G½ÐVÛ ³æÛÒ£zNÄòÏ/Ä}ˆ»G²PSÆžàÍ®„ã¦8ÛOwóŠê­â „­š/µVBûÓ†nµà¦ +v‰^”ˆK‚òVíÌË¥NOµì«óaË´94ð|à,ËN…‘™š¡,»˜au•)¢¡áÔùËÌ`Po¤Gì*ß9#ÃPøFSÖÕäFÉ0[reŽÑÀ¡3MŸíwk8L)$²±ƒç{B+¦¼Åj ·ò܌כ Çý…)€¥ú”Y£#P„E23õ»pzyqw6FÊ ZDáQ1R‡ö÷"¶@7ÙF3†>¨é«7¹ë!M’8ÑÄéuU͘¿0#¢y™ORÁ‚ìAaòÜ ¯†)xVkv¨µÆ¥­ýÕk®…1yN€‰NWé ªÚï<•¨,ô8¨kûD8• +E0ý#¸Ç„qãó+í +° ¿¾ùÃþõ{? ?Ù•S™Ž÷1¸¨ç-­¾§wúS?û3L~G zyGkÉŸL-ˆ÷?ÊçgÛ¡XǺøÜ($O¾åYsוM–p«ÁÈYÄÜÄ¥›ÕùÕ0õ!¥ö^)ö“?¼É„ 5hÓ(0Ú42´\¿ é6lçÛ†Šä1‹ ÜÄaáᎠ°YÚ[Kb¢’¥9ÅPÔívaíéh ©xËFQrÙ‰x&¦MCTðÊp%ZÀ;&‚ŽyX +þÙã\!J«e2ƒÀ¡½Žõå²ðdÓWºžˆÖ„÷Lñ'ò)h¨ä<~Ï}ˆõIÔ'ىϘëO?+ú¾V žLýæ °¯Ý»—FJXxx#áø¥Âû4ç„3åÃToZy…T*Í!uãÿBì¼e?œob4ÑåìY“Vî¼e½)`¥ +Ì°üåÜtPzÂ×ûyJ´6ïm¦ó&6{í4²]ékvµðÀŸ"3Öá$VõÕóNRÔORdLºT]ÚnÒ*¶VÒ*G'EÁô¢®°kÿåîM ”øÁzò¯2Û’µ˜±à•rxö 6„……RpŽÏ$vÌÓ˜YÚ»Õ~mø]c?l +’Áù®‡å@A^L5Ò C'Pè> Öo¤úJÐÔEL̓)ØLDQx!7œ4Ù)Þ¯¯Ÿ¶Qî ïm’Ÿ‘$À9JБ*–aØM:R[rž»¥:Ç$‡®ß¯ŸÌDŠž“ŽÐa>Ia]·Â0P®§Ñîý©±$Õ§’|MÞÿ#•°_„ªÓù}=B|¤}=%“óá}VÓLìî'•–ÎÃõ„Kuˇ$qb o³ +r»ç“§ðl?r•ß4A´8¶M›¢DÜsäKóâJæ‚°j³dW¬#"L§æ/’&MN §ÆÞ3Â#&Ùh+5?·˜ßŸ#oåÑ)@9?U:Öíý þ|ªàaËx—ãW¿‰(éƒÉÅH"m ƒÙ†Gœl-Qû>Ià¿øfüé¯ø2Š4z||÷Sìä~oå@èoíÉ–ïaÓcŠXjø˜Å3!@úÈÖ–È«ÈÔö`†=ŽÔ;ô„šbX~d¶ÕÙô+ej”­¤'¶v]nè0¬8 Ça[!ì)W¹ÂRIK±áÓC@èѬœY¸7Üv+Gq(Å°(©@Q<ʺEáh}Í*Þ'OF¸ýópû_%4ðí¢¯v…î=M4¥“¬v›ís<(úPr’‰ª½û^ ò®±añ® '˜ó$o¥¿øÞ²ýFî·™(–DÑêà ø½›†,3@YËA{}\š¢úRO&RY¿N„sÜ%À3'Bo“¨2ñ=W™$xbtŸ @ú?Ä&=t¥Ç¡ðîòƒô–tvq H·ß§¥ßUþ¦Êò0Î6÷a: éž;˜®`—»Ó®¯V§áYá|LßD»òKÄjà|iA“½/ßxzº`9¼í¾¢ìÿï+»t1}çîWj\;EwàøCôÑœ ·w.f;ljÀFÃ÷)cÅ.]A1\ØI¨Š¾&WmÚDå,°eã¤è³„‘zôt†$p•ä^ð¯')]æ¥ÕSÉ"p³“¾ ¼l ®‘¢°€t‡ÞÙ³“»UûJTÏ} 4‹Œ’šî.'‚Ì’©p;BKI]:p'Áw"f¾Î´Ä¡ˆN†¾ò.Ò“Õ+@”ÙW&^q[áM1¥Š_F"°Ò…ß~IðH›|BR™ •ÄS^ókfõßoåp¤P,¿ÞO±î:¢2ׯÏö §½åæa46te•“Z®«’ª ~…jÚ ·›æs“ÓÂ]eD(ÜØîƒùr÷úìGÏÙ~Œïã,㦭hßjj4ö€Çj +ê¾!{Ë.Y-ýz׉’+:^X4WoDÔ¯pªÅËh¥Ö²nûµfΔM±$Ô)6ç±E‚—ÇúÖÌW˜ÃìJ¤ 2ᛘµ í>žnÕÆFì´B®ë¨ŒQy½(K†ýp‹1lTi?¤õ$ ‡ì«DsÕûîMG›+À) àO{A§G¬$6Y–M®* +VDLì–Ú>¡—c7ÊT› DbPâ(ØHåuÝÅÎöPŽ +U”†<‘¿ý{8×¼&3Ør©M ؾG[À,¥1W]d$fv_ÇÏn Ô¢dWÁ„’ÏL%·ö¡Gƒ³gÀ!"ßHÁ™T {¢S¼7Û™È|)K<5çDšAÕãÇl÷g7䱄»1ê!é«í¤|E"¬Žñ3èiO™Ñá¢ìþóÁ?=ˆ—õ´t)؃ˆj¬B9Sú_{Ca`ï©~•¼Ëös !1å:‹?ã ¬¼ßæ’ã&H5RôçσHrŠ ®(÷søW4©Ã€ ¾DÞÿc½“‡Íñ;6™M@ÌШäVýö :˜¡þšrŽfF³Ïêï~Cb!ƪ"8AÏ0²½”Q×áõ#ýYZ΃ÚÜr=®yx@•O/¸ÝýÂñ<¡lñx 0–ëË*¡ô5ªÞ³~G À—Çuì}¸]Š„àD +…|šž‚ì‡ó¨;£ZWb¬ °y¢òæˆßw€ÉÖœ)mõ~.çäσ!ÄY¶ + ›œâ«øµ×Œ‰½‹ÿWèÐÉã¥Þ¯“ùü£ŠT·h—œñxƒê΄”‹ýBÉ\3Öç"+‹uSÙ4º£ñA²Çê¶c=]¦WJ¬Ýíèp» þlî¾*3÷Q4ù³Øµªò*‡hùפ©-„)d§(æmJä)¿ ÎÛ<.ì~HÉG¦)g ×c—ù³û¨¥Ó¦AIT—ÿ†‚|N°ˆ©vô*Dó´¯3 |‡_|ÔÀX¯¸ðËÝ`ɈÊ£º¹_­ž¯6B}Ý› ƒ[°%'ºr±Ï[¼“ ŒM Áî<”=*Ô0ϼŽ¬ XdÉÀ¢ÛБXøÖŽðøZ¼`0|9%<Ý«Å^o í^}p2 «£&Žªéð§æ]Ck-ÅL÷)@X²È´4†še,¯cÌãÖ¹çþ´H«qðXC…$¥üB$k¼ À}øÚ$#J[jÂá—–+Z[l'W*þ?ýWq€] E@ƒ|zÅÄ@«Kª®˜/ +H¾ÒkÀ¢óñ;’ZדZÒ(&¨!£^oá·Ôn£CÓ#ÕCmcxxèÁuÂlÆTC Œ´“U¹Âtiv†N'!—ê˜ÔPJæÊaÚ3—¬P›è³–öT¨xガá*=Uc¡MVN×"‘Â}{˾ä\uuáèƹïB ƒ_Vú™Žá_’ïcgn¤*’ iáëôZèY)|ps¢a:^=x,3'”Æiû~N‰ñéÀ.,x0I˪oÑÄ StÑ‘á=€‡IÊuÔ±ÒPÚI¢+Ý’|ÕýS4šCÚjˆ‚«HïõÆŸ¢Øþˆ¢Sœˆ™ˆ~½p:ˆø:“œ•ýÝE°ÒÒõªÿ:ù—äƒõf|vÔîˆàãjQ¹Ž°7•Ô8ž°EX`0s±¤½ç™Í¿"S,AËÞ9J‘4_ v-ÕÑ7 ÆÔ˜Ôá´èÖ¬$Ê +{Бf^ü§S.Ň ‚ AT•ÉOÛ}<$À›3‰à2KJP5ˆÏp¦‰6,¤I¾˜KUÚnãœF…¥¡Ùäãa Àùt9bèQMÏqØ ƒ|"íA××qÍñnhT-ˆ—ç–1¥‘Ç£ ¦ŠkNЂûaQõ•=·ûW³˜ßŽ—×ç?«¯0©çO‹u:I*v°;ãA…Õ†ïÞ['È8ƪ¨48CW©¾º¿ºîŠ½M‚îAõXäÉþ)äõ2ìêa}ežD)OC”–ÈÓ4QôXT#‚n!‹¦¨)É€þà5¢ê OÐv"æ%‚Œÿ=ÓÁþgÑW¡ìmä ñD $O1ʵˆG£'€ö4ÙŽy¦ßã_!Å-v_©ù{í1Ó¹Ýzö«¯ ögÊ\õv=ì.»¥ ªÎg%"áD¦ šê ;“}\2蓶€ãUtDÎ,†"3ˆ=tj/Ùš÷Y«z-!¡M›º¶³êÛ´5Éš×#¡'S0M~Þƒœ)ÌQòG©â¤a̘ ¯øn¡Š‚z a«"1ÀÈùFOP`Kª[fcúèë·,!Q!¥ Ä’\ ìdj^ZŽš½LlÁcÝ*3œQù"ÎéØÏûI1ÁZrCtXhù`à8„©ûM@˜+ƒŠ½Ô¿@¨Ç3aç.#¯v•b0ö•³f¬ƒƒ¿Q›Q‰gêæ}+÷3B‰ÍÞþ0‘žýË‹`¤­»”5 w;¿,.Œ3 +E·€1ªPüeÏÝÎÞ>~Tö󶤯¹©àyׯûÄgHâf§P˜­.¬cÊ¡‘'‹† Q}QN„C¯}ŒrôÔÁ¡ž‘°æ¾² ƒÝ·B‚6&J’Ø‹¼¯¼~´Î29ºÏäˆÔºÍ´ÆÏ'‡Ia9AYƒP m)+CeùÜ"ŸCô‡]ÔPÝOc;¢B³™Å_ʦAE»KkEfqvµ¬§ŽVhZ@t§­þ"PÔbT‡½ð&Ê^¸ËÈ‚"‰­€%j¢÷ÑÆ€Ýí(¦{cGì·¬'¢X×4Y± TU¦ãJ–ÝÐx·6ôH @wÁzs¡ :T@=ÓF”ÉÍpïRîi?;ã¥Œà˜‡+ZÅÝ„}ŪP£þé"¹wØU>y8&.pƒ•'*”]›V’èÒxžlþ²îS µhªÒyÜ u‘Õ¨„°ÑÒâdOWk(|èÄÓ„¦| +Æ|ɯÄ\ó(úÓl¤Ÿ´ý·Q‰–“æ',úØp=ö Œµ7Æó§óÀ…ɱ_"50 +уtû!PÜÑ$ kMN"Ø^U.w9ƒÏd#|~žè—H ã9Ÿ¦\VI§ûG!}¸‘Ó ÓŽ2,ºKH‹,•zI±ûs?é—,Ìæ¾~•™ÉS;X(LbC÷×u3Ÿ‚jcèK-¥‡`þ¼:jìÛÇøz¤Û‘j¯S“{Áó¢×:j}E²ETõw0ÃÞo™"”/áŽ^¶[ÌŠØâ{|Çý3¶îIR5Rì±<Žå^ïj½ã éz³#–r½½W°³Û~",I–FåëLÂäЩgÔT)5ÁsŠ”B$‚Ê߈qîÄÛ³Åÿ%vOó¬$uv YtëyXÍ(cÙi`ÝÇKáÓ†^͸èU®’÷“X_Zì)%z,©&O_€°yJ‚. z ²‹é  QØ«èTŸÃõc±SôšNå”F×”,¶¢ çÝ´gÅ\‘jaï$Ø|£ì„P“u½¢h…ßåQ¦HÐZ²$ÿ”'k?û_… Ws¬yøwK.~Q‹bZþZ”;`M"äÈI%àýOÖz° ì% 䇘G+8ZLø…zü¶óÙd ¤h +ìëöW[AAX;µ˜á]ÏÛÀ„ª'cŒð;b½wÞ(e¨ÞÁpÙ§ñ HÀqwÿc‡OJiÉ„åý¥0ÇyÔ:ÊZMWÅ&8ÀiÅ{¥UBFiro8™è¥‚ÃoŠ=þ' 'Ùìé~¡F|3ä±OOF°_nPþÎÓhµ>²’Xq’»«-§'À:sìg¢è=ÜÅ áÙÒŠCŽë¨p!AXXµ2Á å ÄÿSÒJKt¨ÉÜ잇9Qµ„—ãHØÃhe# ~ßv20`5» Þžb¦ÇÛd¿ùC@¥ì£û'c­èsuõûsxô‡Ð:$O‹ÕÆ~TÜÿàTÞ@HŽ1Áa„ñª„°Ší߯* ƒÃ·¢Ÿ¶¸»Î¶ÿ UϨÁ˜ì¥oˆü££ó(ÿœv TŽ_ •ÿt èöžÇÉ…6£Õ¨ýè—3ƒ…"ìˆÔãŒûŒÉöúòH˜ÿK0½¿&(ð¿ù/øÙÿ«ô\éó?ÅÿùÉ^’_}äkðÈÛ…‘¡ÕVÝ +ŽŸ Ô,6_¿ÅÈàsužÇ ”b…û—’¡y +"øö/ýJ3­˜~ü‹£ M¿rG(F×YLŽ§Å‡Åe¿ãœñ¼¤º‘_áÕì5Wå0âu&ªj_C`ëÁÌ3ÅبΛf5£åjÍÑG(/#Ÿëaò°£ŠSSZå.©ˆ[?Aî Òb[Ÿí9—¢L1H#¤/ìºG‰ /'âz·àr¼g”ŒÀ_„¦«n÷ÚZLYãÉJW– )Œ{ò#^uºÁ"yFìp“ÓÍ”³‹¸ˆþŒ_–îD2ú(fH…SõO+ä$T'ÁàT©p6ú¨2ÖÅÅ-g¢Œ»­ŽÆôI˜ã`/Ʀ³×'ÈIÁ¡-Ýì^!Üw¾bbè€çGTTþ/™ÿ8‚Qe†¯+?|ï7㸮ÇBedi ÂŒႦ}<:ñšµ´ÕàÌ(%8 !Ìœ _eUÞ:âóÔ0¹cÕ ˜fX}çZTö³ö |œß˜ à.BÆ !7¨Å¬r{³cfƇû­«ÀpÊe ª=r ‚ø„’O´ÏÏtÄCnËóÃa솒…Ã, à$>_­™¯ßül#_Ã÷4߃†;?CapMû(=óšQ_ÏEXû'W*–U=º÷ç FlÑ`ÄÌ¢ðþ•;H©ô’Švk·£\姯c]9ŽS¯øŸ÷•ãC¦ÌÎtˆ"-ÌFÑ?§º€×êAÀ-"¦ó»µR´ Õ§¼1jFï2²bØM­¬s£€=Þ»c÷>lb®eÔâq +h"ìæ‚üî1R +A@{G{ƒG”éð^Hzpò ¤ +s:’ûÕ6ûÏú¦Ènz¿É÷(´nî@s?×Ô1bËI„10oÁñpžŒi»Š§O­Vr@PGF´qB–ÙóǺt´ŽòX |‡Ù%À>üŸÿð¬~F=`e¾i±x§c¢«ÄMø™ªMŠ÷&5ðH8:bõÂ?!×h[ÜA‘8‘Á€¾Q€¦q30®ki‡ÚüBBø>£¤“®ˆ¾m¨¶ÄWç8ìÚDŒ+ÚZ Ûø@ÜÏЂîIë÷}™ôXªw¯‰ñÕ*bˆÙUІ°;ˆx”·’×ëåÁ²™hðÈr¶OØÙü¥®&WÉ<ëQ"/•¤ùÆ-DÎd +´•ñš vVb­ü|F¤‰ÚþçŸS&ÚÀÌÂäLsœîåçu ¡8(éHä1ýUkÑ^ú?»ƒ5áÏŠÚE¼‚˜ˆ¾Ü'“Ò‚ +M¹¿”ý‹Ih“6óüë÷â ìdzZh3Ô$ þlKh7ÓAûá˜R|¤véb«Ž/„Фs“ªË±Û©zF%­oÊ +šØ´¸Íí æªå…5”Ø ÑÖ s—©yÊ´l2BLÈxdXkC2_ ƒÊáL=TÒFhëA®t½ð×Qyí™qT*EѸ†×ìàbnª¸0HUÛ)­08íˆÕÏ>fS=Ì&Ýbn§Í`B}ªqNW.ÆfHWû}™û} F+ä‹vîqFÔ<­a ÿ|¹¸Úhç=‚N(ŠT6$ ®hÇôC?µi Gà´Wä©o9~ûzºàÎçoRâÙÀê_¬ «qàøsÄ”Ši)QWK÷×Ý—Ãdgz^ó´5Ú"“ìQ€¶DìmƒV.9Ñ}4ÊŸÖcLù8W‰›f! s0Y~Àðyÿ¹EB’•Z¦†ï¹ÆðS +ÜãW'ÿ8•RKÕl22ª¶g©z¼>:š¾t\žßþò+ó§¿âk*!Eܪi(ÈNV„äF^ÐÉjNw¡Ú»2 +DQ”ñŽø._› +Rª´R Z©9 Uyy¦ážv½€§:l¾x ¢ ; +Ïóà™Áªa1ÔÆù€m»ötç‘„öáÚK„Môú¿¦­åàÄxMžpä‹ŠžºI™Ë°×¬Ïˆ?Ÿ±I$lv­lÅÇqrsòMK®% +g3lm?˜H†££—ýöÒ?¢`€;‰Ø??Ú`íai=S€”²½Ê~¾ª™‘šë ¦Å^B¦Ð¢júµÙUM ¡½4RwD Ñ8JúÄ Såþoÿž•íõÙÞ¿§´º¿aC 74Öæãùá`ºØ.ÓýRüŒ¢¸üITmV&cNX¸Þc'´#¡€4tä wa^ÑY”ÇQ"¼£Ÿ:âáÂ2X¥huDüûÀ˜K:i¸ï¼ü…'õ›;=‡Š…°|9há ±Lt!+NéÚ–VܲùΦmH;³ÄM"{.C¥ZØ•öYy–8cÉ8NLõºC;@{ ;b½_˜ø×'‘’j‘­~Ýø¬ +{ Æ‚ÇP5 ,ꈻ„L"ÚŠéC”ì‹s„¿Ä]îËÍPˆÔ?G3Á“ ˆáÀN€p¢Ü· žCþBûŽ¶b_ÑŽùÒ¿í Ø•aÅèQf¬™óRÏ lF”yÎsÈ WQQ‰)%úkÖI”:0«¡H7çˆÏ +€oo›Xë?­^86€åØh¯ú +½ÈÑ>¦¹-¦¹}ÇÓ•Ÿ£ùˆÓÒ*âŸÒtöyeør< 5#¾MfûuúÅÍ­®âi;ce7 GOf$Ö·õN命 ºšc ˆûu"’5 †»'|Ž«ò>fÇ´Õ_TºÀóÁ»é52=Ç>ü`®õ‹ˆRSytÝ´ÝPC>”Ý…õ¨Ùõ3L(‹%ÀP‰‡šeWs]XœjRû× ?˜Ã7±n”>D//x1‰íH"†Èð›Zd³…ëd #ƒ9¶#5¼êÌF ê{¥}xnPÓ?‹¨¢(ôÉÛ(¦ð-µ‘:J_™S÷l±ü|gXšvâE·‹ ÆŽh/.Ш§ØßžëÉ¢Ô²F– ovåÕZFóÇ­”ýJÎÛç;è/ \Ï={2‚‘Öad\¼»>²Pè)lt“u5[îfk?ó‡ˆy²ó¯Ó>KÔ:QÏË=²4fsŒÔÝ  COk 9ñì´×ÜᦌçŸ]@ ­KƒÝþ"C:"Ծ˜JÜ”uÖP‹u—–ÄN,.‰#ß#¼ü÷ÂïQzdÖt+X÷0¨µ7âb½3’ãuZ{µ¾Z:ünŲÉ-rÊ=|Z+-1g^„§•v]ïØ‹ˆ§üÒõ1/C3§ŸÃ0-7hÎu¼ùFQM7ˆ¢GÃ¥¡ÁGÄ]3˜ÚÛï-ôþ¤ÃÈ:#ïO¡WÞŠÛPe Ù;¶ðu“&žÄ3Çûð>XÉh½??1Ù–ÁóÐ5§â]-µÙBó:ä Þû 1U]󰪞1Úïë¹Õ‹ÂTñÀ A¤ÝãÊkËH@qΧ•ôƒÛÉø^OäܼCƒ±ž"]îŒnªX= WÌ`Ê™-(^(x¡ë9S¸;ºDäiÁäWY/T}¯F¯••x·øM–s šúBGå"’ª=¦ÜÑ’"1Šü„u0ïñˆÿ!"?JËô³H.€4‰zDûÍžÊT7©·¦}Ìÿñº+”æu±ûˆ’RÑ¥b„©b(rTqì'CX£Zñ(RÑð 韹i´?ºblM€Ïã\™Ðp!þÊëÒ8§‡KAV&LX®ÇYÕëÇ¡Ú¹y%ø¤‡|³>?çUÅ깿éV¿’nÍ£rxÊ΂îè4 Á@ê~÷àg¥^zbvÉÿ¿ÈÚP\‹k ã^@ü½ðÜGDTs[ÒI›\w4/1y‹f¢ôÀÛQK)g·žÃ¾jå8‚çÔB>°É”1¨”Q“xŽ¯TgI™ûyWT-¼£¿ï/~·_ã%‚ÉS­dÏs›bx À@õUÐñ‡R‹·¯86Fg¨*}nÀ+>¨â £Õï¯ãGT UêãÒB‚û`W꛸bŒ C:º;` Òš_¤æGg0ÆÇgàÁBê™"¶Œ]Ø:ö÷·é(Õ´ƒ3IC†–3éKéý‡ˆZ®ð¾p#;Ôõ¨;,ã·v:ðEÅMã‚oÆ<ÈMðúþhë#Yå˜[nü‰R¥vÿ3PsÄŒ`Ð<ðÊ}HkÊí ­ÇhìF45½ÛKÚןÎlMøvÜÿÐè©>P3®Ø ¤×ºLYÍfsm¥!òñçwŠ§éæèHþpœ9^ï~÷JŠXd¶A2ÿ#àǽñ{ªÐÊöÓÝ¥ºÏÏ\˜©â>_àù8clèä”ôC6¶34Ëïlç{lçW5­ÊÚì+õeÜã…%ã^jäþ"zÀî5ÿ±˜¾†l­eONGGY©ë·/ÓÁ=º^P: ¥±f1û +¢£}Düóé¹nÿV«Í”åàé[óì :­P3‹ü£E$ý ÊT¯µA-Ak¼A´qÒ0q½­²‰Éû‰X‰ý=ÑJ„Y#Ȥ‰(Ï—UÓu…5¥ëȆ¾ú±éÊ_çjĨWþÒxÿ¥­#´..ëIúø[ %¡Ø,ÌTwæ;¸XBÕSšŒü‹#%75Pä7_àçñÎF¡” D"OP^­p4©Þb_ݥϫc*»ßéý«tŸ[ÕûÙ¡ÒÎ`oW™a©¦mŠ>àïz÷¡‡0l½âµH¯wÔÔG®*ÔÀŠárœðßiö±z¬Æ÷´ág±e„²¾ï‡mÎnèòw®_‡p”—Ui€Ï+âA™·w[Ÿ¸NÙTqš¬ ©{ÀM^~h,'4:!Ñ: èIìj9w}å1ŸªSÎX~¢Ov‹DŠîrÆ"#áj—Á`ÿ)b_‰Äí>ïtÆ(Ï„\‹Æ*=g4VÛ!ÆE¬©æªœWð{UÒä'+ÉBÂ]H)ðB©"eΓzrè±Óâ?úqÁ¹Žœ+`;æŽW?Ôù™(lÙ¡é‚N©Æ59,Æ;ÓÃ5Uu ;FÅæêsÇ µ3H7D”;½ Ó¤eã‘…¼kã"$wR5Ç+†°Žs—H}_†LzöI½@ÉJNùA[$¸ü)P‰ˆ² tÊW©}õôîë¸.BTF)«Iò¸8}a˜v¥?òµ›É`·¬Åžz{3#bo¯îãŽR‚>”ŽÍFij˜™ Ò +ðê§öY~®D ê¸Ï:¦Œ *‰8ŠƒýRnm±]¼giÖYˆ8ôàž–B˜Ê<+8€äÆl‚8púþAÞ˜ïIÙÇŸãRsdð—~¬L¨¡]öá¯8ò+¾0— !÷¬ݺ÷\çH•M‹.a’ž(êùÁ-sW—ïq1¦è1¸@Mà3Êod꜖YJ‘IwX{Ga†³ßu)n¨0X=¬}S®ç¾]V„Jowi7ý‡÷GD1!zÐxg"Y¼ˆà¦~¯´´»ZÏ‘àmÿ*SŽ‡ùza Ug …c½Bkc?ç¹½=æ΀÷Šp TÐB ÷‰~&"ú“@ßþ;I$¹ó(§Û&¿ý×ñïWñ”|p¯‘EŽûUDZŠ¼ ùÔ²=A2PœlÑVúüÚ øz/Tg^(<»‡VåxhÜhnä"™®ñUÅz ÑY?D¬¢opŽûýCˆM@S\sú aIÓ_]®¦ñ Â#8®iÚ^àÀ~Óú|ÈÒN[¸ŠBÿŒRæ‡!2?"‡z‹?|@Òä®õžà[Ì7‰m¦ù—:tîàf9V**ê`K°>#¾¹¼ôåÁZ+èÑ…ØQ .øÁ;.àe6R¼ÙLl$ ÞL ɨ• @v”¤(Mà#ŇÇE +ƒ1(´h=8®™ÉXZúAéKÄ—AÕi¸1bhÝh£Ešªˆ0úËy¤ï1•¬ÇÕYLõ~› +¹¨ˆ>_¶ôO;â¡'Z¬6EZÝñc…å€Î{^îWøb©w`~qK¤nÉÞÕË:Sñ™©¸(D‡Ô‰£ +÷®&4ÕF»¬C㨂nûŒH±™G}EÚóüpX¢’V]m§Ö …V‚h£p§#bÊ~áéY$àäSâò¸l0!†º‚¹]S:Ö™qbÿæã²îÃêˆjÞBxì‰LC!79Ããé>¾ô'$nüÊ[T@U…a˜¥5¦'ÇœŠŽSà:û!÷_žÔÛ¡úº/(_Ê/AïŽÓHÒ.éŠ2ö¢zo;‹‘Ø/¹µáÀx~•(ÐýSûiK¤*¨ÔJM¯XùB+™Šð•Xô'vH+´¡ªáëñ+ B_«¢N³ïD C¸ëa¸6\J¥â¡™àÏœGs+Øî¥'…V†JEù:~rüp²u¹ÎŸCråÏ™HÆ”`Ê[C ~| +/ÈlS„x eþž—oñ¥è)Í°~5†è´‚W(õAŽÎöÞÓHãîÕLM³ÏÀU*“îg½½gúÅcfÔ~&.À¯/D|:_ˆ¤qìÚu1)fw"PhŸ9S=YŒ6Žð·ã\‡8v¦Üï%$ +‡Öl ”C:h“ïK~àŽSë+QS#ªiü°£ê}¢öõ·çzžðÄHhÙVK»µû<…7œáŒO»è¨¥1(¿Ðm›¿ký!ª£n±Sm¹íŠ9ËÍB«rAug~¼wfmvÚ—&ã¦+-(> “‚¶¸ûK å’‘]Ä­ÆQÌR(©|î²é%ÚëVŒö¾)ÂsÜ1Ý»ã=ê$ ŽAWÂÂZ1»Ù·sOƒq< ^ ú~D±˜í5u·H2÷Äu•Š „_ŠkOY hßïUkFÍ M/¸ Êù+Ž»ßÑ5¿@&ûâïòÄÅíÁÝ´“P>lh¢0­¥ö¢ÔF:;”W¹ùõèt?vIwCB9"j죓Mx–t£¥X¡”öG/»ý®…0õ-âE1» ªæ{Tµ+©1Ò^w.…°ÏH}µ_ÜÕøú Ÿ½úÆ`*ﯖái@%Y½j¬Rö“µão÷(öÌ|à¦Ï÷§ƒ•Ó¡œÞ]”:»€^®'Ö£‹¡x^ï±±wË'’f÷×õÉÀÿ/²ðÿ•»~ƒØõ{b½ÿñï÷ÌßþÍýÛÿþ¿ý—OV~ûoÿûüÇÿë·óßýÛÿåßýÓ?ýýþ÷oÿï¿ûŸþÝø÷§üOÿïßýãÿùwÿÿÿÿô?þçüþSNúó_ü¯ÿŸþþßýÓßÿû¿Û§øÃÅ=_WðÄþgþ7€#¦÷VsÈO\=ñ:DWDY‹½ä‚Ö-XhSÙtAVÞâoÊ],gÏþ£½þþfš¯ö¯âT€\×µ’Ÿ$ +öÞýûÌbõ +~Vg©]ýÉôHoµ>ó3ªªí†ú,~d­®â÷§:"(É€ÁªñÕ‘P¯Ñ4_‡÷¨/F?Õ‰àø­¢8# +üXíM‹gPBÊöÆu‰}cîqg8²Ö©*:ž—¾Øf:™bQÚßäÞ{6¢?FôúöÙÈño Z#bM÷1z9c˜çÿȾîRzûÞ‰[Ù…Üööoªô4¾Õè‹Ý‰€°#¨Ðg"Äh”К=#ý3î¤d7„”•hµÊKˆ+œ„»ˡ弓콼ö£ÞxÛ(Ü¿Æþ*ªªÞÔ–. VT`¢•øþ-èTùoTVž Ü…v 5QsÓè*7g.%$ªFlŽØòïª ÐÝ !âTÙö_6½ˆ7c0tº¿ŽïrŒH™b€ÔúzTÒ¬¹NltˆØµ^’†ªeih•+`Ü—šN$%óþŽuFDW$­!~ ½*&µl¨}߶àú°hþ­`þ‰[îæf™íýwŽZìðô¬* ~ý& +{BÓ; +~zçéó猵øy§—søïAì—5Â<û0(J踳Ô'ª»˜ÉS’N \ƒ:??ðÜAG7ßÿêIú°¿ôÎ,Zü ¡<x³§ØïU˜¿I¯£«âÙ€p™Ã, ¼¶d–ºhùsÆQƒä•íô‚Hñ +ýzt}ŸQ îŠ÷5¾NÔP×ò:Ž´ØáMàÈ1< y)ûoÓ +U‡zÑ©1`  TÌú‚ß9ÓG‡enðÛÊXÉ;\›Ê“9 :„4mB'¡¹ ÅÞñg„(Úcßêöþ&Qw¤¿C’ÁÍ«âèÔÔTs€A¯ZØÞQ0I,w×qì!ãS…á{„gB†kŠýúð[ÿpM0(@hŒ³LãèÔôfïUþñÓsüÄtßËð3¹Ìž¸\ˆ +üÆûÊ›÷ë²K»®€?äE°ÐÎèÙeÂÝ°WÛBñ¨§qê’ë#êÉÞfñŸ½ ‡•2_\JÝ° ì¿îšÑ\S’ÖÅå])~èòúS,GŽÌoÝÊGP³e’Á„¿h"”jßëÛÒö‘ ÃÌ‹о ˆ ØŒ‹˜“q”:‹8y¢ê™ç͗̽ R`”EÙ’n3û:²cwuwÄãPåQ¢¼­ÏÑsë­ÑùÓq*ÒØàÀ»=Ètñb’±\ÉXÚ|:ï˜nVª?ŸÔˆ6”AÕæ>îíÓ¨ýŒvC§‚ˆ¦ñžRÏIžf’§9 {sóˆ +´2Eíì’QÈôã¤u3ô +c 5T;­ ƒ)c×Jb¹K‚zD¹¨cèå]¢?ÐÀQ=¨1>ôw‚•{icÅg£"Å^BþG‡Ñží +ài4@ñ®ã²¡gÄsS9ïôô¾r|e8ÿ('Þàãã½mÁã…¬·….vy´x#bÐl6B6 ŨÿÀò<}ŠTÎÝóЂUà!ãD‘‹‚þ*Íw²ÕPÞ÷;&-MÏÔ„6ê”ý-£L9{Œ€t<éG*òÆ\Ëo Ez=ÐÅ{„>/½S©È×+Þ­y(ÿL¥I׎OPaýVÆýþ›×Ò'Är%u³NhE¬!.§ì~Qè(ì ?à¡Å¥ètLæ&½Š^pùu\g‰jæMôÂf:  xŒDŒK„CÄ–K(¡²^O®ä Ý+µòùEV¨\…FOIúÈú-çaßoúÏÐYÑ4— Y£Œ }í¿ôŠüé¼Q áB6¦ýJz(Ó=ÊîŒ Ù¨8Q¸ ccþÐX­÷ë~Œ+íKõ!©ïUÿÂZ¢N¤ôD]#ª&M5_œeþ·N¸÷Ÿw;{;*‚+@tèÔ2 !e‹Ç/žˆ®zÛ¾ü{G ûl_›IêüÓð¨Ú'’ÜîÂĶGdŽû‹òšþVÕ‘‰‘褿rAßo]…yÇ–Â!ö[ß"RŸ‘Šû½´¤8NkŠ*é­è`È¢3w,9."Ê~'³mÆœûÞGTàñ:éÑ2®öQ¾wÚÓãeŠÐ„Þ};ûtÛ#]nhàÐö- ß'î¬ìÎU×âïGÁÍžÝ~®Š6o·é×1 h~¤èËÑ¿VÕVôëÓVô<@¦XBg9P9†S- Ðômíå}>cV@Hw,õhÐ@„ú´ƒ»"mìñs˜Õ9÷ ôÿÓ3O¨N•º¬·¯ÓØ0ì—Cb£âŒØ+ãUïäÁÚÄŒkhÈ·SÚnD“TtÑŠˆót°m_¶÷¨ç,&¹)kŶq’(¡q¡+ÊLŒƒ¸Åè-¢ý²×Ôžc…Ɇó¦jQÏŒ¾ñ£ÚÕ㣓ė®¤0´{™ùÑî…NaDKɽ±ß#²ZµpÛNÑ"|‡æ‰Í|µˆªïówü!ÝZöSò yè?DÁÍcø·ô7ÿVû8mÏ£cÂÝ5éÔR;‹ü›tpaakFØÅgýéŽä.ûÝüùy €iîärblÒH¡hêÿô (%…>\ óå>zLr|ÏyÀsƒïFFjÁýNôØäö×@ÊšN_¥]÷dB™‰}¹½í>•ÓþB@©úsÅ@½M”­‹ŠV}93.÷ãÆòµÏ„_ë…ááP–#¨§œŒkX‘¯K¾ Æ‚?×|å mÁÃä¸.™3H™îVÅ¡v5©Ãåui +Îçãy#\á˜PÝÄ£™²ßÙ÷Þe^zèuI¨ã¯ q HøÚ†äá&€s¯ØßdßBPO½Žá*|P1-œ¦KïA'åÕÐåµÒisÕõÓ¶®Ž$ózO0ÉÕΞ­˜‡ªÎy|mãösÀoy$ö¥};w4üf€‚™ó_óe’1¢ZücÔsŠZ³ØÍ ËI2-üÔh™€T"¨»‰Ð}§k·âÑvMç8ÕÂR±­_¹ÌájÛ¥áf»¹€­ù"RÍâ©Ñ/&ÜuÄ`ÔϼNIäwa™½kjkÇ˯D¸OÓÍÌä3Bt]_?Ä?DÙé’)‰mv W·Ät}L«_Ññ6ê¨@Êñí€t*àø[„gê·ÄÂÀŠn?§eŒ(vë³æœÊKÒ°­É~A!“Ü>¢;¿C-l5Ú׃" Þ¿rÖ‡#a=Gö™Ö) + +jE+š*ÃùW?åæ?h¡µ"2aeD]Ä´¦ö÷ã ¡àïæÙŠ-º2àšˆŸÄ–¿×bôo~âߌoM —µ¦FºêŠº óx­«PÀãu ´ˆÕ†ûW2—Ž³+'H + ‰û?h’wyQ~Š`.\dY*ñwÎô=JÐû‹!‹Ns¢‡{6ìjËë]ŸµÏˆ÷y›6Rh·jî3â`±#(ÿ#Ðáxƒ5úâ]AKRBì /І@ +8™× ¸f)¢Ð¨âF¯ƒ¢eÃŽOÄ¥h壆J«Lü÷_-Öif_<ô¤顪2XíJ°Õï‰|ÖÁu–0H\;=Œ¦0{£+AFEˆ0#¥$-ç%s*ÑrʉŠô À$»îYTŠ¶ã‘~Ä{×{Þ¨r©N£>«cž7]¦‹«í3"¿Rðß?üy×QBCÎY’¤ÇW–öSÀÒ.ïNTÞãD}ƒ 6\hmƒ±8ÝY¡“ @úÉ©O,Îv²×ψܳ!ÈŒéRGÈùÛqžL@ô°„óùÏ–XÒuq šo¯ó{ÔŠ÷’"éÈ1sy5jî5Ø¢çà#Ø?.íkÚêú‘[v+¦æUÊÏã¦\jŒï¸ÚOj6Njö$Oµ‚ÕXý…-nW™JZ¦wqÄÏ)ü©•G|âUÍC…Oûòùø«¡L+‰°¼æ ð戭wÏY!Û…²¢+tö‚I>wÜFcá›bDúƒ“»¯yÈÌcŒ£E{$$øïÞD¾Áµ{Ü ýUXTMðBð":1¤Ý4W¨Š†)¦Ä¦]:1Ïψ$Eª©”ȱã R”Dô@éiô€]-¶>ËO·šÉ3Æý•Ðþ1 +Ùß&Ø ÿ™•ôñ‰±eUAaa ¯²ü²#žYÈÿŽwãû&‰cœq‚€æCûxÆÛÖš' endstream endobj 132 0 obj <>stream +}]Q x/Oky2؇ö +Eø¡ù«¾½mô·û6FÈaWQû¶xÇv„=¢‚6ûu~ +¿:?›4^vÄ—ð›L+§w~tºvø‘â¸BGk‹=ê:› ðJ6wÏï€Òš##†–çéúˆÚ»<î–øZã1ÛÆ©4ÐGÖ€$í0lÝGÓtá|ðõÐNÞç™Ùã×_1r´Ò¸kZÁ˜QYƒ¶`Æ-Â’hÍfÓbõôXwÚ‰ ±I%.Ÿ ìaBÚîw,û9›ÖžÚPþ`hÓõÚ©§ÑŠX[×7ÇkÜ;-v™ß?ÿó;L‰È¤ÀrãûA®‘Á4P(_,Ê]Sî["|Dü¸1~Š´É­f¿Ä>Î-pG”KåÝÒß.½*Þ•Ä1ñ|lÌÓÆ3gºÖ;MhÈ›H®jÌ;²±}œëH§U¶çB·–n<]ç 5½A\§œkâ@%eaõñ2©ª¿íÅ# >òÌ"KRï£îPûÿúàŸm&µ,Ý,hí×gÞùÚq™ +Ôfæ$ B—Í,P‘4³®ÐnUóÒ «Ùºüðy?T¦ùÏŸÛ-CÉŽsVòDÌ7¢Ÿˆç8P 1ç׉TKa¨Øïˆæ_°&µ½­iºùKBHïÇ:'|Ý(ÿ&¢ Ûr-:-OlŸ#K™3í$—vÿùå^*‚RûµXÇ)jZ´µ¨ó£U¿7~a@b厃ØuÐ;#Î~¿A:…JŸÕ%‰ƒIuž>êR'Ú$"æ6Nk΄­+¨,®žÏÚ?î|ÇSê—Ê([Øž ÿ|îû)&Œøùs`ÐvþY%zä8 X&A ™Êùu|Û ;¨©pt該›±7'¢T#¸cDh €™)>"žˆ™ƒÄ|fmS4prø <Š ©ÇF‡Þšj”öÞ•ú¸ü~*v>Sc‰«X;SÌ€âkeÑ›\@r¤Ð«È¼ÓD(ϯӔ|$ˆçW™Öí‡0ä ݘµ%M|·ì§€ϼ§Æ:mðïQ&£g”žáSX'ã$•©Z0ú´ðÐF"aERšR €&b—ùžç9^þÁd|f`#9¦¸Ï> xdŸ+þà$]Ñ<§©ºïHv©ýžèöáÜ/û Û!ªŠ¦,r¦W0[Äè¢ÌçHsìÏi‘ÎD EYæ<k£ÑTÎ#õJÃæ=> \ZTz5Å?Ÿ¹¬Mµ]vþ‚ç¿P­˜qGƒ¯b…Ý/.ïZwÐ*G $Ò>ÊP¯äÁu4°˜êôž¹ÊœAG­’f$c\?÷ž¯åvuÎ5χúvÑÁ{üs»¡dd’ÙfÔŒˆ¸…FÞ-¨˜ +³'BxǾ‚òV™F5FüZ¯FŠ,N+¢>=D6Î4TÈ ïÊk£ý…P„ókì:9ŽSÕváq(óG„½êœŸŸâФ/øõ”¿òƒ*þylÞëÔ¡o•÷@5³?‚gWYp5Ò¾d`~XŽöúñïiÍ)ÌoŸ±·Ê:ÿ#»ýýçæà/Qéý —K±¸Ì\ cû%ê‘Ä´¢g‡© åŽØ[ÈbBŸWaÎoù½¦2k"Ô… +÷ã8þîûÍáwo@×h$(‰¼âöûCÊ-Þô¯,ÀgóNW ´Ø˜ß¿R`‘"ŒI3/ž÷“vÿ®D &)ÒíØ;ß¿¿ë÷©ìoúÀÜÎgt¬@|aA²‘ê‰ §ÛÝ0B ßšbÊ€(™Ôç~'½ÏIc”µí‡×­ †U̦‰¸mAÝÒ£õݘñÝà @ó¯j÷vú~Û¥†Ï—*J”;úS2ÔÈ¡)°ýýïÞ2¤Ö”²šêT<ú4û@«ùœfuYêŸùq¾¥mŸÇ§ž¬¡Å9¼5_K‚©þàCÐÏCp°]A‡ lo¶<¦«^î:— Yi–¨SÜèöÒþºpàÞ‚sPé[ÄŸ +Îé‹61? ‰j¢ ªFUP¥óC©§Šd»<(¥£bña +bÉN}=|pPK¤³ÃzâꆠÏ4~ˆP/·©—»žƒ~øŒbV»ÿº” jq‘ Ô Ðˆcª™J½|G¦¹Dø[u¾¿òi Ú4ŠZ©òFž}Ç&µ&áƒß0ÒóNàôI‹ùµX,Ư3¹Mb­`zꤑ2£{æÆyñ4v‹>yd +ÐÄDXNÇ.¤~PD|©ÊÖ',Ûý §¢`˜Ô5Ç3Ca;ú{—¼œ»°ÏÄ(ë™þCÄ3¤h"£ƒ²ï×`÷QÈ"Ei‘!¶„½âF×iEºhÔžº"[Ë¢ÜÁGÄŸO®¤y³©?gâ’¼õ‹*¤Š‘»¢®nvß#ï_„?|aËaK¡ZPλû÷ ôèç~='ª€~¬ß#¾VH+Ш›šo߃FÌÍöÅò7"v~iÞWY—ð³1X·øqŸvnwÏí~=ʼnêÐ8ù©Ë«z† ++š…4h‰`X©šVˆ Àc=g2±y&ÞšFh¸HØî_gÊŠ}Foª§ÁgØQW9WŒî?›Í£$§¤IêHÝ +¤eÌgqzAc_Œ^„Õýî xü ™BØ”ù,Ï<  ÏL=ð&qˆÏ~ð@ç®ô`‚sžoAêñŽ=^ckž"çXÕ+SH^Y +Ø3í€Gøöè­Þß·£ŒpŽöîï;EÜOQ̦À2®Xt‡Ræ-•1––×å>Ñ&  nMM+Ð5ˆ>º®0Úä=d{¥IOŠdÄzyK=Ž ìLwW³ä"#g6F“¬azÔª)I1¢¶] òQMJœ—Fß"‚~ZZVoþpœÚ¬€‘Ĺ£Ç 씧þ3‚÷KøíÒðœé#ꉇâ^<œ ƒÄÔ¿¯¥HS”þ$’x %¿“’ú(ª£ò0Þx±iMñ¾ðÝÇùP¼1s™>ýs{l v)G²\† ˆÜ´Ó ¾(¯½ð¹"ƒx2ýˆsC{EGÅK!K€Í¦hòŽˆÍmÁšKÁGÇ_B‹´*Ѓx›¨`JÑx|ú!×¢„z3g ™âÓ~úF +¸£q̘L%Œ@Æêýv5hªpo\  ˜·¼›Î!ÐÔ^}?Ì´þ‘¬¤‡ ŠÊúñ8;ç ¼ë|tZ¼>@U ?w +»d†çJFö”÷GÝyöuzp;*x·ç¹}úÛs=NûÅ’™90Cènߨ*îR–kº?jwwÜcûgįźµ7¦ùR?¢ÊŠª#¹'B7ûq>,´­Õ®ø¦a[Å°_Hú.0ÿ?«ÜR¡º?M¯òÃqhÞŠEªöÓW„ÓC>}ðï[s:Öߣö:ZÃ^'å"lè4`†H@5‘Àùø5OÁ™ÀµdJ)J6;/¡§ §I•#(Ž¨A´À¼ÐÂmÀ¢¦2Èò2ãÕd¯ “=Ïú¼¡•ÙÒЈ$š9Ý10`øyp–G—i&ò¼šýV_€vÛu‚²Œðq Ю(5ÐTAŸfœñË;PPlã¡«*¨ÑFùm?Ð[¾ÿs¦4+} l£æA GÖ>ˆ€¶èÅ…]øöü!Û‡¡zý¾´³üF]Qœ‹ÔÖmu<¯ˆ4 È•AdÆPçŒþ6»"ÿp£o«s‰n2»ê)gzóë<0FºéÏ£ZAÄVÔŸÔÖý·¿ˆù{Á²þ?¹ï.úïIçí8x¨‰dÜEAÖáËŸrAD©‹ñ¼†‡ƒ,gdÒÞìÒL¶&ñ°áe„´„Š®BÍ1ìƒ2þ,¯l¦rÂ['·øš1‰Ö¾ Òƒ$\Ø$Ñ\¶¼€ø‚qKÓüìÒµ=)X«:‡;yqÁZ3ºÌ™ÛGÞ|éñA™ÊXQRÕË¡Aó/)Ù-N¥)dw|º®DuÑÏDÉTF:ÇÁ%–„y¼¿ úÊUŠ\>¦}ùldçøSaÞjGwve¼ Ó1O>(‡ãîES¯¡G¨Hx2mn¡: +<ô)ó°Ò¨€’Ašê0PÛÅšuUç Ý%Š³ãd¤’?>¹Œæ¡Y§4Òê5ö#A«MõßYQ‰EÓ +âØÔƒòßÅŽí#`·R±Øº¡„…" +¾ô_ÞEBp³²$QJ”¨°É# ±ªì—(ãÊDçª2®ü€i? +[õÍÜŒºÎ‡zºÑ>©Á{ÙhÚ?á.Üú‰Xþù¥éˆ0åå¢?Z'}71*6².æ:€cw£¸k)“%ì"ROpÕÍ£óž{ŒN4ÂZòn§þµ/–"ê ª'e/ ó bÉs%W äy\Bg¤¢°~Š•8§ 6n~ðÞoðDÿ'F½«…ùÙˆþØTý¦"¬£Æ‘ój™O0iv!8¨ÊëíÀùûûu|„V" jÿjºÖ¨vÍ:¿Ÿ“‰C§wX‹²ª«"ö÷Œ†™ßU—x¿<ôÜŘÊ0žÀ»·ÕÔ\܉×hÔÒaQƒ %°í1ÜnŒ el7ù.‡¢á*”·åLX Ì¥þÿ/4ˆXÝýBÔ»¥ÎÂ\G'„ ÐßA7ƒí&vÄ™"þVé(ìT €-BÀý…DÝAO´ £ToK¹³Ø¶€¢‹F;Ïu¾Ñ. ‚žÉX5€?c/+w¥íö´™$™ß(ÂÈÐѸҌçwgTM臇1¬š?¡]Ú»çgƒ¥ÖüŸcŒ¹÷Ë£–Íì>¶=7e?rVwæ Suî‰üÕzê<‘è‹bháQj0‰ôíåo…:0 pf ¿pç6d¯·Û4^ØKÞ!ã7ˆÔt•+Ga+aAß9x‘}ç%ASîvAí§o9§öÀiíã SF듵ó$ÐE*áN6øžXfW0+”¼%*ýI‚¾D£´Ÿô´Þ®îð +*úFȇÞõ`?ŒÊKd=ó¹™ùE÷!Ö˪pÖtË»\R–½|Œ€©<‡]Ù»’‰’žÎý¬£^‡Ú0ùUÁ)êÉ¢`ây#ôhfi¹ù+Ê–÷†Úlæ~hÄBCWç_nñù‚A¯ñfD • -̶4bÀóºŒáÍÐá[s@¶¢¦æ¢kHD(!Þ‚¸^;û"¿%©ÁG—¤æj%mñº¶–_UÂ^}“úôûå´¡ºã†¤O즦OV¾ãØ`!¯Ånþµ7õûQç T ÉÿO§CnŸ*°—QÊÒ$Æmbˆ’Ž¢Á/@â&XœâÏÇþŒöØšXæ¡ ·¼­GúêaIPP¾fŒ«|'£¾8Ò{€NÿH¼.p`¾ë(F?(TÎDtA‚ûw½ˆZ™af6í׉²ýý6­óeàˆI\ŽÄcųÉÏui|ä¬ä<ÑÒvPäÆõ#£$Àqu!í¼:Ì€s+PMåˆ#ª5ºÈ¥<Š> !¼H±Šy$yûÌtîaÎ’Ú­eH¾ï¬rµ>[ òòÑ'a–æ¬à- +iŽäI5äÞ¨0^ºú'+©ù:"}¶Äi‘GÔ¨!ìlFt(f+!{5 å/tgO.{`Ì™k AƉø‹Ž‡ “Ë%êœüwsj+î\5û`¼èárW;:¡Jf^Øoꌂ¢CŽÆr¿µ}êã@1mU”¶ë]JÍ«DMˆ££™ò_?ýßFzO@ÞQã’,¾¡2(‡M?õNvt¨lA*štƒaÍø°»hèô +8¶¢·âòÄá¦Ôœv‹†7ìï/jZFÊ u£ +÷ï¦9jæU÷R µÀI2vÄÎJ.®PÇñŒâ]•å‡cìÿ¿¾|×ç b,ñkúıI¦{$øö˜@8}¡¨Ÿãª"ü… ½{¡’î(°u¡UÃîçQV&Õ§1]í(ÛÐØ»õ‚«`2¤-&X$½ËÍh29ì@"›ôP?Z± v]ð®òžißÍ <Â=)#.çG¢‘¢¡F£kߨ?ë:vZ¹€š _Bz,OyNå*ÏöÚiØ;«P¾rSòEÒÁl‘ °ÚoÝЦ;ø‰P\Ì€=á.EJÚšo¿f Ï£œ»È£ðæÙY® çcÝÙH+U–é +ÿ½G¿„bQÃhÀV³´Q cHfTæ;œ—õsV~*ÎÚÏ×"X êßµŠQ¸‚5#Ї‰9 +F˜}°^v€—S§Š\Sʼnì0J§¸X(Þÿ^· óâÌåÓ³?vW.[[ 3‚"æ¾7>ªó€ªØÅò,€}qIìå×q¥VR™Ëf¡– „@ãñˆªüÒx%® ×âC¸¢ ‚Ê!W«“åÞAõU´ƒÔ.úˆi³G²#mM™Çý2Òkß/ãX椗iÕåhùþ•‰sOsÞg9ÐÉ[éõýç˜ÞDÐ숵.Óïè<öv£™L;÷eNp†ólÃÔ¥tùªd|Uý²^ðMZÖxÿôsëQÆÅf¾€—B\^Œ-ÀäQ7ÿÅŒ–I¥*Cp+ÇѬvz¼ž/¬n•ÿ +Ž.!«·`öæ©#wŽ1å3’ï2ÿF¸v¨U°s5Ðw\ñż yÍñj«E³¦Aq¢H.xæ»æ.ûƒ½KÆbÊ®žvÌó"‹õÔ;Ô’À#ÃoQ"éIþ˜‡€T²¿Ë_U°}@¯X¿ë< +±Í®eÏqñÂÒê5°áÆä]$W&AAEÛÉïD 3ØG +§5ßç/¦6Ͳ¦âlB¢»ïØ ßR×ü®…)ÍM¤ +CÄy@âÒœ¯9u'yÒÞ—¬ ¼OØKT û;^3ÕÍ(©›Á¥ÿã:4¤pÖŸÏ™vÊ NJ¢€ÚÚ“càYË‘êÌSÔ¹ÉZùÀÇ9‘G]ý>R×(‡¾Ê!.¾êxîŸMæí}®xG­–3™\óííq-j•wŠ„ê d‚tšGãV3‰ýsž¦×,æí3ÊH¨tåæé×ýFS¥)êó +aòåˆvìéLÎÙ8œ³’ƒˆXUD=Y|>”½QíÁÂþÁcyª¬íǤ+FÔuF*¡™²’*GÚC›y§ËÊzõ’yˆ‹Ü +³H#©ESŸJ€€;$ú§í¤”6«_HΑ—ï’ë¿Î³tú…LpÈø¼ÈF‰áDÒ}˜fÇ-Éë}üé)]V""dK*úw!ýÒÕ‘s߯[µúT)Û ’òŽ·'}%šWÓÎ}?2è"ê§vF@|†¿ð×WÈ4ú;À¿œ!™¢dNš‚žé9Ú¸Ýæ«Þ—=ªî@›QPIêËÄN’Wœ&xl,»3»•ÊØt—¨;¥”:?»x{ìÅç~BÏ®ï£UBC• +.Ô2€€Æ"&r8Æ¢ó a@B÷ º0 rÞ<˜uWs}zâCHßÞþ{nx¦xÅÍü ·r¦I;'XìO8•®ÃÁG ÜÄÒ”·ûjßêµÞ³™ÑA¢êÈI})|ÂøjîKÆZô4‘¥g,¡9vÁs‰Ú©s¸bznÄ4ß`16Oä+¢ð9”bœX³+´£;!L§}I(ûŽê6Áv"Ì{µ˜èq‡„Ø€ªªQÛ3Ä8‡W„€#2Œ|Öq“AÏ—=_õú^EÁ¿û(Fl½‚Ç+¶ÉQðk5²]\Ñê¶G²K˜x¢S‚NE«æ³^Iîž&³åÛÊx>Ö;<=ªJO½×Ù=.Gj¸j«ÝqdçÈå¹C‡r&°"qwù‹°{¼ù×uª«jøb+¥€5AxÚ×d=°VžG{ƒKüýP@ïE¾ ~Z÷ék^(¯½ìuöQDêQ„yð8¥©ÅãxiÙµ/êqPk˜T#Ò5»KÀ!D˜¤ õ¶40ŽÞQ@\å$„*Pý¡ì5¤`Pò¹Ÿ0ÐzNié^>å3›ëªfϯ1ÎæDý8-aMö½¼ÞËIÈ£àÝ +~h8°ã{ÍiuÄÑVGð•ì%Ò#4¹Îþ²v´¿µÝi&ñ”Ó¾ã¬1†r¶¨2ꃈý…ªÔ#êäº ³Ö1}„ó~½¾?èÎwQÙ;íiZ³Dºîß7ÂG¿»þ}è׬‘¼O¬uÀ€¨ž° wZÀ#sEÍ)Y ªÿLÙîvAýb;‹*Ù}˜«œšñ ¯š5ôïdLÈ!ª6Y'ÐÐý®Ç]uo`óex–++K§Å ™©gSüž6D€Ÿ°Ét&; )½–1ßµ…sším<äÜ¿øx:’>éò®‚ãSü0ˆa¼âÊZZR·BƽBž™Šªðû)²iS p†·ª®ÄØ7[€ý݆Å{ó +¼ÝYÓ‹”ƒÜë+¡|½ ë½ÁýÐÒ·‹¹vz*Zx¬ÃVGÇDÝËãc´}ÿùôüdê £1@V­HèÁï,2žÙbå=îj³<£¿NI„Õ#j3¸l„ÒÞ×QìzÂÃЇ]GfÚˆõF`–LÄ×™$¢Ðô»O„¶±¬ý×™HºXitÓ¼J¨3a]mEÛâXID¡›ÉÅÈ¥H*F1s±¸&½çaþLKhÜ# ±ëÎaŠtfTö¬š˜*tøÑ@•Ñ%2@•wį¥³”¥P 9'º§Î*Ip¼âñ@^†ÇƒöçÀÚ¡ô͸jãd\°"½Jù§Û3LA+`·é]11ý"#ùrâ¬t!<Ž‰Ä Pd´KŸCÿ¯Aƒ¡š\Õ» ê—ÍƇ&vc˜’¿ +ˆËsK‚Ræy?OñPès ‹D‚I„)4©öÞ Àþ^̪Q«;5wpÈúÆ•‚—£V‘>bóçMy}[€“‰RþæQáOÂþ Ôé‘úZf°„_‡x[›"Ÿü»°×‹Î^])ïîÄ–ÓWÐ^y±½z_š»>!ÎÓ/¿ŸNÞ\Á—òT´ÐY$Ûb¾Þz”v„Ë“½Žegg降fU™l§ 0$`½»UÜ-Ý‹O<èÀ9^Û1F@Ûó¨Ó6bǃpç¾IØF⯨!4°ON”f 7¨¹Ù/A¥°ù]–‘b¿¢¹§)ѨÇK ìÓäC Óø° ?$Yð¯¬[ñA]B„ÿŒÁÿ g ÿŒHÂþÃõÖFj§(‡¶6¤¯»]¸1õ€âœ–+”%1§¹ÞÆ +miÓt‹ÅY uˆÆ($kýfœD©2C[m*’ J al xR~ooú0ÀµlsbLµço=¢Š¾#+$u]"Èôß3]ÑÜo  ¢é/ ‡Œø@€^¹!àŽ-€…è͆Zó Š_{ù8¶“ê…6`ôCQâÑlÒ,?84'€¨Âqòn‘å½/±èUG’GF%ý€²3>„Uë6„h¨CÔ‚Þ‰ö( ÿ)©™¿ïGUB Ãu*åZM³`±ªe3ÕÏ{ŸÚ;ðªQaÅ"=B`YXú…¸%ÔwXGPßPñµ[Hí ‹<šÃšúÊø'ÆFƒ Ø|èð®sˆåZ4¬š,˜¬Çq³ØÌŸ~/‹TÆ•o±½ìZ‚¦R$ƒŠ§¬¹ã¼ÃýÀt†òÃŒ‘bì j‡ÊÚ&V¾¬,èTPP!NSyªLy èc­F:€¤ZOEÿì`UðÝØ«a(È÷bSCú‰\#]u‚e+ªD(âOVõ¨—iyCkŽfŸb9¬«DKŒ°µòm.^Z­$YÛ©âRdìfãf"g¶€ËÓ›ššƒ'R_œå–¢DBüŠÎz.`‚åžØÜÂP·:áÒºÁÄ´ë¾?ôå ëàH†‡‰eCðùF@¢Wu,Poº1R;&W4XF\ X»»2L¬^I;ê›ÒAöPg=Óc¢e¥1B$±Wå¨YÀ…@HiZc”½´ )éWÑÞ( ß4V®zT¸ÕŸÜ?µF@¡8l祜{×”ë×Ê7"Ô¡ýëßɨF©EP5®êQjµî@j 8O°l(˜ö‚è¶+@Ì0µW9A0Q¥¶›(2spQ¥ËñbøTŒ 9ºßa×iò +A“¨Ö@]Öã¦Å Œ(‚Î\)R]êkÝÒ®‡xhp{ƒC>H³1‰¬—RÂTÉý„g éAv7%~9‘¢&IðƒõæãL"@/+,<»ù–@y›˜Zó]+FyèUMIÅ ›0ïêÒÏXz nÁ€pÀüí5ö½DA9¤ê)ƒ.ØQÿímP9#‚>>L®áÒ=Å¢Õ|Áœ{g Àádh™BcTeÈ»Pi o}‰!>UÿˆlŒ)\·…Z›eÕg®¨“쇴sÕç…‚¡Ý÷ÀÉ^¨>\§ò Ç­ž\aWYé5û™ñùõøm¬âxÎ4ú[ß—:¤ü·TÛSIÏáϺød-‡.ŸÃ]»-yXB‰Zd ÓÛC¦¶G U¹ûcÕž¨â:Â4ݵ䥄hˆKs¨:,¹c«W qVDHç…q+üˆ8Zg¢[‰:‚èÔ#áȳå:é›`²'€Ì ªg ›ñ.µD ª qRS.ž8z-§÷ÕVs o%A¨ëš +sãnîÑ~:Lÿu†9¿*`ÈŠHÈž’R F‹+Vª8ÓÈ$u#ßÇñyð­z0Üõ…äÐgçR‚w?i»Iæþàº8†z¦AT&¼´+„©p°<*D›ü«TÑëJy±öºøë/‚åfeŽÆÜt2$}¡ù +âM>ÿuÄL¦L¡pyöÛEeÁûƒ¯¬QËQ·&Ô]‘›F&]‘+´€r)ÓÇÓ +‚+&c|¡·Bì 3Êk½v¤v£ ¢ÙãÅb8HöËËfÔ\XúÌ^g„Žä¼uáöÐ2pÿ¿Ö¶NÇ`Gn²V+]’DNš“r$bÊ)‡pk¬Ú +H¦ù*LÔžY"àaB~!Ù Ž<Ìv¢†*Œù¡8¶¼Wk2[÷ïM„`-u@Ù‡J[¯~pCèõ»ßu]ö»†‚¢W£ aì + +†p™ë@Àÿé,d¥ftðs°Û‚‘A¯óFrà{)õÜ‘ºYJE*>°Â@“A˼µfGØ’ìA¢Ì£ÝN·ÞrTï!°UC~o§Fµ¤À¨Ñ–w(䴇͂®$Ä4i tÜJÌ|$…û*jNGDžvV*0 Ãö;À øXªØKû Å^ð^ZP-<¨Á,Îñ̓Çœ¸E£}ŽŽˆ)‚ìÙ(•gO?”Œš~¨Çqž¡'F"ÄÏÂðþ” ¿ÿô~ôô~ÆU>þ“üÏ+wQOy)ÆŒŸ¥1û#gUóÝ ŠÁõð>òV9&ï[U¢~£xÛÇ:·)UW—@Ðæïµ›XÉeŨðêÈèÔ³N!ì“`£×̈(ÁC}EªÚŽbtæ±ë06Ðs~p~wÔ~¦Êc±Æ6Š¦QYÓ"ªN-«\§ ¢I=ê’ó8=pŒ+Ž¡R¥ƒtìeyfF˜†ô^È;žZ&IG ;ÄbÂ’”Æ͵ÕhÄëXC¹8×=ïÖãØHsÒ|¹"y +Ím¤‘ƒc¸i.¦ùÐà +P¶Á•¤º^BuŽŽjsQŽ[ `ñòØÂ`5ÖvLTJ%á®PÊz¶ž’Cµ©½âqH¥†…|ˆöä ¯$—%\Á¦ëknðמƒG>ô kŒqÛñ? ž=¦.r|îŒVô=Ø·]õ¥ÍyìÐë¤Åxà]'we꼃¯ ]Uv|€dFá ϳ™'ëñú¸îè' Zv·×Us‘—rò‹o0=~ˆ³ïõ;mC`‹éicdÛÓ[Z÷bfbÅrùкvÎÉ’®bÚž\‚Ö ó9Âœ!EjN^ÃÓa¬yBi,` +¢'WÁ}< î faQ§y +:è¸@‚×ÃÃPJ…S„ U!z”dY‘®¦I숫†"#môôþWh¦ƒªßãUGž¿jø¥¯•)‘½¢žºRãÏGæ>š™{_SÄf} h ãÌøë=nú׺ðÁÎoC?M¸èÌwG¼½&ìbTˆÎÀ!ŠnçWAdP + µ{QlnìߦT{šò0r~ˆ˜þ´¾'jä×(¦ÖC(úà ¡Ù6+0Ña°$î³{°,àšœLíi­‘èsôçý¯^Ô§(èøè¶^ EQ ¸¨ü—)‰çÖºajJÍñ)u©›tCOkÐâY@G ;fᣴ,iœQ£R@ýmë[èý΃'0 +¡…©ZF +m¯Sëuêx]S˜+ËÉÁO`Å»¨«B#±¸{Hì¤ .+ì^µáUÉ\/LK­bß®‚¬,Ê­`ù™K,ÙQ–ã›çMö¾Áã.½À®m«¥˜C|S`õù–‡¾=Lê+°³`.ü%ÖO–ûúŨ â?ít1h•j0Ù÷x`Ö¿é¾—x§(•éQÁ·dâÒ/Ñ^o¹¢¬WNš¯¥o<{-ã¸ô©Èœåæ8 ¥†{ÒPöçò¯?˜tÌG å`Å®B +é—€[Á†-‘óÏÑJ•’íuʱP©â¦Ž…ƒàÆÿøH©L›šcë‚Ñš5„T€vÖ"i/’òMåôªóg)œZ°R¹e„á¨Â’áåRuïêÐ)ãL¢ƒOq&=8(¦]7¢uÖ@Øì(¹ŠF]ÉWà -µc©,ÒPf«GÅ;äŸsÑõ™Ô9wĨù—_ª±f©aì2í(SzÏŠ¿·07çn¤>@CN;RÖ‡É>á$&«Ÿz©˜F˜yëá¶j)}'IWÌÄU—´½¢*W¨’kÎQ°–³¼ÛŽÉ"ðXÖUÐOd_í!8+m´ô"`ÅK=üÁ¢páM¦RK˜FÑ % +!,DêBªºn{34k’²’vDk="ÄdÒî¸2N”¢‡N;Y0¢$¦PšÜ;®|NP¦:;½¸€b\½ÆÔ Ý$±Ü»ÑgÇPt…‘½#ÍGeÜ»µÓ +Lªd**DüÜçòÕŸð•`¢œíþp°J‘BŽZ|œBüIˆ¡IüP3¢Ú¨D½kJTôqpH%pHÜa"’*êŠy„´n`™v¾›Ç;Ò«q¢B—¤’h2X2-{ÕŒ¯[} s–Òó¹¢W›ÏŸ".Ä ®G3µØ~~׶{R€@8}r +u€Щ"£[§)D©Ä_ATÛòú¼$¬=ED•)ŸŽ(Ÿìxq˜Ž”9£9úŒ-X¿fnCˆÐ¶ +ùŒ>0Í›•,*µ7„( + Ý$\v”bƒ”1×ñ×uœ¸ŽN=ÎðÔØ +SöPçQ{D0²v­8>±8»Âž ÿP"RtfG]W'ÖW’ŒÏ™`«ìˆ!IB÷Òxl/èBÍ ¿‰ê×{S,Q˜ÚC¡¿e†Htz/E·Sz–êÁà]`C¢)¦ý#³(]û†"¦$Ñ¢eácN¥ìºl ŒVØÚÕ(QÞæZ'§DLótпÌ/#Hjª’ÅP Ï ñ1jiOË+EI¨Ó%ª©(‚)´g§XIìu/wãìJ~ŽøÕ鋨Fs!i®ÀïÓq$Õ$¼«ÀÈyvš"#Vû|{|ânñ±ç(> [ =é|ÕO“Š›µÐFé×cÏ…”ûÑÆ]ZãzÜéF$¤Ø%gÔ$gGv³•È­NSm¯Iy4FUDy0wwu`ÌÖCMQ ¾>(j?ÎŽi)<ÀG ¼Õ÷œg²è·#ªžDôxÑ„Äa¨”f>,r¤¼wúÒnQG§o9ËÃè`XòÁäU)'š_ÑAÜ·ÎZ~|îýÒëícÄ¡ŸNkÇ·©ÞsÔu°@{,ÊçÞ7ëäääØWÛHó§JÊÇíñ"/ìÄý€üñ¯Á>X¼F;mš9<í0탼3ɽoãÖ§(4eFX”ªMã£\ÑBvCçU*O:‚9‡4áÖòmHò:|ØJá«?6$ØØ î9ØŒPïþø:Ð<²YZÑÀ9|z~õdNàbôNJ,/8„¥Itf@Ēͨr„ •¦ˆ²¢F¸ß)¡+j8é¢"~z¬ª²Z¹g::CÏBLnµ¨*ª’dcYMEG÷1öÚê(I–Âi\Åt™£Ý6ªŒköÕ+6ÐX{!­ð,°ÖˆÐÊôÊGw~'¯­F—Œ›ˆwÛA P3$Ú÷¾æÉýªØaO©Fã 4ý ¯¥íy2®ˆ2-Ñti†à' áš`j5˜åR²*ëÀü÷û'Éïçs¢?å" ª’ò>û+Ív +µÐ#\³¼Ç ã§Öˆí'³£Ú"[â-#ÝRJmMÐÈà¨Å®¦ë^ñedìÛœ'öãjzZ%Ì4:ë¡8Zœì2öƒÅãX˜Þ=ÔaZ… ý¢ßD>f5D¨³sÓ Ñ”k§ +oéE·ž"¤\à ®ÔµÎíWÐ8§‰8 õæŽ>Æ;ÇL0ðèÕÕ* -•½§æÞ#PËl cÕ)Í#ß`c,¥q”†Ú×±W‡ÂÒÌO½@2ÐsPÛÎï®`ùÙà¦&~¾Û ºÔ|A[ `ãUbrÓMnw‹¶Javm—Á­–ˆrè¢Zœ‡BGþˆhEטdS½#¨+HƒžÑ¬¶_±#Êû3 +†'Qù\£Q ›#öLOCkL^ä˜Lç ¾ýMt4ï´™¯.Ì9AŽŽËŒô m +ÛG‰† > +-G>cËw Ç écD? ‰)Ø-«nÔ8Q‚1« +Á+B€Ô™Le… +@6kV;ËüA®8¿,¶G7±y€7óýo¨¹ÆÛAT/<‡n»Ð#â3am…>pÖC‡AïÝC“9ìØF"M i÷o†¦’ˆâ÷ 6³‡Yµkº±Ð†e;0 ëÒô!À«2|:LÑU©t¡k”Fœ|å9ÑOĺMÑn=¯;3–ô†uE7u…9¼â©SÁ5•‚ÇØNhMo­»Í%~,½ëô˜œ¡C[×(P +a|2\ö½!Aÿ†¤­õƒçìÞ²‰Çõ©ÛÝg1:‚Œã¢¬L;ÞEº£™U¶ŽoáC¹ °û;]»÷k54ÔÞ÷"(«—ÃgJ±[o¾âò ݶĢU2X2b.\ýn‚0µïtù„î ’ò¿b=¦Ô‡ôe Ïãêj + ݘ;4¶¤« Ÿf„ð!¬|ívµÅy1JC‡MÕ¡Ôä±×+#"äåìã°Ü#"ÞeþÀŸ2N†AóöÒt“ÜÌKšÌì úãHe–ÑÂ0k,–¯GO€¥éB™Ïq‚~dHg›Ä5fD‘|óleú€Ò,m˜‹´ª£äsÄ +h®`™Ûpî)Jƒ›ÒÂà¦ÃQ$°Ùh'Eq˜§Z$KÕ Ì¦ËzŽðLPg ÀŽ¬ýÕq´Û†%H¢6ÞÃ@ϧÅ0ü*"ðÑèÜ*%O1”¡éqÑ¿_3®Wçtõà$ñœ²Îž(`FEºmhÆ°|{Ž¸¿ÐìÁ=c­ÇÁ‹GNVm)æ •ËÐ/í/#XDj‰Bê{mu |”k!{ÁòhÎM•1¤M,çöô—EÀ© }¨÷=GĽ«FÂPüÌóqn=Oxµ¹¶“pÕ+.¼¤Êuà(;qVÆdÍ°úØY«Ç3\±fZÇ™²€ ŽÒQ9;2ÅšxóÃ$ŽUMjûöù1Ï\áX·£„.xv×t•ÒW§ú Ò «Ø›+x<ÙsrQ{œ( ÄÐ\¿E‰j(£ ï“WZB>‹Ö”B›Œ ‹Ì ;ö¬ª +´ø*Ng®J€w‰¨×xd)µ€(Q +|ŠR¿!rK È]±n…ÀvÞ´šiÆLjtÚúzáÞ…ûç(½œ¸«&•Ä…L8&†pªOÑM§»¼ɲ$˜ÂPh2͇Òf;ú’åXÁÑT–ÔnYÄ8šTˆÀ 9"¨q+ +­&3”Ç B'‹4 L«¦¸ŽaeZΙ"{]M9q” WUí_‰…x(ù<”y",ˆhŸq&KîŸËJj•}ü•ùxß°To,\íR”Ár­ÂDé™Ïç<© w”î¥ÏsÔ `'s,ƒl+±j›šú+g4ø×k?__Ä`*ãf;AªÎî­¬ +êuÔ;Ñ‹QD5Çš»=#­,CäF¨dz³‡Ü®¯Î œõb˜(Æñ1+(™ƒdb©xT\‡9«ùì +rj"Ï¿ºÛxÝâ~/Iú‡á»–® XÉŽÐAn”ž#^NOQô=QÞC”©¨¼Úƒb +c +šõÌÁÛ£$‹ìЉ­õô‰K| —x¾Z8qàØOû{k…Õ¾« e’2†ž­µÈ°(v‘%e©ï(×Q“î y¦Ýå™qüè]ù.³ŠÆ¸EûW—œD¢§ˆ;e$Çî§?ß“5•½z åšQκçBâ$‹’\ôhŒ£õ#øòâAº­®È® ÊãQÌ!ˆfE½îŠ‚ýëDŒˆeÄ8ùŽíODZ“¥ë +ÎS³¼#áù:„çì¥+ˆÐÇhz\J8±•/¡~çD m ÅäæA×ãU±'°}7k0PŦÀÁ"Ö©Š%PeR@Ÿ© Òzßa“¨Õ5¢£LÐ…â·þ7mÊ{A„ ‰fÐ%šæ³È°ˆCo§dYUGÑþôi$ëq¶‰ê)ËÉOJøá?1FÔJ p”.^jG`BBÄ^“sœ^éY0@w¸`Gûä¸Ëšb=lj¸“¤·—:”M惿@ › ç»cdQ$cî"nÏaÚ¹é½Èk‚…œµ¿JA0ˆ Ké¹Î¶dÙ„ÔL$wù ÛuÞsjXÁb¤ ‹uÉOÝl'XøèGû3›æçP3{ŽØ·T†6jœ.ÍŽF‘©æS{†-\ÿ-Ø…žï”Ê=î™T`.¹d©¸äq¤(R‹É.sÐáG^yÂs2#W¼ÀîƒS*Ç„úæ´`wL7–­ ¤SÌH ÿ1Ho¨ç]ÔÞxÔ}DZØ-ÚQH­+¨qDèè ¢)‰Šr,9ñpÈ1½Úýök“­ ,òbB;0oRL͸ +ônÀkŽøk«Å áïÇYA°[|ÞüirÉ_©•‚&¯[?/wdŒ=d ”i5Fh}eêV K˜63Ž¹k 4xßàR‡rƈ#rOî{~ð°ò*+Ihè jÑTÊ@¼ ÐË& ì‘",H+/Ø¿;BH¤Qý.Ù±uÊ(ù~k(¶§RœGîêaX虀Cq&—¯jh£qä~ [Ij@œ' ¶{´ìýÝRLv ò¸]Úë +Yt5DGÏ£"±œFêjbfî2Ã>6U©"nóѸ}: +œVf7Ú®åô°Ö(Ab·ÿÕXš™Ô…•E¢Q©§B ‚;0¥- ÖŠÔ *Rs ku•$Òµ…e +¸˜NÅ\.â"¯µî§ˆÜÂ^Q¡®Q,6EnŒƒÈ\"'*ŒB_—4pY—šk¼Ì$6³j̲fpq² 9µ&%^«°·\èTH†ᾋ- +n Œäa +jdzƎáPŽM9¢£W™ÃëûñcŠ„ZÂ8´@Æ,ÿ\é„Bm‹ËyODC\É€LKHM¨¦Ò“ÆôçšïŸ±ýÄ ©Ý‰4«ÄÀKãT“IëÆ1éó +¥#FÒ÷7>è;a4Q®sÌá°È\±:Næsd+PFô‰//”€ÑIúò1"¦ÆU)d +^Uj…¨ú\â›’ÉÏ;(DšˆÌœßÁb>hgÓÙ¿$FCäºØ9VÄÉü®7õs–FOñƒ6*êOC«¤ÇÙSžµez÷rsXèŠ%œïjFv÷ºi0¤: ůN«ºº +÷PÉÛäqá逸¨,Á-á¸&',•¡â€Cˆµ?Žo×%ÖAÔoÒx†ÑŒäžzµêª[ |2×0@H¢z¢ª7Êeuÿ<ò´Î™p4*?9~ª0¦3Òz¼a}gÈpZžvŒtnAL"H“$„ùH©&÷EI +°ˆ}Ï¡¦a +OÆlú€ÔC+×yDV›o>GÄ+uÔ!*¦Q_§¥pÊØ#Ú%÷G…A!„‘ëÓóëa£ü”ØãXý´00O€LG(´Ça +]&Ö8Žw{pë‡+Ä Šxæô–Z¡£$0–Z‚9CÛƒõ1•ç8AÚf`¼BÝ[ :[+ô#ñä@?2÷z8üz¨PÇnªˆ:súíÅGÊ‹ãŒ#„d‹«dïW;®ô*àf²¬o”Õ‡ è7]aúî`8ŽÈ|é1Š:â¥xrŠß³4¦%þÃYû,Fá[ÏÊ=<)­Ÿ(ÈMR=‰W ;/|úIB¢éá÷8QêtkUR“‚P¶_Ó{!ªÇŸ7qÙ ;©øs­’æÆa6‘Úk2 D磺‚T6”&/‹E7MoneÖ÷ú?$øÃçþ3KJhóùÜÒP½µÇÙ_ÐQêÿ¢LòÀŽ~Ä{eÐ^\Gî]„øµ3¦¤–{ÜG·Jî9¬²Ë:„•ÕðÎ|ᜒ‚_¹‡4ìøN°©½;¼?L¬‘”~ŒBXÅ„Ú¹²«Ð¤^>¢’ xС¶ ƒ®‰=K´’IA;&Ç5 ~ ;®¤Z.äÏ"Ò¥´Œr•ˆŠ˜·懪†£¿Ž-µ¼¥ øλÔ_·ìíþ@G:LüT/ÅýéÎb[ܺy‡v4O +x\¹…3\ ÁN@pý§/B%ZÐ"ÓitItCã øA=iû›õF ãL£¡¡ôõ%¨j?WÀ1O7„)€ÍJð‹ãPÝ–"­wD”Á‚ä}¢ƒ½jeÜ0{'s<$E Ü»ºÍN•N)’Zúu‰ƒ¿2 lO?½²ìöj¹ä%MÊ{_¤œâ^Uy–³XAïž +IÅC © u»ˆ5Þ~c÷§DôɵÿI¾ýy° ³úö)…Þÿñëý?úÛŸýùÛ?þÃOŸ,½ýå_ÿðÿ¼ýÙ_ýâï~ùãßþîûo~ñûoþö—¿ùþ›¯~øí|óÃ?ó7¿þÍÿåw?üëo㤯ÿâï¿ýí·¿üñÛ_³OñÙÅ­ÇüŒ,Àãÿ~’ØȶëùñvÙì@vÒFfzE¹t?H¹‰ÉŠ.‹´QöôPTc‰ƒÈÛE»ˆí½Ù¿ê˜è'+†óJŒ`àF*¾ê +Ì,n󰶿‹¨=ïHòR‚¦¥ÒT‚SÞT7Ròúò6Wd…¼R8T…æé ›noêËëžã5B­„¾áA!ž¶‡39iú'å_óË€9g5¾w"úøÆŽºb+vŠpÇUO?%VˆœA)—½Iì¹3,ÔR–f¬[ýöÒ9îÐÖµú’9Ü„kJ9ù(5Ç`¤í ä :¢|TŸ‚A5lÞ t@‡‰GÄ7NSëmA?‘þ†å$$_ì×ëû&€[àÒ<êEhœ$ØË…F!DHµH»vø ôßÃ]²>=(d¤@‹ ÂGð‘!1ï(y1Ö᪠›æv9ù¥cæ‘¥d¸#( ­¥/hïTâY9Íñ†wþetÄ@šÐÂ6€< Œ?¶ŸI´ºÚ £$ž²ã®åv¿U +2ÙDÃÎ’›rþcôyIc~7* ÎzÀÂ8|¶c*Ê?•ÐŒòØÇL­˜?îœû Ìjß #âä5ÀB %·ö¼#Qû¯Ò‹Úƒz T{›_‚gˆù¡ê¥ õá2Jõ -íh1¡Ü5ý+”ÃTtæÃÚÏ°PKÔIšêŽKc=ÕkÏÑ _ªØ~ÄÉhîJõc¦¤7ñÝ +¾ËuéH~ ¬GÅ¢¸êjäØv‚Îp5›ÕÕÕÙλ/Î˺+U÷¾©ŽhúFoô«Xs6eCÁŽäúù[ã‡wåÇ~ůö¼óàl¡ ?¿ïàõò­¸„˜ÞÒuÆ¢q+×£ÓÏ, #0àŽ±Oçßl’Ê~%ÁüX§íÁ‚\j +P»‘Yä]qÍØ”·+VöÀèaÆŽyÊ\³Ç+ŒÙȨñªPKGvŠBÉŠ dø+ÍÜœÆ6Qzó²ÂIQµÙ½}¶£¶˜Xn¯Pç‡|·wî™ØœvZÓHFÍð;Ý 9…ñçíMü\~±³Sa€àýÿ÷IèrÚÚégüBÁéL]Èu3uí±ƒ¿ÚOæLv’ú™ìº“Ýë)òN˜‚ãXuìŒ5Œ|ˆK”ô÷„ãw`‹Aë^Ì>]ÎͱÂd®ß‡È2Ý%ûN¾‹,Ø‚]š–{L¡áE6ÙÙ d¢H†‡™{q`‚¬‚¡|Ã.Å6èÓÎe_$)´n +‰(Láöd‘ê¦È}vΔñÍâL{bH™ +VÖŽØ¿ƒJäKwï,'ê§5ŸšÂ”fû°Ê?©Ä—@›>jÿýí@&7ç¡ï¼î~Ù×Ä07FHaÁÈï·v>5¤tC’Ž¥ „%ð‰õPÃEg¿Ä",A\—L¿¡K8Ek=·øÝwgøuX(a˜àÈLÌ¢e0¤¥fôŠ¯¥Kj 7éý4 oÊX²ˆ¾•r¸BûŒˆŒ¿rƒHãp-¦gSâB’ +£8͸ԃ4άTΉ¤‚ NUcê °°}ßcŠ}AŒd5¢£Ãž=~æøêþ^ЄÃéµW˜NEͪ¥°Û,¾…ߨz)¾2f;äãœ9 îÎoÇ×›e””Î| •¸‘F TÅ™’iI‡¥˜·07Q´:4æ²,Øi±#ú *b-£8Zó‰¨";xawrhË3EË3iÝ7çó«ªx=Úì{ÅŒßF¥?2YuÇRð Ÿ6à§yq¨Q%$JÎÑXhSEÃRvc@ÊUãkÅO¹D†«7¸¯j\ðqœFï`žiÇZtÙX$ëë즦Ễ%ëûfD)ò°~>ûÑÅ}ßÐ`Š+tÖ߬¾P@FPk„ñ•Q"Ûú¸ÝŸ…µäOû@bY†ƒ¹K³•s,!ßw 'yîÍc[VŽ[  ¡%Ó¯ý„÷k×m©Ì¨+k%¹—‹qåÔ£âŒt<{ö"´ñ'£œ?)Ê#V†ï8–?µµo!í>\ AÏu\Ùê~{ž Õ)¡ˆ¤wP›¼§ q!îµƦ2(Ÿ{ÔΣæç`y{AîÙ3¿¼(­¤ªKV‘%÷O¶¯c§ü䫇XêRTgq ˺*‹á0L¢÷_ Ç_ìðÄõ^ÌÇ áLM‘n^8ÐRï;æ1¾eúîfü¾6Í‚¢g×ÛÒM'ûݪ=oãÉ,rÏRQû‘Qm¯8¾ŠÃIa,þøàü¶¨ÝçOh‘ÐêDvZöHò×il§ïa²¢'QágÞCtOχtt‰ŠvTèË%¯yçR¤Ê0˜øÖŽô½1 ’s 3‰ÚSÃN€¸ZÎv¾(|´û4 #l# ð»ñ /{ +.féC¸v"Þ4l¾Äï¼:è¸3>«ðD¹K3JWÈ ‰Úý&%M0„ å=뤈ð£¿lK04ºC;Y3Z¾vaû܇7F²v RŽ­©ÛnMƒš¹<Î#‰‚EOÑuÒÌî%UãRH–Ÿtã`Õª.¥¹ähû#²Ò“w„é´uÄ•´´¤;añ½!k“瞦ïâ#ö´Ð4±KŒ¾ÎeIÑWé»H†4®…vtt2C•o?S©§v»ðOìz˜q¾P»ãFÀ‘`RtrC¬qùNb²“nvjÁàÐ(%r,' +þ®k ðnjÎ÷ˆ`âáL]3Êy1M¨i¶8À„¿ÚíåH“>5JPøTà +}3åáµLßn°²]…ÓZô7M¶Èé9ƒý9©Ö|¥ãy“;©5KíÒðBåjØÕ/ÌGI»iŸY®ãÝLaì`˜Dî÷.i—o1@¸© +ÂxÎdiP¯í4•“ù’Ê}ËÓìĺyÈÄ}>QZf¶µ6Pü/6–€ ¢¯|õ›fB!0 +“Ñ ºŽXRqÍuîؼb¾xǸŒL…Ò˜Fþ´Kc­èýðˆû¥3•ÍÒË(¨kAS˜:º­&¦’Ü-~È…+ä¾DßtïëguÃsECˆYO扺nì¸ÉÀª($tçs¥!®äœðzÐãñ>ß #%I4âd'^Бuzš;ƒ  d-qÿ¢D{¥©)ð"ÂqBICÚ4ûñºº~:ªWˆðw%ç¨víÈ$e“¥lÜ'Ø’#7ÕJ´õrB+VåÒët¿Ø9ÑztÑR1 ŠlÖÒ8f’TtµBŸ}=GDµÅer§Àš|ˆâ™^ñÔY¶6í0Лã¸f?G|Ž4½ß®ÏbŠr+Uï +Âbu¯Q4o`e®9ÅÔù{¿Ý{ÕÈmÇa‘õý»çÑЭƒÊk/¢RÇýIÓ•«‰¡´Å®b*xšW´Œô7£nÿXñ}Œ¾ÁlÀˆ¯+kš–Í2Gk Ú,Z¨R ¾Ô^kÏ÷ûÖùBöû–S/3±ÇT8'¾¥ÔÚ…ÊU çP†åý½’$€$×mMÚb$"êr"¾¶ iÕÇáßÂKß=÷± I‘‘u"t¢[t¢ì’VQ¡ ¨î:Ðr‡N‚J¨IF@(¶ÁÆóÐ[’Ï/Š<*…ÚKœÀ8Ÿ;Ã#c +êU¬P¹Áuu^\ïþ&ýÍ4’ý‚õß{‹ï=ç€xïÀZ"ýØñUϱežõðΠ̢;, åUÀДq!æ“îŠÆsÔ|RˆòŠÑ7²Vè$b +ðíÏZÌJ_ÏqË€ñº!u²ò‹ãР€;¥ýMŽ ­Î(ȹSI}ŠXÕ ÁDÎèó!J%N­SÅ$¯xYãAub…¤>e$õi°ï‹€·÷“ç€ûSµtõô× å Ê—ÿ7ðøÏ›]e…ö™½îÊÛǨž+j&#ÐÊyãíáVֆ àÜ&þ¤ ¬íb H˜çcDÜ'Š´Dá÷('åãq…eÂzVýÏì¬ì }”ºâ¶ÕÅ9AžÃ2(Ê,F[¸Aë®SÕB: +`˜6,ˆÀ@ˆì"Aøeà«>Î4¹>]GQ2ÆV'9\œI}‰˜¡ ?OéªsOÃQ:(µûÒZ\pß?µbù8g\ÂÂ…g‘.pûYëkêÖ8 OÓéçBÈØ¡é±$“;"»þR”ƒ ¿Ê§?oñÝT„å$Ñ1‚9„©TÍçˆ)'™—]ö·~¥5tVkÀ£…éïÔ²Pä©´³ Jð¢±EH˜{i˜ {%$DqÈ¡èÒÊô_']ë4ÓkÍMôÏÐFDâv§±¨ÜîA3"ÆŠ RÜ?’‹Ì˜–l¹©ãFAÇÛQwn{Ô™v6ƒ8'@9mG\Šeï«-I?–û¡p7öå«nHeñƒ"Qo®NZøÁòøõ‚N¶áÝIqê(bAôpu•åö`UŠm +ø·éýǨ2µ´õ Á)ÛÀf¡Êf߸)>IÞrw©xo¼½½»MˆÚÙ©3oš º[§éAk<êÜ{=à‚Þ¶ 0zƒ¨)1-À¶+!Þ­ƒ¿·Nku¯¤Ui@#u…~åq3 ãDÑAëEH-ÙFR™Täyì°•yõÁ) +ß%PÿÊS u½×®9Wu1´´°ßcýb>ç?Õϲ҅Èý¼·uÍ€ùl lÅ°;úÙQï°¾°žé÷Ñ8UXP@ˆÒ½2[7+í +Œ`áá7»''v°bÖÖâ +{ µæ<:_¬{™ëö˜¬Gˆ-¨è`Nþ-¶L’ßé«æ»‚,©L04 ¦dKwÖ%×y=B§Èo_f rS`o8©•Y0ì”æ±Ç&º' k“ˆŠ¬Ú%3µ³£×ȺaöA½ëH#úäÔ)kȄ¬_GìP{ïаŽÃÙyEƾ Á‹´Øâ:&˜´Šõç‘a*wç…DÏñ- ¢lJ‹ØåÔ$oÉIUët樻ŽSÕË7_…Spù{a +iÏSîY8]ÊbŸloá)…´n¾a?÷NxÓ R'¼ãÕxjB²š4žOt[Iá'Ôà°~]èPE5 “„“cå]·©ÇÅr|x‚¬ž´édBæÁH,0‰FBfŽÕÓ‹N:ýnQR{¹ñ¯(‹7¨ãTû;ÕæwC¸°j$JÌ¥B®ªFQŸ4MŤ¸ Ÿr¡z4ãL».1ëq&^A¢,¼Äõ$ÿ¼ëš€aúo'O/[—ù¨@9êTé’ÌÇ…Õî$¨E~Áìß·Á{eˆt¡ ?h‚·c’&S°¹ +ï ŠšZ»%‡ã<s4lçùø‰ÒP‡"Öò8ÑŸ€W¨Æbè;bÒjÜ/0„lÅÔ±”Kat°/}/µˆ*H7à@xÈôñÊÀ'«5Î4˜ë.Öxéè wX¢¦Í¯<|Af ™ìÇ0{¢‘¦×h íÆ«ë +Ž©Þ£Ù™ýˆ;0Öñ72>ÂÇNy#TA-î+™óþE 'wÀŒR!“&k½Ä=%ß(O^-%ÀBt’VŽbMG“‡õªœÐ瀈t}toÄÿsT­Á ý…Æ9ti…0òñõ£VNs?Á,²o‰o0‚n#â¹B e^ÖÃ^Ç÷c:ì JO^ÎèïQäEÔÞ>Î7¯ö9 +W—…­ñ>NHê\+hnIš(_¨w;©ü GjúÈ2gÈ!¼?“I'b§ŽE8è´£Á‹ÁØêqÜ À"Ä-µÍ¨¼ˆòös¦z{¹|šŽD™t ¬Ì<\z¨E“ !eb°/)µi"ÈÝ `#€u +ŒÕ=>Њ„6'²Üeƒnq6Ó”#h¿d>çjLÐB+ÇYp +)HVtÚΦOñt>d<ÏÇÁj[*e²2½¤¦»‘_DøÔóÜ §(–ZdÒuÀo^ñˆ+^G´BŠ÷¤"±3.ZJè’)Ý÷1àWÅdÇÛSGþ§ÃwafÂPP\â¼ïU›#‚Ä6ÂLA½6‡°@3°øõàivŠ"ŒE!KkÊòðŠ¬ÏªPU(Ç:­ö§ àûoÑͤöŽ÷Išp +8Øm»"Xøæ"7B’|—jo¿ŸøÁM[o…¶Q$üXa°\I·1æ 6—ˆðsI YfD`%¼#p6"d÷ç %þ>SL®ô:Dí¤f¨£ŠT£ý +¬Ú àEËò)3xy&–¤°j•b!b:£æ‡\c"û1Ÿßwª;;ûüTÌ(ÌòæX ’6è¸ÌbëP_Dow•ü³?£ŸEí÷åèw%t÷‹ã¯]yùE¤A*,à&wOeÈç¿:IVöt«ÀOQKÄ] ‘5Ø0+fb¼whÌ~wçݪp9Tá˜ìµBGXƒˆ€­¸Û7êR˜–Õ]Žx V*íÅaPS˜aðp‘,cNìZ‘«–»ˆ±Ë<÷¯Æý»v ÚÐ +FàA,Lfž+fǧ›ˆ‰xÖŽhñ§hÅqŒ¥¡]ÖH:4=ÎäxGðŠÆmÁïó¬—ž£¯l5Ä+)d°þ¢V„úþš·Šê<*ªLEG åãv_)tñÒxÚ‡I +EÆhWÓ5ÓÚ ª¡t ðg}IÓ5àÿõ £A?f—ˆ•¥0®Â^"î˜–Ì +@û8$‚¡2Fó(L5û( óâ_®‹‹Fî ³‰JL<ÚO;\^6zÚÙè\ g­e¦:òØA­_ãÐÙ*àÀKßXñ.WA ÔÃ<„¹ßêPÔ¯‘4dGºRzL0ÙâÆDãˆèJ“`íOŒE1-‘ I„†Ç9Üð™pµàm`ê2Õ]îì¡pOÑ/{ž†E¡;X|ïùèº t½"'ÏäB„“B6¸Î=Qõtl8B•½ÓØútbÐå†ÝmU%¬!’OºWãJÆËÍ®ÁÑ%’„ða'F&Tæm7,ì–Xÿb‹Û +0 +3¨×ú¼óë8Õž¦cܤéÇ€—ÀÝ2Ƭ1¢­²'Þ„žò½¡òî°±×}ýäùˆc3öðn{E\øI§ÉƒuÁb /楒!ë‡Ô-…FÁÓqê Œ =ŒKt6Õ ƒ½PVzŠxšD¢ ù1 +ŸdÓ˜¯—ÈWªiI qC1ËZ‘ï„ÌFgY'™êxˆ Ž(€éÀ €£½Vx²”¢–Δƒ3ŽßçXèIc,GsÅUE¿F¬, íãzöF<Æä†Én玈ÓM¡M-ŽMCŒu†.ª¬@‡Ö^¨þÓiH’`ÁI§¥«…äׄÚK¥xÆì©mЩ†´ Ò^½…}²>ž¢ ~Åb|Ï—IPÅÇ£hÌc ¢ï²1s݉TG±t4YŸ´zw+ž¢®ÐR–„ eœiKš¢ySTuröqÕ ÐÕþý:_툪QßKhÝ/­»nCåì«©/êv§ƒE›kHõjŒ!´Ì%ü˜ëF}Éñ|f:&˜‡ŸR S(µóï×ÀY•þ)K…ý1ó¥~w¢Äxth³àMÖmnÕ˜¤[Ô¸Á‡q©xKå¶5ë7F1shmRýZõ8Á7J¿'Å„Â"Nq,¬jh/jU›öp´Ðd7ÛfädµŒ7$!u¸Né“Ò¬üß­@k«—v)†CC×þ,™€€.Á[½¬§²¢j¿ +¿0éS2Œè^@kºXj}r¢²,€®’\¡CÍT24Žc‡§Èkå¥øS'n|åˆ=Äï€,±óÊ9>ÎÞK2ÓÂZa/"Ä›¤¹ýê=Öã4Ò +zËjºtYòYÎL¦„4Û¢& ®æàRExÅ´!¨0|eZÂð0$]»Bü~Ù@Ü TüŒ±Õ^-ÅNIÃã\:n ý‹¶âÌᵦ *gº3!–ØK±'ÙÖi>p£Ád6ÚIp‚’ ü€Àž¶Y.5%x@\j^xóîÁëí“#X ýª7]ýì'ZO XcFí±<ìUHn˜—]šˆÜ¸½¨Ûò$Ÿ6ra¥ÁľgŪ+Î7MÇ”\­[;"E3SîR”ü{ˆco‚èñ¼ý¾ðT‘Ë4¤‰ë—ÐÿXŽí|<¾_h³á^“~úv¹VcM•iãrl$gDwâ4"L Øc­CÀ¦2­vÎd¸"NO€zô> +8f¿XËí,¢dþv^ná°–…8Ýgo´>Šc„ð1|É£Ñú8ÓŠ7LåEï„C¸ºÊx-¤‹ª&÷ê:¿i²)jÌ(Ñ(h R—XSF´ûiW¡Ï=ã}^<“ÖíQÿKÌA÷üIe¬©NŽÔ+).bGàÙ :øÒC5 ürÓž¯Tô沨cØ4™ßÙÕ~M´!ÌÊ Ê¯¯: 7ò4dÊ= +ÂLÅ>>Va,«…½wäp7ÝeŽv›ûé}›µñÅ?h¯¾y²ôïE¨\cGƒÔ›o‰ épYOÝÌѨÃòƒØQû7R碤eùg`ìM•¯ýkUvkvACr™¨Ë:Þ…Ïg1 +\Qg˜u§e~EºÎˆÂãÊØ4€ÃE#)Nä݇w=J9H[šq9ô0ý\FhÀ€¬É~ËÇÌô—0.^}ð´jÁvñy4àdlçC!Ïêq?ú{2Ä}G\ÇÖ|úù!Rð{FŸ\Ãt»c˜v·s&– ôó% ]ߧk}Ÿ,¸)f”™þL‰\鈚yr›,Fyi¾ÁŸìË®ä±(Ço3Š$Uj_dGU\h3»ðÏå'k6:Þ~>»3»—¢ôâ0þ(ãã@â$V(ßðB‘‘úž¦ê¾QYx/K9²“u¸!$P¤oRg¨‘ÒƒÒóæºAí; _G10Ý~&×H¥.Ð[î¤P³À½5ÿ€+|šÀÌq„?¡£€ß'¢ˆõÚù°8M^Q”ZáãDkñ›bT÷Îw7k²µ¤ÄQQ’æ¨{¹"öô²|{£Øµ>UÊ8‡ðZ9rpO# Þ0F“6BçpˆL™–\¡í9…ûßKíG±GoWœ³LëÑËE|¡JŽijüìã ÿyRby£Üþî¥LÙ_d?{† Ó“¸¼¿>lŸ™3‘I^A$•P¯@ã5 +鱤¥ÈJf‡9O§h|¡x"öØI&Ác°{ã™á1ω˜Q-…ÖÚWªÄÙôzààâü´Ôâ4"léRˆµ)¶²•ïÌB7o^Sv/¤2+ˆš}Ç©ÔpkqvÀ’(‡ŒJMb-Ú>ñ—0²´™9Zôti&Zn×±hš&’s‰‡ðÖ¡ª;©í Y~-3à* +xOMáHþóÔaíµöef KÓ‘×Ú#W-¬8RXq0©£IŸ˜ºÙ±tD†µwó-/pœ-$t5ºþ–y±Éö ¸4¨ëmö ˆZ)Ó;¦ÉiG@ÐÑZˆ#¥!y‚œ,xRJ§Þ¸s€/µïq âáÞ‘îáÕLß>XCkwÇÉqAiXAæÂÎ×Ì>N0Ù!ç×hòTÀ¨;—†Á–@¨†c tÝký„p?Z’P|¿dd @EŒ0c Ö)·r–6¸tÁhÊNbñ~À`¥ï™Ð˜ÂýFg~àGƒé{g î=ãyWë Îÿ‰¨tÔŽ  [ÅþdÀ¥òZrPRIiZ¾;¡¤íF+ûTÀ¸—zP<Žû¡êè8ËPî¹Ú f S.G/e*€úlj¼£†Ó”+FF VŒøµ±r6¢žŸD +ãÐÞA?¹_&VXaín¤\®¹Š=¿³ÂAU‡¾6Í!/Š0éQ.𜾖N\Ý_>W:Vþ©2ß@ Æý’š¯¶Q;…t.cYŸ ÙÙJ@#lxËá-ê®Ar¾c-Ø=j³5½VFàotëá­U ï‰K'Èz|šbý lM4Hæ8VЋ—øÈz0pÃ:I‹ŽAZƒé ,z÷ˆÀi£UŒÕ2 “iÌÊ:)Ú°ni‘–îeHÒÌ“qj’ÿfX‡]½]‹Šɪð¦¥Üޅ_”BÙ|õoôj0«4h¬Œ²hë†.¢Œå(œ|â§Z±XªÚþ¡ßàŸ5.®Ù"¯³™"Y$ßÃ’-¿ÊbÑVkbk2<5Æÿ¦‘…!ÆY‚QX³È6!o¿úùè…ОHQ$@§zôËtžÀMã–ÍŸ7ä)HÔô&&ðýM—AÑVÙKûɉ÷O™sWÕR‚¬UßIµ+fwV­„†fˆ›²òœYê@#[ý‰ý)Pck¸ºôCÈ)ÙG(ˆU;î!Q%TúV€˜$E¨JFwY•'Þ@ûg‡’˜$À‡Ñ_Y%æ³Ó‹à/ή§çQÁ´ª¾Â²SaÖ0ÿ–üžÏjr?§Ëtœ²í¾Õ`“N8¸Þ…šõ°\‰"qÈ»bl +„Þö!À¥ü,á‰.³ôdÚbôñ}'ÅD5x :ã]A£åP”­qùäæÊnøÞ»cªª +Æ)v(›?ú‡µo³î£Ñz‹ [Ö2K=Üÿâ–wÝðá57Ø¡¬6 +œ•Ø/’|# ‡ºµ_‘ºŸ‹ãêÕ%vÛAÊþ+d8LcTzß±ž%pìtê)i©ç ™ -^æITNðÁ¤°Z‰¦’úš;9aÞÏÊÌbÄT ã$ïH R=™‘0úé’€S™RÖáIÈë’¹ö]š(ñŠj­€Óotƒq@,7CQ(ðë9*bz¨ô#3Ÿ|ìþ ;é +5qAvµ°]-€á\hp@ôAå÷ªwÉžZf$E(û ¢ Ó0æ@ò2º¡ÑÙP4GDwÿ÷þÍ´´}ýB`†”û`³†6G!•|)èÑt½Dž«Rϛߨ‰ïÆ@pZjwÝ @³…DõŸý¡rÂ)²“¿ÖÍ Û¨ j4NT¨}þ_ÚˆJËYàmÈSdœBGôz [iÉ*öýAÃà¥|T¿âP/š8Ë~k:™ûäSvÉ:ÃœŠ+øˆ‰„ÒNÀüyÎçpä-=?ïL±ò9“,îè-ÐÎÜÔ®£P­Q&_°ŸäGÙ Ÿ¹‡›Á…­ÒP¨ÝÏ{_@|b$°Î9}>seM®¨WX{‡+Àê}¿JIrîTÖ+i$W¨—4ôÛŽ¤Çùv¥o'3·"jNêq¹fÕ¢ÖèäZ•¶†/wdÔ{Heô`|fßò•¡‹€”ž¶·¿ùZ¬í!D d ôŽ"X)ª$ØšóMB–’ƒ};âáÓþZÚJÞ,‡gŠu‡H¼8°tÍ~dIÀé@ƒ¼Žèº¶ùèc„ÎXCÅù°~¢è…¨‰Õþ“¢è1•áú¾H‘»sOVåHú9JBy"H9 q»àÄ阞ÕûñMr€¼øJKg¯êÊÝ°@mƒ×Së-["˜{e+MîSÀ¤>ŒŒE]Gñ’%Ì!ƒÖ£DÃg1­Ûÿ©ên~i>«Œ2' Uê¯üör.4¡´†Œ¨s^ýR¸{p“mHÚÏ°ÃúY¡ùS—¨¨Æ/¥Yà@¹wÍ£×ÂGKšN+¿qéqÀ¥p +ã5m¡/ç}´+οîuOÍ¡‘é{â<ËFáH@ï1¶]Jfº–/ê˪xÂ(5µÁ¼tâpÇo ÅH85¦-ë˜T‡ù·"*„ˆ.ï¡3»[4ÉY +kIÒ–}J(«{5Òãpêãâ¼:¼(< +Fh¿›7•=(žw‚ÁÐÍ*å²³Òk,MaaŸKB:sÔÜáLˆÈ)vس8û,š¤®yô8͆¯AHw¸\±=»¹„©‰üzKþ4_+`8<~ø7ºÍb=×G§‚¹X ‰á¬ÍïþÊ21õ{X*´ão a ²År¦ƒÅ:ÑÕëUí¦/-ì3ž›yDÉàY ‡É Á­â•%¤ƒ­õÉBÜÏ-5æ|5f‡ci˜Oƒ;95ßÿ‘=B~Á1‡[UØXí|§fPåû>F¢¨ÏÊúHÄT€ŸÈ=K”ü˜æYÔÅ`7:Kœ‹Z¤L®“Ðæ¡ÞBËMÊÐ%”: ýÀÒÄs”XÈÊËètVÉÃs l¼ñÊÑñ'-²D?Y š¤Í¥ã¼xÐê¸/æÜ+°Ž…nWó5Vóº‡#P,\uÀëßú‘ãm·0jǼ¨X2ö_ÕiÍPÍä&ÆûÎýÛ©ˆØ,ÀÔW I"XBIÅ?:ü¢òËq®o«Šõ]©«WéφNpà1;«è×Q ÓD¥™Îqîx§°ãqŠ/ ²C9Pú¹×÷ЕØQý`¶&™€épB¿`„š›QÚ¸‚ƒîûÑ„N#RQF¤þ8OGú`¿eQuEGlÆa(>ÉÉ4×E ±" +تDžÒƒH÷û‹ŠFSê>R E÷ù›¯NJ[i}í!`\¨“ >lÉ.‹À”¼¡Ÿžðœ%ÈïÒF’ü]IŠ^{=)¼Â,kñ\ï™9ë¢YŒ‚<@TÀtÁjÐ.Ì’/ao”Jí©¤LʼnÜ}2Å ÄãqgŽ? x„'¯óxV**¤6)÷Yl|êb®ã6JªÊ²,Ê€YP +íNÚ7|¨å:í9`³<ã#YM—O®'Ú³À²Ï <_PCŸYÑrZû‰uAü32rxÁ…Õüþ}v +©¥»†¦)wì +ó/àR'Ð~8w{a"_¢AYÓÍ•Y©?Û‹f˹‚†Ø8iaC’ÚüŽ¿kVÀ3’´ÖÆ+vW–ŸÏ°«}œ +Nf’]ÐÖQ +%V è%ê/Èža¼¿¬Ã3BJ•×“"j¢Ì>¤ÔI ìÖŽp où Ë­^¡Zc¬6Y¶´|äíļõ”°²UÉ"ãLô¡|lUm#,è6ÕRƒšQí˜:tr‰&ÇnÕZý»mŽ™Â2 íð—…,r’ÙÅRsdø¡2ì†\*©-_Šø4ðǾ™,ËjS×Ú#õ"*¨ûø\óckXý(T~9éUŒ ^R]¾SéSwpÏØA¦zßå…0zŽÃoN4û0I¨qb—p‘k µÁ«UâåþžW£+‚Š.#ñ~—É2¼ÒXòšIÑÚ^QnŠCþWd ï!kë»{ašVÓ(ù‹FÈ9û³‡ ™G(ZuÚÏûzaæN¦BIb‰ŠÆ_òÒ(|³Rº GQ‚wmLdœI@Mð‡lÇRÏQQˆ±ÆoËfÝu7Šm'_Iµ0®ëŸ´ÓŒu)¸ü¦fɧc¤]D¬ï Ñ%’²ŒÄkò@ƒ`MS€zöaJϽ…fJ FÖ/Élõ|¡µOZ +­nq +õ4ëæN-Å×`žSë„<¢øšðÈ;?)/é +)ž-‹fÞu@å”â'¾NÝXgÆ‘–Bxa §ÄšÜ Ì»ÇtÁÿmZ1+la¦ìS¦%ßC·aZ¾í­'ÔŸ8np?÷èC~xŸ f–=6“HûëAûSu›¿¢ý²¿ÉrC Œ”+XêDúCôØšNlÈ#¥[,R_Ûdÿ*·HBQ.™‘W¡jYC‚¡Sµd ©ãÈÊw•œ]âZ#šw[ÿ}·ÇƒW]ŽHaoÐÓ}ëÍE‘K\ñƒàé3Â7#ŽR€ð6?LÌzQåX½q JN%ºëyÉV¹ÛâöFÛ:èœÙl'ÑÔ³sé,FÌL/›?ÅàX½Öò˜ ULÙIë~×Y‹S¡¡™ +$“a:_&0^É ò1…KYÛ'Ó^eA|\B=«2ã\ª!ÙyŽP?°¹I'»¬@TÓìNY=ª6&ìˆQºj•\Ž ÁT~è}RŸQÖt°ÇZQPÌZ¼ª€=8]*‹ÓÿÃÔ`—ø¸©*L1²·~;QÀqˆÊÇ×yÀŒ*9Ôs£#ßpé‹€´¢s3§Làú-Ît0öý± BUP@³Ö=‚¦„â^Õ••z€HS™ã vƒÙèÙh„Û¦‚DD¾1»µá8Ó€nA”¥ž=îÙ |‘]]¯KŒ ïh ­FÁ‚ôé°_àt 1ß÷b`Ø©åŠ%Sq\„‚E­©dƒº>±9!Py¹Ä¸æƒR.á¾à‚·À+íœê‹ô j[PÉz ôÀ¢ ØÛ"=Ãë! A´4P³Ó¥S™D À®û –Ûâ㲂¸•ê/di,\ÈÒZ¥9˜Þ¾%·8J,&Å =¬á#-™Áæ¦Yþ4Ä9Z#uQ*®O; çëÆ]C§È±>fd´"3FèOu4Ükn\å¦s„ë‹jÓb×ä|DU•‡ +NUIPs¡#Ž³4…¯[Ü»ê:|iœf6ÙÈøÔvŸ©uI<…[œig/Y|?V!F0£ÓWeµC„ +3€•(—x&µªpA‹€ë¢s´®ÜîòI +ìRe}‰ŽA0—íQªP/mZSBÎÈQh\[W65•Ú¬Áì–šÀm#Ÿæý‚4LÇ"zj•™lHQH1kÐ’»O[T+wԥ㔠+§¤Ó1†J3 Çb,–äÓ­ËQDJú–쓦–Ú heNÓØ5Éù@¾†3#ÂÖ΃”á'5XÍj„kAH^…É7‚#‰XŒ +·:¾Õ¡D='ÎôûàÕ¾!¼™ÊâR8…›Æ0xᢨ®Q7ir»×͸S,œÂII’Ô÷SAFKÈ-Êj ù`+E‘ˆ$®>]gôŠ“F ¯0HÚñ˯´œï6 KÖ~`$Õñû ë(ÕîÙ¬Õƒ]÷R±ŸçÛIGT¸ƒù ·#¶ƒv¯ÆŠÕtÍÛö[áÈAwR,ÛÃ?wA ­mÖ°=r˜Ùbˆpš5BêÜ€%•'N£+A +c£ëÈÉÒ÷©P—KlÇ_–¿‡`-„*'!.ä4é¡õ )‰aݹ>¼&eˆÐ@Öä \Y.2¶ ,.ˆ¯Ã×®¡DÐT.Á¼€³ÀÙ ~¸;Gy!vÚµne!Æ–ý%woîú”±­¦IŠìMf»üëèi‹“­AÕA‰öd¾)Q £SЋµzÒû§95R*±¹ÈÂתÑ~›9‚b—l.Þ°=»}ýEJÔ¥…R®z°šÑÓ(¡AŒ†¡§×IeZGJ¼¯eˆZÏàžì`.“.¾ãÚ3ŒÌkÕ‚Tˆ MUŠW®%2ŠÂLÇŠþj/è?ù$ËéoŽ\ ë,ž5Mòuª 2"JÉ%æ¤k‘\Dg|0°ù+ð=¼¡®+& ¢åÉU²*þÐ1v•…VØ|ˆñÖp‰Š^í`œ—ÕªQp‰…rÅP&DG­eF}ºßÆK!¤,0vpJóØë ð!cß3®Þ^ßЇV.Är­ÞRsÅç)ÙX,ÔWøþèþUêö†®ËÞÐ`] õuXUÓ1jÿa™|`¡ÿt–¿R€zQõʆCà›3È…Ï‹×pÀöA {ÐŽJÎþÔä+Ú¹ÆíWN©M=ø^»Â„Um:d+ÇÔákˆ=]A‹üŽŠDÁZa‰ŽS!³Æ0–Êá1IÚ9܇½i(m£«FNØOkg£ÍÆ:vÀaœ“R=¨ð.â2ŒÈ³;÷[ž¢…˜P4ÇsÝž“osûIøÑŸãôŸ~ÒUô<ÐÏØuÆ’ÿyeœ)ƒñE48ßPy±Y™ÖþÔ¿;AŒ(¨g ’# ~ªJ6݃;œÝ÷ŽuXAQ½—qšƒ\r ÃÜ1[LÜY*ö|=x¼mÅ5ƒ_¸ÑÒüy©ëm³©ÁµË°}½PŸ½Yè (3AW£˜÷‰BuÒã”*¨f¤3€]dEê.¬=„¬Z8k-Ñ“ €\Ö½ÐY™ñ“!6çÈØ,Þîûè£põE•¯ÇOê±VU˜Õ™0È<³.jÅÖ#¯H”BqÞéZz²¬¥÷¹fAÀòÎûG`}¼Äsì[yÕKr?—ŠÌ,’-v þ:3•È„Ò%xá£uäk¹üûÛ‡˜ðXL_ôÛó¡±f*dмë¥O’®*:Ýëm +ÀúvR ºR‚†>: l-f3ª_ê=çuhå1E‚/óaFÕ4$S¦*ïÝêÅ· ˆPs&ýÔqC +•éEH?N„õD)>N¿d¿±*Q`gÂÈ÷ú@s4—Øq)1YÖðŪgôŒýºÅîh†ï6ìØÇ ÆL ñ0¯3ÏÐ@dÉUsÖkkìZ œ|Œðr&V|x£¿ˆÊ>!wîYgœ‡ö&"âxÁô›ÀMTæçs¦ç¨æ¤MÇWIÃÜ.Œ‹úžR•²£ËÞ`ö+Kz²Sè¢USìˆ@! lâD²f~òW)´}´=¬D©c +bÚ³ßYþ4Ló4Ó¸³[vBaß;«FXR¤Ë5‚UŽ@ ”¤á»D¸8Û ØÀf aâûLÖövÔÊç2ZZ_ºP°LGš¢Y‘7®;åó8 (FP±õ$¼{G¹{x™)÷ +³ª*ºæ¯Ê)7kßá®4ôÅŽzáj~>‚Q}©© ä4£ÊLè †X€¢9}±~†5­âþ^Èžj×놈r"nÔ ’õ¼/㜹hò&LÄÒO#içèÏû_½OQ‹Þ_ .=pnñf£»åÆ—N§¾H0ðÑ4?î5ÜñÕyÏY%îŸvYúu&HO„ÄÍz¸˜;­ÉMD[‰:Jó`ŒÚë-¢®À<–ƒ•¢£Ä HDçÅ7dDÍav°fgGÔb¨æÞLÓ×ãÆœg‰6'LÙ­²Vÿ—žˆ;ˆÁÃ(]Ÿyvµx¯Î² â0‰tAó`:ؤZ²¥ãÃi¬?qÊ+&åð°ß«šÖð˜CàÊ°ÞŸ#¢tȯŒ„éåqXàY”Bºœ’2ªÖ½i CnØ1åùš9D‚ñ3 K½÷„þI¢-+šH;Ý ¬RööwÆ”£ŒÖC-˜Œ)‘Ñÿ\âõ³Í?Òzþ°X6Xl×j(l*í­œd/±š‚ût-Ð&®b©QE4 ¤8˜`L-òî¤îhJúsŠ ¥„hƒ;Ü ÍÐŻ*&ˆùÊZ?¤ì»Šë½èÄ©†<ξW‘D¨>ÉzBÅø"gR¯U˜WœIõò!nå>SÀiÐêBÁœ¨+pÔŠ¨ËÁt8̽ìÐ{ íAœäN6;bÔ3o +b'€û:’R¬*hÓ¶Í +Ïp,¥;#0§‰¥¨Æ&˜6 ÈÜV=æB$E·'\.©!P‰@FTÓl‡ãðm°PA;&@F%@FšÎ)U0á Ÿ*9Ô¿Cz숎 @>0$1bp¶ô£T%唣šF+£Pv¹Ó¡ç]çhwp¦ëÑ6ô²>Û–ôUe{£%û– &¡ÉÂ×oc¾Å\œßqV>B>FÄ¢¨ægÉ +Í=E±Æ©â16Fíœò!ý:ôam}oÇš¶U'ª²í.z¶à‹ËÂLÁTU΋ºäªaòâÈP81Îî;D#B A²RÊîQ?5†¹ÂÔeR'VðCiL¯¯8N,§ö3aâö8PvÄ l´DZ!ô¼ZVl,AÓmBß+šMh,BÙ½E=ÈrzÕäRÂÄ}ïêAÚí¸Õh{)"kQû‚̃vÖõ>‹Òdg¥¾-Ž. Yué0@=uô‰IÖ@U#ºwU²ªÕ9îÙ9‚ñ¤œ¤¤Å(%ýz‘¦h¨§srtOö—iOãCįNOCüXò|¥ä Í ¢ÿÀa0n'Ò}»ï°l +tÖšç.âÃ:©EA=Ø–#í!9›Ï¨g ›ˆLR¤Ù +«é–ƒ#Jû“Ú* ÷†¼:pCFD¬à³l„Öƒ„F?Þ%3× +øT¢ˆ+?¾ÔݪQ]t-Ðf”¦4G ׎(êQÑã•ËV±×ë7}¡VPQ‡{‘3xñÈG¸¢[žÁÖ®ê¸ØO·oÄàî=GŸ˜{NYï9âï¦õÚÛ[è9ê:èFÉsó¥i˜hC1²zà1ª[„'—êì~>ÄXuÌ@Û~D⟘ÁŠS£(ÕmöQõ|Þr¯ +³·Ö‹(@R´MF˜²)î€Mõ¨Qã{³ÿ9:F¡(I¤"4z¢!ÜÕ¨Èæ>“ØÀèb Öu?~˜„)àMX ¬/%öSô*ëjmŸí5±úYß{ý/æ-kºÿ˜b. «$¤*aš«¡Tª–Øœ¾ýÖTñÝ0ŒX˜= R@WÒm¼õh† `²¤%ØTsžNLY4îT¸ qªø1í·¦Ú®òÇcD°ü†,µhšfKÐ%‚ +Ž@¸k`¬ð§žEL'"4v!ȯÅÇꉒ’»ùaÇ$°‰&À&¤’ŒB̘ËI=Îd)­3{” KÛþšÐ€1z nˆË¬n4""Z·)Á¤Äq. ƒCN¦Í@öÛÔ¥„r£äÛAB$hÁÛÏ'IÊåQ½E9öº]œ+~Ž„cäߦSØÑvãº7ðæÎl°œyíøf³¹øÞ2Ð3&€›êp™£§Ø »ÍúÁ>ÞQ`Ð4!À”ã/y¼§ëƒo L Ì .æ»ñÝ5 õñ*c<èMLþ¡Á=I,‚ÜÏ/Vïg§[+©´w«d\¡Ÿ²ï µL‘6޴Γ)æNô¥ÃÆþ&òOÎáp¤V0«¸ +›¬Ǩ²•oÄ~àÿ/YË3±AÆ•zvùš=êþ{G¹tì”+¾9ä ‰Å¿jãOÖÆÌJi‡‹S°œÑ +ߣùI°óÒeöê|²4J²Cæ êµ"‡†f(]a¾jO;¼'È‹¡~¶Î¼Z¯˜W÷j¾—@Sð|/WX#ÄøSB›@¤Ø¾\Ê›Aô¢ÛÆÊ£&Þ1uêI„äy Éó{5d›"Å_³rˆ1ÿ¢Ñb…¥;ˆÅ©EÓy#â†^Æ8#"Z½O4NIœ€‘‰HëaÁ ×3R§gH”Di5øtã(ZÎÛRq+F€Å¤¶4¡\Îy3d¬åÉA6Ýÿw‡Ô¬w ß)pš=4j€Gµ"‰ßmÞ:¡°èçñM5¢àù{J‚RQ´%ð8+¬>³Ëuð'+„A‰hŸœÀÌ .¥¥ÈŽ5Šæz{ˆ{ô"B«Èôô”<ó'¸½Ä‚!q«°›­€®ÈS9Òc ¿3Æ·¦I»4¾¶Çbùñ¬bÏ·9Ëy·÷ +ñ28>Ð)DGd©.ÖM‹½•ÖJ6¥¤£Q_E@Gæ}›:š?jw¡÷L¸ë|JkÀŒË!ç0®M™¸¹& ³‘´c30Š3Ø’ GAûè‡IÕç¡AÕ¸Ðx˜æX?ÂûPm´¹ Û`â†î(þ½CU¼¼^Ÿ*æ »PÄÉ´F»£¿Âœ8_@GöhéwÚk˜ b²Šˆ$ÆéÚkJ +IU9*H‹Gs +ìTWiñ¤1—HƾŒ4âÏ­t©º=º!J…@5Ÿ0Çà%SžXÙŽ¹)X^×-šÛ‚* +èxªösOãi©V¸nEâ_°z ài°âŽ=ôNyËØ*YÜ¥ýFóeô¸É6‹áùïYc¶;ªÅ\ÓP±€+µ3âžÃêØ/aÈ%I´Þ #Œ+á­]€ÒûyœèªIŸCÕžÞ&'P`Ÿ äø!ˆÊ‘âðMº}²#®ð7 ð¿;‰ˆËGN»HÂ[¡j¦U!‹¬Ñ‹8tîÂ!‚‰±ûÍðJA"´Žö6Úb·ÌðÇ£@¾C†‰ÆP9ØI±R‘Š†á{ɤuOlr9 …´ª>þ¥ÌÔeG;tÓœdEÒŸ"JŠÌk»Ÿ£ðW‰ +#™ÑM‚<)˜ñP©z¨„¥=j,”4¢GÄÃùçZß’½tPòé8­׆·Df^:â.{rë9às7ÙÇKôiŒÒÿÖV’E÷•q‰žD ™±Ö!&_ù`à¸åÂõ³ÎjïÏC+ÚØ º3DȱDñn”ŽftD(›ží³n¼ÛLaiêýìä!îáAã_ažàEèÜžè;D…_à‚ð +m*¥ˆwÄÎQÓãzi:Ú¶Ãëˆ˕L{ÒǪ#,XØ!å!6d³!Jê‰ä¹>GÄ}?™ÚÓŸ÷+hñÛ‡´³e-äUÀˆ˜ˆ†®)8QÔÀD^×|ÿ˜»Ëµœh³ìqÞf"2bRQu£–zïIw¾BÏ6–ý ð7_h;‹ ¢gø[Q*̓4Âû”?‘öŒB4iÍLjxõ×1³À½È§ã€'qg¾™¿4N±ƒzšéÈÌù½sú!惆jRl–ì 'ƒhãŒíHÉšÞÑÛãu ‹ýð"´"Þw5•çàÿ¢è –uW@h52Fê)79w ?‘Ä· óv7Šn~D!ŸŠ‰[?1[MÑiwè ä LU®¤?,x‰xè@ñÝATX–|Ô+®3¸NWꊧi·WEÊQ 2BpgE¥.Ã9“[ afèè'`DÀ~ðR@[†‰/“ŽN  aø?œÂ­’7iÐë† Œ‚ÐÕ2–˜#mSR*VEÀ×GØñ- #òo÷/Zq§²ÆÚq#I2`Y¨ì‡žsÀ$Ar:Hïêª)à'°Ië³ÇñQ‰5‚š”\‰`¹@œI…‰ -ý~<îÕp/¥Eé.‹MãöL÷–gƒÚÝ¥åÌ}ÖcBâö'y…~shpkG9‚¿¡wí{Nãê¯"P¤U z¿éå>ÓÇ(Þ.£ éhs0¬”,¦Ú’å(k´µ†ˆ¢ˆ`uXÛsDfdy°ÃÑ8zŠÊ—aM­·ù¦°úûö›–6Þ—x§™›t?'0]•ç‰ÚYú×çzV|–bÅ6_†'Ô-_Rêñ¼lE@q§Päv$š(I^û]«ý“ú;+ úýGI]ˆ©bAÀÝ+2˜ûÊÕKÌοâ#I×DÜ?àjð‹J”J¥Â1¹7ñÛ)X^;óÂœçD¬ˆ`{šA=æS^2fÉ'§«a§ÓõËiÓoLЇ\'[ßo[Oã(Z·£h}›Ä^Gvs¡)zz +qq¢ÛcrÉ3¼Ž¦Rº¨ +ïä—:Â]Ê=«ŸÙU¿8-t=Àjô¹àZt³d»Iñ¯,Å•£@ÖÅBœP¥£#‹ݨ}KæQ[ZÕ5¦Éu)õqÇÁ_D…àÃ>Ÿç2¼ˆ RÇ·(öØ!áWL´x"ÍIs J„NÄ^ñNé—H…©¿†Ñµ(-dÝs¹Ÿ4†I©í«€×´|\¼«6Q(€7•Cap?9Tk‡ó§ûȼýIöíy° —Øö)¡ÖÿñkZ2oöçoÿø?}²ôö—ýÃÿòögõ‹¿ûå?~û»ï¿ùÅï¿ùÛ_þæûo¾úá·ÿñÍÿüÍßüú7?þ—ßý𯿓¾þ‹¿ÿö·ßþòÇoýÍ>Åg·~î +êÛ_þâû?='üáwþ×/ÿŸù6.äë~õÍÿñíœk¸Þþòï¿ý忼ø«ÿü›ï¾ù»o÷«o¿ÿñ“xúሼŸúëÿþ›}¾øͯüŸñ‡í§.îï~÷í¿ýæÛß×ö/¿ÿÉûòÉ%íßð›oÿÉýdô×ßþóßìÛÿ¿þî‡ïü¹àÿþÃo?ÆîuÐüuÿÛ·¿ùÿóÇÿŸ?ïïø÷ß¿|œóÅÿòW¿(ßüÍ÷¿>É¿ÿþæ¿þðýßí—öÇýÞþÅ_Äæ¿þöì«üdÇÿõ·ì™±ç¯÷¯¿ÿŸ÷qþìÿüþû_~÷í¯ßúŸq½ýÕþÿÿøï_È*ÿ×÷ÿúÏ_|F!¿Þþ÷ý?þß½éßßêÛß¾ý_ÿ÷õökþòï¿ø‹½¢ØãÂÛù¯ï¾ø 4?©÷{Û׶¡~µÇ—¯?ýÛWÛâo¿¿ªÿöëZÊ8$ 2«ýiî¬"ŠŽÈ.³î%©=<°ŽÉ³¾¿È. ,ßöVXª´ÓÈÙ+óKÎtŸÔ<  c:t™õñ;¬­Ðîï?W%·Â ‹Á]Ø+€&}~ «‚›«ÚVÆ¢w°ôèXšï!õéì_}ñÏþ9:AËíäm>—EëÔé¢k¯[âAhk·zDóÎóy:È×qtV¿Ü¡³ãªqtJ +‘±Ùl¤f÷ÓÈoq‰[ˆEr}u®”à¹ò¿ûòöD±âªíž}Nw=6SÀ9§aÀBô—×{nIÖµÎÍG^åü Ùål¦#÷eWœ'ÒÆÙ¸Wí`I:›[ü>ÚmûM¹7Î{cÝYÇÙ8ê}€\Ÿ¢?áÖý‹Ïƕ׽±ßÿá¼ÿ´ÏüÝyrÓ‚z„ß?ìý×Îýƒ×õùÖû…€:Îv{/÷}œbÓؼóµ|™öý¤½Å!2 +í±±”³-ñ”ž!&d_³Aõ<¡÷3Æ—õ¾e¬{Þ^^×W nä“ñ%‘Ú|w6^Q7§5ï ƒ\ÏW†rÙ9v6¯ó8ŸŽûþ84JñJb?sB:÷‡^îcgH–nl°^Î/å|Ñ’Pî[´×vgüAtýŽ{v~ÆãúpaïW<§¡ûx¦‘³ÅÈvÝŸ¦Òq: 3'rÝ—ÖfûäÛ>0MqÆ ónt^ d¶Þ^^ÁWñ'­û#§‰ôXv±™:ôqbÔyGSs½7Ï–ÏhEÛìŒ9Åó£×Þ^ží¾ŒþÉ©›ÇwgsN÷fƒÞbã5Û¹Í3/ºC‹?ïçµ\5¶<Æ;€†ý¼áƒ…ع +ñE§|yaïWüá„÷×ÔîY…ׯïh¹Ð—ùl¬÷!ôPø‰òøÎÚ}ïQ2~¼Dë\5¯òX×^˜XŒÓWylýpŒ{ÔñÄ8À«öÝÙN6_AgÈ+žÊ(ï›?ã>8:Pwü¬Ó9øüÒº´›éq¾ÅFíøLZôU:˜³|’É|u0ÎÄ~…kDlut.ù~ýíŠÝ#"£÷Vž÷°–>GM=Ý#å¾µ/ÂýTÖ';|i¾;›‹j³ñâŽu®"—u6*Rõ.m ÀØÇý3(0žŒsÇž®à«Ç3½Ò¼_/üÆïgzé óÙ`+4´žï¤ŸÔ‚é>šÒ_èçqŽ{­ÇãOé}ü=ßȬ‘î­¼½¼°÷+–rR°úþþÄ çœÍ$~±qR÷ Ž%ÕÙl#6Êæ¹C׺C¯;š§ƒ~¸®÷AàñõhÈA€vÒ'SÑùÕ×0ú«âVܱõ\…ïÌã¨÷U´Ç õá +îKÑ·Ÿ#óã¾;[å›F¢“ñŒqç7—H«#r\÷PBýc@ºrbGäÍÄ®;»…Œÿöê~õ¸g€ ÏöRêûÀYî+Û‰Uz œ÷Û ïcÞwb¯"Îól­Ü#uÅØ,&ÃÒîéét_¿?»Uϼ®Òùw?¢Ã ªSay¤ûOyó´ a¼ŒþóÖÙ¨ºâÊýv?žõŠ¹?6öõî$TG¹Ç;M6ݶæ=öy_-â1ÞÑ<¾zf!êN÷'jþòòß?ѵ/lëåñ»®ÇIýH¯\>~_¸Ý7,Ík<®lçzw*tºã“›‹´éÛË 8WF6=²)¦ßÝ›ÿ?æÞ¬G’$I{'P•á÷aæfîæn~»ÝG¸Gxܧgfä}Vee]]Õuôݽ=ËÝå`föa1/<@€ û´¯|âàã'ª*j‘Gu“ @“S%e®¦¦**òÉ©@Arª¿¹eýe³@}¹ÎäÔùÃ'SžuEÕÄØgͯüÞ¤ +þHb–S"ûœ×Q^š 9;ç…¤)êYR>Š¨¿‹ +!ôBFAÄ@ƒî5Q[óê†ùßajÂïbå—jÉEÁÃοPˆ¹Lq±B”— T¨ ¦„GþÏ XÉ¥ +ó‰+ìCÍû“S¨#OqP©ê”zÄ}tÇzÉ=qIƒ˜ŒcͺD{±2F©4;T¼@M[˜(/†Ä°X2ÊÑP3#S›‰…çʼnxwwj¾¶|…‚0ùPäñßf†€ŠEßá}13þ4ö§ück2Yû¼6Ÿu/Šÿæ§Ñõj¾<@Ôr7õ±Ì”)Zn„êQ'kI "iGP —<à'S_ÉB* +}õ,-ˆ¤Q6¹ÒCiþc­E@¬DÖ;Ä„"U’˜$|ürêBÆÄÊÞ µ Hg#ÉL¡h'ôãHÍŠúëß'Q¢<4”‹ªž*÷‘¸ëOS…èH#*¾ ÎCÀW”ï© 7?’î’L¹¸1K²B8½·&§‰ZY>U”,ŠÖV ;ê•yooyÓÅ-”¼æôŽŸYv†•¶m¬t+=ÇZ-©Òež†©òŠ›v<S) \ì¥âs:l~À{³ +óÃL?ÒuÖ§'Ši½û-âDZ}Fk—Åü|šHk‚ã ¸räˆK¢óÇ"uS8ÜØWFÍPeÈy”E,‰Ô‘aGèñ5jÈ û ð‡iy/sýmAVÌ KµÏ%g€Â§’¤HÊ£~ PáÂ{jœzÅkyûlöü’”דõ2þX67‰–ó$¹~0Ï‹%Lr=lá·¸Mö=/ÑChSÁó?FŒâbÜ$ЂPO,‰µxν\ïWªñIžhuë+o½ë¶Y«_D÷7ë£j(”ß:"”Ñn}Èœ~±0âÂk%õ½²IƧÁσ¿3E‹Òbú…+/þÎúÏRÎãð#»òáÆþ²èô„9Ë`/eq"xû£gö–Gá +JŠ 3€•z4g5ѦI¨‰ò DbluøJgDÔ[LÛYËfjlf}ôýÅÄBµ’ewåzb¡Ò0¢Ü€GfK=*€T¢JÖ1Òg4Ö# øŠ€eþ-ÛòãŸF %êQæ:J äA½,ÖŸ–±2¤õÅÚ„Ú[H›¢-=…\ÉY©ÄLr˲ ¢œ€…’²4õ¸‰Bƒ_Èx*•Vsˆµñ½¥½ÃX§PfFÉ°J)“Çd£È¡ +7)®Éyªž¦›Í4™Úݪ‰¨(a1myÇI¢ñÕ;“¸eàdlýQ^Ó‚$ÕZ¼N¬Ü||¥Ô2qصžã7D9–@ÝuÔ0¥¥ˆ©á&¿7ˆRß¡¤ '‡ôÙ r¢F§[Õ³\†(jg+²h}¡ˆ*@7•`ûظÇê…±v榫ÿÄdå^¤¶îY¢^k‘HÇ·"<9nûظê…t½u¤Ý;±t¸rª•Ô¼Å’ÄÂD¡0«¢%ÚG÷«ßgY b¢VH «u"!/IŒmNöùè¼Ô„}ª’I•Ì ¢k9a"+C$}­’ç, 3êÝ«ˆ)ó,U&ªòzŒøÑHá6Ê¡ÁWHb˜"6Ó¿Ò@M‹z%ñ«”ßšfíó ï}@ñeÏ„ÌlT\¬#Ôê#ÉäRú”í.á åZ“„Cˆ¢wA”òûcãªÒM»)sJ”ò éz=åK%@ß(r˜š,¾%Sä’&‚ŸVIʤ*ЀvuPºVÈ‘rêûcIbâ±CS\ù#‰üLôØ$¡rŽ• —igãÇgPœ;:#Îia:G¡ "ÛÈ0Á¨I–"êù +ì˜ÇÕ.U‘ô¬ˆ!Ã:,?6^4ÿVÑób¥Osª±Ô†k$ÝoD Ù è¥>ƒÜÓp…Ü×ü@Gåsï–gB„ÿæªç +[ú²¬^ªð¢ ‰õÑOP«S #WbЧ{B~br”i9J-IL½X©¬Tj%½ 0J²T©t@HZÂJØ÷± ¨™Ñ™ŠØ–†Òü—'0åànªFN¨ï«,ºúB©¯¬"z‚ÓYÒR—h—s"j›rDËn¬Ã8€G÷Ä?!Jõ¨¢÷c?>þè¬\©Ôƒ >Ñ®û'&+¿œèÚ/-F«ìaO•†ˆJmzÐN j²ÊÙ&©ògBn*‹‘ªÂ­Î@­BNûD‰f±¾?19õÃ[d&2VÕLY¡ñ˜õÊ÷$ˆ9?›*óÁ Žõ@Þ÷µ!¾e媙ÑmJ¾}ì͉uè_EÂy“íÔò¤9Jcjó¬ó½×óòu¢Ý…¢çå©Ý$§æÏKY°…B©¸ +òØônæ ªÐÏ2. >PÖGgPL-Ö‰1yÄéDÔئGaÈ˦œæ!®žý›kŠú2ù¬^ θ QýäoŒT?J%*jV:y‚œÿÞ|%% ]÷«ÂÅJÄÿ¤È¡J¢  ¾”$Dô¥=«ï•Ä c¢Hg–ÔHùb”%¦ˆÊ‹–Hæüèúщ™Â‰Š‰(²3YŠ3"*fO¨J9abœóòâ7~6õ™ìéTªˆAÌ4•ÝA4Ï/~ÿî¼÷ÎIkZªç +{‰j&@àU1›‹Àãüo¿0Ï$¯ÆÔjÐW`õƒ×ѹÔ|¥©¤^Ž«&e;ü]D¤+c•R&‘ÑKY{z2eJ…²T;™"§kÀ •,ˆÖ%êÙ0ÖDºÑE£ Óã*cB\xÔšÝS ­'–hgJQ  [(Nx»3ÆXìHèzÛø—¬&4×S§m,›z©BYt­ÚÒ(ÐÐ+ñ˜(¾´˜”'®,L®_°Ä¼ Ó< ½D:™‘º['"&*+™ßi/­ÃïUÌ$‘9ê÷?IמëØêKdÈc£È¢T)fÄËxw„Væ—Åj\ºIBª¸2µ±Ïy€Pe6$2K“ˆÔÞS¬,4rò¡0ßßn•ƒŸXÄÌょ‰H5T: ÔÛQ KÃocªC•¤›#Ô(YêóFR;Vž—ï>³‚©— (‰¹Ç3`'jB96™žG¥Ó¹¸ÞZÃœ‰t'‚"rä)•Þ@X;‘6žäÒø·>"¦LET«Joœ$ÆI¬f›iNðu> 9ø猢œ©XäǧÔUS ÂÀÓI|¢x+U¿Tr(•È¨•¦œk/â—$ÅìH¡Lgyè|êVî+6Ε|ösíM@Õ9-Æ|u¼„ÂÏŠ4CµUʪÍ5– ^„^®Mú”ˆWüFdå OäùSD•ˆ•(¬'‰›Ðtä(åg“T*5z6`ÎAMAd}›ÈÀ,ŽŒ•’‰%gøâ^ŸÙ%LHw9f|<Yv)É, "º£H’8–&%ùˆsvd?eÁ%xTéRµ äš ÏB¢ÞÓÍU¼²¿è‡ˆU^–Pñ‘‚ó§bö}Ìï!É©Æá±r ‘Ë"çKNrn(`B¹­Ì¯â‰ÔÎ^Í‹¢§—â-EÌ23æÞßvè„ʪ£4ߘçŹ[Ñ<Ô4ŽÍÑRý{XÕÚ!ä«GÙH‹dHV©,¬U’&ú÷‘Rú…ï(R^è /ìÇZ¬I­Þå|ŸUíÙze=íHU-aVZ«ÌmI俸гti³|TT¤M<&f±Ïƒ&•HUãBUsë%ôèBx>ဥ‘"Š(ÑFzÏXý$ž24¼L $²`2iú$Ú‰—H)#‰œ Ë‘‘/Q£D­‘óïc¶ +#e¯z‰NnJ¨vaFi® º¦n£È±Îˆ÷äI¢±‘RÊü²aÉÞ¤D¹1Lbf/…œEWt^™Ä+~_pb”óû-QÙo/:®óΰ¥ö\)K© —ºÒÁß2Î%-Pf +½<‹ôï9%´Íâ‚#mz*EGw'Å,Ï +K‹š´{ü¬h¹®ž íE©b¢H&?ªs¨e!ˆü,:ëEŽ6Š5´¡g-6 ©e°§‘p˜‡zÜ@yœög{¢µïÝx"‰„9ÔÊDzeJ$Äç`QîéÃ\Ä…rŸÕrÆ F"&gbˆɣDøXi;ö#ÓEá±f¸\ +Tq7IÀq“0áêéD꾤#e«D +o$ÊEN"àTä€3tij:YF-‰Œ3®œŸoÔ³E@ÝSPLÜZ§E_"ž¸}„%rL€œ'è*%1J÷Ò ²<ªÏ’>×)ÇÔÇQï)NªÍûˆ¥us‹Øœ æàÂØWdÆÞ’œ§ïÀw±±’s‰,jQDe#$—+úR¡óyXqŽRl27ƒV1eÕÊi¢ÑsÀ+çHêͱXW¾AÙ—™A€’3ö ~ù÷a¢ýN™tXSýºŠã$²F“, Þe/1€§ùž!‡xšÅjU`%Õ¡Ò6êÃh£õÁ‹žX¢3ÿ(@fÑÅ…ÊÁ™ËU¸YRÙ-˜ˆS–ëœÐH£ì´ÏR”]¡ÔCIÇ–]‰W”`æ±N‹¤]Øö‘NRÌc™\%O®/sSs²/ø8K·…U/A˜pR‘6Å!S/S®ò„ªÍ%¹«5všˆäH©³ÃH?›2nŠ˜iI×ð¹ “P¥„Y¥±Ä:HB}3UêT"}0’˜y‰š–È á"=€PœŠèiLMñ;‰ÈãŸpNtiÿB̹@tßvÌùœvŸ¥w‘,¤àPˆ¯ÓM¸–‡ˆ[qª|ôc‘"SvW¬~/úýÈX`¦@=í±b-_‡FbqÀ9BYœå@q<¥Wª/bIâQt‹aTÄQ µdÜ-„‘Š*'«[Žîxš‰iCý{. ˆuEÅ!Õ¥" {Ã_¦¬óˆ²pc5ƒ¹Hy²‘­‘ôÀòÚú¿ŽË]3‘+¤ˆs“§{#æ#}8EhŒóU$ì•Q0Ïã ¤* ;Ö¥aÚ½!Gõnˆ«‹7ŠÌ€¤Gα-OGqo…áØ( +Ek)ÖSI"¡Î5Ì"])’‰™ÈQQÕÎëB[ªØ2Ýf¨æéDÿ°87‘†þÂ÷éˆqò“¢IŽ$9Ʋ|î@QÁ-I—ª*/SHƒ”8 þa!£6áêÛ(r”pÝJ.`² z:5 Áf"ÇŒ8dhs%;ÝQå*B)J“%±X0±9’˜+õ§zGðì< tÄ›Wçf¤™½âk¹F&Õµô´´ÇH³\Góo•Ÿ«ÂJº€FÕ.PmfEj”Î%ö™ªÝéœè@­ÄþN9ÓYa¾ÇlËŒè‚X"F\‰&Êð ®ó9#9Ð&º^TÉÿÅÆùYNÇ-ßeå@:˜±¨, ¹Ø^Œ«K¢“,Ö/ÓÅö +‹Š/Hx€ˆ¡ -®K©’˜¥œ1F>Ÿ›,âD£(¾%Š¢l]U!š½q O‡¯³¢ÄZ—u$2—\P¹r(‹µ ¤Ù¥~Ÿs5žÈyæ¸æ=”nï “#NÝ)”X¸vóõéI]ðâi0›%:òA‰`I¤0×›û²:E£¢¿Ë¿T³=±'ã3’à!§¤\½‘ÉJÅöJ¢ˆÄV´ÈÚUhGæpñ« “Îø»¾QÊ<ÑZOtiPÊ<àÉ›öËùZ±®Y,"ÚhñyI)*Üê‚Û%+Ýk¤fàKø¼QdvËû2Ê-]èqÿ.ÝËC’I¢*牅:×Ù#q¬²§K¾“ÐgüÍ@ɗ𙡶ðñ(©²ÙH¸»ÈKÑ{ÅÅ­&L-Ü”¼ ÿŠ»-Y2^ªÍ+.µÊ2¶Ù85L8(reôqŽo ±&Ûll¢*^. D½aà³1zÌÏEùÝÈæqJÉ-³•Óéå6$¬Ëº% +Böâx·¾–“RéÕ;ሜåÑÊ)ò3öjøT Á_F’[CNbøé]¿JÀ™ôêQ®ü UØL¼‹UV(òÏ$QWUˆ'µ_&-ÊXƒø=¿LP8?’¬žMtA2;—|mËÊè”ÄPÏ ç@'  ë$É_¦žõ9T65e,õv‰vYýb~s–3ÓpxÃ+Ê͆UDô*ŠHØÆÎ%bú€}iEÒ`¨Ò˜=‘ç”°ÖKCÏê:ðTý¼H/”M1H¸Ú·pÅEW£ËšzAd•ªBv<²%èb0AöSÎmÍ|™¦IþH­Èd5¼ úº‡ü¢óɪ¨ˆ~z××d‘Ï‘Ò"u=)âßlO‡²a  ØÇ÷‹~’§¬¥tL›•’9¸FúŸË†¤(ˆAÈ­•üX9ÌL¸‘u ñ¹Ð!VáÔ‰Ò:ßs²ééðµÈŸæÉ’'‰q®Û€$œÁ 9¼mñ)(ÈEÙ!Ç'S­NBåDÑ“:€ŸRƒš—PôE.¼:œÉãgZ}‡âNI‹b~õÌ-Qt7½8ç`‰Ÿß*ßò8Î+ *Ó‰ZƒüVY¶°dÕ©>Ú©—ëaEòn$“6´*Õ‰RÕ|}S.Ñ¥2[þº4$¼U" 0d¾^Ñö#à€Oéää@V JbQ>.ò%1VeÓÄ,"¨µr¡:ÂŒ+ÅDέ\/u ’[Ê^$'«ÔÍÂ2†ÈLUÂ0Qøc™ø‘ò˜äÜÈj (Á•ÝM^ üAª“9HÆœ7™ê ¡ˆ\Ù¢o@ Š×ˆ¨Û.¥:†z·™*Еd]“&¾LÎ2ž±Êw1‡å‘;¸8$.²BÕ~C³ÈÓêƸp„s¥5ã¢T8”I!D$ Àâ+Ô©©±0¡Ù„‰ùQºEA Oæ¥Æ´ž÷nýžòa‰j%"ü^¡"&K´H[Íâ’¾¢§ŽZ€è¶®rÙ@Œt«Ÿ8Ò §.fQ(ÑH,î…ÑZ[Ú0â’nÍ™òDZÎ.ÍÄc”ÐÌq¼[Î(Õ™Áìî(O2’=–©‡tWFºž01O9ˆ¤QQnY´b Ù ‰¬ÖJ5XTlœË†ry®$‘µ÷‰Ó¾A, _%+Ñ“ºÙL S/E3cÝ|#•Œ-Á4 d•Á*r*tW1Ÿ}£õ4cÇ2Å_¤+òwqÍsò åžñ-¼ ã0òÙˆ c_"úú¤\¥ ’c2ÝGõµ¨Ve;&L¥Á +ˆØß©2~“ì–%»2ÈGÓ˜ƒdAÆ™ƒ¢Ä#¹}<ä³J2¦wÞæï¥D2sTò#©•D¦/×9°%&CíœÏ¢}‹Ôö9®IVÏrm~"­(˜‰R/(~¯K<%fE OVö’ê\¹„ÙGI­%ßE®E¹2 +D©§'„ZN'ªÍo$ûMpQÆ0“Щb•¦²Qä8ÔY•¬ÄMR¹Ô@¸/G:uN»û¨YlÀ‘®Ø “(à<É$–¸I”arJ4ò\b)î= Õy*R*²”iÀHd¯u}Hsž,¯m\Ø’‰–’H7Qñ·&Å.WHÉï»Qd/×y=”ÀÌB%ó93)ò䂉»å™id,HÕ‡¥RÙ±¬â&Uøĉz–v©ì/<ûxm8 »X‘EnKV^ñ\ú£I‚¦ºbÏ÷3ý{.ÙM¤üÙ(!ÌꪨºŒcÝ‚*+g¬Ð zmCvêÇ‘v/R .âõ +ut8–Æ«$fEn§Jk¤kæTo®d~[3²ü¡ü±@ Š8¸• +Ó±È#Í™mí²I¤áq¹Ëj"5‰Rù¹N[U>Òí>—d~XeÐy’ž ˜ZÓñdÙ$}]ÐËH”ÀÓ)‘ès£È‰;MhaQ¬rÑÏ8Q\ËU=)çkr€(§«Ç8“HV¢âÁ0à-9e¸åÚA›êúºASyUž¢ É«ºËG¬ñ …œ9œ*ƒp\e:âD“b‰k]u~RÀ/ã£K¼©f $Z‘T)gs~’ðÆI"ç& +‰E‰vµ$2Š¥¡oÌIªTИ-X ò ¹ä–!Jü¸.Mª@2ô˜¡'}™QÑs!‘ÝÙNÉ3½V^Ì6Mê3‘këFE$yYÑuâ:G]ø8µ¥‘ðjÉtWi?e¼®’­"*ÐÑn {£É†‹9s1 26¿|½/ +g¯ö–dOgÖŠ(Õãl8dê¤Tº°Y¯Êr~9ã µÍË™:‰lsÏÈN.ö•|£/ȵÌQÈ3ŠePR>é‰{©ø tá¯X[Órʲªˆ"]ì˜È»LøØA© +ì6Š CüvyÊLÒ™.*`6 ugéäV' +oõUiEŽcÖ_‰ª.‰B}'LJ‰ˆr­‘RÝÓP<Ëø$•nå³íÂP>ä,‹EN¢ü½êd(77Pg =ÉbP™,$\ âgR£¥YáaH´,Š•ùºkFªº¥‹'¾u¡<×EE£ÏTu£Dö·¥ªW rD:½å¬Š<íJµ²§Š>0ª +"ònÕí¦kÌ¥ÅÉ÷è".Rj*ò´A2"ô¾NøÌVà$„”L¸D—}ÑÝf…ìM%/†¹îZ«ÄÁ± Ò%"™V«äC +YR ûšÉ~P,zhWïPú¸ôEf”ÿÉÚ2—uÕa¦ï¢IåßØ5åÇ|¢¸ +Œf:›Y&- "GÓÝRC j#%ÔÈiÇ…7¾<9 ùÅiŠ¸l$LuàŒjü%7‡të·é xDnM™Èâ^þy´¹–ŸnÚöu 6Õ%ˆˆ +;ß®L§¯R©I©¼B=Í´ I`ÄšÈAÆ0Ñ!Rqå¿Œ“R•ü'WÀ×Í<®´¢K¸S xBŽ5‡‰6ÃT½z¶(ӑZé#VxyIÆ}á¤j äFg$cm¦Q½ŽÞ5ãúY‹RCYÈ6rVÁ-yV8ƒ“˜÷ ÛÃX']Ç9,l3u=‡$²—¶ŽKÃH÷”Ít%zXÄ9‹jòg',Q9¤HD èå•:ª«;&ÉK^ôÈ"@ä»±ìJU·³â¾˜TöMœ ÷}¬S)†Ùýïk]! +U9ªÀ-RR³@HtgY€ ㉦ š(X¡KÖ¹F”ÕB#TN-#͇Âbå|]†®Qù­Ráf•DÖ•‚ËU &§ê\ Zå²P¸%Iu#„œ‰ï51¡V4¾u¢âar!ˆá©F9è)̼úÜÓ! Xa0p î>—ÞäqÑç!ÖgL IŒŠ7Ê‹ôá¸1_¨±bÉæ?)r¦Ê éeÍ/j1ÒHØ}†ŠqQ`MÈ!Uøë,iÐDƒýH§¼7î›$°ÔíDÊŸ4™j¡ºjèVÚ¼j¶®ˆ:E,¼•…ºÃmÄ öt½«¤qÓÝß,Z䜨ÌMîa*ÛÜýÄT©¶ó‚È¡&±ÝŠëì3?-BãœCc·¦"‘Æ7peH–h‰ÈëUx€,`²N¼OuØ•›~0ÿ[Ì¥·~SîšIFM‰ÌE01ÀP}ûH„ÃÛÁÚ†¥WŽŸÈ•¹^¬­ñ,ѽ/Ù«žY Dä*AQT?û[¥þœR˜èhº êòûH7Pxo·zIêî/!·fTÖæ"ýNcn(¾é_”Øëq>,r`RÝãòc='?6+ÕØŽ +¹|6`Û«~c9).†×ªå$™üº 0Ö•h¿TtéŠDÕŸÈØyÉí}?|?hBý|ß]¢oæ¡›©uâ¼Èýçêƒ4ÓÑoO%Ù“°H9ÖS%ïeqî?…qø§LÝ×…·n’J=®Šxo^EË|vVFÒÎÑ-ó}NðH‚˜;\‡º¸$IU}ŒG ’‰úú:"Ž ó[-÷£T7åP½ê<Ý«6ÒåŽΫXá@_i)>¯0;Ž…Çu>‡;D·U°‘p\Šó\$YgçEêâ "êh&W©”ïþ:äûS¸¬O”‘èt)?fâ{Óçï +tš{(Ã-Ü™«‡B哵(*—<,dp +Šè0éâ !d95€û:RüˆÃ×÷Åû`Ew¿LgÛò%!T[ë¤Õᚈ9'ð§!×pË_š4ÇÜ20çáAS"[ßsiØ{¯/{»Fòp0#ø1·@I1|ÔŠVåqTPßcSô€Ô¬¤~¬;grr*wåê&î0Q‚WÐ$¾®ÊTõƒ¢I&Ÿ–@UàË=;™<­æÀµo~ «jÞ×qÑêóÝyÂBîJ².K t¥zf\–xÄI11vGE*±]ñõY|äË´HÔíë…¸ã}âà;pnÇ.êÇ8ì+Z l>>oT®;Õ©¾ô?qíeÄi¡¯‡)\¹‘.§òM]þª«ö¨7»ˆõMôºœÎG^ÊφºQÄ:>:1^LÛqªcÅO\P¨›àð-}DTWÄòVUä¢2?bî@'©…ëúv9Ë{o+Ž+·U+!^¸P;0ùସÛ(QÝÞä†ìü ƒW¨èŠÂ-ˆ³¢#p\tý`ÇZ»ç9×½ + ÈÚ=ËxO³œ÷4L% ³4Ï5ù½A¸ %¥Ór!½ÈåŽéaÀΪ[eEƒ0¶ä©&!.J,øï|ø ù":ò‹bl1Õžå)5OŽ‰› †©œËŽ ±³–'àq“w*Šp¹§`ܧA åèS|‘:Å`$#«:öÀ—Ô"’¬:ªúÿàä.µ š0e—gòz_ü Õ£G·É›OË,ÿGœÌ ç,ˆé­1ì¦,H`·A™BøÓÜú@ne¡`©xJLÉOÕiþé;Ó¥ù‹ñøÃhþø¡õµ¢œs eüä'µð&t‹üãí)ßÿw¾o?à?5uá“Ä*Ñ\'ú×iê;,G>3ª$Ÿ(>ñ«wÙ“{Ѿ;(]Úî1‘߯ˆruqÒ»ÏòN½wG-ˆïÌà6Y϶õög½»_½#Ôna7)Ô“Ëo*VŠö8òo ©\ñæÛ$=Ç‚¨¿æöpú»o¿ùÖ9ÎÂøƒgƒ(ñßõñöûß!óLoª?èƒOÿêE¨u_’¼»|úþ uÄ©ea“äÀáË(åZ"AÆ{CIŽèÊ •hÎAS2(|f (#ùï±l‹‚e å­Î’!)6¼GÈ—Lßwd5šºxñž¬Sd!ÈCêi%ï ‘S˜Š½Åëþ̲‡RƒÕ¬hȼշ§MÞŸY|æñ'’,D±(È­ÿO÷ðí'ïH°”ªÂÒ[ZOna&“9¥@&­7M¤ÚTOD_]‚Ñ}¥x Ž¼X®‚°MTã&”…)ÎÐER‡x6cq•ÉM’/‹ÉEõ±Ùþ¢¼ñûß%v9NÞý®œâFI½ó]9a$²ôÞý.Ú]Ñ×éÝï¢qø•ßEN&‹”ëÛ_FĔ̊Û_ö‘ùþ_–ÿ‘ØðCìå[‡¿ý¿À2Ñ,!¢• sáNUÐ#$³fííÿ°yï?PᤤÞæ£Ä[C»5GŸæˆŽßœ}ÿã7»ò¯âû¾ý>ý¬æzþÉâä›?ÿÕ7Ϭç÷>yE!#ÌÄßÄñׯÿÌ¢X¯ï%ôÛïþþÓô_øü¿™bv~*& +›€ú¤ßs;yûÇ·»ùÁüOž_þWV7ožÑ zý¥3Øsœ•e/ÛæÊvNú£3»·ît²fsa÷v§³KwtÒVÒ0|üÊ´“N7·»»†é»£É‘^M¼«þøÜÁoÇîdÓ4‚jÍ©V»­æ¸ëdîäxâÝ-î &WÝÑ‘ÑMë­ùÂ?ÏM+M®æ‹› ~Öžš•3º°zûm#n4îª;8rÜ£Etc:«RuÔ4"³›· ¯Þ˜™f2žœ…ñ“ÑâÊ6 ßì¦f7t†yݘvÝ]/y䟥ëo'Á#ü¼Ù‰TèÃìà‹`÷…Ÿ>—oFó{¶{Ð0ýÞ`m;X„¨Ö˜VkCÃœwìÀéç½Á²Zâ]kYovØ4cËÙë ŽlgÕwìÞÊ´÷Òôµ>5»ëz;¨Ô§ÕƬeøÓùåhrÚhÍÍéÀ=ŽÎºÎ~£é×jÓ¶ ÝÃ<ÞîDf'î÷ªµÉNÉÁmµÂVâ^ÿ¤çžZ½#«wP®Mkˆ†™™fæô»½ýV;²ìU£Tjã–·¤Ù +šmßuÇ£3¬m«Têóí’ƒ?åÊ°ZŇ];íš‹z}l^¹ÜÛÞéTjn½9o¶ƒF3ìX{Î.F«Õ1óE·¿ß2Âr¥×hÌ1ÉrÙm·c»{бֽÞñ`x6Ÿœ|çw›­‘ÑÉÜÑù<¼7œžÖ›³zmÔnE°;81»{µfP«Ïg±Ø̦禡~í¸ëV'K¤?<ŒÎ{½l>;¬Õ‡øæœÎoãÝwƒ9þ¾ÝÍIÇN¦Þ&^½š…‡³{Öà¨iÅ;ýÙ¿ß?þÌ´c£§÷²Õ÷~ò¹í·ÌLÒl{Íö¢Ñš7Z |oÇÞíöZfÖ2Ój}Z®Œ0m<ï öÚVÚé­Æ³M²ûÅÁñ7÷Ÿþ¶ÓZÅpzîe/–'ß»ŸuG]÷;òìé?\Þÿ¹ÝËjÍùx~}òsº÷u×=·Ý³v'k4çXFÃŒ1xµ>Ù)÷ëM¯Õö±¥2vgÐ2" ßß·°àVÞîì¶Ì]ÃÞë8`<œ…5ÖˆÇðÃFË£VªƒfknÛ c£9«Õ&Íú¢ÕôÀ``$ÓHw“gIü¸TrJ;½juT*÷·wll">Ö´×½þ¹i¶Í}wp=^UkÓV;0ÌÄîîaË Ú&äÃélqß°â­’ugÛsB¦ŒÇ—£á V4þN©»µm”K¶ÙºÝƒžshuÒRÓ0Œ¨Rukõx©ÑŒJ•y½4[~ÛZöF—$Xê#|E‹PîFâùOƒð…ï?ëŽÓäñŸÿò?>|ñÓ§wj£éÕþñwÙÁgtRkÌéµc0|µ1©Ô& ´Œx²¸OOmp¸?zôû©wQkÍK5׶—Iþ&H_ÛÝܲƒZ !œÎ. aÚÖn³³k÷O¦óûQúl8>5Ú‹éô$]=Ÿ†WÝáªëbåãóEps}÷ÇE°1­l9÷ÍÂ']÷´ÕÎ:ݽv‡ø ÜUª8U|Q{رqv–v÷’ͶL+©7'+î vÁóF7_O®þ|qó§Ã«o 'êv'ÞÅØ¿ú×öðÔ‹_œü:[¾:;ÿ6]=…6ÍxºØøé“áìÚìZ}|ÂÙÉ!^ÀZåꢠRšÖ +ÿZ¯O±A•êÈìdíNZmÎ+-¿‰mívì“©ÿ¬Ó_Uê.Öy4»Wkxåêxkg9Ó6¢f ̃˜jµéŸÍÆ¢Z–KýJ[9k6¼Éøt08G•Jýri°½Ý%6+÷êÍ…i¯†ã»ÎàÚ\N§Æã{&¸bb ò¡m` ŽLûp4¹%¯-gµUê”+ŽaF8tvweš)D¦Ýhx­f°µe‚µj5×hû–u`t Bãf3êv‡îq¯—»ƒ%ÂNeR®úÒ¦•âà´íã6„v'°;%›d™öû‡xÀ²¡òæ‹ûëãogÑõ§wêîô(HŽf—-È=kÒÀèäU¡p¬°V¦-Úât::ÙÜýÞq÷m¯cgj0º0l¬äIJ²Éälæ]µÍ¸?:°ú{vÿÀĹv0ŸFc†÷Ö'oçáµ_O‚Ë®{àNÏÇÞÿ´ýŽ½Ì²§ï¼\w+õ±adîðÒ²÷±¡!`òz â ÇZ­Ïëͤçœb©ûî™í`e2»»ì:ËÁðÀœ8Ããñüî"y> n:ÎÊ{ÑýÁôdê;ÓÃdõùÝ]Ÿ~õÇ0™ŽO QwÊXh<Ùä«o°;ãéÆ[ö.ÄD+$dW¹:´Û PÇ‚˜Š¡õšØYkmZǽþµ}#Ó20 gw+õY©2.U&ÐVB¯mÐbVwç½QŸC:ÕkSü!+÷ÛÐkÖn­6/•‡åʤV›îlw*Õa³9ƒãZÓ¯Ö0“E­š8ƒ#¬6"ØëSky†µìöϱi½ÞªmL!ÀØÄQ Ù5âíí^µ2©TÜ­-«ÙLûƒ³ä­µßhD½î~à_/æg;å&_©‘î«7ÀÛûýÑÍ"|2_C¸mït+•d×öŽ¹³cÛV¶Ú}1œ\ÝýjcŽÑ2†–ôúØ£áôžaï·;`Ñ``0XµZ#Óô­Þž3¼˜Î,|lå¾Ù ¡N¾k›)öZJÁœô'‡k2½ŽòÇ@;;UBÂvàž‚·§‹«ñü"ýËøŸŸùW£·í°7$»öÂ'Iörwï3gxH_‘[¡ÙÙï»›ñüéxöd8¹Ácf'8ËÉüªÖŠ ¬ëÍ+9š\'›þø*Š?}ö—Ó/êí¹ÝÛ›òý/w¾É¾žú›À¿÷üï¼å¦Ü˜´:©f°÷F£sÀR¦P.ÝÞ +‡#ãOƒðÏ®aåÛ%£ZÃç„-:¶«ruVoÄ­v>_ LJÛeÈ–q½™÷‡7ãÙ£ñìÆqÏÎüP#X2®Vûå2ö¢_kL,h–Þ;h´“zݫס\úÕª D¦2Ú)¹•ê r¬ ‘U†)wïl5Á*•q­¶h6 +lxjq§â”룖‚i‡ãM¯C±‡elj¶,pÎ!‡œÊ+•ÜRiX¯ûf;¯á+ªS£–J6„ØÖvj Ï·ÛÁ6IËA`¯}4íØX–Ü´—ýá9­Û;3Ú]~ØlâWI¹ænWÜíò_w|øm¥æ—3@¶·­Ì°öÜñ½8{§ŸÏfçn?ÎÓ{Qö¸;8ƒ6ÛýÝéô,ÏžçûoêM4: ×€‹„:œ“Þà|4¹É÷¾3àØ°dæ]ÛÎ^—„ÒÞÌ»ï>?9ÿæ÷úo¯}oö’þøx8ß g˜ ƒÑÙxqÏîÉ!èp.úîñd~w<»ç Άã+èÊÉìîõåçwSkÅõVlu×îðd4>ÇoÝñE>Zï6™_´­¸K/]úñólïíh~íG~þí¿¦ë§`øF;€¬Œ/€Ø!Q‡!ší‡Ê0Ú^)A.‘*±ö¬îA­>­Ñvð§Z…<‡¬8‚ØL³×îø¸T€OÚFÖ4ò¦ E¹´{G=ç¨ÓÙk6ü×í’U©:À¢Íærièžô§·v§ÍV Õ‚Vm¥ò¨Z›V«cðX¥2ÂÎv¬¼Ö˜A»íìtšM¿\ooCcº­6”Î,@òŠÃ„Úêì‚Ól{ì/k6£­±v{½}`fŒ ü†11°@Wxr©2$ô^ììôÁN¤ŽË)©À?¶½‚zšÌ6€j€÷à1 ‹ 5;I­:fÀUÃßÁ"X¹Õ[9ðaX©ö!óÉÖ°rÚ‹áu¶üfïø‡éüžã,GƒÝ«‹¯O¿èt³ÞàÀqF³S?¼»Ü{9^\”«“ñäd8>Æ £' ÿÙÂ{3;õŸØ}ð›×ï­–ëõÖ hÜîî/÷¾>¾øáüþÏg7?ºþYtxtö+/yR7ÀÕ»VoíEO¢üóx÷;¾Â”†ã“v'i´Â¦a²ç…¢ôÕñùAþ¢Þ^šÀZö®M‘{4™oÆÓ+²(;9v0<ì7mXÒON¯~^ħÁý|ýÂ°Ó +Á] 8X"мÐ#€ôŽsŒAq”Ê®Ó]á}¿` ì ÝxzãôOš5œn!yj3ì¸a¤€d½Á%þ `l™»X‡íR¿TBmanø×FØ,/W¦Pµ¥ +¶¬×l-`ƒc¯TGîY= Îj ØÑ3a‘­Àµ*Œ)¯VŸà'õŒ5ØÈa½Ah/­V‰çuèÄÚ Èßhâ±×?¦Ã^'ŒÆø'þ/O.¡> Ä¡kÕI«•Ë£.äºò’°Ä^’T¬Âƒ.—Á`Õ^d´Sð@]ÇHÜþQ¹Ž²Á;ÛÝFÓƒ:(…Ú-U],ZÛôJ%ãÓOk@°6 wÓïõ ?éøOÎ:½Ý)åxì®>Ÿ‡w1ìxz ìÝqÒž›Oçë¾ å“¯ zÄ›f¯£K˜Æ-3¯4¶¹ ëy÷G³³jslõÀ™ûãÙÅ`|<˜ž™ýµÑ[zñã³Ío½äQ ÂÁ=±úàÛëYðx¼xàNîÂÜÆó €“NNh;¾œzO“›NÿÌ‚­Ô;’°íõv›í‡·Ö˜YNg¬nlyeïâ2qк{¶³žÍïÅ鋆4Ú À~à"Xý;• vpÐ?ôý»-ÃØã £;¨üT°é>,;üÓ²×ÃñÃ{¦·e®*tŠa¿c˺Û;0ÐÌZÝo·V@È´éM¯\]?»B"1Äššeµî;IçÈÜ2£¡³×n/¶¶[àFðU»µZÐSt»a\7&w¶å2 IH<¯C +¸l6.Gã+ìt(03á|3§ÚòK¥¦WÐ'.ëà`³µZ ø À†ê'ÕYqËe ° 'jw•=~ñøÛåÞ§wZªcd åé¾aÎh2èôÙNɸói¹¼c@¬5[˜0ÛQk aéT†g“ñÅhrŠm…ù<œ\XƒUµ10m¿ç¤ÃÑ>ä•Ÿ<ϯêíÅ`rѲÒr}‚½ƒùá“ ~<W›S˜K†@?6 Ï覰àã«lïÛEôÜ^¶íÄ €Í°×m3tܳ(»:ùaä?èôa/øà+£›ÕÚsüj¼{/‡àgÝ0ÀK^=ž÷awWŸà`B+aòøWìN+”#¬ËÁð$È^Nü‡öà°Ínï²MΆóëZÛß®ôAqú8}X+À-Èp0›efxÅ6mA›DÔj.,3ÆyÄŽãhC2×›S,)¸ûn8’ xf{§GÀR«µ€†Ý!Ü2„~!ÔTA²A«Bv¬¬A6cHš··‡'kdŠh ÀWæ¤Rî¹}GÇBSã'Û;ƒzm=…u¶µU3 ¿kç ˜öõE +”„ÌÄéMf7ɤ…kC|d`d»¶…˜«ÜÙªï”L0 ÞŽ Õ6Ä9‚A +ñEÒ¦›Í`,[Káý°îlµ!Áð-;…¡„µ…úë÷óZ½¿Sjíì4J;­F}ÚwÖÓÉ™iÎ[õÁ|z„ ‘ÛhÌïu³*ØÀœ÷œ ›ýN‹ãº6"çÛè´ë®Íñxvd9(ä¨@m’èHvߧW@~r¿aÌ°àøyê¨ÕNüèfîßOO¢åãîðÀröá)lÒ:8ÁʲåùúKÆFÞËößzé‹þäfW½BKñópùB8Í]\ÖÚ^¥6+aÀê+?xI‹OMŽÁÀ*„~ë‹V+ôÒìeÏ]·š³Ý½g£à¤Òè—ëã +>­MºòèäWGW¿ëŽÏŒNìG÷Í.ôÐȈ[ µ‡Ã“R¥[¯:p§ÔÁIÇvƒÀxä1 R»mÓ‡Ùh€ÖÐVåò¤TÆ~­` Õãý!·XÐ ñáöŽƒ‡ûý3€X-Ó¯·¦ØÄ­-<µÔSß²¢F}ܵ¢8ºlt°|!ÖÖÍFP¯ArŽK%«kgFkÁÕl†8Yêóyt±> Þ^®ö+5"¨RÁÄ\h(À§r_ÑoµçbÙ[[ä0d”°¦³éÅo~ÿß“sl»]©ôó@ßBV0xÓßÛ{¶¿~¦ªW;=kÞ³B˜Ÿ‚[TV'Ù?x[ Ö(øVH<Ð \7 ×Ê Z™µšAÛÀGÅNŸ\OÝüäâKg´·µÓ-Ãö$Hìõ‡»{_ô‡'ÓÉù‹·ÿu¹îË€Úv>p×`­ñôlo÷ñÓ7uç§eÁѶ½¿ð_Þûëòè[³»êÉæÕÛ>4W0~q?ßÿÊÏŸÇÁÝo~õÁî½;;¦ÏòF㻶ss~ÿð-ðs©4fÀ¿â¿N¦W0“!r»übó}oœnm×!+ÀT¡Ž»¾ùáüæwƒéùl|r÷æ»Z{¼µÝØÞ6,;ƒ„XÌïBaá˜XÝØ0}¡žì‰²‹Áí;jµ'órÛ“ŽîíØz°pW.0X@(œLOºÎòΖ±µÕ†="”N:p¯lÂaÓôÊÕž'ÈX[8é€[³ÉQ˜\•ë®p‹ÁÐÀ HI•ÇÚ´ke³ÉY,dÅýþfiµ¥æâm#Üßi÷2È.œ°¢ÑÎëâÐœƒ£zv8ÇÀZ]äJ ‹~µ‹òÁ“ßU›ÃJɶÚ> È®ímš|µå’Å飹w^.–1éÙ‹v–ì”±ÝÝO!î÷0©eZ•J°_&mlD7s‡kˆt¨àZun€Cìˆ&qcx7§o{ƒ„¼AÞ?p_æ¤EþÒÓgoþ¡ÖžØv꺇ÝîrÌêîšVbZáþòÑÛïÿy^W ŽÆ8;C÷l¶¸—î½rFÇ5¡ÍÉa¹9îöw“ì‘Ù]¶a[yÏ=:?{ûÿò¿ž^}÷öìU2­9‹v{“ù“Ñô^ÖîÂÐ i¡ßéǜù·Þžb…]N«f{Ö2ç½'ïtÓãÕ³ùÿK«3ßÞnwL/ˆ6´Ø£ÎÎPmá_ÂäÌ1L¯Ýžf¥€‘ñáþüêûßÿkË‚µÞ1)ÿ4Œê¢&¯ß¼ýw'_C§lo·*œå²S@öbzý}à:èSH`ãrÉÞÙ±€èÆîéb~鸫Rm 9¹µcCƒ@)zËAo5-—V'ý«Fs +±³µÕªãà ''8§QòÀäR V«}aÈN„ú6üÉx5@ ˆHœ Älp{Ç€E3C<~úIegƒÃ\CØÂj€ Y*Ùu‚R}¼o·"È.DµM`ÝéÖŽÍØé$&,q#†µ²S".“à˜À4Cwp&O‡ó+€|ìNn“"bÊÀTÎ`=šžÁ„ì +]øwýì‘íÀx_:ƒ}«—÷úKÏ¿ì¹û¥:ÔÙ” w}Ú ?$d캸?ØÇ:cü¶ÙÎ +°\ÃàÙlqwyð&9x; šÎ^­9‡à%c¼>,×G¶³kÔê8Ã붵^xOþC€«ZsŒý ±nÕ¬­ rcQm€aÌíþÙÁ<ƒGqþ4N7ùò>@Î[Y1vJmü+–b<¾vgÝ>ìÍP¹mxÕú€Nì_wŒ†ÏòÃ/Êrrq J%,2N·U.Ûõúh0:œxWŽ{DÞ§Ö´Vu*•.6»ß&Y^k„ùÝîÉÜ{iÚ+2 ë@\ØŽ€}­N¾»nÿ4L?ƒ5Ašº½sw "ÊývcÒ¨M:FwÁ õº™l´¡GúöH½Iq1×=Æ3[€Ù;=¼·ÙœA?ît쑵 9IQ›.$Ïp°&„þôð§Þ˜Yö>˜"ËhÃâèÁFÞ)õÉDmÐdÜþ }µ<÷¶¶­O>îêŸ8©BõÛ$BÉ¡1€:náKíˆMOrz”ÁZ3L ü UKºfr1¶€XÌ`8>°zi£´:YÓXÖa}¶»þ.Ø} ƒ¥Û[BBŒ€‡!¢¡ë­¨ÙN µñÒŽ݃z{Ö,]w=žÉËyðØìí„V·aAÛ©a%cï•Ÿ; Ÿ°Û±a­:ägHj­aà°·ÞÝûf<¿otöê­G»cç-8þø®v(î¬ëœÝ*9ˆ\²Ák#HÚÞpÏìÅ'3-Xd9áê&Fà L;j´ÀŸ, X¬¦½-LQÅN +e ¨‰/¦ýÚqÏÍÎÊê,±õЧõ–±»½Ý€ö¬·|àÉ–™Y„»f)ØP(ˆr©GjvbîY]ð^Voe–}ØwŽZí±‡p–bÚ¼ƒ·yZËÉxSà)u–g4Võ*TÒQÛÈÛí¸ÑÚÃ0'à[Ó€?œM7“ÑDD£6¯VÜ;wêŸ|Rˆ*æémmã ‘+µJÆos£A¶†{gÛ‚­T¦• +¦=ükl¸ºÓ +ÚM +¤BâCð+¨6ËØÏ`lno°õaz§ ^¯ÏÈAm ã±YºÛïC¤@õWÊcüж—5reôª$gÂ^÷p6»‹ÆúÎ*IvHŽw3wÜë™÷"Ýýz4¿C «FaSTë#l·ã¬F£ÓÑøºç@Y”+þ½—Æk-ˆhºxêݬOÒ—àŸzÓŸ,8à :¹—¼™†ÏÍÞ>6«c¯¦ÞÃEübà §£Ù‰Õ]¦W-3ªÔ Óaé/ûî±ab¡à=›Z#®5“j#¨Ö¡ÑrÇþYƒOp(Ì^ÒY·`ßµ¼rÙ©UÆ.IÂh»Üt'§ýñqv4ù¸Vãé½Ùâaƒ$ç¤EÑÀÐÖ½ad•ê 8ÙÄ jŒ¶wÚ°¿*õþ@qÓÒ5üŽ¥T«³­;Ž?à7ÐH‰¼^ÐA~ß½Z,^LgÉSÔ?êXÑNÙ"+¯>†T·P­Æ“«fcb´¦ýn^Ú1·a»íôû ?Ƥ³ôÛXl´Ú!°tS³Yæÿ4[9Ú§ŸV¡ÝÊ%ŠNÞ¹Óþä“f‰¬Nˆ¤ ÙÒN ¯ïlÙ¦¹l·±z»†±ò¼»ƒ0m2·[„ŽÕ² ®3Z1l–Ž‘noÛU²4»_µêd6„Uî‹!2جBèåi•¶)jµ€TãL²4€&Â.W«Œ«ïõO'‹{”|RÛ½}»·nub˜$Ûå.ä!ÎŽ=€š«SbIÔ2 CÁœÐ cËÊúÎáhx>œÕÛms†]vFkÛ¥PÑ~zåN¯[ä,¶™`Øru…@ÛuÏ:ý“f+¿wü«û~¬BñÕ&àd¨°åAŸúeú¢qž>¬R oaZ‡ƒá¹EÔ}»{Ô4¬ÿg¯ÿíËÏÿ + °j§ K|fwâž½/îZ°E†ü.ôõVÙÜ©ô»ÎÁlq?ˆ_Œ§w²œ~î –;åî©€ˆä†‘П–O©8í ×ÃíS”¿9‡È×ï›ÆªVóqfVP­80Í`”aV"+€¼[;؃Q?ºYµ +ù¹¨Ö1±A¹U‹‡]³í¹Ýt⮡žªü°‰À¢¨Z`›0°‰<`ÉÙjø]s¯ÑêÛæ~½6¹s§q‡Û'à/•ÒF@Tæ<Ö°õP+ÕÚÿ¬A VfÛe˜™S€XϦw¡¶`oâ‹ð‡òp ¬¶Lš ¾ææpôJ¤p§–PU Ê}ØÝô>ùü![0,Œe|{öŠØ.áצÂeã6+•úPvM#ܦT “ÜÎà~µ€p3`Ú«Þà8§\¶ €ÛxÄs†áƒþx½U¶¡Üщ;<ŸÔ>Žs½4HP÷Ìö¬×1ájc Ów/ÆÓÍrýõ"ÐþqGg@ä‡Áq.Ù˜€ÙI-{U­- s·m¤%0ÙÙ{ãÓ`b áMNÜj-H$6 R»›S~”Avx 6o‹|¹yÀèBùÎÊå!N:æF5̸mÅ•Æ ~ÃO°Yø;PåÂÛÄÙ“Eð EîÇ`ÌÏFkØ2`Eàÿ!0ªÀ¿WmâçÃ$}ê ÈDy,¡Æ–y0 '¨­Løç]ðLk—üŸÝ%eÜÕ禕CRa!䉑HhÌq`ûƒh.ì#Ð6F«Ýߟ÷&ó+³³ßsNð[ ˜§»jµ°Ö’¤ÞJ‰±í* ö)Šm.{½ã®µjP“w nD¬yó¨µÖô°’yöàäâË;l5àÞTäJõ¡§Je ÿ™ˆ.yؔҎÿ¤ˆÞvwkË®@—Õçàè8‡°nÍ–ÃA† +Ãö5( ¬5èÒÝÞjlo9{°åKô¥‹4zÖí…Ÿ~Zºói¥^!^ÂÄ  1+"žì„ÿ£Á x‹I 'ç}÷P büÎŽ™Ìa;@Ùa¶ÔzÞ1—À*~–‘´Ó­;0»ÁE ÀÉPJ·¿¨ct’Nw_DŠ)x7½«áü¢B¦( k@H²»ÄÚ¦*øÖ7ð+2Äõö‚¼I8Ç¥Ê=þýþþtz4Ÿ Çgîº×?è‘'ê¸c^pé‡70;ÛT®OÊõ1ðùåÕOîhºÑ JµÑ}Ú¬´@ý#ÊätÖJÛð·JÃíÒ°mR2í%¤74i§»7vzùÖŽÛ¹\@fBM[Ý5ÐrÇ:3×ê° úÐàîêðä×G'?¸ÃÝ¥"¥ Ô(t"R=]‘k— %ì}8Y5’‹f+ôÏGäëˆÁxävÉ6äÁÞî–K”í‰O›LÏFó ì‘ðdÎÉNßé5`6Òz +¥šÔÈ :/•†[[´˜ÀÃ`­aȧE.ÐŽ»Î~³áVÊk!ô),8èšf‹Jm;«–»Ÿ~ª•vlH`ð?°ŸmÁþ"ƒb§ÝëPz”W¥ìŠÌa¯Nqp|£OÁ©°J“ŒÐ¸e¤Ø jˆš*ùùûŸ|R¿óI“fE*,6;»e¯åøK,Ñ À–;t|&’µZí|8¹ ÒÇóàÞÌ¿ôÓ›ž +þd0¹N/½øQ˜¿LöÞ݃6%–À„!|ˆÍ¥Ø«‰S¿2-H³9‰#;'°Ó°×Øßá +ë²ïîMg§sï®ãžöÝ“.Í×ãÉÅÙÙ÷ûë/&³sò `KŒ , kÈé¯a¶×ÚCœ}pŽaíÆgÃÙµ;½‚±4.b¾S‘ézhõöê@ÈÖræ?L–¯m—¼ÜP5!÷v*#˜“Ãé]wr »MNKH64;NÏ0Ûr†XÔ6)ÕŸB«Âº„$wA·(½ÈßÞ¶r0ÐÎp¸î9‡kL +¯i‚I`ÄUrV“L …ÅmÆvoÏÀ„›QÃkMJ`ÎlÃRnà¨æÕFØé­G“K ÖZÝ'c}"r &ÀZž¦™õº{Nw¾Â|êC'½C¡¥öw–x…Ì^è\ˆÀ§^‡uæC*ÚÄ ô{6›Wk}Þþ`åG78Ÿ`ËÞàp·IÆQ:¯)·¹>ÃFcmç¸Ó;hRm¼CÌCaG(#FA1ÑÃ0~€í†Ýl»R(¶aû#¬ðÅÞÉk?kÈ‹oÓ‹X»JW/×ßG«×ƒñ9yM?LôG§]ò ¬°;“ÅE|87½þÞxväÜ)¥ç¹“ ?}¼<ø<Û{6nºî1TØ»ïV¹GÎàX9</‰È¾L¶ßë ׳ù¹Õ…6Cñ‰Š€ÃÉâ.´ )”ä!qé`m ϱ˜øáÞÜ¿wrñíÑå·ýñDÝ_ÃB§½±°»Ù<¸Ú;spõõõ“Ÿ_÷ßì_|ëŒOS`¡£J@èh0:óƒû§çß®Ž¾À§ç áèt"ÇÝ:r(ƒ÷8Ù}¼<|//ü3*رÁ W½þ‘A)j‹è&Ü}4Z@¿\RIŽ³ê¹û“àjìß›…ÂüÉþÙÛãÍ×óèlžÄ«áòa°|˜¬ŸÍãMºÿtÝ.ÎÝÙ $I´v§Gï¿Z­ß<~ño¿þóòð¥—ܸóKì…müäÞòè‹xÿ«£«ßaMì¬H¸7X-Âk¨ã`÷ù`vÝŸ^®N¾ñ¢û3ÿb8cŸøÙóYôxâ?/îï.Ÿ[ÄO½øÉÞÁ×ÿ¯>¯–«®i†½n:óÎòƒáòY¶þìúÉŽ®¿Ç>f«‡×w¿ŒOÛ°0öþp¼ óW«ÓïNïþn=<8þãù‹åÑ7—7xûÿþö/ÿÓç_þÃßýC¼÷hoÖ_¬/¿Œ÷ž¬Ï¿xüú¯¯¿ÿ—dýÜ­{Ã¥;Þ³¨Ó{¿¾|øc¶ÿüËþãõÓù±3>’Mºz¸¾ü*Z‘|=ß}2O¬/¾²œ¨Ñ¹ãu¾ÿòôæw§þpüà·Ç7¿Íן?|ñûåá#/9_ž|î>‡¤Š–/ÎÞ^?ý ~8óÁ«÷›ßìºØeÿÚoâå³ÃËïÏîýf09NüèÂrw²;ΗGŸßýîxóÝõƒŸ¿ø ÜÔßL¼»·øüdùbyðÙéõ7¿[}I ]Ùéf“ùEºz¾:}î>Y$7~þh÷ðÕ4Úô&Ç“ðÞ,¾ïçOöN¾Ä +_?ùÝÔ»´»Q¿Ÿ[& ÏœÄéóû/þpùø‡³û?lžÿùðâËo~üXhωwurÿ»ßþû·?ÿÓ׿ùç—oþ”ìÞóÂ˃³/ã“áì¢?9_$¼ü·W~s|ýí“×ÅÁowÂáüR4Z>;¹þîÁ«?ÝõÇëG?üøçÿtóü'?½Û,GTÕò"?zsñä·—¿Ú]¿¾~ü;k°´ìE¶{w2;¬7ÜÑôàäúÛW¿þ—WßýãúOÿÃþßÃô‘=ôæŸÖçß9ÃóÁøj‘ZíëÌL¬ÝYímÍ.ž\;u7kk°5³q)]Û–#ƒÆäé¹Ý›ùÞªW£Ù–Ì#¸ÎHU%*¥;sjzãjgîB¹j|éÒ`ùŽ@xüü¹û}î£zºe±³œT×cÓ™êzoþ`õØ=ÕþîäÔÞ{?ðOùæ*Ô@¥µ™­®@É-m_;sçS;gŸ$—Ç{›3óûP‚RR (ªñD~¹9uféØÛçÞ]?½ºvvfþ(-f´H;HÁ¦jųÓËGo®œzx!îBá‘lÎÀÉe°Ÿ^,íASÑäBcp#ƒSõ:L1H Y Új´·o>ôBúΦêç‹SéòÚ`ùb¡w Gdc’¤ÓáÈF%,Žv¹™™µó‹;wµg÷P/L®Ùܾç²b*–ê6Ç5ûb¨ ×ÏÎÇs JÃñq=ÖuzE”8ÃME3‹ÓK·Ÿ¹ü$€ùÚêÙµÍs¼”&»™Êb®¶ÑŸ;sòƒ÷<ò^À•¥<þÞþÂiðD~2fürºx¼:~¡6~6htÖÖNœ¹+«`0ÑZ] ±Ùhzqz톑œ÷¡†nŸB H`üZ(9+›©üì•ûžÝ<~‡ÇÑ…‘™l}7YÙPŒ>F決¿ï¿ 5Y¡+­¦*Ûý…;H.ëAö ª‘eµŠB‹mÀ4åZ'ô2Ž'º£½èö3¬OæçÊÍÍFo£Ö^ŸÞ唬ÕIË|¡²™¯î¤ +«Àb’^+VöÏÝ¿|첟0rµ•L}#š_¨O¤ê›ZlfùÌÁ;o<ˆTFm¬¨" ÔpŠ¶1qmvîÄg^ûZgò¨¤Vνýñ©­kóÛWwœ\»&*ÍÛ÷ï¹ã®'q:©†Úð£ùêFº¸Rhl´g*ýcb°~êôµÅÕ}ŠO¥Ë‹¹æ¦‘œ‰¤fKÍå£÷µç.…¢“S³gH>3lÁóEl]à*à5x¥“.̧ÒíJm£Âzl8‘Wk‘Ätsâ¤i‘\ª>yF +5(TDŠ£.Íê5±Ϭº|ГÑx/ ×›ƒÞÜ©h~ž1IdŠÅå«7ŸWôbº85±t®Ö?LL jI ”1&s9¸ #6@pMP³ªÞРkŒN0ÒÌæ@8ÍLïÍ-œåSmoŒ/tgº3'û³G›ÝU]¯?þØs_þÖVwïpx™ ¹”M²¸“(˜OdüÚÕG_üè+ùÂ8H¸rç´F¹·ß™»k|éˆ@’íu&[Y²™{ŠeŠÏçêÛÉÂR{âä½O|tyï²kª n¯Jp9^k’\è&W^Û:z÷ÊÆ%AÌW‹éò Á%ýD’æ*Áð ]ÚÈWT׃µp´‹’º@Ôtg¼Ú¡Ùœn´|¨bw‘ ‰eú‰½•½«™ú*ø‹1;guÐ(©áTP Uã™…Ty³Òß™\:¿~êf‹Oj‹R° hùõ“ͬߕolæ*+åÖ&à‰S¯Èz£c8‰¤§  ƒ£ÝÙ­©9\ÅÈ€­%òSÙÆZ¥<ßÞC=ŒŒEcÍH¼ ^@T*!£Ã±)¿_Ó´Zµ·[hoãÝR{;]Y¡…T45ÅÀÊN©pj£#N¯âC‚§OÝcîîAýhÚÍÔ9,(¬ŸH`T,o•êK@ùòâüÖõúøí¡ØRò|¹\2š¥ÚÊùëÏÒRöï;;P"ÍŠPr¥4~G8µ`s‰Í•ÀC¥KKÍ©S½¹ +›÷,­]ÉW·¹EYÎ?uw£»æôJ~:’qŠìÑb3ÁØ€æ¢;»r¹I |¢TMdçB±i`®`t*[ÝŠD:Ssû©â”.@.Å&$¥\ª,ÔZË4ŸôcaŒˆ@yôN06%jíd~1šœŒ'&¢‘6Ç¥:ý½|sK2ºœR»õXÉð¡q^jL/Ý¡è 7~”‚­zïD­¬Ö;Úì”z&;yöâC4æäjº¶MQéX8vïôêùE2qéÊ#Ss»NÓF‚áYFÈ ”îôIà­$¥Ê yP¤Œ˜‚Da9×؆†5j¢ÇgŒpÕæ Ý^ÑÜO-ÖD­GÐU†IS³9“5½ '¡x;Q\[$…Z‰ìl(Ò••l¥4³°y!šŸb¤<#µõä`_O̧*›”:ÎæËí­R{³ÔÝeU¾U®>\I&[{ûní?Rl“´‚ÁhàÍÍ]?.etu:†M5‡â]5ÚÖS?TéN†Ù¤ùL,=]ëŸT,Ô–ÔP‰â"Nhµ1N—8fC­v*d´ëݽbs¯:~.”™/ìE9PÎ—×ƒá ŒÊƒh§„4J…«­ÕZo˪pº1Àɘ ÑR‰j€æóŠ@UÑênŸZ¨nN¯Ü•È.åŠs­þN89  +”Nž¼;–¨ÙÜœ‘žÍTwš“çsw#S$_F©„¬NŸ¼žJõ¿ž)ÌO-œ«µwÙÅDv…â +±X¿7~ÅÂáHwióžÎÔùH|F ´Á6ÍáNÓ…Y^JÁL‘T4œ„¢ýVÿØÔòEV(9ìL@J>üèóÁ`Íã ’lFË‚\&çÛÓ‹A±gÒÝé•s¬\ô ’1<äõÝnÍDP¿ùls~ñ\"¿àò§–=þ Ûtz š«òJËbevƒ×V½‘QÄ\ÛæAyòJ…ás"—Y_½-L¸1!u?ªV‚]Ek‘TØ:†x4`ô„`;’‚Æ™öãi `—[&É/&iFO¤zj¸%†šzj¦ÜÙÑ#íX´µ½uqzéŇqÊHd&º'ÆgÎdL»1.ê~2 +ã™ÉÍ¡³ðÅÖÌÊ•îÔþÆÞ½+;×y%]ÌuöN^Í”g€n\æ«CóÁZ86OgO;ÝšIûЀÓI³|¢Ðܘ\¹Ôž8öjëøÃÙó‰DuåöÎÄIN.P|ÎãEuUé2tÎi¾Ðä(&"kEPÔøBeq6†Z€• +¢¹t¥±K™8Ì +¦Š°;Xį‰bÁjAFF\&J„{ÙÒj±¾ùMÆP"Rilu&NC#àtd@º´ËÌ™ñ)l̃À˜ÇÂÉ>+åH6}KüçõØT©¾Ù›8`ù‚Ç«`˜¡MèeèwVȃV³0 “÷yƒ$” +Îdq&¯ê½zïøôÒ wä*ëÀV;éöp.ãó«$“Ò¢ýdnÆA‘ó­d£à¡}Õy©HI’J1LÖç–ÆÛKg/<äÔ¡!‡ÓNhP™¤·$d³Ò—|íŸÿenv{lÌïGd= +g˜3¢ó©ìZ*·b†EŒápt”e ‡õ‚Ђ¾ã“¼’Ó‚¥•ÕýLcÒñgc 5Rã0#)¸AŸGŽFzšÑ.CIÆÜíSPÜ ¨„ —XsТ[;—òµy5\£¤,ÆFqJ—Ù Ø=­è÷Kªœ-Õ åY%Xòa1ð æ.ž]ÇÐ)’VËT6ÆçöA¨dË3ªQöáR§;·wpE ¤‡-É”ø@W õ%¥ ããôj YSù^M¹Ý¤$'K­µÎôɹµ ý¹ƒZw3iD£µ3g®?sÅNcd’—¢Ò2¢›÷ù4/L" fj›6Y¥-h½ti'_;†ÑI»‹Qµl4ÑãÄÜ/èR†Í0L†¡Ò>O`lÄë°"¨_¡Ù„l€Suáö©¬[¢Zv¸ùd~*QZ %'(! ¦É‡Z¹ÒØ{8f%¬V’f³Ð¼±äT±²Žnm!q"’ÉÏ[Æ0†O„"­RkS6 6íòHN<è't/RÃýÆà 7s¶5~"•_"™‚Ë«ÃÈÀõ¸Ü´×'PLÜH ¦ÖîlŒØ4#äàä¤Å#&91«šñät25'‚‚¢"<ŸCGG|.;ás³$n8œ¹˜ÐFËbnÿä•T¤jA("¢êm†Ïs\¢±ZŸWK§fh:Ãð»“ôø g #nZþæôJ¶9‘iŒ×s Û'VOôWv”x‘QRF¬Ô £CÑq›“òúx’Ô$94*z¬&‡rŠ‘O;¯<<·µŸªôH1JËÉp²Zí/¥¾Û/ÀÿŸËöŒHÅfG”˜),–:ǵÄ4ÊDE%–*÷´DUK”h5¦2ÍùùLw—Â8k˜ÇÙ¸Ë+ŒŒ:n +;ž™®÷öx5F'h‰tQK¨‘«&Dµ?½4³±LWJSõf0Ü¿µOAv {Ü.>•™Š%Aä@û ‘ÅÅ@t. c“>ÂÀ=’®ZÜ…r\bäT±¹NP)›öø=K EQÍínÁ‡j’ZÖâœËq`DpçÄÅ¥3¡deÌ…:|‚¢·CÑqœŠŒøFG«ô£A Ûìf‚Ã)qPj'šš …û¢œß=yiyëT¦:Npa«‹… Dªl çFEš72•9VÊÓBJ8§rÎþ`梦7mJ‹áâ‘dO dy¥ *%Y-*¡b¡¹Ph/êñj<ÝMdfÓù¥HlÂj!Ýf=rÄMÑ =Ôp;é¡#ö‘a¯Ó.Jb©T^Édi&76FYFQ præȈghÔ3bñÓ\)•ÛŠ'*ëtˆªV–äD>ß\\ÚÞÜ:uîÒµ‡žx÷S/¼ð‘OýÓW¾ùµ·ÞúÕ_þã?ßù·?~ã»?ºç§šã›pmc·Ö€‘x$ Z7Ûª•ÍÎü`b~uc÷Ìí—~âÝ÷>öäå‡>}×Õ‹×oÞóè»ï»ÿ‰Ï¾òùO~îskÛ'6·Ï«“ 0"¤‹½ÂÑ@ Y®t§g—V×·NŸ;så¾>ýîç>üâå‡;ýÁ›?û¡úÇ×¾üÅ/}ë;Ÿÿê7ßûâ?-oŸ–)W݆À”°^Ž'j²jÄS…þÄüÒÆñ™•íÖÄôäâêìúÞΩsÏ>ÿþ½þã_þúW¯~å+—ïy`|r=‘lºÝ‚Û!yÝ*‰x¯\^$IÃn§>Ö¬6ú‹¹êd²ØËÕ'·OÞyåæ£=ñô'_}õÁ'Ÿ¹ç‘wß|òY-R)pçr°›…¢¬ÔD)Oz8VIfëÅJ«Ñ™]ò𻟻ñÀc×î{葧ßóù¯ëƒ/½t߃Ÿ¾t“2àv±4m¨Z5—¥R"Ù  ñx³Ñœß:zvjfúô™Ûo¿óê•{îýÔg>ûÛßÿéßþð§ßÿáo¾ýöóøp±8>2ŠŽRÐtáðd6»b· 6+xQHStÚ‡„D¥è0ÃFÓéæÞÞ™KWïÝ¿xíÆC?ó¾Nœ¾£?sªÞÝ¥¬¹–õ¸yZïÖ'×—wΞ:{íòï}îݯ½úÊÏÞøù¯~óëŸüü§o¾ùæýío¿þí¿~þŸ¿ôÂ?|xóØí¥æ†1o0®\N$ÃéXˆÝƒó·ßqåÚÝÏ<óÌç¾ø¥/|õëûÌ+xé#_úÚ×^ÿÅ/_yí ßúú7þö·¿½ú¥o¼÷>~úÂõDº—/Îtëùꤦg³™òÂÜìä¾}è½ûÄG¿ú­¯¾õÎ;ßzýGŸÿÆ7¾ýÃÿñú?ÿ÷ÿþé?àJ~û­üà‘gžoO¬Ñ&&IHQ=U+·WW×àØÙÝ»vÏ=ïûà /¿òñ?ñ/|ì_~õ•ï¿þßÿâg¿û÷ßü÷ÿþï·~ýÎþá#—.ß›ËK\!2a£Ÿ+®øQõIºšàÞÛ=vãÞ›O<ýÌÏ¿ïñçžõ‹_ùÞ_ÿÁO^ÿÓ_ÿôçÿøÏ_üò׿þÍo^ýü—w]Îäfx¾Ô:Ÿ7â==Ro5g—–¶Nœýä3OÝsÞà¸2K­©¥­ÛOî_¿ëƒ÷ÝõÜS~å‹Ÿþ÷û5Tô[oÿü§?ýî§?ó‘»ï¾´ººšÉ7ŒXE ŸWfÈ @t%TË•ŽmïÞóþÇô‰'ÿÈ‹øÞ÷¿ûï}÷s_|íßøÚÿüçþì'Ÿzå“Ÿþì§ïº~ÿâê©fgIQ2±p5_ìe²õd²47µ¼¹º~tså«ÿùsŸþÒ—^ýú7¿ôÖÛ¿øý_þúú/Þ|ýç?{ç_þÇþåç+ßþòÃO>°¸¶IÔ%%#Ê E4*…úÜÌò™ƒó§O>uìèý7®½úê'ßxãGoþê—ß}ýõ¯|óË?{óGÿúÛ·ßþÕ¿þ4ËO>óê+׮߬6g \'0=¨Uc‰IŠŒq´ÑÒõBmwcåÙw=òÅÏ}ößþæËŸýä_ÿÁþôÇ¿þçßÞxëGøýo~òÆ?õ©¼ü©?¸¨eCVJ dD‘hu0>7;5wúä©÷>ÿô?~ìßøÔ?}ú³/ÿðÇßÿÿù_ÿú‡ß¿þó׿ý/_üã~ûëß¾óê>÷ì3Ï5Ûˈ?ÆÍa£ÝNñ>]-Ïó£;{Ͼç™~ endstream endobj 133 0 obj <>stream +â£ÿô™Oýà'?úÃ_þø‡¿þåû?ùÁ›o¿ñ‡?þû¿ýî7¯ÿô{¿üåë?~ý_žïÓW゙J71êöPZ-§‡ò±pyeaã±Gûü¾ðƒ×ø­ï|ý}ûþÃÛïüêç¿|ó/ýœç;ßýÊ÷øÿä»Ï?ÿÜ™‹w¯½SP +££¸Ç%{\†ð.;Far¯3sû¹ó>öÈ'?ûéO¿³ù‰ïÿàÛÿù?ÿó7¿ûí í~ü}˜¨½üáË—ïØXÛ3ÂÍRy=$Å›åN­T/¦³“½¥•…™éþöÆÌÍgžxâê{ÎÜyñd©˜ Dšd„FÁa#6ÜåÀI¿Uâ¥x©SiwÚ»[ë;Û«‹s½sgÖ~ðÜ“Ýu÷µ;®ß¸~öÒ…ÁôŒNIrÖˆ‚ö.zÝ,âa ”§0„Ëécç·¶ŽfÉV.ul}ö®‹'yèʳÏÞüú—?óS€›7òö¯úÒÇ_¸pÇþÄÌdHkÁÖÕ/¡¨,ñÆÉ£çΟ¿VoN”Ëéngs~òÂþÖKz×7¿ñ¹7ßzã}ë›ßþÜ^ûØg?ùÁ¿ÿ¡§¹|bg«Õš …Ën7G!/¢ŒÙÀ×`v;éqQ*«ãÑ£+ OÞ{×ç>õÒk_ø䫯¼ð£ïÿóŸþôÛO|ü}×/;¹5ßm4‹Å*ŽsNFS!8PL…ƒ"U–¢¡D£ÔZŸ]¼vöøóO?øÑxêŸ_{é7¾÷o¿ûÕŸÿò»Ÿüè‹þÀãW¯œªW Ê¢þIDv4æå±Q?(Q-×ÒÓã“Ë s'ïºóÂkw>tï•W>þ¯íµÏ|ê£/¿ô¾üÐSŸ}ùŧ¸ûìÞN6U¡è€ÇÇú|Ži I§{A-Cø¹¸žÜ]Û¾ÿÞû^zñƒïîÝ÷_¿ûÏ=ýÝùÆ7¾þÚ»¼øÁÇo|à©ï8jgm©ßìe2vW7Z f£04ìõ.;Žz™l¬¸·º~ÿÝ—?óÊÇ^}í“xÿSÏ?óðË/½ðÝùÎ?¾øâ×®n.¯VJUŽV1Tq{d§vÚŸ‡B} ‰ñš–M&›íÖÌìÜÍKˆ´%ëñ²n7ãG$‚:ÔЫ}Ìze ø½…*´y,-E¬Lú½âõû}8K‹ £ðJƨV;îr2˜¹OA³»ð‘Qpµ(îƒ!‚¬‚I18N ˆ*åGEŠÎD#Å\zr¼wìÄ©¥Õ•x<óhw`V; +¦¤²Ë%ØŒÃI‹b"*°¬ã2Ïj- v4¢3ñh*ž(+ƒÉY#d$Ñ^½^ËfBœŒyYpÍd˜˜íPlòð¨€\”¹´.ÅÙR)žJµ„Ü\\ê×såtd¼UOÄ +«r¬NQI?¢Ù­„mÌoµxÇFÝ–Qßß“¬:¡¹rvŽKñÜÍkwÝ®¦bƒZ¥ž+ÌvšsíJ>Qð{‰á¡±Ña·m >ârYÇ0À.īи¡J™0جh&ω\ÀïñK¬šÐ !9žO–Æ›S“­I•RF"$F(Tt:è‘1bdŒtyTI**Ja ÄÇù½Ð¹áH¸ +M-òézcc~åÒÄÔ)EŠ¢n!)i#¡ AÜ€‰C‰r±Ñ=v­Vê¶ÿg„(Ž…Ý.ŽBUŽP"j$N&Œh&–ùÎù çBR“sºV4ô†Ë"‘–¨Tßf‡Rõ:ìâáH2Æó™b~bïÔu7"»Ü -“,—ã…øJ‚ˆx¼ +ŒŠ˜Ïʆ†ìpŒŒzÇ,ê“i2ªª¢˜ç™EGÍ )is`>4èCÂ0æ,•ÄüÁ1+ârSn¯Â†@e¯‡q:i‚Ž3RV +%ëõ’>/I† +¥‰rÁTðþ8ƒV:lnîó€Öõù ¢u§‹q8h¯W´Ù0—‹t: ÓÀ#KbŽ¦ã,—FÑ@@Ž ¢>/?fAÆF<.«Ï1æqŒ¹ý:¨d6Db"‰].Ü·ÕFÿ}k¹Ã.`¨áu‹6 æ4w* 6‡èö….8Ž$õ|®»·³ŸŽì‡€+"H‚ÛŒrYFý¸?lEÝ6::âÅÑÝÎÀ-ïñ©p=,T~¸ã÷àªZ9Ó´š(P~Õçf}.z¢³ÎR:Àœ +%³Wa…ª¬T0"âòÊèè[á·J 0&ÙõLqµ9~ …Ç­Và8¡îú}òáCÖ13ÑBÖÔÆ`b¿Ñ>N©¡#ž±o>5Ž¡¡#C˜M‡ƒE‘ "WRéÙXtÂi£G‡\¸HS°Û(¯[öyƒ(× ?§…zÃÃÈȨ{ÔⲌ¹Ç,øV2Κ®'H2žˆ‚šä„ Ãfü~Å"¤¹¬=€ a·/pø°uhÈ?j³ÒjptŠã2P~ÅÜ|¹¶1<âqäSlJtD¥§E|ŠÀúçFG}‹×jE|>9žZF'¤@aâ‰D%dä<^þ®Ý€ô"Ajdò»~˜‹ßë#Ý„SÙ”Õ†AÕùüAA*ˆBÙj£‘e(ªBúýA1—K$𘬓llÔâõxTEi¨I%=ˆAÐy»S¶ŒP~yØܹà°Y|V‹ÏaÃ,íæG’N§tèV܇ۭx½†ÛmfdÒ‡èvHÍ‹Í$= e±ñ0Vz¸O÷ý˜w:6ê£P*pè°cÈÜ«Žƒy÷záàÀçÑ-«r[mŒ°¹ÀõA(2ãö¨ ÖôÁ$ ¶cÔˆ¹¾Á‘`µ°ÂÒˈ—&Ã4Wty‚—ê4Ó¢2jh\ +´¼¾ Ž‡À¤TZÇ¢©y OâdÊá”GGUÌô{'P$tä°'c•ØŒ¦ýHÔû‘Cv— Ÿ›:FQËEq‹TZQ;©ìª T­Ê6FúZctÄãóçÄ'6­ÇñE3‚QD)ÊH±Ñ1ÄfgÍP¡$ëFt¼ÞÝMæ¦h.ÎIy†Ë©¡–ê’lÞ„·ö·B³»=·öøù ,ŠaQÄ…¼¨ f FE½Cð9»[„MDËK+§µl1ôÊ(¥OSãrqÀGwfw¡´€5"AÓ9ŠÊòBE”[Pí K^/7<솹ðûU’Žór͈ϨÚÇb©äDP¯Á½˜ìæQ4ÀÂóèDŸO£±P¥8G1I˜AË(:f¡=^ÃåÑ]nMôAtrC!úí¤ËI!>y &ÝŒˆ RT@À冫Š£þ¨Ç± 6‹à©@¨›ÊN³BÖáÍ|3¯îöAÞStºcÔBpl&“‡o³ý¡©jç+^OÈÌ^%ÁMpl®Çç‘NÞyk!ŠÇ0#MP™ðÔÌÉjkчàÊ:K ŠH’DÒãÑào«ú<¼Ó °i.ÆöúcñôêÂú¥ÆžË«Á pBÅÌÀ4Ä77XiµP°,‹%Q(xÄé0× ÚÌÂvŒ {-#þá!“‰Á‰ùñÖêþ¥ýtÄææl.ÁƒDýX’ã}ÎæR|õ–¡Ph:ÅÐ)‡‰úñ Ni´%¸JÇi± jeœŽS|NÑûÑÔ² WºY>àæF0¤ŽZÀÈÓ€y ÂĨ¡a×аÇî`¡ü&% yŠ¶ÅS¢ÇÛ]Þ K‘L•«¢T–”*Üf8\u{8«…S†àD‚¤Rz°º½yã“#£ÈØêG ’Ì0La‹8•„¡Û{êä•dºk–îês‹ ©x¡mèq˪’Z&¨ðð¨wÔâ·ÙI·W©„l XˆáR³+gåPíÐסCN—SB±0ŽÇZ=w9ű„D5šMòÝ:8|¾ˆ¦µ"á/dD©àöÊ£c¸Ýɺ<N$᧋µ­Éå‹ 5&µ:ë¥Ú‚„Ƭôè(a£½‰"BÀ˜#ÂŒÆSsÑÔœ›Û¯<N­åê{éQ)X‘tÆœfÓN'ãv±v+uk£Ÿü>ªÏF™L\"ê!^Õåy@Y/¸´|Q•³‡ÙFG1@QUnXÇ’n7Ð¥Ïéàà„CGlvZšÂíÕ8¥%™ì ø#¿æ§â8— &¦(±€ÑqU«n¬ßqæê~*Œ†¬Õðd$<™HÌÊzoxŒdÈèTÿ˜$—Ž¡ ’q, u3JõÍX¬vrÿ#(!ËN¥+«ÙÚz¡¹“oƒœŽ%"õgžþà`á8´¤Ï'y}ŠÏ¯3\1›¤ºÓLƒ×4|fxN +#2~›w893@Æo¾xÚrz%V.à\Òƒ…B‰IÙèEÓ­Þ©ÖÄÙxažã’ÉdßHôH +:Qóc*àöˆ•€sÖªk‚læäø‘eŽ^L’ +…ÊJ$9žÍNœ¿ŸQr¬š-¶7êƒÉ¹ÆFª¼FñyŠõÛK¯~æ+§ï¸Ïí1T„‚(ÕâÉåla›å+ªZ3› ›±4'µUc&žÝ©uo7’s^𛨠+ÕÔ°»D8P""È%Ðl› ÝJeáÚÝON-Þîtƒ÷)è‰)-6ÍkÝ€1eDçA™¸½ +Åeo¥èæwÐi3£¼%ïKRjÛje("¢Ê Ÿãåªl–êéâ²7\n@EÜf%A×ÉJ,7ŸiìQR…Sª²Öýf·æ»B½ 1›Š'f T†Ì8w?ü + €ÝV%Ïñ%–/ÒœhÈe!Ðbå*4²íV>F$àŽ”@ÙÐkãë¦@=X‰H…بö|–ç’ð‹6+ÊPF"Õ¤z”ÕÂ}F(1l.jÑLÊL²2Ssˆ?|+ @³›!rqE*§SSÀ ^Œ ðøJ‘)œHQL`0 hÅí‘n»Í2l&퀸Jñ|^RJpï@¸‘p |ùð°Íf¦`Rœ€ùX¼’›®tN#=#9‚uÙh+‘n$3#Û .Õå‡ï{~|á$ès0/˜_@”ËPKÕZ6ívÐ8uº$‹…ôxêáÄ UXJäçIÆPµlµ·a.6–sæ^ƒh?S\jvv'gvNÞdŘB¡†™›*–áª("¬GûÑܬӫŒZðpt¶1~¶9uÉÎS\Á‡ÇÝ`Q![˜—´*É¥i>͉ _kªÑDÑL§Þ]Žf8®6Zk“ËwVúû¬Üà•&v—ÜïlÜ}ó=™ü`ÌFþD±†‰¥láh,9oª8>£« cÆ@ˆ:h=>9=þàâ“¥æJDVW¦gN@óB*[]*v÷J½‹——wËWƒ +¥hCTó8¼‰Ó9»|!ÙŒ¹=Ü‚y½@ý!·ÇÜÂé'S\ +o†ÒË~2íÇ5U+órpŒæ2‚\PôF¦¼¤…[ a[ÀšÙlŒÛ\áÀø|Š×°Œá6¸cÕnõ»ÁS“a`ùPtNÎR|‰d J°_nHç7ìqxØçGc WÂÉ´ –PS*Ç(J¥ HHQ1›Õ|›i&öxÁÜ¥Y6ÒÛ``o»mÔjAÇFý–  œËO3lž$bN;p´h7ñ™G±i^*¥ + ÉüâäÄÉ{n¾Ïˆµ!“«mEÓ0q­vïDop:SY·{e‹£è¼‰¢P¤˜´YNcPÒ™La§¢p¿‚ -=>H—´È¸ª–&Æ·¯=ø~·O†!Jæ— fã/›ùúf89 š,%µlv°öND¡Àb©……í»[Óû>ÌpØi‚Š¸Íæä-6@FP›©âÖÂúõp¬gD»©â,FŠz(Úž]¿ýêƒÏ»údwö4§äÒ±ÊÎÑËj¸1j£Q*žÈÍ$ ó¼ÚNå—úSÛj0ïr2¥=:CÒ9InJÍíSp‹åÅZk® + 8HtY«)Á:'lnÉãS{ÓDz•9&ëÑfwæÄÄêÙæäN©½ÍÌrJe£ÿð‘W/^y%5‡zt®ØÙÏ5ËžÕÆÁu[+›;WÓµnª¾Ý˜?ß^¸ί¸±H0T~áÅOoï^³RàjC‘A¥{jgÿ±ÖøY38nØ)rQšNŒX°1 ËðU^n;›àvÒ$¢è˜Ñ ‹ ­½úäÁüî}ËÇnOža¹ü‘#H··2ºv3jƒŸ€šhO§Üfú‡z•çÀû¨à,@ÙÝ:Z3S¸A½þÅp¿Žø$™íG"À•>/èù€'A`*Pœ^£ ð8‘äd±±‚ÑaN*[{™êv$½Øì4âÓf®ÆQU’3>?Œ¼ì4<%«•÷x°œbSä2z¸Š`²×/ÝZ–ÎW×úó·V.ql¢ÛÝ(5Vü”ê+š™ Å'±’¯¬×{Çø8¨Ž/$3sáØx$>Åû¬\ó¡QŽƒÎøŽŒ ^Ÿ–ÊÌ%²Kñüª‘˜&¨€U¶2·|àA•xvf~ãÚÔò•rëø`öüøÂYoY¬d Ø«ëÂõË0¤]””.Ô¯‡„Íoß„ƒz“â2¤ùF¥ÅÜI YFÈé‘Ã%E!Qוּ&7&åë ó+ç&æN«Áši×:»õîv{rG‹»Ñ˜ûì#z;›[#GFqN(©ú¸¢u@/ñb Ùí’H2æ3#(q†/D’3ÝÙs•Î‰xfFUó»{çÞõžo¢˜.º¥ÆîÑý/Üó|{ö ”®ÓÃGS`¬ïA´["Æìœ ƒ1Aü†Û-pB1s‰ —Gã¤F<»°³ã¾'?zþÞbÅ«Sb… … ÂL‹áXJk¼Pƒ34ìh +Eg(3^sd­€h'€ãS»ÝÁf"3a$f©Eò%Z(•t¦/¡dÊfµð„¤ÕÌtçöhf¾ý0Šøµ|qñÉG¾Íâ‚07AOrrÁ"C#ŒÓ£ƒ«²ŒšOÀvÑéTœ.<ŠFÌm<’./Ñx8“Ç Ãj§àb¹5-6/‡úñâô°­d>§jLî4?@¥ÓÁ;‚Ç%ƒmaw;EÐ¥Pê·b ùP¨é4㪼0VWÂyÉüdF%­×[ëÁPãRsS+竽­@¤FsQŒ +ûPÝë ¨j…ÀB.' ÊPL¤óG+̓‰ù+~3ü™aèDÐh4r¸8°ç>° ®¦÷Aýrb®ÝÛh4W)2„ûå\azqë®cç9yþ¡k}°ÚÝÅògn>øÈ{%‹`!„ˆ3`2Ëíñƒ™…;Q,}xÈ7 B$µð¸ +ŒF¡»mc4ˆmðbnó›G’lô¶êŽNâDL²¹âì`í<%Üî@±´Ñhí§³ Óó³«çY©àt A­pÿDz##”Ç«s"hò>Å]¤>Ї邃³;^(D“3‰Ü|wêøþ-ï\f•J(Ô:söø>·W „ÚñÔL:»˜Ì,sBÓü–¢©-àµáÐÏÁTa¹ÚßKA¡¡˜‹·.Îîd¡´  ÖO=4X¹R›Ø'¹üá#~Ü9}ûc”F€‚wyÃ^$!ƳÅ\ioØ|Æåp9I’Š ·>î&zÀ­3E-<ÍK øE»óûe°Év‹ ’?[Ÿ]»ppõ)7Ü›D ‚˜«×T½¥†û¡ä‚ž^ÆÙ G +ù9†ë­ð€ó|N”J‚H•ò¸eðþCCöáa÷ÐÛb¦“·"ËD+@`Q ºœ´ ä”P=–™ŒåfJíPl¼p$ÖÓ£‚ P¬F1º ¤y1Ðáð„d­‹gHÅ‚' •cÓ$eFüù|:KgÁYƒ'‚f÷xeO ¬1+ ÔÌñÅdz&ªaX€ÄA#çbÅ~cjg|~¿XYÊççÖÖ/ä+Ó$ ÇúÙʦ µ"©ÙtiCÕ§}¾‚Dd¹Ä Wð†6ö–xÒd +üM0Ôu=<ê<¦;CÃ~=XÍf;–Qï‘C@áhWRòÐãñhpðBŽ“ò4›_–*­'òkÍÁ¹Tq]‹t¼¨¬+öž¢ÕüXÄé +‚iušË£¬Vbl ·Œaÿ.ÃßÓð,‰ú¤? –çæOl”SÍ©c'/½ûÔ]Ï´çÏ«Ñ ŠM„ÔÌÒìÎüüYY­¸½¢Ó- æÛFCƒa½Š¡ªËE”Œ"eÀ°`xÂçOÚ[Œ;ÌwväÈ`#( +îFë<_áCŸ¨u§æ·—¶Î­¿²¾wy÷ô=S‹gÓµuŒŽ–KÓ[›8!îñ ‚œ—Õ&ÍVeµ‡¢ '\ æÚçQŸŽ¢q‰x@byedŽI r‘ᢊšõcœŒt +§S¼ZÑôZ­¾´ö>)P¥8 †ËÊr46´i& b8®—‹óv3Ûc³ó^Ÿ.JUN(r|žÀáPPþ+è(°ä‰Ìbkpª;szcïü3ô~»½²ºyñïár~$€™KqhÄ+±l GÅÊŒ eÄ ð ÝÄ@-VXjÌž_ݹ7ﯭœúÂW¿Žö­6™fkà)òåÕ‹WŸ>w׳R°wd…®„ü +´Õ¨™1ÈØ횢ö‚Æ@Q+ˆOáärr.owr6?j,æ‡ðÚ±Ür89OsùdfJ7½¤¢Fê¥Îv{âÔæ±›ç.?sç÷ïž~ˆÒŸ™ à:ƒcVbxØcEÜ.@T†¢“N3'‡*ñ¸x `¸*j©fwåôù›ƒÅc^øW ÇÜR©qPWÕªF¤-ª5§G&Ù$NE|H f ‚X­Ôw°êm«Ç€Y@õ2IåÜž Õ¡Zê­üI8†Vu¹Xè—7¢Åµ³k;—JÅÅÕÓ»§ï +„K,7â=-Ü\Z?×Èâ—ÔÊÊ~&Óƒ¿Ú㠚ϑC§oÀç‘-£þ13(Ï {„{³øAD¢ýDj*žˆRjcóÎfg¥Ã|°ZêžlNžKä—´Ps~él¥¶0KLÆb“¢Pr´;èÑQß¡Ûl.;‹"&& ÛGGQŸ7€ ÐKvó‰@â1‡éU}>?ði +tB¾´ šo¯àz("P +f†Û°àÔãp4D`æ;në˜ßiÇ)\w8رÑ1ä„Ä'D.,‰ –MDb»®?½sìšÇÀñ„ ”ÓÓù%P°*±tèVò3N1óq([äÙ‚n€OØ­¤$Dá(œÛÙ<>“æ@ùXÌ/aaVéòˆÀ;£#^› ¡(ŽÆãUiÓmÅq*Æh½\eEÓó»'/Ï­Þ^©­v{³k·÷çâ¹9–Og²5X¸µ2G…2W¨™ ¦i`[²Õú&‚ âõ4›L—æ·Oß8}ù‰öøÞ•+]»ÿy#ÑÇ©Ig*%ÈÕp|¦Ò>Ó¿¢'§8>YolåjkÁH[Öê ¤mv3ß8èƒû8<ä:|Ä5l!H®Ê©=œÎߊé“X&“Î/PLôd2Ý;~òòSïyñÔù©ÊB0>àÄâÚöÕ¥­;åPÑOBánwp´TYÔõz&Ó•¤8L8_ŠNž±;ÌoŒš_ÏñhfzÆ00tÄD-—ƒ‘¥‚ìÒl 'RápeyõT"Õ¢¸p8ÕŸZ»¸~âžÎì™R÷”ê¸Ür.9qöÒóansq2Ø|3@Ï>Æú=šÂgg&w×7/9â:rØç F0 8ì*—fW7.‚Fü!ŠvŽÑt ÷kÁ  z `œ£ QÊ8´Ãa®œ±Zpø¯GB¼òèˆÓ7•–/N,¬ïÏ,IJóÕæ ǧçW/ÐtÚé”Ìüë°ñ>Ä”:Í$¡§,£>@B¨[ŸG"qƒ@Aÿàð£–d0ÇƲ>d9t›e航8Z2,©W+³q0vB•3ŸÂ +Y1ØÐc ´—šƒƒZ{ka°ö…/}g÷ÔðŒr šÌÏD’“pãš1IriOâèèòÒí~ÌvŒYœNæ°S€„ *AÍŠRRÒá„B0Ö©uV»“;¥òôõ»¸ëÆcz¼Añ¹Df%ž\¬6-mßœZ¸8>½4:‰hçèñËR0áFÁZ†4<¥j]Qi{|!»SSeÌ!™ÃÁ"ÏŠÄçô蘵c{wöÆ7d­ Ç{™òz­{jzéòÞ©Ïßxµ¿[o-Ÿ¾ý#9 +7U­Æ°iðÅ ŠU¥åñÉ6»Ùq>D—¥Ž¦ƒÁ÷ûÃv›™ÉÌ1Y«@Æ"Af~¦/`¾rÁpƒ•R4ƒ±ò¡QYkÌ/ŸL…Ú(W'IÖ¤„ªºÌITÜî Ó!{œ…Ek¥ÅngkèÖC$U@ DŒ‘ÊŒT‚ÖëoONí b–ç(ËZ¨"Éy†‰©A3‰$"åụ̈ݎ۬TB#è^·d³€ia½”L˜ûqx:ÜØØÛ¿ºwæ~=9G²E¯¬œýìç¿–O÷A@Úm4C'%¡*I-Aª»=2È UÉ÷¦N†# ‡€r²â.;í÷J˜OÑä4E…Ø9&3f1Sv‡†ÀMp¨OsÛE¿7Ô‹vnÜÿ´ÓÅT˜3R¨a¤§R¥¥Lajqvç©ç>ÚlÑ×Û;@‹ÑÔ4”#y„à"ZéÑÇ^’ôÊ¡C#ÃCÖ‘a÷Ü‘fá™h¯6upûuU/û@HyNÉñV2?hN¬[ ¦Ç õMI­ëá¾°b.¬‰R9lô*õ%9˜Œgë’Vwy4 ”Ðí.œ/Mg%¹#“cñÈ0¢Ë‹†ÕP‡ásŸÙ\¿Ðí¯«¡r$5YnïugÎ,mÞuêÜýËÑÌÄÌܱ_þb ÒuP&Èåp¼¯é’ÜS]×µXkn‰rÑ|JãTÿž +IfX®d1_g“#£>¨1·GËàåZ<³ÐèP‚0/©Áøv¡´ÈpéNc|jG—äSp2 +HóvjNëñ„¼î ×!Ë\ŒŽšVUÔœXÌÊÈÁvgö\®¾©…;ñùCõæJ8VÈ0A%ÃÑñt~Þˆ $øÑ€Šr:š2\NÆi¾h3|^Õf.‡Pè[;×€+e)'':3«V÷®mìݽ{âÆîÉëƒþqQ4ÍÎÂ-8s}êXº¹Å*%IJŸ=¸¶¾}”Šnä#±©©™ýÅ¥Ûc‰)Q)7Êãï}߇›ãGo»Ínµn@$¯7÷4cÜëS7·/ñö‘ï˜òËàff¨ÆRƒRizmíÔÌÒi5Òv(R“‚ùrcéøÁ½g¯>ÍH@úó¹Ú:ÉåÔÀȸ1Ü>ó½v:7Ÿ)Ì{ix¡ÿ’Þû;²ë¼üFd¤B¥[usÎ9TÎ9¡PÈ9£Ý tÎÝd³Ùd3ˆlQ”(‘¨,[áÙV°ž¢%eÉöøÙã4k:wåQ0$jVÕM÷ÌDO³;€·£°A¢,•Z3 ["ûÏ«ûÏÙ'"(ÓõöÄøæ½û.”¤b4­Á’@g¦‹ë+»ÏncvîôígÞhŽmCJ{dÄîÞG‚è¯÷EÂ…›@H‚ýÙƒÄh@‚`G·§Š•ÍX¼Õ›ØZ=}û̵—Ï\{iûü3†× EU–O«+ÍÞiE+·‹qëõèå>ÐT>5­)åcO DÂ!.Ô_/fC!  %†ÉlìÜ †äO|Â?8H,)-Ãîù:v +†¸(¢À˜B2®d–Ší­™Í›Í鋼Ñåõ²›ž*471Â3ÍN,5ï¦fã™%Ån!¤5<Ú/ˆôóPP!+ž8H€-ŠÁˆìs²QTÜ2ÎÙ±ÜÄäÊ•|}=_]©í”ÀLå€~†ûXrpß„GÃ%)Ýj.\½þ¼é4NอuA*FûIÕ>#ÝDz‚’€@|£@@‚Äd‹J ˆÀB¶µ¹y¦3± +£J¶¼<¿ywçÜK[{ÏN.œíÎì;ÉnÜm¼÷Ñ·¼ñÅ~s1Ô©¶vVïJû…ÒžnuÃex‰ÇꂘstüD¿Èóðˆ Û™''¯ßytïá›À´ú\0ªÂDLP+Õæz½µ_jÃØ,@]²8¸%]‚JaD<î5Z½s’^ñ3f?þDÅiÀd%#²*”µœ¯­7ÇÖNÝœYº4§,%îÞzøíïÿ°ÙYôò S,ÊqeuÁ´‚ÏeÂ.;ÌóOÆŠK…ÆÎòîsÙÂüúòþ~uiípaëÚÚ¹ç[ W›³wîoœ¾µ½w³P[)•ç~ð£_¿úƪ«RA–k€Á2n MªDÂúñãp¬@ œìûåcOùN‡úFŽËzGTªÙÜœ¬!'M^«KfGs'ƒaQP²ÉÜd³»-¥\mulþhnëæÜö݉µ[™ÆŽâtã^ïÂá ;gž¡…,ÃsÕTqMÔg8a‚ì‘Ø(¿Ä =ôdfpãKä¦ãù‰R}vóÌí­ƒ;‡×_Xܺ’ol0r%< T8>Ãj0HCãËõö^wò(žž£y Ñù(È;Q+Œ`K±¡[óñÔ²¨–ÁÌúƒ,A9 ëP4SŒZ2;U¨ÌÏšY¥i»P]jtwêXj:]\Ì”T£skgÎ^_Ü8@0ÝKLf+ ^z\µZ¬X „dhT:{p«P˜ùËç È‹F“Q8ŽXéÌäÍÛ/õ&·†‡1ŠI™‰éxa¥3}tíÞ§žýãù­û™nVçÎÞáÅÀX&¿26}}zé™Rã‚át#°G•+—”«ký=Ì#pÓ0ê‡Ï-–;ûÀª´K“SÛ€Ï 2ÎJE^©dós“ *íÝX¢ h3›í)Zi¨ß½¡ :+kmÃì†Ãêè(-©¥bc‹— +@Sl‚Ó0ªiZ±Pš•”ÌøìÙƒ«¯V»»©Â¬ äÁÒ”gÙõ³Ÿã3_[X¹Œ•¦w&IPˆö !Cý‚öƒ´iƒ‰xê©á“Ñ‘a2à–Á¤Ø"¸þhÔÐÕ +HÇ+ín>:{óíñÅ«Àz”ëë;w¯ÞyszöÌõ{¯Ï®_H”§Ç—Ž€bòŠkv¤˜›Wn<žZ<µªéNêë™â²bO!xò?»- œŒà˜aF¨¿“–Ƈs¼\pÓ“±LogÿÖÕg^órÝ\}¾5 ¢ûTª´VmŸëÍÞÈ–Ö£˜Ž`š ”)>«š-Ý”Œ Ý›ãä&Ž'¡þºCP1‚͆`!2ýR´t*ÐomàéFé?Y%Ÿ<oMœŸ\¼”«mÒ|A”2‰íT¾GÐv,;;»~ýèÆãíó/Ä óšSÅi㜅¥CÅÈ ¤Æ)ŠÏ÷i“MP¸SÈM8NèÆP¿*~¿9 L(bzñ^±¼ÀrýS 8{UÒJ²V(ÖçÖ/§JKno/ŸyõµÏØv ìæعF÷|¡¼a¹ÓþþóX¼›×^h¶ÖûMfû5T£“Ì­Ôºg‹Í†öîÝyñÊõ{¾QÄZ¦´>½zëÊ3ïž»õŽ—[…¢&Ži_øèkÛÛý!é?;Œh椛X¦™Âà HíÎf¾º6|峮ێº(—íØD®´¼vêúõûŸêN1|™¢Ò’\ö›G‡Ÿ~zܦo„ìJ¹`Ð8~,…ÄTbØÉáA`Ø(ì‚´ª •ºŒžbÖKÍZgŸâËŠšovO·§@Ê8x÷Å×ßkô6¬d÷ðÚ'ï>úhóìË «w^~üõùõÛªÑ,dfwÏ<ç$Û£A.i@­ñ¬ð~7"%nW»c[<Ÿ …8Õ¥˜©®•º»³kW'–t·º¼y46w©¯¥këfrFÐk´”­z¦²b&{ÂĹ$ îÎì&ÊÛW@6Je8­æ¦g 6Íi%V«l‰Ë›§˜¾½ …Ez$íà´¿¸ýìâγݹK•Înº´ ¦Þ‹56î8™^,;5ê™Lã”âŽÉF8Ö•ÕCWA&•[Ò¬1–ÍèF†­`§(Ç´ê,—?v,<Ð_›“8!™/¯if‚ôÀ(ëØ ¯ÅÂaºÒXº}ÿ;Ï>^ܸœÎLéF‚X ‘> ÜÖP¿0Cѱbe©XœÇ»~?uâD¸î×0!H‹ãSeS„^.ö 3=4m?»~eëðÁÄâùxvŽ ó‘ˆÉ±Þ'ßøÔÜüž?$ÐýÂ2ýöý'0@Îá˜Q®Ìizéé§üÀ‡’DRVk’Ö”ôvUÝ®¾ðèõgž{Ìó {&&g¯7ÆÏgŠ‹€ moA<_ÿ×lí„;8ˆbˆËq†N“¸GÍãÇ¡ Ÿo/¿ÿ៌ ¡'ê| PŠÖr½™˜Ûá(cbj]’Ó gQl•×».•j‹ñÝöän}l#‘ÔÍJµ¾²ºwkyçB{r#•ŸõR€IšÀóÚV­Û;¥håþV.Ã2Iš´´ú•""øšcã~?ð“@Zn{våêù›o­ï=ÓÙ[šßþÉ~vïù×5¯e%§Š­½D~%_Û^Úº{ñÖó×êͯ¾§ºÝl9éÙbûtµ{áÔá§.¾6µv£ÕÚüæŸþì½/}?‚9£AåI<!“²5O/VkK·ï<¿±£5{0±r¡={&YžŸ?˜]¾pþÊ‹·_üTº8_m®Ý¼ÿÎó¯}°wñáØì‘›šbÅË—D¥„7Ò Ì#0ðGIA¬èfƒá²¬T A&/aDöQ¤/êê²Ñ¥2†y =)jnröŒj–©z­>)ÌéÎÍW(*G‘Ià¼þ³‹4€D4ªb¸ ŠƒƒÀJ³$G`¤{Šò(Ú£™˜¤T½TÙ°C<ì Ì»$«iÇkv§öçV®hF• ¬(Ú?ÓñdÇõ7VY “Òí6Œ˜¡ åÓü¼”Žßë¥æúÜêÅöäž“˜Æé”?ÀirÞuZf˜aX Ø=]«ÑT< ðIzÿyJ+RNž8:q<¾Å@û+h$éÚô3¾¢ßq òd † Œ’<Ÿ HDJ<3“È- œ™ÉMk‹ÍÞN¡±my]IÊç˜.Nñ²Í +ªjfE%—Ì-e+›Àëû\ E®HráÉ[¼0,¸ +pàf‡#À„E¶¨æ½Ìt¥±1=vuuïúíçæWöÝ­Ý£Wvž;wåµíý{åú¢a—l§^)Ï]zÖŒ¿0=±pqeûæØìa®ºè$;Š]̦;ÏÜíÚ3/ømySŠÙ¥OuëüËùòâÌøúw¿÷·¾jÅÛ¹Êbkzgbqÿæóo|ð?ûúŸýâ3÷âåç?þòw>ù©¼ì¬—™5bÓÙòæìò­£Ÿ^ÙyÄ%‘O÷¦öA… 5–pÊæQ÷fº3WÝäucãK’”ÓŒ¦Wì:“¢Zkv÷Ï\|…—“¦³Ü§TšãgÇç®Û‰eÍâdVwz²ÑÞMUR ·†Cº? ÷×|,ͤ‹•5^ÌAQèé¥ë‰ÓªÓ’€ITó0*¬…àJ$ÊR´Á‰ ^Ê JN5Ëœ˜ …Y^N¯žºZ¬Ìí'Èe8ªô4Q¬D#ŠÏGЂ`…æ“šÛËWwEµÉ°i \ßZªZ9‡‡HšŽéfŠ€ß€Œ„€Å8õr@ç ±!EŒQtug`@ |ë!Aì ÐA¨‡æÓ$7Ýz¡¶„`nÒ-$Óm^J8±¦éŽkf×´ÇRé™Df’,Y¶5+GÒ¶nµÌø´l¶@b˜¬k÷âññQr(¬F"@“pƒГšB5€ïCQƒR¬˜m´7OíÝÙ?¼Wn/ñr܉Ug—“Ùn¾ØMfÆX!@¨ªM«ÚN„p¦0]n,ËZžr(aã´£êYÛ*fón¢Ù/Yx›Q05w®5¶žôŠ½FïáÃG3Ë[†™ŸšÙ½rïå»/½ùüãÏÞíÓw_y|põÞüòöý/]}8={öÒÍקVnάÞYݾ;³xL+I{1§öâëή a#>’áR’ÞH•wš‡¬”„ø'_×4Ë@ E0Ûƹ±½vúÁ鋧Ön bòèüÍ×ß|¿ÕÛÆ™”¨7 ¾D õ±É g.¿Yë ¸yûö‹ÎÚh€ï·DÈ0#™|³tÈM¯Nô¶Ö®¶Æ÷ËíuA/!¸ÇIŪ•Ú¬œG8p_ ãÅ4ÉXÀ€LBw‹Ÿ}ü•îÌE)šîX´H„î/éûÏ»€e¨6Öy!+IÉDjLÒ›Õ±sº7E2À:ú-‹R¤³PH%ɸíµâéž QÜí·ÉŒá.àØþ¢¡þf¶¡þ6Â~‡; æOœˆ"ˆÝï?5€†aSsÚvrʈu5«)ë`HÓåÅØþ …‘:'¦ãéÙtq=Y°,ÉÉD²®Ùe("XN»ÜÚË×NUZ§Ÿ¥ì×ßÁ,µà€ÒƒƒáÁ0 1à…)$è$K¥êÍ5‚qD)e$7W5¯Í«9Ýn”dåÜP¨¿ˆáK©ìJª°¡Y]µX5ì#d‡|T$j2LD“›èJJÅì`ˆóùpš²*û;IH\Ó;í䳩¦(Æ 5Y¯MM.ÕǦҹŽf—ŒD#Yœª´æ¦WöòÕÅÉÉÍ«Ï>žÙ¸FRÓò e£ˆ„Fè´[:µsµP›úÙ4:‰Ø´íŒÉjÁAÆÇUQÝÝ=‹6ÃUìø\¹±³zúÙís÷ç7¯»É ™÷^xðÒÏ~ó7Û·(¡*oäÛg'7Þ~ñ ;÷*9ÛμýéÏïž½‚d`îT{2]9Õž¼pxýt~.á6^zéÓ7ŸÇ€= Gu^,¯lݽüÌ»¼çfæëµ…×ßýj¥±KPT’´rµµ¿uî…[??9«k7?™/Οèwç‰ú|,‚Ä*²¹ù¹åË’¹yýþÇßú3AÌR|U÷fÁ»›ñ…Ã׎î~¶ÜÜG¢æ3÷ß¼÷Â[±dgØGcàs8,chŒãëý^«äÁé«·n<rì˜ïØÓ¾§>1zìX4 ¹¦3ÀÆìÂ~g|ØRY¼—CqÆþ0˜»0Y®›f†¥(øšŽiN'UXn÷v—OÝ°’ã¦f³ÓN¼×ïy +)@7Žø˜þöHÊVÄ 1!?ÂRr(€$JÆ0:ì A¦02‚xM+ WŸÜß:ÿ`qçN{þJ,·æ2HTдRî?ú{âô9($sl&Ÿ§¹,ˆˆxl \Áhøyàûåû`Crþ~!›rWs ‹„eÑù$“mš5„¢,@8ªUìÎœÞ8}cnåÐr‰DÓ‰µqÂâ9OQÒ,íâˆÂ:M‚—0CÃðV •!c*k¡  q –´)Ü–8Ǧ`Æ “f]†ñd%›p«íÆ|µ¾2¸øñ™ó•öf<Õ’Õ”$y†æÙš§HÉþÚýÅ1I \0Ã0=¢a¤'/>&hÍ@P‰¥f“ùEÃjMÌœYؼ\j­„YL×Oï]Éæ& ÌK¤¦b© ÃiHjV3òÀ•'+J9œp‡ž4§ZѲ'¼øœ¢ÖXÆÓD§Rêv{kýSŠÅÕX~µÚ;¬vRù75I3qá×VÖO]¥,‚ºÑ$H ¾Ð~íÞ6B=Î]œ?]®Ì†!9ш¥Ù8ÂG‘Ña£+F¡ a,+4wtwRÖÇh>ÏÒæôøÚÎîõXz\ÖKn˜å”È„Ãk i(Èâ¨Eb.G§,« |ŒxW…œÂ§›•¹¹…CÑAZA1 +Ë@û~R ÍlvÜ?Ê ¢ýÌÃ$ë`LX6ΰ.†ëÕE9‰`¢íÕ‹µµXjN·Æš=/> Z«±T.φCýÊ$QXu/t$' +UpIA?lÈ1S/ß’þs‚ŒþIüˆî÷sšÑP’J™vǶêé„BÁ4í¡ˆ 4Ñß‘H`-Š¨aH!AD˜âû§³ýt8@³„ÉPqN(`D<bÒ¹^<ÛFE5e5ËñqEJÛzFâÝp€9/•jÀQVŽ)ÞŠ.8 nÇ遼Ž ܤ¢ˆŽ¡&%dÎâ( ŠhD.·7d­LQ1ŠŽ£ˆ ôÏ&4%M¢jÐ @ 6 Ì8y"ž8> ¢ +&ˆç£\O¥ZºžÇP +££‘P€&ñ4Žš8*§ã­êØæàà +hd(ä +‘Ó’¥'ú•ˆÜ /ÇB}ªw[•©PA¼‹Â|2V3<ÈDf ãá  ó20/rCe8¡ QpDœ6:B¡ÍÖ²Õâx±Ø¥IÙÔ“4e +^ˆFE8,?” ÷omà¤4 D¢ËUµiZÝ(#QÏÌ쮤3â'ÉeÏ+æ,»ÿä0 iÚbY@½¿.Öo@‰#ÀûÃB8Dø†ÃA_„€y—Êúý@ÆØŠRø>Q@øÄdÕç0lÕqû‡\=Ø_h¼J ¡lMÇ55Ã±Þ“Ò +ÀÎ0Ü7­ 8¢*BŒÂ”(D©j:]œ‡QðŽêïÏ|òÛ„¡eGýØÀ@¸i((Ò¸ C¢E`6ᥒ–+RbÈûG‘,§–+ÍD…‚,¸¢j}É‹uú]¡#Np„ÇûГ…ÚHI·–‰×£aPº@«$"’¨D£B$„†üøÿç ”>ò FN< Rý2´ùd!X„!#Ä#ˆoÈ?<à‡GVJ §’‰²V,·EÙ*8ÔŸb…$(À žzøøSÃA-°žIDƒ,Ghž‘Ž[YMÉ|æ±(È5‚˱‘ã~ß ÅyÊâ¢8>:ψÁnÈÏœ•ùäàÉ À!H»4ašr†Fô>‰D ²È¡“aß0 òä>˜£Xž"ž(ÆÍv»Æp< ’/ækž›dX)‰âѨLc¡KTNœ „#AF]¬ÔÇT5–IÕÆÀ‡y(Hž ;6Ú–…÷ËÅ€¡ "@ýÖK™éM”‘0î÷!¢UàØ9ŽwIÊ,Çu=£ªžüD4ÌÌP¸ ³*Gh”)›cRmËŒ¤PdÖÕU—9Á”$Gy2 +îÖã‹s-¬H"i<"° +€à +(LˆpÐ  ^h¦¬¹²»3™»¶×º¼;þÚKWw7§†Ná@îcQìéO ž<—dƒÃQ"LòíJŠ%Ê:/a xƒ°ÌòÿB ¢~?‡\®¥Ø醽8]¨Uœ\Zî”­£ÕêÝ óÛkÍfÑlä¸íj²¡üÉcC£C4 çr„ŠÒ +¼Ò‰ÕJ–©3†Æ[¦!qtÂâ«9y©m¼|{ãåçvï_{îær¹ + †Ñ¬®Æ O:âòp¯ ­tcãE)cÀÝœxj2ñòÕ—ï®}ç³G¿ýñ¿øÕ‡|p{c!›thY`)ÊC`‰X"ed]£U4&±^5áÉlƱDF h0l B£˜îvËkËs/¿öZµÙ4@À œ|Å(j“¢RýGsÇN0’2ÍZ6“OÚX4Œ†áhY©YÈ\><ë´-ÓZ[›M§(BB!Š.˺@¹Ñ€—¢€ð‘±ÜR2 aÎâóº3—=¿Õ›ªÅ›Ii»—xþúò'ŸÝúüëç?·s÷òÆ|¯œ²M‚á ù +1$>Íâ"‹à*•=v¼ v Ú\Ó<7g?»“ýÔ™/>Þþòk§þø˯üöç_zû¹í3ë½N%§s"!0 …h†rxÒ"Â00ÕyMlÄ´¢ÉN•Œå±Äl3µ=×¼siýòÁôýkKo>¿ÿÉû—/ïîKi×Ö ‡ú‚´opò á€QOó £~ö‡5ŠÈšr§”òdÞ`ˆjÊ+§“ ÝMI"Êœ8î ù1 ¶T,l£u+rfB}þ rk¯rÿ¨ýá_ïÊç_]}ÿAç÷ß»õ¿y÷Ï¿ö컯ì,v²® ìCЄ|Ã,4šá£“qd*\*F/ÌiWOe7ÒGëé{µûçë¯Ýê½q¯ûÁé¿ù‹—ÿþ7ŸùöçÎÜÝIä 4<ê÷û" !³„HF uÌè~‹>šäI}øâü§Ÿé¾}§ñÁ£É_|çæ?þö3¿øæå_}ëè¿ýì¥ÿñßþ_¿ûæ½ùKÛ•\Ì!¢ ZYGÔ³–ÔHrKuuÂ˜É sE¼“$–ZÖj×[ï:W·Kï=ÚüÃï¾õ«_í£÷Ÿytw}oc\ˆ€o +`pT ž86õx\$%Ds +ì±£èfĹš¹Ø6ö&·l¼ýhÿå»›_~çÂO~ðîë/]­¬¹©îìÜÎòÖ]U/`A¿EÃqiYØ™qåá¹ê³{ùƒqáå ¥_|ïáÏðòçž›ÿƒÞï~øâ¿ýý—þåŸÿÉþùW/þå×/ž[plBýš„,’QL€q68—Åïmƾû¹ýŸÿÁ·>wþ3϶¿öÉ©~ñàùè/?>úñ‡;ÿü›—þö‡W?ÿlñÙýÌîL:ë¨9äʸ©¦$ŠMÑŽ ¯˜›+Þ›7&^:Wxt>ó'ïŸÿÍÿË?|û÷¿x÷Wß½ýûöÿ÷ÿþÍýþ£Ãò7ßÞúåž{÷áFÚ”ƒ#0H²ÀÆr¤‚†BHùO'&><›%//Æ/-§÷&ô£yëÅ‹­?ýò½_Ýùðñ¥7_¸šq\8–1¢¨ÒS l»JÞYTÞ¿Ýøî;ûßygï§_¹ù?yü?þý/~ÿóOýø‹ó_îýËï>ûµOšJ§ƒ¤EGóD‚0)¸a`‹Yø|—¼9§¼ºûöëK?ýÚÍïþì×ß\ûÑþáG/üÇ_¿÷¯¿}û7ß¿ù»ï]þÍŸ\{íÚtÙé'A BBþF=Q+iòB‚zyK}çbìs׳ßy}æ·ß8÷þá¿ûùKþ…½ß|ûèvÿï~xûÇïoþôÃõ_}cÿ¿|nëúVºžv# St_+¬·Ý•ªt}IÿÒÃî¿pú›¯Ï~ýñÂïòò¯¾÷ÌŸ~v÷Ÿ^ÿï÷þÿüï?üÇ¿züûï^û?þøæ÷><ØXð…0àv‹a§3|Ç ·µÑËãÔƒ-ë™-ë• ¹Mÿs[ßxsá§_¿òïÿ¥ßýù‹øñKÿö·_øËoÜ:X,ÎôºÙ\E”´åVl©#·KØ¥qꃻõ_~õð·ß¾òÝw׿ý©µŸ~õò¿þî_~ûÚ÷Þ]ÿ¯ŸûßýÚo¾váŠÜLŒñ€U$Šó O>=„úFãLp*k³×—ÌGçóï=;õ³oÝþ§¿zýûéÃ?þðÁüüÏ?>üùG»þ©©Ï^Ï^š–ÇbDBÂúåDY! ÏÈu+õ•Nb*MÏ%‘‹=ês÷úîÖ?:øó/ìüâ;ÿðÓçÿög~ù­Ë¿ühóopéŸõÜïp囟ì|ú¢÷âA¡–Ðà0#p–v4^i¤šCŒyØÙžroMyqÇxëbŒÆ_ÿÙí_}çâÏ¿vøýÓWþïý“o¿µþÏœ{tkÃh,ÂÆD)Ái>ÒqÐ¥~4.½|¦ð×V¿ÿ™ýŸ|pîßóéÿù?ù»?üñû§ß°xj6›Pi#DÐå¤)'És9&'ÁóYþp*yw+ûÂéØ>µú¿~÷Þ~üÎ_ZþèAç{o-üôKç¾öæÆý³¥3sùF¶`€˜R$f/ÆjÆL–m'+âã.qfÜ:7i]·>s­úÃÏïýú;÷¾ÿ¹³ß~kó Ï/?¾Ðzm¿tg-±ÖVê)ÞéH˜™¬£W$R(XjN¥Š +>ŸîŸÊýÕù½꯾sù·ß¿û‡¿xáŸ~õöϾzñç_ÜýçŸ=ÿo¿|ù×_Úüö£ì‹û‰¹‚ÀÀ¡p±ÔBÆkëœeÑxÝ ZjtÞ Þ˜æ>y˜~órñ+æÿý÷ïüóïÞüýŸùo¿zåßþø¹Ÿ~ãúׯ¼÷üìÒXÌRt–²ÀíT2 ƒã"¹Þpz1d.í7¨g×ã/µ_<[»·‘þü­Î¯¿yí§_ÿæk«_|nâ­K‹Ó±ù<È©ˆHðª%3|b`Z„C³ñ†µ?™ÙK\Y̾p¦ô敱·o̼ycælG?×V:æ|ÁŽñ¢B²ÁÍ/q1‰kbZÜrÚL¯E 1QT’¦Ñ&qØ@"Br‘°KB5 [+rgÛÔsëÆ«û‰îwþð£çþŸÿøýÊo¿wÿãWÏ\œ/Nä\•W#Q²X(L÷÷uáY•­YÌDRX©h‡³ÉËKéçv‹_~qù«oœ~ûîÔííÒTIçi +øý#a(Ì'¼vµ¼wÚ +£kÙðŒ³ Ý«»3½$~4¡¾t®ñ¥×/Ý>=ve9wk³°Ósº5©±Àà0„Õ/Wµ2Œ6•ŠiLª<ŒD£Š(¥(Æ PHhÛ­´›É'ŠÅ8ºæY¥8à4S&y‰ä€¡ˆ†(ठ3ê#FFÅS ÉìB ™œf)F8Côˆ(HӔΚ㕙éÖ|§Ô‹©¶Jó:ïZ} CœðùTÑlEËš\b}x`Ô7è¾^[öÙÌšZ=e,4¼Ã…ìvÇ:7“>Z¨¯Ö’)­›°Ê– £'OŽ„‚ý³íÃ#艓Aà7I*“JΖó ùDK¦h‡Ç*&“—°œŸj%_¾²ýÊí3Ö¦+Ť,ŠN Ã:bÁˆé +šÕ©¶*µýLlB¦Å‰…+G7i„óÅa²+'sn±œ¬¤Í´L*ð(‰„d°¥'"TPÄõ`@A`[ä‘Q\û†‘þ㯠 óhT¥q›!æC¾0¢"6â¸þŠ•A1¹˜e,’€í úiÖÜ4µ’"Õ@àPQV¡¤f¦„úÞ覬¢Å[L„¦a‰B¿Òx-ŠHŒŽPOý/CÇž~“€eK²%FÁ4ÁURp¥‹šjÒ´Ãé6—c£ý‚0­|}×ñÆ s¬Õ=eÇÊ(&”­éÕla%‘£hÇDMtÇÚ3¾20öùYNªé΄fŽsýÊZI‘Ow{§$£â )(Ñ?”ñ0¤a°AcZp8Ž²ê +|‰¢2€¦¢° AšÀ¥€,õó£~«# ÷4½lÙ5MÍǼßßòÑ_hCQ üŠŠ¢T’Õ’a7u«* +1IÎ!x,Õ£°E ÷PÔ …DQiÚR”Œ(&¥‹9nÝÐò4Ê ´¨ƒ‰##áPC`]–[Vb¥R£~j` râdÅ3²ÖêH%}>ÆpñC¸Æjù4à%Fd ·Ù'µò`¤_ð¼vD +¢KR!“_a…R(l…ÃrÖ·ëÅ'|ÃT(†×¥œ¢×£ˆ ©‘ˆ!ðež/üÂÈ0C’¹\qC·º’Ò@ðøð@+3ž"Ä€Gcø‚œ‰‹ýŽ´“OºKi7Z[\¿z¹nZÝXb>•]uSK#õÄ qr ‡õÑú駆‡IiÆ ©ÂšnõzO‡  è÷ñO?Dq2©ã^bU7{!È (ƒCýe)–r˜úOÉFOBÁQ +G M*È\Ì7}0 DÁÁt‡Äþ‘¥AÝpÔ~ú#f|–àÒœ__=jMl£tŒs8”¼¬•M«ÕšØ !R8*Ñ\ʈµ0&A½(µv­¹wxý\my`„ +FOÌ:©MAët6Õ!Ã-^,¼Á¨ƒàIQÓ)Àˆ²R„l0¬BQ3Šš›W­Ž›œ´*FÄl§“+. bNÕ*4ŸôVªr*VXwRsºÓáÅlgê‚ W#°*i9šÏªv‡•+(Å™¬át›Ýýå­ò‘Á°Lsùþ?*Irý#<–^nw¶£!5F®£T`ª‚Ü †í¸áHO ?HE£’$åE¥KR…P€yY*qON4ˆj=YXN×)¾FñÕ(ƒ`“ás$ŠF5žË„#z  `dœ + jƒIyaˆé’…Q—*4›g¹F$)&Ç %ÍìŒúÅHÔ±Nåa,A±ŒLáCƒ¸ªÖ9!±!H"ù<Á ¶ ˜mAîoËD0%Ó¾ ˆ˜0™±Ó+²=e%ÍØÂÉrd„eØœ 塨# öcaÈäŒá 2†‡)‚N[Nϲǣ°Ýï=Òh¡ÊËm]«À ÀòرÐÈ¥Ã!A½Pÿü¯AQÖèhÄ-ÃÓœ ÙÍqœÎ<1Rƒ˱Dïà܃J{Ât”Ž#¤gÅÆ­øT¿b˜Þ`û›m&œÄX‘GB\2h¾ZiŸ¯ô.e뻤 'UT{Jufp¶ “i0þ†Ý¥f5g ÐKÒ$­í¥·ÍØ2'·p*£¸AiÀ˜ EN*T¤ +«ùÊV¦¸æ%gÉéÝ;¼V¡¤R¶¹7±rk~ûÞôÚ­\c§:vVQj©øØÒöµ0j T @Kug“Å­j÷°Ü9Ÿ,®¢¤ÇŠ9I«³B…`²Ÿ¼ÑÔÚääÁÆÞQ­ Œà!ØtS‹ùúÙTá€âš4 !.LÄžì…“"Qi¸ß…Yé×þÅ\‚ÊDÏtzNb£m˜°Á$2r[²ú–ØÀX8¬Žuw « îwÄÏJ$¹Å×E½ÇˆEÑ" keÕh*ŽD:²>æ&ã™åDzqÔ/‰rCR»¼ÔïFÜÑ°10ÂA°ëÄçH&Û¯o»ŒXŽ w±„TlÕG@ÖèWB«bLΈÍrJSu&¥†]IóR ¾€¥ EAjéö8¸£(ìFaG5Ç@"¡¡ˆ*©õxf‰ækýš-#¸ª`ØÌvâ˜ïØ1ÿñ"Ç%µ­Û=V(û}l0 B!Œ8à£_<‹)Z›“ZùÒV®¼ª;mœ‰±RÁŒ÷Ú㤼 6µKMUÚ[ªÝDdA¯aTÁ$— aÉ(Y‰üîáE(æI昛©vO=jÏ^‹ ±3^wqñ0Œ9þˆŠxYTÌÉTe'Uß•Ìz¿±ZfŠ‘K’Qç• +¯TE£Ë.º©)JH›±ö©£—ÏÜ©öv“¥uÕ˜7Ò¨¯-oß#&(¥|m§Ø:¬O]*´÷${¦²Nbrvõf®² é±ÄìâÆ͉…‹í© k{4o +À/—!ã&N§¦—îL.SŸ¾¢{ÓAHOå@høF¥A!“ ðj-[>mÇ—ü£ +V±bjćîá}!•Š-eëO !0¢‡£V²&a4 Û×Ý™xn$èÑ€îë“8F¦½ÌŠ'qà°Ø ÙìUZç'Vo3rÖ‰¥ËËÅúz¥½™ÈͪV ¦¨W*Ý=0ký¶¹RÅŠÍêg ͳ¦7nÓQÊ42,Åy DÖÉÕ5{²5q¾>~ +éï=îiNW2:ŒX“í #1-Õ¹…s›û÷t·ö«Ê§®ôÖïÉyÛkÍÌì¼ñΗk½õ0nÓR#WÛkL\îÎ]Í××0Òñ3$›&˜4LÚ„ ã.¯5ºs×6”Zû¼Ö©³6v–•«(–̉Rç¬Z”ô.à+'998#¤›jÅs]ÃëDðF—½—È.®ŸºµyúÎàåŠ_kw¯Ìn\Ü»¯¸“@-hzóÍ·>6ݱ!ESª=—*ŸiÏÜXÝy±Ü: ÙTwr7[˜ ÐaÄ¢¥–—Û[Ø™¾0>s$ö åå²åõþ$FLIo+Î$¯Q|#_9=1wFc@*Š–Œ®h4û›Z©<ÐlkÛ×®>û&'Q"éÄç0À=Z¬‘L¨V¨VÇÜäÂÀêº;îfæR¥µbkð’¸ô©ñ™C €†HëuoE4º²Õ#¸ +F•‡¹D¬sýúˆQyêÃÃCF&¬ØRkúÚîÅ× µ­@P¹rã±EôP÷R' +„÷b'VjcWwß^Ý{¨é•ÓÛWšÝu ¸4³îÄ'ËÍz÷tcâL¢¼$ÈùBy±ÔÞÅé4§–x½Š³%Xy­mĦsµmŠÏµÆ+Ly¿2~­9w-ß=àÔ²ç´×wž‰å& o2UÚ˜[½qþâKço¼Ù=rcãcÝíöøŽf6S…åÆäùTi«Xßš_½¾sô0Yìµ:3óWuw‚J„Çè8PbŒP7cóœ\SõrwvO4ªÌ5ÜI$k‚7ºÍ©K³›ÏLšÞ”—_Û¼¾|æù\çðIAØ`K³ùæzf»L‰Né¤K‰ÂªluÀ] •”õ†¨9£É3ZlÁI-ÅÒsÞïf•+ΫV•“RNªW›>›,/¥ŠKÙòF¦°Œà G'9ï$Á,wíô,Òª·¨;ÓùÚ)3Ö BR¥¹Ñš:ÔÜIÓ›´šl6)®OÎT³BŽbÒsË®=÷îö…G«×˳¦ÛeÙÄéÓ7ï>ø|0b"DÌML¶¦ŽšSGõɳµÉC Ò®^{ynî,ŠÚ“¨NœZ½Û[¸Y¿Ô™»ËJ­aŸH³¹lÚ‰i;5o$f8½ÄO²¸žÌo ²QØ‹gi®<8Œ àCŒ$Á8# kí`P<~"ä+'V¨>êò$S „ @e›»Ï'RÓ@¯"¸’#AeAšŠËNÌf+ë –y>½0½“)N ¸©jÕ< ÜÍ»«;ÏÖºûV¢+*¹±Þvkú|ˆ:ÒVìf¶|ªÙ»škìeªÛñü¢¬Vs¥EÍj^/UÙŽW6dwœK¹ÂúÌÚ=+5Rn¥}:S\ŸÞ?søìÜÆu'9¡(¥Ùé3½™}^Êgòsg/>Ú;zeéÔ³³›wKÓš‘>:çàüs0HÐWY6ÛÉâ¶æÍS\9žºúÌc/ÓC/•_1âóVzµ<~þôå×ç6îx±™ýû“+—Y­äæ—oQ»F|)YÜ­Œ +ZS’3Wo}pB±"ApeR¨²Jærùâzµ±½¾y8¹pŽäkœÒ„F=˜ŒéngbéjŸ6i7™›ÉÖ×…ÅRkÇË.Áx%S™êF<¿AN)%Jk¹Æ™\ó\sêf¾qF³{¼X¸xíÑÞás‚ZâŠdòÀ ”[§ãÙ%Ë +–áR³‹æW.ÄÓ=Ýk´»ñ‰|y~ïìs«×_Põfoöpn뎓[âÍ1ÞòõÜáý|~"I’R,µ¶òµ5/1ÂUÇü3ì“$¹ £VgæüÖÅONºŸjìfê۩ʧô†} +бãg8¾ón†!‹šGcùj$â `PDÄ ¥!&²8¡Å‰mÓ]r’KÀ—P®f2ýòa ŒÎd³ã¥æúÑ!÷•§ ¤E¹â&'A0JZ Èc^,%r+²ÓÉ3´ª3ÕÎyÙÃÙ´R86Ýlï*Z™å’€è&Wo€ñ_ÜzvaëùÆÌEÁ¬#„Óž<  iœ~È+UEo¤³³™Â"¯ ÒvœZ,QÍ—§â¹i#Öc SÒéì¤é6Aaù“¾V”4§c'¼>̺é1ÓU­ptõµÍóìÌ¢—Y蚶ê²\XX87·|0-Ðù…æQ¼°m! IÉXgÿܽ|uáÄ ‚Q@/éÚŽ“^¡OL4jËï¼õዯ¼Œ:£¸š_šX¹»}éS¥»¼T=}úÚg>øf±º <£ôhHè‰ZïÒâ™WÀ¬EÓ¶(6N²oIŒNãTš«‰'ì´±{-‘™œž9°œ.'W€×ˆ 1?¤…€ß”ª¥Ú®j4T³©¹]Z,tÆÏL-\Ž¥ ºß8)WXˆ%Æ)0kÞ\h×궗[µ˜b`ÙyœL=1}" CÉš‰OÇò—ÇÉX­³6·yQÐ˃à +Å—2•ð’XbJÓjýú`„–HM¡XÂç†XGýŠ%ÓÙÍRõœ Õr…ùLnŽZ¡  ¤þð¨&*m7¹Œb)Éh +ZĊˉÎJ5ÑC¨,„ºå‰J!Qx¹,.yéy;6[nž/Ñj5«nfZ÷‚Q §3À¦±ÀÍ•74c ü+Ô(76ËSñü¼êtY­‚0qŒÍij éÒ àÐEµ*)µdz*[œ³ãþ°Ä°1'ÞÆhç=E¯êv7WÖr8#’ËAQKÒ:¼ZFxQËÄò³Õ±ÝÉ¥ÙËH„ú[ñóíÉÓŸÖ©_œ¯”[[µîfµ³ÍrY†ÉÊð_îQà¥f–7oayp¿8!9u%•‡`G³¦ g^³z‚Ö–ð›åNô¦Ïί\‚q7‚ÆíÔz®}ÑËoiθîM\¿àÿÒêÕbe˜eñ&Ÿ¯œZØxflê\¹RçL¥ºðÖ[u{g"xÆÍ­¦ë»©êV¾µ ÅcSãÛ_ý“ŸÞzþ V÷õq/½–¯ï% +†3¦éµ­Íëû‡(>ˆer¬T×í ^iãt Á’±Xg|fä20‘â™@ØôNÈå+KSKG(a³lF’+¶7Ñ›½09s–dr£yx„Q•êÌìšÉžc6ŒªY§Ø<«´P¦dv"»á%WÜÔs <­ø¸Ð/È_Áè Jeh±’È.õ¯iîØð(®‡“«”OÀ]€l‹^¿Ô[i•“ €¦Lo"VX)´Îtænlž}±:¾1NÊöá£Q 8 Š-¢dÈNQ˜0m§|VR +Œèà-twZ4ÆI>Ï𩵭+’V¢ØˆS` +Â6Í/ÍmÞŠô[ì%$¥Ê°9 ÞâÙ);Ù‹ æ“ÂÎe³AžsŽ×l´–M§14Ì ³þ†RiÃîâ¸ISºj”Ò¥Ù‰¹³ÝùÃDa‚5 R½ý¤: âHåîôÅùÍ’=„¼áÁuÇœÄDÑD—„ œ*jÎŒ‘˜Q…õÖøi áþÓàXqgó+åú^¦p*õ"HÜM/Ñõä©‚u(ܯ·½w¯ÙÛ!(G5š¹ÊFmlÏIÍFñ8Њ@5[Û¹ü|1$½jÄgA$ŽÏ_M6‚wtT´­fküNÅI*'¨MÅš ùšŸ®µ÷¼ÄŠZó³g:­šr ˆŒ®îv»ó&—®aDŠ˜ÁJ` ûýéþ ø›~Ç+ͨ$âM’ð|>^Ö;‰Üv2ü>fd„$–th¾Lq%”ÌŠvãŠÞJ·ø~#›±êØ!°cª=„R6õÿ³÷^M’$ÙzØ;ygºR†ÖZëÈH-+3++Këêj5=­Fôˆ±³‹»{Õ^a¸ A€ @Fò…4>ñ¯ð'‘Ÿ×$È'>ÐŒe°òÉ©.‘î~Î'<"ý`FÊþE˜ŸdÕÍ>4ÃÓßßü•GãÑÚp&š3 «cÛIàÙ`9Y<ß=øà†ó´ØlϾéÏŸW“Ûîìf¼÷ D†ÐŠò-\ /æ~¸…EMÉ'55kÁƒhß¾9U¬‘îÉÚ‚0-`TÏÐ5'\ã /žÿNÒºA¸8:ÿ¸Ü~ ™QTãÙ‹Ýí;8ô(Y¥Ù>€]Ó‡qq’ö€„ Õì™nßtú½ÞI·Ì ËÛ4çµÚ®¢OṺÓ®7 ìêéÅۧϾSŒRÏM6V¸ÓmšŸцâ4[Žç×þñ`|žuÏs—åáÊëÍûjtÉ +¾¦†1â…Òõö0\)¼˜øþì‹­›ƒFC„L5†yçôêîw‘uŸ×[>Ãg˜† ï· Iu£ø‹"?M_¤Ó8YNæW®?Эib8‹´8ŒŸ–½+ØIE-ËgËí;ÌfÜ9÷²Fèhú$Žð4MëEÁîÑåÇíåw†½€2í9l$¤¯_þp~ú:ðI¶M/VŸ?û +åófËaØijww·^3i:ò¢ °t{ömÙ=—å’¢|Ýç/ËîE­®´šd‡@œpQ•½ÛåÁÝéÕä3/škFáG/˜!%ƒüÐ KQŸ¢¿RIŠÇóg“Ý·£éÈ0 bµÇjÙUï€Ý6§ß\þTöŸÆÙI5¼Ò½0Yì¼9<ÿF³ûªÕSí>Üâ‡ïÿéø×—Ÿýn]R +˜P`šjY>•Ô1°«;¸ýâãßžß|Ý]\Üý`{KAî ` Cüø ìã´¿9¾û ÓYþx³ÿ¼78±=ˆ7Du׋öóòª¬.oÖ¢ld$pyÕXž•RÍè¯ÖŸƒJšM©Ù΃WŒ©æî*ÖÓj›½Qÿ,Ë÷h.ˆòÓ¬{ ³ÐŸ½RÍ!Ë%­ƒƒW“Å…¬Æ M^® {ÙCÔÝaZi.¢¯Û;q½y«íqB¡YË 9Ÿ/¿Ø?ün¾zú0ÍáöðmÕ?!;‹© •–¿NÊ+;Ü·ü%Ïûç_­÷^Éj†Kшš ƒpÕ\0dFÍ {Í-tÙ™HZŸæI¡ŸÑäv4y*ÉåùÓŸ¾üå¿žî¿Ã@9Þ +QJQ¶mvºÝ-b^sËÙ ““ÁäE¯ÉgâÄÐ÷G·Ï¾™ÍN=· +Ó]IzÑÁ`ò<Œ,sÖ&û‡x³ùÓý£·@cŽ‹)Êk4,]÷†wUÿVQ*ž Ëž¿ÐÕË„Hí¤Ø÷ˆ2éƒÖmw寨=Uí'Èôê"­ˆ"µÃcêK-Aº9„l³¬©ìç=Ø/²î•¤ç¬àè<Ë^/Hå¸ô±7y3xtý[/9äÄ$ˆ€²õáû—ïþðúË¿¯^8ñzÿìË‹W¿T³gmÎwÜåhú6ÎŽ‹îU\&Ŧ?8?½þAÑz,v׳ýïVGß&å…hÖ\Ñ{©Ó4×´T×»qv:˜¼ºxú»Ã³ïa Úã»þÌ—®¶çßÝüÐSZžÜT}Ìñ©¢U’ZbÚÞí_ü¸¹øîàê·ã½¯U{ k®<¾ø¾Þ"ÂâÌ‹Óòò¾¦ ¿;›žÿøË?Å÷—˜îÊ 6ðAýñ«áìCœŸA®èÆ$/.üðÀŠî-žÐf¼zíÚÛ¾õ¢…‚dQºš6ˆâåÎE +Jvs÷q¾º•,ëœÌ7_ô'ϳâÒñ¶Õëj«mFán³©ÙÎh4vtõÓoÿî¹{ÿ·Á%pC“ƒ£·ÝÄ<ø‹l6‚ÞIráCÉCŠvȆÙ7Ï_M—¯‡³;Œ†nÏ¡„Û”k[³,Ùçy~M*š³jðÔõ6ivD[N(£§q²eÙHQû–·Îûw£å»ÅæKÛ›KqbGß„PždçÃ5ÃWè‘(å†1ðÜQ»¥ÅÑb8:ÍËÍ`| óK +R0vÍË| 1)I% ;Œ\o©j°]ð~»meùçïµÛ>’ òÃöHÝ1ͱ¬CSrUmF“NÈÿŒìõçð<Ï—ÄŽ€Hc‚V[_,o/o¿ÝïÔt<ZË2ç¦>¸¯ÕDž‹E¡4ìq³©Þ_6MA¾¦»±ƒ-$ºlãò +¾"?Úô7‡Çß_ÿ¡˜ÜqJ‡æsÓ^ +ÙÜÕrëý÷o¾ýç‡×ó#†5,-´­Âq““´sÔ?Mz`ÆS/\9ne[‰iÄŽ7ˆóý8ߎçÏaóñmÔ¿Jª‹¼:¶`f³ˆ÷àqöVð°/x©ãG'Ëí·¯ÞýÕßýÓ›×.^*r>ì½úü÷»«¢œ’²t|¢ã¬8öÝ]Û賌Ùíž~ôã}Ë\`Ü:®¿oXKôs +Ѳ^¿Ý}gðw†=gHŠÀ󛃷º…‘\"Þ¢òRwPCä“ÝòÛ¦çô¯ïº½ÙâYVéÖèù`À¬Ñ4±”•Šxêƒ(ÚÚîZ¿ß0˶ª6¢Ä3U"Š¹‹7µÜ©ë£ëþð)†ô“'æùVÛ§™TPz¢ +×°„QêT§`U‘Ï5m$‰¾Ò¤œ‡CX@íeʼn,wi±xRW(ÊB¸þ0>Ý}ûîã?÷í¿¹|ù÷åàŽåcÛ›&Lñ:ÈNýâ2îÜN×ß^ü‘ÔR’¼\eýÞäΊOÚÒ E§U~¶Ý|MŸ*Zf9]Û_$ÅÙ)Xfñ’—|šÓÁ›I ANJ!¤£h±>|{pócXëîBRûè&ô’j”Uµ_ ΫÉKŒ98‘ã1kãÀ±Ü¥(e¶;ï_÷§ïƒäÒr&­×¼¬æAtÈ°d·[Ç]`ŠI½’ê¨,·†5”•AŽÙ±ýež fo›Q~C F€ö¯^ÿaæÅ ÍžêHÒF¶·;žCÞá|çd¿ïNß®·Ÿ‡ù õ %:“Åü.Ë7mCªA¹iÆÜöWHõ†ÙjÛe±ÝÛÿL’S²§”ñöìúç‹Û?@ðPt`ÛãÏßÿ85]ÇÛtú·Õð6%+T=šv‹êx4ª˜½zÛæÄŽfíBá©W®YåÉâæÙ÷y÷Œ“ªzËÓí…¨Žd}Ú½ ¢¨¥—Ùfwñú~{œ°VS ]V¦=“Õn«e#³ªÁålýn¾÷¥¬ sŠ`ÅfmwŸå +×ÙÍφë·IçŒÜG$æ  |{9]Q”N.[都>3ͱÓ§äPb žÜÜÒæ{Átºûbÿøýþ釃ó¯{Ó°¿iM£_?‰Ìv7®^üÍÑÕïw¿ƒbN z„#Õ¬âü´3„°–wß®7¿98ú¾Ó»ä¥OS˜ÇN¬Ù\5úiqø쳿y÷í¿§Ð¤Vcè‡^5ÞÏOuw5[½9ýÉ öaշۃљ¨VüÉò÷›”G³¾í;Õ bàþ~Œ#í‹÷ÿøôõ߸¤¶Ž %¹»~±»~éÛ>ͺw½Ù{¨MÓY!a›-ƒÔOI·å´Z–¤ôTsžvžŽæ_ÿz£M[’…áŠEQSUïBÀûÞÆ÷·Hr§ŠRù°ÃjWÕzÈ/D׶=èNƒxqxóáðédñ9(^Q²”jGÓ$kZøDøxz;Y|$Gšµ¨7l†¶L-·Œ.DQ+Ãœ¤ÙqVž«Úü¸³#ûÞt¹zfÛ½fËÇ1|ÇIÎû«ß¬N¿ËËCsF½ƒý£wp‹Ÿ|*5ÛÅåš½wUïÏBûII¼¼ºú±^S?}·Zžé¬ËÁ­¬tŚѵœq’oòb4ŒG:)‘hZUUç£Ùó¤8°œa’ïwGgN0Eß1’šNÒ9H÷ w&Û¢{å—Qqµ å€x@–ÅÅq5|‚Z®†WALŠÕ¦·~vH ņ†9ªúçQ² ï–‡ß;1¸xO6ÇŒ®LWwf R>Œ²K¨ݘap`» ¥ÛˆX¨ †qD%åNš]ÑI˜éö.Ëe–=•µÅ¥º³Ñ'å5bŒT™¡4„ëM¼†=²ÃC7>ŠŠ‹îôÍGuR1„©Qt8ýq"Ôƒh½Þ¾Í^FÙÖÐ+Ø1xø2V([t ˆà1Î.á÷[-ƒ¡m† ©ãøÛ´¼¥˜”sEëd=aÂ2–(ø°EP‰~´Cq HQ´!ìt©n-’üb±÷-ÆÚ㾌—}þõlr¡*)ÏE€GM-õûC©¶œnŸþwÿíÿG† 6æÄÊB#E&ÛPpœUtƒ`Á²!Ζ¦!Ì"ˆ(Û&E±YƆÅ3­]7<ѶìßœÞýþòå_Wã˜z/œce„œV‰J_Ò§Ž¿_v¯zãë$Ûvª³´<ç•Žî,d@q°íŒ^'ݧà,(Û]º¹©ÜÉe°6’Ù…F'Ÿ†0ô¢šåà+ÓìfÏ &I¶¢¥e +R°ò’Œ,¹<:ª^‰r,ˆ‘¦•†Eî%¥Ò0ûi~4Z¼šï½í> Ò=ÃÆø9!fØvزfº¹kûÓGÝ’še"YEœï}Sßw†ï²î+ÛÇ GšÖ5íHßôŸåÕ‹0>Å^ž“fC“…$!“89Í‹;Û=¾åÕuVÞ +rÏ÷ÆÈ)YíËÚØòlsÝ^•ÕMÙ¹zyuõ…Ì!?ìàÈôIåú¼:ò£¥¤ÀåYa´®z× +©~Ž`˜°<|^Ó’å\ì@vº‰îÌÃÍv@щnÌ‹ò +y•Å²±ª 1,º5Wu\ТÃ^Žæoz£§¦5øæ‡xöúÏ g¥êSÃ]òJ¯Ío«›c–à^„Œ³½-”€"æTÛÙ©Éõºé¹»À"„¹EÝ\”ÙY‘[Ö´Mvê3Rq/h6¥vSª(Nolqý5Çõº¾¿ÿ9òt ‹×ly<7OW8§O¤';Š$u€Ší–ߨ›m<ïxî^M¢l¨)¨2h]Eés\.ŠÙhp|xøFQz­Väø'ÄèÉ]N,EµÏÊe²› .òÜUÕ¿ bŽ ™XR Æ1ÍÈk4_ >3¥í, kB³Q­¡6Z/ª>„MÆh(ZJv2–·4lØÛ…ã/X)ÃÁa|4µ'ËHjWÓ;©ˆ½îô.Hy{‚Sí nÓÎ9Ùÿ<ÞË«ÓÞðÎpçmR„+„i"»$i]¤’iÀøìöÉu´c9M{è —¤(¶3sœ8±,mgJê‘ñÅhñ!ï>“Ó¢saXsÐS莇Ã3–½ßéßåݧx/ô‚—òe@ˆÖB×GÀˆ–«X¾‹T¥è¸Ù²8>è NLg\oê4ûñiVA<ÜÝ[رöýöŒ’ÒÅ[·’Ø‹áíê,†@Ç";Åú÷þ/oî¾ïS]þÆpWŠ1Š 0:g‚[V¯;¼hS~›r‘;Bª¹Œ‹»²ÿªÙ4}k|rð…"$†‡ÀÈ¡êN>;ºø1N7ºh(¥*—Hg ;´7ÄU­áˆò8íÜ›M[»èFCa]rO©\•½ëñâ Eù,“à¡Hçc³([ÀÓAG=y"RT +½ Ø»9Î\ q :îZTààt{‡f/±`¸˜,G; è"E:î^šÃ Ïà/4½ ŇÓÅ»Nÿ™¤NxqÀò}I·é˜á2È ršxÁŠÜ°m q|¨krª1莞yÑâVÄ»0`CÓB»zÇiu²Ø{7˜~¦“‹kÒu†“éÕzÿMoúRµ¦ø}ïYæê¢4pÇ–Ùq’”ŒÑ +ˆRr±ÉÈrFS˜½Èaš×ßUÍ©¤Áš5ÆIòb⸜gZž@.:Þ +àxó$?”4X†¸?}] n-¦³¹/ Ba"ƒ‰^x‚£©æ0Ìh>ùôSXv.o°M ,ÀÎæèãþñ·ZQÎzƒœ!а‡ãCTt—g¯>û ˜eôn¶û*Q;¬!NnÍ–kY£´Ø0÷¾ò>û–€_Iºó[-SFäÃVSƒºã¤Žb@rl²êÒ¸¯© [áÂq‹Æó¡–u}‚î8dѩݲ.¯Õe)é¯z“—ÕøÕ«/ÿÙOù?¦Ÿïìè@3<š  øFÓcóéüõ|ýÖ%7Tû‡G_ÇÉ¡ tÚLÒæ;’>Ì«“Ûç¿ý‡ñ¿’•(C¬.Ëîs×ß"‘,$U ® ùzŠ\àE þ®ìZ¤œÊvæ +ÝZñU_ÒlNnºà3QΡ‹Âø˜¬°ý]Q©™,  ¦Ï¼ÇÇLKÃ@¾à›DU37œ%£Ã‹³ +µt‚¥®wm£ôÝžã‚Èȵ›ÁäY§{%ÉQL|oî:#^p[-ê”"LÊbï €¤›M>Œ3â9jD×ûarX^f½€Í˜h„– §¦;UŒ1Ñ9%ç,)Žñr÷E¼×Ÿ¾(û·`.$¤”Á» ˆÆ Âýáô­åíêöØ÷[lò¤&‰|ìûs–uiÊ Ú:Þ×óWãùë²{y_Ž¹Í®üJµ°Kú \Ápñü—»·Õ#ê–§çß!wäQ~byk¤³®Oaçy!„öüEm â'Pq’\©úD3ÆPA;;|³©ƒ8Z”O1¡¨”$}¤F ÜiÚr=IÎ s©ÉÍƫ׸z]äÙDSÆ€_Íš æŸß¼ùûÍÅÏ‹í—Ж4>yZ$ €õøÔõyy>[¼…ÁûÃq@•_ýX”g4“ðrßïÜm¯~þÍÿõÿîß|õÍ_³b&+]È9ø×ßÈ ¨î«‹nÝpO·ÁwI‹Ž)Rdvô,Éö!üð× Úœ\üøôÕ_8Ñš“3VŠ½¶tÜ„Þéæ´è½¨Fo‚äÙÚh*4cC}d#x;Œ¤íjÖb/ðfÀMë£íéûÑòµáˆò¨M°uŽ;½/œbÅÛÅæ«åÁÇåökI" &ê"œDT;à¸ÒV²ZÒ ¸†F¶|Ôz +Ù¦Oj6­6yþf¼|ÍJE£e¶(  -JðJžO–­jºpŸøHvÐ+OÖχ¶»¸÷#Å$œÐUôiÙ»EOë ¶±?|ѽŽHÙ‹ú¶ÙÖ)R§cÀÑþΎIJit{ûúçñê©b-¹Ï‹… VIvBªú*]/>ï¾ßþ,*0/sÕX*ú„ð;íµ(ŒI<~±=ùñøæ/Æ«›6Z.91¡kZ_1g^tžvn²êÊñ×ÀF" ÚÃÁ3ŽÂèRí~w}¢Û´{_R'âÁY«æL5ãÃ$ÙV=RìT§ýÑË(>€!åÈñ&yïL÷—†¿*†ÏNîþº¿&WåÚ)®-Ʒ΋kX 7:ô¢#×߄Ѿ"“=ÆiƧèÜé_‡éÁý÷©¢M‚p ›ÀI•  o¾÷qºúAÀ![j‹²:˜,_zéÁhùfïô»½ÓàI©éönÆ‹·º½•©åìZzÑRÖG’1ûóÍ×ׯÿ>ì\±<‘Š +=°k{cÛýc?=× ²0‚´BrµÚðqd}€lž®¢ì0LN lge[»6šËF’X‘¯rÄø{áƲW,—vž°®5Ö !–Hp(Áôù|ù€Æ°¦ úê S?Ù‘þ²Ú¥…\RaQ'di·y¿¦µ¢“8=ÃûZX OÓ™ïÁe3°fuÏÄX ÊôÇ°E«åÕëª"dŽ= 5ô¡ïýxöô}€\ëAÞ¯¾Ì«3~P õÿ8ÌÎ>4!Tµ×ëÇ×ãÙKŒm‹Ji¶v[m“bÙÇÅMwò2®Î o¥¡¿b÷^Æ÷£¯›ä­¢ï +R¿I‘:G%Ë彫¬÷´èß9ÞRÓûÐ ¢LfÁ ŒGa×›™ö€“b@.òñø槧_ücŸ!zM“&+xcËðdÃ×$Å 8Œ[-m–œÍèØÞT `ZDÖQaWŸ6MwÏr×Qz$ëc¸-7<ñÂ}¸ËàçݳñêÕõË?\¾üójòRT§¬Ðv Ãýû•¨]/:íîââT±&ð¼m‚]E’îjå©bïJúÄtViŽ7=4¸¤ÉòàµlX.gØœærÃ^Ãœ óVK••´êó(¹ŒY†.—¤nœ%É1C u7ÉNýøH³ç‚Ðk4ýFÓ…̳f<“r?ðtýëñüeVžC<3|¤ÛÙüeí}ò !ç‡åðy˜ÝZî’ãÒZM¥™0/.\o%)ÏP’ üžøÁàŽj»²\Au´€l*éHÏ©$–ªX(ðæØ»“W“õû¼<¶¬¹N¨¤Óéo>øˆ +3"(}Ý]1b§E‡¬XrbÇ2§²’)Z¦¶ì­¦ï‹â˜á:4—6)K1†êýÝz¼Zj΢;ùüàæOýÕ—:ˆ+P²2Ë/g»ƒìæþúK4CâÕïK̯œðÓ -GY0lH³!ÂR·¦Õ€|øšrd÷îÞ›ÙÞŸN5{ÐÎ:Ï@FªVZVŸá|šu}Š×‚è)²°œÕl¹êv/4»ç˯ã WW5&ä“æTÀpIì[TJÁK¼—¥k"½DäE‚^ûá<Φ~8VŒ>Hÿä—¢÷“~_ê(põf y9”2ë]Üý|tù›¼ÔHn¦ëwšMŠå+Ø7<˜ï½/{À€…À+§êîš0àPJ–i ³| ûc¹ ¢žnO~›dçÀª:hSPYÇY)*ìvO”ú†¹1¬­q\¶S“(Úµì9ÅD°Q²>.?«æï‡ó/,g]«ëµš†‘‡ù2ì'÷p¤Uœ] cSPoê²:«æŒã ?9w€Ì4*ò90“¦ü{5>m·ƒVÓeXèrÝBB3z¼Öü£m¯<M.(@ڤ׽”!󸀑 Z(x¹‡,Öͽ,¿æ…Ì0G6"ÁšRLVo4 JíÇÙiÖ»R­‘¨uÈǼ½éîû£›ß•ãÐä>©$³¦tÈ*yhûç^tãG† ‘߯ÁŽóòæä˜ð¢2¬ '@‡Ã’#Æb(ùNÿóÉâc\‹ä60O”RÕéÎŒ—‹6mqb¦§N°§ýºBî8¢I 50>¨G×ä + —š»¨·Iî#ïh&SÔ N³eÿ¬zƒrÂI~šužBoÄÙ6ˆæ’’†þ´,ȺD°n³i½å·™Pc:3V Û¬—uŽξ¸~ùÛûû·ý!š„Á^op#)Mš•Õmѽ ÓcÄÏ“'4˦ ›sråÆá‡éú7n¸%×­ø¤ÞP9>”éDÅ h醘õí¬9!Â÷‡·ðwµ†Ý¢SVìÕZ¦Ê6NŽ#rwÊ5 2/—¬4l2EƒÊT}=š¿ë.á/D1O\ýôâÝ?ôÇÏáÅêM»ÞtE© t%f +-wõî7ÿvïâw†·×hù͆c;ËÁð%TîŸýçíOŸHŠ:>zþ÷Ç·¿’œ'ã`¹6Ť +ªyØ›|õåOÿ}V>³ƒ #ád*` ¯Àª@w­u{Ù‘dŽ?by3NÑ™$Œ|ïxwïK;Þ£ø°(/žþ"jCÕœ(öˆ††‘ÇmÈSÞªÐr M;ž·Øû9ï>…Ü…’¥Â‡‡ÍÃ)ëò8 ozý/üè¢Ù‚øŒÐÁþômÞ{)›ã6·ïï !£ÝÒM]’ʬ|Z^ãÌi.¬7 b´…ºÔô7Õø³ÓÛ¿Yüìgç4Þ¢áèÚ¸ÝëurõC**ƒ8¿zñþ¿ÜÝ~ÇÂ%¹³îè®ÓéGG°‡-Æo1¡e/Rˆ9ƒ} «aÆ´Ó{ÚécF&dF&8 [#Yï + +~ìÉÚDÑFº1$Vˆòx~j ‘Ï ~¤hO’ +Ûž{þ.¹ñ؇ÙEoú¶ìß%dIê=‚òçy²äz³aHr†°ê‡p- +ò)É‹#ˆóFòíöê÷Iu㸇†±‹1I£åtr*IþNMPŒ¥\ý·‹õnxØf¼ZM)òƒ›¿5]X ïÓšÒ¤B?:ZVÀ¤CV¥äsUgA¼ß¢]䣠L k½X}<¹úƒ(÷ž|JVGáetwY²³£Á l £w ƒFCÞO_cTW‡¿I:·M*ÿßÿi/ÿÿ>ÿ¯ÚcGZ{ìÈCkyhí±#­=v䡵ǎ<´öØ‘‡Ö;òÐÚcGZ{ìÈCkyhí±#­=v䡵ǎ<´öØ‘‡Ö;òÐÚcGZ{ìÈCkyhí±#­=v䡵ǎ<´öØ‘‡Ö;òÐÚcGZ{ìÈCkyhí±#­=v䡵ǎ<´öØ‘‡Ö;òÐÚcGZ{ìÈCkyhí±#­=v䡵ǎ<´öØ‘‡Ö;òÐÚcGZ{ìÈCkyhí±#­=v䡵ǎ<´öØ‘‡Ö;òÐÚcGZ{ìÈCkyhíåÿöŸH;”ÿif»?_¼úáÕ'×ëOŒé^ñ?Ÿ¾úÍo¾ÿäðãE4ýþ‡Å‡×?|øæã«ï‘{øU¦¹¾yõ•lÿúLO’¾ÿðîÃGüòìõ«¯Þ8²§öñÿ'ä¸9îìûóþøÕxÉÇ_9{ƒ×üß~m_|üøêë7ŸË÷¿•ñk9M ç“XžâÿëŸÉ7o>ùÿ$r|ÿßõ/øaƒo¾À¯~–“X>Ÿ>‹åÏÉóO? :Ý<‘ï¿|ªnvÊ_ÞþG?ÿû·ÿáùÿÏŸ}þÇÿëíñÏwÿçY$ä,î‡oùá«7½_¿½ïÜ¿KÛ!gºú$Z¼ùéÃë7§«™|}øÉS9¸ÍûŽoþ£óK»aÖé$¥üLNãÝ*ÉÞÿ¿} ùóxÝø·’3œiÒ¹?é\¾?Æ'†qž$zr™uÓä“ë½ÿLVIÑAJ5£¯›CTeéóâ@ц³T´±$‘½ù­ç{–³0ì‰ —ŒàU¢RJj—TQÓì9Þ,Î6^L*téx­9·¼-+¤mJo·UŽuIi)oîÅNthzÕ™ j‡æÂ(YºÁT”+ÇÛ„ÑqZ\iö®( tg-k#^(6’ÔjÎtkåÇ¢>h´VÈEµË 1Í¢XºÞ2+.œh£;SVHDµ#ª™nwiÁW­^\ž¥Ýgñ[/=ÃËY)g„4ÉN«ÉË´w“t.‹þ '±¬¹ë,IɾlÑa­¡ãÑlÙí6:’ªJGC°M»¢7›Z­.µ(‹fC–O6“ä¡$õp4ŠÆ™Gª1ℬÙÒ&ÄI6›ÏŠ:‘䱦ÍM{i;óÅâyÑ=`9G*ËY…Ù¡íïÒl@SÏå8 j.DuH±)E‡º>Š¢mà¯D!ã}ÝsR†¤Ò°—¦³Ò´* ¦mãàôÃcÓÝ*¢k…à$½ÕŠa"é¹ý%µ'VœØiÓ~³åà´ñR›ÈòrGÒn°-{/'ó7G—ßJFÎI‘í¯âꦿøöž©ÎZµ˜‘«Ëßí}䵊bC7</>v†Ÿ«ÖJ±–¼T1lˆaÄ‚”a¤½zÓ Ù˜”àf£F³crB.#à‘Œ—»¼ÔãÄž  %½OÊxªcŒ!"Oà .F ¶Ú&©°Jêg& P”ÇÒÇÆ0’(tzåUYœ7z£®µÛN£iÔê +&•±f¬DyÊ‹#ËÜ·íM›òIY ±TÔ!¦ €À‹À‡Ý :äb§!?© N`Šëî9öÉBŽÖö†ìh¾Sš EäSUhúT–:õ††Ó„¼Õ¶(ÚA,1lÞh…4“²)3¥9{Xh½hbš† ”qr™f7Ire˜óNyþÓÏÿÍéÍן>¡Cª,N^è΂l%Ž$âIÝŒ6㑽± oáEk×ßUáJ÷ìì{?^S\Ø ,Eé—ÝiçNQ»²’R”}_i „áå+õcá‡GyçÊvw>òýEgpígÕ¨Ö#oº«(=Þ?ø*J·¢\ ,Ãä,È.Tk—ã+Iò‰·ûýÅõ6zÄGH@IAîôudS”‰(—4ë‘š'f1/¨Ý(=_l~Zÿ8ݼô\5{^¼v“ì+ön\ÜL_Tý§ËÕÛÎà,Š…m“Î…ì‹ÚT6Ð…‰(u/¤†jÛ´Ú¾(î«ûú˜ VÛ%²Y~› [\ÂbZ¥©¤,üäJ2-ÚÂ8;Á!ÅÄͶ»S73¼³,Lq<ùÊ2Q»e7F«‰© X&öÜ]Óœ"¢ £Ù0-„Þhj4‰ÊÀvts_7÷|ÿÌuQ1äH!£Š03Q™:Þa^ÞÉú`§!5[º ’‚`Š:Å §}_'6ÝÙZe |"ËA„,›«êܶæšÖµÌ>¡Þòší(-’ +ä=^™óm)Çaë …`Ø1Œ)ž + ¼Içoƒ|ÿÓ'´åÏÒ’àH¥!Ð@ºí{"@ZadìpdŠ;¾³Ø|Э!ÃÇ’Ré¤nÉZP0’D–+Ï[ñ† ÙÈÆP1&"òZŸÜW¾õ³ìp¼xfûI±ï¥{ª5±ü•oñUÑG’Ò¯ªK/^5i«E»‚PYöž¬Œ0¡ÀR3|!ýý6Òl©é»jÃ"5Ž0¶ŠÚWõ¾iO,o¡Ûdý¨¼öÒcI$Åyœ™þÂWº?-ÏN~ï~Àø#G&¾»¢Ö›:BÈõ¶ÝÁÌŽëo-{.+=ÀÙzŸ ]Ͷƒàù$É€©¬Çbfå±(Ï5c?Î_"e81OÓ3;8hÑA£å6ZØ +èñb +“Õ!ò¡C MùxkëMÞt'ŸûÉ6M÷ÿˆûÛ&ãq¤,Ûcyà8+È›{•âƒ\Ôû +l82 !蟞 wk ¡Mª‡eIÛA³ÐLÁñ]×]Ûî´Ö¶¸4Û5ìc78sƒcÝZÝu`ÃÔ¸í¶AJ?µ Šñd0‹6Æ +|IÓ1Mƒ\ŒvÛÓrê «Õ€“-0 « iªOvXh°VË¥¨ˆeS¦1Z¬·ô&ípb† µÝ­f )†vd´,#r¦88p”×hX†MÓ‰Èw)ô¢í |Öh(±š +ÚÂóy>­´4yˆ=|äK +†¥+*}Ã^aÐTm + &ðÀ./dY¼ªlRV­eÕš6z7Ÿ¾mQ:t)4)„"W‚<´ÜâzQtžÁÊ2Šnç0¯ÎUs‚ƒlVŒžï/»Õuwô‚fÇ™˜ör‘¨}¡™+Ç;î?Ï*èØdIï+úP% 4 ⣢w½X½ùþÇÿjsöAÔJÃÛáÖ¶° ¿+SŒ‚@‡¼0¬¹¸Á¡n.mw®ô‚ƒý½¯VßP\As…¬Ž-{á¸+¼Ör×Yv6=óÂ5/“‚ɪ>†LŠëjøÊ ÷“üäã·ÿØ_"à>֙ += `ù߃2>%Œ%p‰P‰<”Õ Eû™nvx¬˜6;)8Üh™ˆ^¨X¡Kª—H}E›iúL’†,[⯵†ÜjëТ,—lkaè][æ.ËÀ(¬Ê¥¦Ó¦Hé¼vÛEŒµZfV’»€Ýêu‰e“fÓ­ÕÀ˜ǃŒ³ÉˆCmI=Dš¢ ‰ÿ’325rOÓFÐÌ8&ôŽ‰óGhAtµ çK-›¨÷–Y¯'BÇMóW¤Bü(Êôä[H5È{Ä‹ ¥’j»Ðl8 )—-$u ‚Ü•µn"³VÛ Åc’r—Ì…½_õß ç_úá¡®÷³·Y¿žî¾”ÔJ3'º5q‚Ý$;èoÝhÝl{®·°Ý94^–_DÉUß gýäB1o±¡ úãš  ÆuÔ~>_¹:ú¸<þÊJ–†3-ßÅå-tî+¢Œãü"ï>/z/,wƒS²Ý).Êe¬0ÆÙYÞy:_}•voh¾/Bk)=…t;ó­ëoˆ£”ºXÓžAö‹J7É/v7£âÜOºãAé´Hö âàDÀ¼àHz]Ÿã@¦¥«ý4;‚ùEH`F í\ÿX7,…ì¾G*ÀŒ ¤ºÑD3÷ðÂX{‡ZÃh´lÐÎ ?2 ´Y·Ù"¥„-L™Ær<8æJÕ±–e~ešKŠîÙáAµa¦bŠöðšYƒGÎh†¨}R¸ IÒàD*€òïÕàQ3f˜tøD‚ã®ñ ?â\oôRmãòfÓ©×UàuMHȱ¤° AÅ6ì¸Øm"ÀÚÞHà;ˆ%ˆ:I(-cÖ¤Q +¢±^SR:~Q +Úm´- /Ɔð駬ÉÍ&šüœ“ô÷–’Öc)®5Ož‡ÙëúûÐÞ’ÞѬ®Ž œ•µ‚üŠ·S=5=XcN춘Œ{бq|äË6ëÊ"säkÓ›þR4Æ‚Ö‹óåöÛ¸<ãÖB6·ûAzîF'–w»ç3'R‰H`…Ôr÷üøÒôŽ%c)Ã+iS(€í}±ÖËgH^Š˜éûÁ©CÈzÀ5ú Å%’:±CEáaѹa„”á#È~ŽTô…À§8˜AÓ˜&ɇ4¬+ÐÞ8þ½éN)ˆŸ&=³€à«¬Œm÷Ô´`½eqÐ"YL +º"—ku4‘¢ž@!“IgI=vøY„+ q?æSQê·éÚ A¢ë3(sYÌm}ÈóÑNC4"®x¾â8ðT‚æ¹Â†¹f¼';L“TÓâÅI(èR„™ç8{Ž»Áì€C¡™‰Î¿/lˆß4NoAº@¸LÂÈ29Ç•ˆ7œ6¨ŸPgË"5EÛd2´;¨ÎoΨ5µOŸp8”$TÔ²?Ä€œL œÔ“O›ÍºXc¹Á  …‰é N¢Ú±—ž»v¼]L+ì³í­esÐfLQI4½c;#àUR^ºá†æ#Ó[sr§Iªì’ ”àGFˆµgº›jø6ʯ-WÊ8;A˜a®I¥hk™w_ _:ɉd²ˆ+A­(>Ä«üôÖomDŽ>fÄRœåçazßA|í!1ÁJ8yüˆ™B¶‚á.M{‘V·^rª*뤜ã-ípŸâ“ZËÀotc‚ìÃX©¤ö2©`/‹Þ¢F¦€Å$Bql$‹ò3ŽÔ2Ó¬!E´`Þ)Y"fjuo aëD·Ø࢚Z ¬ +”äŠ!ž1#ÌK +É"Þ`E!´LÄÃz­¦f0Gó{¦F½Zݤ©s +w¶³C‰B¢*]†T ‹ P2ž®Í¼à˜LX˜²­¾Kê‚ò¼-` +¡òd‡®7D ¯$‚Úlä )à‹ Z0Ërÿ~õC~B*l›è‹¤t`”HuD!1Œ.EõW¯3:Çо¡}o)Š!G›¡?Âä2L@ôžZµb¨é& üNæšrÈ⛳«Zc†uÝ`&ë~Cj PYeï•ío  +’òˆ 8u_E–†jUÊ$?“C×_äýsÕžÈúH·wáIiD‚\Uý—Ýñg‚FV£WqçÆðö`»hRŸsœ×Yÿ fE{“ÊŸmRu l˜¤§@ZtÁñæh¢~éˆã²8:éT·š5æØ 7¼rÒE‹1š´ÛB×x•³Å»Ùæ;Õ] +R‘äG¢ +Þ1¡x1• ­"=·íE£¥Ò´)IY½!!Ó1ÝR×T*X”ªòbÉ°)¤5تÙôMÌ×f\Š<ȲEÔ ‰ÃZ]Ç“ c ‘ÇÁ‰ Íù˜Ä"x( +ôdÈrÎЮ*çE¾Ç +:¸†äÖÆ,“ÒÓm4dU©.p³X6ãHÛ’Ô¨$+ºŸïÞl-Ê"¥×[81 ùÔl¡LJ÷KÙÙ€ÃÀ¨{àþú›ïÿ%Y«ñ­–™‡_"nA…-œM†Ã«ÑøAE·%M59ƒý¼–H%Kåhò^ nq{xq‹}o~¿´b¶[Ǧ<)ª\èƈ,=©ÝÅú3ÝîÔÕ&¼'‘ıfN{׆½ð½ÕÍ«Ò¤u²Æ%ÀGw¥kZc„–ë/‡½óË¿Xánó>0ÑŠ2Šâó½Ã_ú³·¢:0ÌITž²rNó ˜KƒŒŽº£×I÷ºHÞ¼ûË´wø¤.Þã3© ŽdtÜEŸÁΦ¯ Ÿ š?⯞¿M&åÜ¥îzûAs;;5XA +È«Ý­¶_®Ž¿3ýUà.ŽßS¼»Scj5AV*RlSEá i"«… &÷ô¤PRˆ/F´KJÎñ^˜·ã_ºkux=8Ü &Aež¿Põþ“ag‡‡OÜ“NÇ´6 +Ñ+ÆͶv'&0n ‰L‡Ü +¼YVnš´u¿,£—’jº å«rxK!$†1†­’šÕ 2·F·ŠV»EïÒ÷IqŽˆÒ”Ìuc-€ÜjBt‘‚Öá(O.¾k³v«¡È|ìªÕÈÉ·)KUtÎÂxÕl²àiJijpð)®¢öwp§[sȤÈ´í4ð/‰P+ËÒAÁT;!JN“Dc•ÆÇ“ÝWš9È dõ žÜ æ’#륻W/~Gñž¢t,kªª}à˜¬öD¹ålÔ?{õáo‚l¿Mähܱ­ev†OugNݳ¹îM›¬«½²:Õ>#,w5k¶Z¾úË?ý»›—x_MHÀ46DˆªÚÚ /ÿ0í>ãµ)ì˜kC¡iÁï$…¡cM}&4ïc„-"œ,pbì•ô®¤v惫?ýí¿ã¤°Vã%1Nó-sTo w`gg‡£Ñq¢“Käi^žèf÷Wl·{{hŸúÏøÞä¾7$"‰!˜ `­.ÀÑøÎ +ðøé'­z ‡lá`! …&RÊÀ[ã{žË]÷^„Öõwê20 +Ì(I¥'.p+õ à&.S”RQÌ,sÒ)/íp‘Ojlò1K®ˆy‚œ#¨tsìøKXHÞ +r'J’êLÑaÞûº9’µ®fôãdO³F tæÉMû¤È0Š¶Áņ9Â8ãø¼R)ú`ؤpð*ˆú“åä•—ŠúbC/1ã´Ý¤EÂÊêD·÷yyÅ—Qr +qE±.æ gˆqkSp[‘ÊLÔf0b­Îá«„óLÏŠîeÑÙvûG9P86¦²%Ô<~ÄP¸î¾n.U~3…Tæ…¸M›$›à­5Ë®ºÓ—MrÉÉBB5dd·Ül*4í˜ÎÔ‹7º5#«OœOµõVKÅD`öy²bÖ¥˜ "_Ua|+*b i(.L‡aOÑdíN5v³Î3¸ ÂÔ÷æ뀈¦Á3Cy’ç邦c`²Àƒ†áGh–\³¬9ž³™]×ð¾,Kj#׉tÔˆÛN’«6*Ç6Ç㇆Ͳ2B²nÔGêÁ#×±¨ 9ËX€èÛMÛ5f;5ù“O »Hym"NÚ ~…@(YÐ0AÇzªL›O²èÑDh夀3‹@ŠAµ„k¼µiN9(1µÝ‰¬u>夊ú‚0̾eM{™–·az.j=XxhuZéréÆO“î[/»àùBYg()Îf!µqoøÆ iHsR[RºÀ¤?úÅóPqK•TzïµÉ‘E<8åi5{(j…¤W¢ GÖ%ºš%É(ˆ©¨ä ‡øLá,àXEe&W¥ÈR=º·öcÝZ‰Ò@–ú¤Ü}M ) £Z«1`OšK '9±’‰î +)˜PD³¡‚OdqÀ¡¬"ö*š«dejè3ŽHxÜ/–bŽx©+áÝ¡<å¾çniž†*p±ÑØ2é6(iÆ ]ž/jÁ\"nE~ø[ÏY"*l·HÁäO>iBD5‰æÑvjH4²”Ú&æ7‡Ý`ˆ×°žÔd h«å·Z8í0Mö1Aˆj‰Ky–\H¢#x¨MFEt³Y«A°°ÆŸ>áà4:°-Ì#,íÆêo5]¼PQúYÊÐÚg2MÁF'`胲s"(Yx»ºµÄ7ÞçNx#†ÑÈòSó¾j1¦[׎³ë¸ûš>Y4[¶¡ ;Å9Å¢-p±w¿L;·ˆšM¼èD·×$™0._øÙµ¨0Y’2ðãÓ¨¸1-(áŽ,duàøNÌI‰`N¿oXsAÄ@éÐ{6SPlÙfÒ6 Fëê:ôÏq‚¤µR3¡¬Vü7›:Õr-‚„y­)-o×pç4|4Yã¸þa29=Ž\ Ì!-àî¡jµèdÄ8µ:ÿEʧ£§` “HH¡l·ƒ'Òòj¤AV½ÀA‰am¢èÆNÉJ‘1“ä¼Þ”‰Ë£] ºLÕÀõ6,ã œo¨ÝF]¬Á»Õ ]Yâ%`L’ûP¿L±Áñ´¸‰erYìã«Èu‘hŸ~Ú»5äêä“'ü'Ÿ° â:1À¤ láKðõ“Eû<Ñë  ŽLš¶ œÏ¥¿JÇvÓBÔ \Ï" ZMi§©¾¨¶„g¥ûå ‰Œ0k‘ àe¿M¦)ç8(Õ¢Ž“l˜`"Ìr»M.F@ŒQÐ{Æ®’›OhWÑFŠ6椖¤ÖT‡È$?ÍÑäÆ’œÀ¡Nð‚+Ë•¡O{e{Põ +/˜eÝ+¹TdBÀûËßçÈb´ ÄÃa›m„A«ZKÉX°\÷pþîèì«6ˆòÉ 0‡Ü >Mš¤Gn·sÚ&ò"QžšöJ&RGŠ:c…ãÿìî÷·ÏGƒ¬ª7áÄE*4¥WD²”qÄÈ÷À×;M±Þ2T}DGiqãúPYºÑÕÍ~½©î +È n%yp ¹‡O5 5ÈU~6„LJä3´¹( (*AÎ +\Úné°f0e8«û»ÈêV½?˜w‹kÛªÚmàgÔ¦qbf³ªÅ“-‘-µãYcÐS‚ž!ÚÕBó(D‹Àÿƒ¤·ð’ë:óEÿKj*†ÃÌPuŠ™¹ºª»š¥CK²À É̱cÇ'±Ã9Ž;0A‡ÑNœØ±ãLf;0ÉÌ}sß]w½ïô¬u––¨Ní½¿ïûÁ¦Î°€åô¸ÔÇZñ,âO8ܾ}®}vbã ð›ÑaLˆ(7ØyCN% •1‡¿:G…#`3ù½ˆ¤À׶ÀoBà±÷áXí÷Û- }·ÛɯBé Û„ËííTÂÂh€D1à}{ΰ^ fúî´cDŒŒ€Âwð{SPnÂð0d綤Œû»àå H~OñB…áËn¯½¢aO2¯»n¨ÖãÜNnhÒº–ÆÁ·7;ò G²!Ñ Â „ –½?Êgû>È1ð¼{.WµgÀìòFFh¨th?$ªÏoxƒÆ¨‹‡„|ƒ@°à÷ *%¹f„{’ÚöØÓÈ6°Ÿ.íñ?Ò!ÿiШ +þø˜>N›¡>NÚÓAö>€P{B&ƒ%ä8 ­ðÞü +d’y<*¤Œ ‰ÓI qôz` 4’LØ«Øþ(†eÑ`Ìe¯@ãq ›½µfì¨V‡[†‘´Âí\ii ›toho¯<5<Ê_Ø[]’!(ÃCPþüj¯è@÷ïGFËœ"ä p€ƒ´®ƒ-… ásÙÀ µ€†@º ö»ì‡äÄÀËÛ=•BúŠi×]7¼ïºQç¨KÐ0€`ÌѽõDÐNðO`:à7ðø¿½á¤HPyjãû†pðȶýÙó@vÐZ—hÝ +ø£ Uý‚>Óãâ÷ï ŒÚ²È¥€pÂI{ +JÄAêøfMì­Û‹w$›aå +-–Fm+ +’Uµ•$…ÇÓä­âƒOÙFLrz%[ÉûmCÙ[(ã`ü "Áó^ÌÑl!€&1"…Ù3QÙ¢ÊjYÑZ`„iÄÉ8YÐçåÊ!ŠI€C÷Ôa³ßîšàµ`/ègìœx2`oÛPöÓ†i¯ßVJ~$ +è L@ã$“`Öþ!xç‘Q0h:ˆ&A-‚)Hf‡ @céÜV&·MÑ5µ×¡pì-({édo«'µ·×.ì ÄÀ(aèƒÊrØè!¹=a’(2ö\‡‰gO;ìm¶±g° #ÃönOèDZ1Ú›ÉmŸ>„¹ÀºBN8{«‰Ãž‡‡éýûƒÀb{zR‹å㱧@~ƒÂn5:°¦Ÿ‚ƒ®q{ì ¥A¯{¤cx†üí‡ ð_¶¡òb{{×èµ·sXvÚëàÐGº¼·8…VqÛ&ÔðøB (j€š1{žŸxÏ{œûÞã¶[eS˜áD‚öî5 ~ƒAJTHË!»|¸ÿI-×¢¹²Õ† ”•P £ÀÅçH®LóeÙèjÖ”Ÿ÷¡)¯½± á4×^{õCÕÇüA@3ц#$ùIsàÓSkˆ/Ía• *Î yQ®ãTž r¨½hžd¹R¡°™H.pBŒ<¤%¼´ˆdpC8‘Ûîð‚ð ¡ö!s|ÁÉh¡Jñ0k Æ÷Ö|ù½®é w‚BF¥cFgÊžåêtìáÞÐ(v’æë׆=`OZ²)ŒP¤ù´vd Œ˜îõÛûW)6¬ +î² @ØcoïRƒ¾{ƒ$¨šNbx:L@Ò‚Ësû!IÀcödµ 6!qû ‹û ÁnÝåÓn{èL/8e”ª5æÒX’áÊ ZNÅžctr{{pPM kÁxúýa ãh ò +Úã´×ÐmÞ±—–ß8ñQÛö猀\ÁNpg + "x~ |vÌAðdLÑ[P€Ÿ–™¹ë¶ÍQˆe“öÞf§†"x6€¥ÜöZcÈF_ ŒÙ*ë±qZ*KfGôX¹ÄÉ€] A+& +s‰Ò¯V!D9Wim±R9ú+@ÉËF[Ðê´X`$ÛëÅ“SùÚ*Á¤½AlQ u!¯Bñ 3>MpU‚©Õ¢¸Ä Ê&àƒj¶d³É«5È—ß`¤*Áfp&Mñ%VnÉá)Õš2¢3¢Þå…B¥yXµ&>£²ZxJ³àïû¢ÖÁ¨d Cª öÞxØ–¤bÑäTª°d%Ñä´¨4UœâŠ8•öØ;µ½­Ø7Û{‹¿œ}¸#Âð8Eç5£ÏJ’Ë°b^1›$—ò!:Åç¡Ëððj*’œ5£r¸…2©!0ï~“¤3ŒPæÕüjw/¨f§Ôز23ŒZ3b“f|Ê°·p7"™#Ú†ì¢ØX,ÝKçhwoeÿ6ÛÇ1:)ˆÅ +lÈñíHsRØÄ&³cg)™DHÀsLø`\T¹ÒZ¦¼F°€„H‚C·—ì}‚†Eµ/Χ*+ÕÞÎÌÆ¥Di gó$Z(3ê!”!™‚¢6óŵXf:HóE×Þ„@  ãTÔnïàÍš‘ñhzÚˆŽKJÁ>°ƒ@&T0"ã³·¨¥$½¥EºŒüR¶äà1ŒJpj…U‚ÖÖ¬^¢°˜­­ˆzAÐrF¬­E;j´c&'D£Jôy½NKEJÈ’L’â3œ\†OÅ’óãƒ3ã3§¢é)ÙlQbb!ë5ÅlD3 Fb9S9 +c‚`à>= ŒŒIZèXL’B•à˱ܪ¬7¥D Ø9%<)èãœÒf¥f$ÚëN’Ìö˜G†À…¢3jx’•ê¬Tƒ$‡ÿL°YQkùÍåå {e½¤†«á„Ý3>ňRI^©ºýZÀ†\›² ǵH&ë¶OÄD,ê ÀßháØL²°Ë/D3³ðÀpA7¡‚2AðYAoz3‘[Š¤f!X‚VuzÄ b’$€‰E±%E‡ +¤fòµíéÕ›R•UÞPbZ ÷!ôÕÉcÕÁ±DiA6¡H£=¹Õ™>Rl­AªrJ–JðŠQgøl*5…Ôâå*<Œ`SI©u0SYÓ­n±¶Š·=-ˆG%­MÍ$J+IÈ.¾à †µP!­1'‘–nd5ùÅÖô™éÍ›b…ådnfqãzEo»½1A›Œ¾lôâ©…êøI#6 ¹:2Fùý††¹`¥Zt"œœ­öŽgª›Çp¬S­/‘lÞëm;A³5ÍšŽå7òõ£’ÞIeç @ÀÐáTJµÑÌj¹u|qûö#§ß7·tvaã¬ïJF-YZH–—Œx/Y\ŸÙÙ¼ÙLNâL££›ÐÂ-¨|c«Ü9NL.m_©öâbgSªY Å:Éò²ž\çVÄHO µ“¥å ®»¼ Å&­ÄT¾u4ß=žmɶŽXɹÎàX4Ý•Íb47§E&©ôè UX¬öÃrµé(¡ ÊJU1ZFt"]Þ,4“\šæSŠ^ +â*ÅEDµÍÌeëÙÚFµ½3>8 ŽWjœ\¼…î›ÑA45›¯n—ZGc™U@ZàÊæÄR(6ËÏk‘žd¶«IOóz 㲜ÖŒ¦bõâ¹%ájï(/—T'+è# ãdÎM6ÇËãÛ…ævmòTº´´zð"Œ °''WrÍÁÚ…ÅWß45ÒŒ4d­œ*,lŽJW”Ìn{ê\¥{8[]ëÍìBá{-fEõèD®ºÑž>Ùœ>Qín^«ÅÓsýùsÓ«¦VÎ5Gë—çwn™˜:ýÐÏå¿Éh¢›¯oUºGëýcãó»S7Öûç—Onœºˆµ388·u9Û8¤Æ­éÓ ‡ï,öwu«Ïw¤P%-N©kÑÉH~)’›/´¶KÝCf¢SŸXMÕ•PSti)gD;áD?ï÷f/§K8åÔ\4=É) ¬Ê6[}#:ˆe—Ë­£•î‘P¬Ž5%½jÆû©ÒR"¿P¨¯5Æ·¶__¿hÉËÅLuµÑ;ÜŸ?S?\lL•7%­=9yjjé|3i> )QîÉ×7“¥•ÉÅ s+7\¾öhkâH€ˆCΛñYHûHj^‹.„SÛµÞ9Qª ¨E2šÏ$óÓz¬ÏÏšñ^4=(57%½ ,fÆ&Eµ”ÈN•šë©Â¼j”i6lØœ8©†:‰Ü,´–W*Éü\¾±fe¦ ¾¢ÇzÕîF¦<'(¹lmÙˆ4SùAkp$[]±’ýr{íöû? ¯ÕrîôìæMÍ™3¹ÆF<;ËËM´åêæÁcwgŠs.kf©ÚZ\:=µ¶Û?7³yU1»FxŠKcN +äA(¹Ø[¼©3s!YÚJV·¶¨˜(Væ«ÍE?¢x:(m14®Ùä>ˆ¥çltUóõöz"; ö\MDò«fj>]]f¦ÜÙí@}‘tXÖªfd2‘_Ê56ËÝã…Î1ð}!«Í ¬T3W›M—bù+Ùô7ŸùÔW*Ý nZñî`áÊ`áêÄÂ婵ËÑü\½±òÈCzøc_•Ò›;5»uu|ábuâÔäÊåÁê FtòÂù»ßû䧬lgÌÍ JÓJÌæê›ýÅÝõc·Õ'OÏùà3Ÿ-¶×!jí|} Rnåе³7>ºsî‰Xzu²¿=·xÒCÒ*z’j2U\mÏœ]9vÏ¡óïoLž^ß87·x”•sf¬N”P[ w’ùÙÕ£w®ºx!íAâÑ|Þ ¨U°ŸA"À3ñôRkpœ CŒÐ­&„¤…jí´º‡î¼ïé‰Ùc$ŸiN](ŸÊV7«—Jý]5¶¤F¦i6ÍL +%ÂÑøxª07·qayçæîüÔ Wh·ÝvÏGx9“ÈôÚ“ÇÚƒ3r¸ mKæ“…%¥Ñ䤕èyƒ2N…œ¡SñÜòìÊõgozÀ|cýÜÆöyQÉÇÓ½\m¹ÐØšX8{òâ½·=ðAÀµ•÷<ôÁ‰¥Óà‰0:für¶|¼>y±1y.ßØ8µ{öæx¢F@ Í¦‰ùxvyvãöHzÁ#f´ | +% Àøpz^ µ3Åù+w=±}ü†f€è"è\¾y8]ÛÒ"]äú™3wÜsÿÓ¡p›—JQ‰Êz¦vhbéZÈPƒ ¢TGPUÕëá8”Ø„©Ð9É®’dª7~Ô°Ê~Œã•dº¸Pmo·ú[îÊäìaAË;½¬jKµíb}'SZS¬F¹¾tæüÝ«Çn¨H¡±–knÅ‹KÍéÝLsÛLLA”ÏîÞ~ãí±Ú¨‹—u@¤íBÒ¶¦ŽÃ Í/œøÒKߟ>ªh¥¥µ G¯hæàµÅCWïÞ;½qMÖÚן¹í†›!Ù´î—ë[ÙòZ©µÕÛ­M“CÍS§¯-¯ŸaÄL¶º\hoGÒs±Ì|¥½³zô®îÂåp|zfþ,-æ†ÇHÀ|Y[× „x QÏ–3Ùn­±H0Q=1 œ(êXj¶=uRuh!Óœ>«„[Œ*¢AIåQŸé F8¹™Ì­ûôd<Ù7¬f{°Ó_8/.R &©\¹¼zõΧ4«œ-ÏL­œoL¥f$½"U‚Ë’BzI PÒ”ô¼nµL¨šÈx(ÖΕ@8ÍÍYX: ʧÞÝš\ÚíÍïöæNNÌm÷Ö-«ùЃO~óû?[?|ƒ'`tŠJ6éòNª c>MÑÉkWßûñO½P,M‚„«ŽŸ€Ò¨öÏŒ/Ü<¹r D Í‚ö:›¯­¸ì3Å*# ÍCéÒJwêäjõÈM‘D§T_òuJ(ˆf›Š@7…êÆÁ£·¬m]–äb­µœ­ÎQB£Ò¬P EÙÊV®¼Žâ–jDã=œŽÁÐqÛ‰ú8ˬHÁ5·æÄX"71>udíÈÕ\sü…Ã-8=,N›$ÒÃõdn)SÝ®MìL¯\سp&S^€ÔÈeø4€¤¦U+µ¥Fg•Ó%¨¤·a‡3²ÙM—ãéédj*ë +Bf|âH±}P‰ô­±7­A𤨴fWnЬ– ?*¡N³¢1q¬Ñ?Úž8.iÍ\~úÜ¥ûX6*¨õlã E­béسë2 éÔå+Ì,öÚ†4ŠÎsRg,/¢€·R´º A‘rrA +§J«…Ö!(X{£&Ä\$ZwyhP¶ÏSË ÙìSlAÒ4\'TÓ*Y©V8ÙM•—À)áN*?ŽõT-_«Ì-m_Œg8¥ÈÉ%I¯á¾š°R‹™Ú6#倎ó¥Åj÷`¥»]éæŒ:BG÷Òu +!µtºsä̽ÏÑ™86³z‰—*7g(éûßûT(Ô !šÏIjURëñôbwjwvù(ö\¶7»vžWËTAP™ ÃÁ`Èï714†cöÜæâòùTqɇ€§VXÈ„¼+ÔE­3æä÷í÷ƒ×ÖŒþÈ(jïm È u +dã ²•ÍDnÁ¾>…OPóD4=Á+šÏî‰ÿ¢•˜©4·ûS»¼X +5‚ˆX‘6Ô2Ô;/A«€Y6"Ž+"ÁÍ&%­Fry’+êV¿Ù?>»rãÔÒ …Ú&pÓMû‚/À!˜Ns3>‘.,À8hjÑ0+cþÊP]Tʦ™ Çå¿2Ù]9wñ>„І†<^7Eá!d’ÕAÑ°ËÉJBú¥ùáÂü!‡ÃPÕŠÃ"ñÅL~#SX³/‹pPÑè8è¨1 ¡u'¦E­`†*këgr­i?!RB$”h鱆h@D2ÐA$ Æc}3Ò.Ã錹Ñp2B1)I­ðö Åî\.6õhƒQò'K5ò9°{fÃ]ÍW˥꼪 „áðp¿`î’ùÕhr•¢˜\mkrá •|uNTRï-Ù½"Ùá1‚æ*¢ÑÓÊV…ññM¬™âš¨gü~ZQÓ•ÎÆøìÉ…‹ »Þv8ÖŠÇgÏ^9~ö¶17KÐiQmÉZ'Ÿø"‚˜A"&) ¢¹-†Ú¼Ö•Ì~¶²Sl#Ø´ÛÇéf>žê r +ú º”ãs—ã˜,0#AÅ1åSz¨N Ô…?hHJUud½êñ‹éâLª²NO1RL‚†Y­µ¶Á:œ”ÓI³|Š7‘ž)×6£ñÁÞš¤b¹â☃àÄT8Ö©t¶¥P›â³¾€âõ‰Àƒeñ°h vûsç:“'2Åš+ù‚Œ ´ÇçgƒˆÄpÉHj0³qc{°IÌrR^Ž’!VÎprZóºÑN¦gÓ™Åô¨A|n +ñó4ñz{3¡‹U噓W2±úØÊP1ÝêrbQJ “"ȘÓÉ!A3›™cÙ'æÜ^:€@ÍF"IÛò·g×òí©\k²9XX:tbýäîÄÚŽ–,sZ&’7ŒF$2ΰI—— ""M›Šš EjV¢¡† Z¤˜)_ºrÿÂÁ3™ZŸ–㬚Ž¦ëõ‰¥HeÂIðÿ ù~$Vs¹qŽäå#çJË•ñãfjçâ²–ÈTûfªn¦*¬ž 2£DC™\{q1×›%•(ÉGìéq>é J#£^¯ŸƒÄNæf›ý#¢ž hIP"F¼ÂH–l¦ôX‰×Ó‘T}bvenëp([CS·Ú¡èÄÞ9yxØ?2ðûÄLn&‘‘åc@!§ÊËF|.‰àÓ!8+–­IfÒ‡ RáÔL¹½I1—‹`‰§#ÇqÓ=~ ÁME¯šÉ)ä€8*´sâÒÊÎÙpºæðáDÒ¬n8>I2É‘dtuºh dÔå¶oBðxAJgæÂÑ Y->yyõà©\}’¢N +A‹Õy£àÇeVŒäj ¼Rd¥¤4p4ÉZãgs—L«íòPZœŒ¥û²‘µ’¬UT½¬…Ë¥öR©»l%ëÉl/•›ÏWb‰)ç½ï:ç~†MYá–ßËp ½nY‘+•êZ.¿Ìr‡ƒÅqÂÔÜ‘ÀÐh`d c…J¦p0™Z昼×#ëfUQSÅb{yåÐöÁSç/_»ïá÷?úôÓŸ|þ³ßúÞwÞxã­¿ýÇ?ßþ·w_þñ/n»çÑöä6´Í±·Œ&cyкùN£:h/¦×·Ÿ½þòý¿ÿŽ¹é¾ûOß|õÒ­wÞöÞ÷ßu÷Ã_~á«_øÊW6Ø>t¶\Ÿ%@Pa-T6¬'Å #]­õfçWÖ7ž>öÊ]·¿÷±÷?ù‰ßtÿƒn½÷·žøèg?ýÒ7¿þïÿè«ßþÞ?þÙÕC§#ƒ“º?ÀQ„µªÉTCÕ#ÉLibjqeëøÜÚ¡ÎÔìôòúüæ‘SçŸxêÿxå—¿ûý[/~ë[7ÝvÏäôf*Ýöû%¿G úuŠˆ¤’ýju™¦#n7#‰‰Þ`½5±\¨O§ËýBsúÐɯÜùÞû~ì /¾xï#ßöÀûï|ä 3V)pçó🕥²ª5d¥HÑV4QKç›åZ§5>?¿|ôÔùk~àé'žzêÛßÿÁ¯_ã«ßþÎå[îœ_:V­ÍŠr.ˆ˜  +ÄñIP³ðB¯W"ˆh"5¨w7R…^ªÐ9sñæ~ò“ô#w¼÷ûßÿäí÷že#ºYÅ'U¥’J÷B¡R2Ùnµ=737{úìõ×ßxõÊmw<ÿ¥/ÿñÏù·wþòçwÞ}ýÍ7ŸzæåòäÈ(1:Ê@ÑE£ÓùüšÛ%¹œ”d)Ë°Y £¨Î°QŽg³í#GÎ^¾zÇ™K×n¿ï¡Ç?ôô‰Ó7LÌjöÉJÞÞËú¿ÈZ½æôæêιSç®ÝtãŸ|ÿK/¾ðë×~óÖ~ÿêo~õúë¯ÿç?þñû?þëWÿåOìÛÇ®¯´·‚h †bàÊÕT:š qx÷Âõ7\¹vËã?þ•¯ãkßþîg¾ôÂ3Ï~òßùÎ+¿ýÝ /}íûß}ùÿøÇ‹ßxùƒûÜé‹·¦²ýbyn|°Y¬O›V>Ÿ«.-Ìßpi÷¡îúèG?ø™ÏêÛßÿöo¿ýýW~ñÕ—_þÁÏùî»ù?ÿ÷ÿþå? %üþÏ~öÀãOu§6#ñ6&M)q+Ó¨v××7àÙ9|äÚm·}è#O?÷Âç>þùO?ý™O?÷â ?}åç¿ùí¯ÿôïøïÿýßoüþíg>öÉË7ÝQ(N*B‰£rÑÈD¡¼†áŽ(–žà>røØíwÜùðc?üÔ‡zò©¿þ­Ÿüò•Ÿ½úÊ_þþ—¿þÇ?û»ßÿþxñ«ß<|ì¦\aNË!s\‹‘dߊ5;íù••ƒ'NîÞÿÞû{ê}ö3Ï¿ôÒO_ýÕ¯÷Æ+¯¿þÛ·Þ|÷¯ïü¯ÿ÷¿¡Zò‹ß|á‹ßÈ—gÜ^8Ñç=öIf’ºQ.äÇ·»ï¡ï{ô¡þÙŸ½ö«W_ÿí7ø½—¾õõ7Þ~óÍ?¼õË×^ùó»þÿþÏÿþýÛo}æùç.ÝxK&×á8ÐÛ„ÇC¡¨" ‰jyffjãäñówÝýÀÃ=ö寽øó_ÿê{?ýÑ7¾÷?üùOÿÏÿ|óí7ßxóµü×?~ùÛ_¿÷‘GÇ'Ö‹Õ=ÔöùìÍÏŽ1R`¢‹Z•Zm4I¯?wôÔÙûÞ÷ÐçžûÜ+¯ýú­?þñëßýö¯^ÿíÿúïÿ~÷ïÿÜ _|äñGo»ã^Ëj B•§ŒAgfkåàõ'ÏÜzóÅ{ïºùÉGïýÖ׿øïÿö{Èè7Þüͯ~õã/~é“·Üry}}=WlE] A•£CkXZ¸Q¨;tøî;ï~ð¡÷>üÈCŸüø3?ùéô“åë/½üòwÞýë_þëWŸá _üòo¾õîåõSíñMË%¢õb¹ŸË7ÓéÊÂÌêöúæÑíµ{®^ú—¯|ñßxñ»ßûÆoþöÏûû+¿}ý•ßüúí·÷ÿüÛÛÿþö·~ðÍû¹gyãP,ÕT´œ¬¦49R+5æVÏî^8}êô©cGï¾ýÚ‹/~áµ×~ñú[¿ûñ+¯|ë{ßüõë¿ø×?¾ùæ[¯ýþ-(–W¿ôâ ×n½³Þž§H‹"¬YO¤¦:!°VÌÌ6KÃ[kO¼ï¯åË/ÿà{Ï}ù ?ågïüåÝ¿ÿó¯½ñ‹wþü‡W_ûùóÏò¹ç?s|÷’©‚°ÒŒJ$ÞŠÅëƒÉ…ù™…Ó'O}ð©Ç>ý™O|þùÏ~ñËÏýü—?ýÿúÏ}çϯüæ•üðëï¾óÇßÿñí¿ö•'²Ý]E±7‹õ{%1$1[¯Î—‹ãGwŽ<ñÇ?õùO}öKÏÿìÕ_¼ó·wßùûß~úêÏ^óµwÞý÷ûÓ^ùÕO~÷»W~ùÊŸúàcWo¹5“mIrÜ  µ ³`…‹‰humiëÁüê×¾ö³W~þý}÷í}ó¿¾óæÛoýæw¯ÿíï÷üèÇßúéÏ_þå«?~ê©'Ï^ºeýè’V%>5àTô¹ †Pûãsן¿ðÞø—¿øÅ— šŸÿéÏ~ðÏÿúçþôÇŸAÙýò§¨Ï<÷‰›nºakãH$Ú®T7ÃJ²]oTšål~jº¿²¶47;qhkîÎÛÏ>üðÕÛo;{㥓•r:dÈ,Í¡(‹£’ÇEy\¤ÏCҘג•de¼Öï>¸¹sh}y¡þìæý÷žäÁ›o¹ví·ßzîòÅÁì\$šQÔ|$Ú»ôóh€§p‘!x.§]8xðh>•î2Ç6ço¾tâû®<ñÄßýæ—~póú«oþþWÏ~îé‹7œ™š›[I3T`Àºb +Ž«Š9yôü… ךí©jµ5Ûß^œ¾xæà³}ß÷^þÊëo¼öö¿¾ñ½|åk/}æË_øÈ'>|ßcÜtbç`§3ŽVý~¢ÂATs¸À×n7ð1:¯—“ñ£kKÜqóWžö¥¯}áÅžþÅOÿå/ùãç?÷¡[/;yp±×j—Ëu’¼‚eÂðà„Cë<-ÅéV¥³9¿|íÜñ§»÷S{ô_^zöµ×~òozë¯ûÓ«¿øú'žyèê•SÍz‰Ày3h*æqƒ¤±·(;F1 +Õâf1ifg'§W—vwOÞ|ãÅÛ¯ÝxßW^øÜ3ßýÎK_zþSÏ=û¡OôÑ/?÷ñGï¹åÜ‘|¦Æ°FáD" “ãcÙl?dæ(LHZéÇî¾ã®g?þ‘?ùþ»o½å™'ûñ_~ù»/½ÿÞKyèög½÷† §v6V&Úý\n¼;qØŠtÆƧƒ!ðh0 ùÜ$äò‰ò‘õÍ»o¹éK/|æÅ—¾ð̇}êñûŸ{öéÿðGŸþøÇï¹vu{u½V© ¬Nàš? zݬׅ"G8šM3ŸN·»¹ù… VTP ´%ò~?‡¡ +E…¼^fè€ÓíÀð J”\cíGâY%É[¡4$Ð †!$Ïʧ‰ZÎêN7éór„}NÁtûÈ‘Qpµ8‰Éh€#PIÕÁ¤DA7dÁp™asñX¹žì;qje}-™LBÝÂéÆÁt€Töù$·‡óxYYN…Ã%ž¤*òfÌŒ‚™¡\2žI¦JåÚ`z>Ž¤£±~³ÙÈç‚JypÍ⸄gøôþP;†ZV…¬¥$ZùJ%™É„Ì”Ú^^™hªÙØd§™J”^x‹aÒjº”Ë9Ç‚ŽQÿØ(ò?7YqlJ“ +Õü +W’…;¯Ý¼{ôP=“4jÍBi~¼½Ð­S%,H 9F‡ý.1|À3<äs:À.4¨±dDWrQ°Yñ\:Y ` +¯§¬RXMÓ•ÉöÌtgZ¥L$–c .{=숃qо€®(eM+q\E,•EëPÔ²˜m¶¶×.O͜Ҕ8îD-I™RˆÄ0IÈ"Y-·z§ŒPÏéd®ûFAˆ’DÔï\(-¦Ç²Ñt*Ï%Š ߌ’HÁÒ¦Z°ÌrÄjù|P)j$Ö‘µÚþëÜ*££A›BM'D1W.N9u«U}~Жi^(ˆR |%EÅA FGí¹²¡!7<#£AÇ#*KÇM£.ËE‘K1lܾHÊC»<‚‡4 +cÎ3i 9œ¨ÏÏøƒ +WƒÎëe)6É)yÅ(iZ>¤‘ ÍP +K cÊj%tðþ$•€RÚoî €ÖEƒ Â$e2¬åõq Ê.áóÑ^/E&xdE.°l’²8njB’­á×Èñk,“Zg¸‚™¦èìØ  ŠŽ1Ô1ð9#àqø±Òò¦ ™&B>Ÿ +îÛébÿçh¹Ç-x$è—]c„×>©$¹<² {|*pM[ÅBïÈΙl²äóH¤&ÓQ‰¶è`Ôol#±èØ(ºïºÑÑ‘ ‰‡Ýn(ù¢C{xÈüè8†Ð*ìfó ¦Ùˆ%Ó?øØ©ñMž±îàU8§„/ÕU­FP1_P @Eï]~«#2•ÊoæÊëíÉ]3:étÇI¥lCÔýûœûF ÕÔ[ƒ©3­îqŠÎ 8F‚ÅÌ$‡  š£!M­e²ó‰ø”×ÅŽùHHSr»˜ _E‚!œH€k†¯3ÃýáatdÔ?:æsøc|+äí‰ë)šN¦â …¦)Çñ9 ³p"FÛÛÚ úcÿ~çоÔåd)<"°AÈAú• ‹ÕÆÖð22⇠3|F5Æe­ ¯EMâ"­æ'fFG‘±± Ó‰"ˆšÌ,…âSŠÑà¸d*U G + Ÿu»0CA4&)­\ñ0Â~0Òmx•ÛÃ8]d‚…$¥$KU§}1 P†ã& $†…`Ä|>™"f¨Ió‰Ñ±`  kZK74“ Š-º½ê˜ƒ‚ôóxèýöÉk qŽ!Aa(7 5$½^eßÞu~¿ Fü~ûΚN#¨åvT0ƒhȾIoŒs‰0VV´›ÌN`„ =uŒ" nAí÷ ÙgÕI0ïÁ€ €56†Ããt’ÃC~§‹¶7‰5Çæü㢦ՠ¸ä¶ÇÁŒØûÛQ ÕKk< ²t”ʾ@ÈãÓ½ömQ9=<© "É0˜”ZçX<³Hi’Îx¼êè(ªË¹‰þ  Øï%éÃd$>gje z?°Ïís‘ 3Ç(*>æ`(:‰1ŠÉjúx&¿.IuçãrЪCiŒŽ€ÄÐIAnrK3û‚X¶¯ D5Y‰sJbԺܼ} ¨TQBÍH|²Ù;œ.Ì°BRPŠœPÐÃ-Ü£ù¢zöηB±û{gü‡0ŠˆDŲTTÆðj§ªL\³Æ)±àöËðÇT¼º²vJÒ«c0†A' ÕÃà‰ 4>Ÿüxtgwnù0¤ +°F¥X¶À0yQªÉj²]àâáP%†‡ý Ói6)ªHrN7$‘Ȥ§BVúbS°_Äñ0‹(– Äd‰p­¼ÀpiˆàØ(îcÁˆ/`ùü¦›Ñu`È…êwÓ>/ƒ"ª‚n_b˜,€€Ï­JâX< Œ¡.’#ÜËägy)ïñÊöýfAË ¼gØ$TÇè%ð%–Nï¿Î9´ô‡©ë}Q¬aûîåQÜ„À'¡=H@õxEïÞF”@а¯4Áad¢3s'ëeŒ CË96ÏP)†JÓT:0áSÀªH@ôz6íÍØA,‘Ì®/mÞSiñMAÊâ„}aŠ$íVf#ªªrE–*ózì=¨.;±=#ÃÁ±lxÈf¢€_2Í*†G W1çùኑì£gûáâB‘Ðuï…˜FÖ˜CuH#cÂþ!ìÀ02rgûâÜÆùåôŠŒXW#³ñâF¶¶JN rq²³~æò½sù—O + qŒH bË°\>0 è{†BcÙ ÇfH$Ž‘ @’1Y)N œM²rI6«$›dÄ‚fMÄ3«’ZèæÅJÚÁ4:z‰ ÃaóR”QCþ¡á€ÛÃCúq\F‘Š lK§D¶û‚!„ÈÐ\]ë²RU´:t3­û‚ӉëCH*E3+T?´}QÓ#£¨Ãch„¦sWâø2ɤaèÀöž:y%íÙ©ëÀ¿ šJ”*P†¿ + ªèUŠ‰GÇ0—›ö’Ii¡J„9!3¿vN 7öðíÛçõyœˆ’dÂ0›ñĤÏ+;FP7Y>u`Ù{Px$fšXt\”r²RòÕQéöò¾€BRiøêrãàôê%N„S:㛕ÆŠ†Nvt”r:Ø`@a¨00æÈp€¢ãÉÌB<³€‘IûøUÀôF¡yd|vWÖ*V4[‚1gù¬×Ëù}¼ÛÉìô3ßG@õ¹û€‰OƱ0Ô}ŒÃÉÐÊê%]ÍïÛç%EuµCY’Hûý@—ˆ×#À ‡¸Ü.´ +…?h +Z$J:Ý7¢µ1ðG˜‰1IRÈ…R3Œ\"ؤnÖ·6o8{õaŒ‰âTD5›‘èt,:JÍ«VØAst|f☢Va “I" +÷s+ÍíD¢qòÌ5N-1R.‘ŸÉÖÖóÍR{§Ø=.‡ÆI6‘Š5ì#ƒ¥ãP’¢ Á,N(Ç ’ÒôÚ·Á›ˆ}yN† r™£™’ꛑž/ Žp{G}:#ˆY™„‡ãò²R.”–e9±jáè8Š[¢\Ѭž¨70&íCL_À€Ö‚jÚ;„kpBÑŠö9& BÑ Q\ÃP¡£W·€bE'@>tœæ³¼\ +†*v¹hPïNÉ2)ŽÏV§1½‹óÙQ§}K€$†› Í ý| ‡µ‰Ciûöû‡†QH€ß¤é’$5@ŸHJ]”« ŸÃé+æAÜ싧¢¼XôšÏ+J\ìê•5  1:Šƒ:Ð1Ë$)*ZËë>Ãó)šŽBc’ÙéLuEŽtÂéi^.‘t<nDttw:8$h‘dFš²Ôõû-‡S ñH,ÖåZú52Œ !Ð<Š*„"éìX 'Øû4™ˆCö¡0—@,I­E“дŠ”6̤˸<¤Ç+ØÈ`öÂ+Ж7¨ðj‰Ò"NM«‘~,5ÛéŸêLK–!NODR}šJ41BÜqRðÎF}CRí{r04ÌØ£—P”R©¶KOæóS»îæ´¯çËÝ­æàDkúD¡µ•©n0b‘áÝ•¿ô­Ó7ÜåGd7%©$+dz5_:Ä‹5]oØEŠGíƒÀDVPºzd.™ßiô®¤‚à7q=n xÄí“]à@©˜¤V@³1|Þˆôjµ¥k·<2³|½×Þ§d¥fÌĬhöŒÈL$¾ÊÄÔ!¿w‹NÄ>ãày]öÕÁ€–NN(JrÛéä*fUN,ˆj] µ+Í­ly##>? "érÒ ëT£–(,æZG¥&huÕýævSöZ¡Õ†F3ÉÔ¤Ê};ßàvƒU) +b…ˬ`_hÃÉUÉèðj +Ùµw>A¥ GšQX©ÉM‚Ð Ÿ¬d ¤Blt Hb^Òð.'Î1‘T¦Ëô)oF'8©Âñ…P¸Ãrû&+ûÖÜŠE÷n0Ýö%rIM©f33À Á€Š¢†x|gè Ie.°˜´â(×]76lß´â*#ŠEE«@ßpcÑøòáa—ËL¡@P¼€ùD¼R$1[?Šõ#éjª‘®ëÅrsJ¨ êbP_½ÿ®§&—N‚>ó‚‚IA Y­áŽnv\ÖïaI2îõ)cct (P¦™ÒJª¸HsÝÌ×û[öfcµ`Ÿ5ˆOäÊ+íñÃÓó»;'ïäå‚Káp˾7U®B«PH*jÅ'â…yoP#£ñùÖä¹öÌn,¿È%„LúQÀ¢R¾´¨˜uZȲbVA¾6ôH x܈·â¹ñfo5ž¤ÞêlL¯ÞX›8ë-QkÃãö©ã[·Üù\qàp1 ?q¢BåTj%_:šH/Ú*NÌé¡:ÈQk%§g/ì^z¤ÒÞÁ©ØúúîìÜ ¨qQÊäë+åÞ‘JÿÄÔòM«‡,Öƒ +e؈¬I.*x“d nûâ ÅíáìãácD0Ôöì#œŒN¢ºήbt#MݬŠjpŒr’ZÒ¬V®ºbF; a[Àš¹\œßÞáÀ!ˆDŒ1ér;ÖÝNÌžšŽˇãƒhzž+4_ÒBÕΉlqË푇‡ OpB…¤³’\Ám©œ`8H•* !Ã$\N{5Ó¾±'æ.ËóÅ°Õ{Ýu£Î1Ü1Š eà,xœx–ã‹4•ðº£e·ç8È<†ÏŠJ%SZJ—§§NÞvç‡"‰.'å +ƒñ,®ÓíŸèNçj›î :6F0lŠÞÄ#²Tf¸¬NHé\®4G2qè¯$åŒHÇJRå36©ë•©ÉC×îý°QaˆÒÅÕ’]øË¥Öv±¹MÏ¢¸©ª@I—¬=CRqH°DfiéÐ-Ù3ñ¸YŠ‰ùQÓåÇ\4€Œ¤·3åƒK›·FýH¼—)Ïld̅㔎wç7¯¿zï“ç¯>Ò›?-h…l¢¶sô&=Úu±8“LæÒ¥EQïfŠ+3‡ôPÑç7r•+>G³EmIZÃè@¸åêr£³­]5Z¨)¨%—_ zöX¾¶ T+Þî͘Z?מީtÆsó‚VâùøÇ>ùâ¥+÷â´ âЊ/”ÇÏÚÇU£ït £^gm{çê¾ý`ZC²ÙË4µ/t—.G‹k~" +WŸþø¾äp2àjñA­wjç̃ÉsöÅqÃ^Yˆ³ljdŒp¸XÈXN¬‹jÜØ¿—¥©0Ã&‚¨ U\êiNï.¾kõøýÝé³¼P°¸y=+g:­Å[ï|,·oö.T·Ÿ{ßí}fzû.%23  Çds…e—}ωÙ÷Z^¿JP 32aß`ßÈ-`XÔç—<‚3i5ÜŽ$g²ÕU#Òlu—ŽŸ¹f„›ÃH²¤˜´b±¾|ìü}™â”==‚‡›»@£Z¸ãöªn¯ˆ¢z.=9ÞÛZÄñ(+9¹ÀJe=2¥Ç'Ó•…‰…Ó—ïü@oîäð(‘ñPl š]šË‚‡aR4¥$˹}û=nŸ¤†±ô†èáICàµÖ†JŒo¿zñöG7NÜ2X¾d¥æêGÆÀûpWïøH¾¼RÃâ¦ÕC±Ë3…%ð¶PGÁ€X( )¶qxÀ1†‘Ñüf¢°™Ê¯“D †u½…!Öðïè¹w * ^D‘×kŸê ¶@ÍBÛìÎ!È #>«XöÆ`H-ÅjRöµ¬lô p¬JQ1tRˆÅ3 ]Ãs‘˜õx„Zy9SØ·ê9pð¢R/·5'ó%Ë,\¾ôÀÂên×’ù¹Å­k3«Wªãƒù “KU«3æ¤P¬.„‹©0¤[V´䃨•‡„íŸ} YmFÈlšK“•4ût$+å9©`Åúœ–¥Ts|£3}¼5}¬Ø\Z\;?µpZ5¬X·1~¸Ù;ÔÞ1““~rþ}øð&Œ!NXŠÑ«´=sïÅÛžêΟ…ÔõÄxf<”˜ æÞ¢nã`LP,â÷K‚”Gí{‰)_À”V2¿´sæö»ùÔ…;žN”ל^…— +04‘#‰Œ,7D©gh8ÐŽÏ1öÍð*˜ ˆµ¢ŠLÎî ¶S¹©HjŽS:´Xa¥*PÉøìeœÎ¸Ü²R̆}»‚KðLû~ûaÅÌbyEÔûF÷_7惰AO j%bC#œ7`«µgÀ <ŽÇìk´ÉX¶ºÂ’Ñ\v’¤"N7]H6ÌÄ¢žH–7 Ž€m{žªEqyèh~€J¯Gôz¤€OÛÃî÷Ê K!Õ÷®%Ãá¶×¾®*pzh 'ûGfÔbñf³³ +7!3µ°;³v¡Þ?hĬ'˜(‚[Á ¡ë5Šû¼<(CÕ˜ÊÖÚ»S‹W0ûògŽcS¡H¤‘Ç'€=GÀ2=Óšõ+È…n«Õ^gè0‰©…ÒìòÁ›]xàä…û®Ý÷‘zïˆ,Wo<{ç½|@Òò(F©$–!·ÚÜ[º'²û‡aÀ*mF'u(d<Õír° ¶Á‹ùíŸy¤h¡Žau5Pwlš¤²”/”ç©ä÷åÊV«s&›_š]Ü_¿À+%¯O +™¥»~ƈõGF˜@ÐdÐä _ötú@V¬ÎíåD©OÏ¥ +‹½™ãgn¸ouç&^«…óçnßçêF¸›ÌÌeóËéܪ µíŸ‡åfX&B xmxôs(SZ­OI—–A¡á„™Hv½>Áíå!µ 6OÝ7X»Ò˜:C Åý0‹¾þAFÊ#@Âû‚Ñ šRÉ|y§P92lÏqy|^šfbÃ#èÞw“àÖ¹²•|£ÛI`˜ +6ÙíâQê‡ñi ¡¨½{M·:zt"œ^²²«$Ÿ£ÈX©¸À `½5p^,ÈJE’©2¿ +ÞhÈ=<ìòÙ·Ó{W–ÉŸAqù¼¬$´p3‘›Næ*Ýpb¼p,Ñ·â5Š3Þd8K’²¢œ7ÌV4:Yë9:‚!—*ðYš±¯øC‹góà¬ÁA±‚*€'–ÃÉ5 b93 ‚0hÒEŠF´(O´fv&Ï”k+ÅâÂÆæÅbm–æâÑÄD¾¶-™Xf>[ÙÒ­YI¡hLU+¢”qåoèâ÷ÄCˆ¥3à/X¶DàP×ãÞýC®`P [½Xb¡T;¼´sh0C/mºÑJýÿ$½÷“\×}/ø¬H`bç¾9çœ:çÜ=Ý3==9Ì fÀ D$A$HQÌ¢(Q¢(J–¬`ÉVpP°ž¢%­e9¬Ÿ½N[ëõVm½·µ¿í¹PUj¦ûÞs¾ßO¸çœïwà+ '‡;&ïzSÕöÖÈ836J \ b0Ì @àŽ +¼X2I „:,‚Ô£éD4*!C5ÈßZ˜èž_¾<—$Ú½}†ÍÅcr(Àž÷i†ñ"'­8lÒLÁrû2¸§ËÉU^­Mô÷©Èñ©No«9µ ~‚1ùjÆ]VN8î-¿Ð0€FÇI.ÙÞRº¸&k`H± +²ÝöêüÜ®_&n Aº 5ÓÕÍZ÷´jö††QÛl +½±QèøÓa€@¸‰IY-DÙxÜ/A,òr‰áÒÀ—e«ÛéÒVgp9[Ù6¼„)†YowT£‰â^$jÓñ›åÑ9>NŒã¿ïËðûjx$žÁ`—BÝ„Y[Z>Kr NÊvæNÞxóÜíwºËWµÄ Í¥--¿¶xryù’¢Õc‰‰ˆ¿Úèà˜éÚ Ó¢QJW󪜆'Ò0š …õ'L„ý5;jd`#P¸Qj BøÓy!Ýì­Î-ï­í^Þ:sgûàÖþùçæV/åšÛ8“¨Uçww®ñb*‹¢RR´Ã5m +ÃÒñ¸¸˜k8®!°a) ñâ@bA +džÍ‰J…åªV@q <’ÉLVÐê†Ýl¶Ö.\zAÖ«’\Î‚å Š^K$çt½Ë° †=·U«,‡ü:Øñ`H€`[’¼Xá…I¸–U¨ ~ t°äéüêÄàÜäÂùÀ× ÷»ÝÍë¿/.‡":îoÅaHæ¸$é•ú‚(çˆÀé&éÍdy­½xuóäóÉTkãÜŸþð—n¢* מ¢TÛ¼~÷íË·?)›SLJ05¢XŸÒjÔ¯1ȆB†ªM™Î@Õê¬áðѨŠðÁ¨0ÇüFšaMˆJ!e€‰…¨@ø{ÏxÌßÎx?I2QΨ W¡¶êf’ÅÅRgÏÉ-Iv(ä‰îÉí½çu»ôKpûÅO8&ã (®B,éW&÷›£1þ½Ç (ªˆáÚ•nÝòZöêòÞõBs©Ð\M”V8m§3ŽYÛÙ¼¼¶q{ÒD#ã)*-ˆ5†ËÉr…¢S²”/gHÒ^èÁÖ9¾I³ÅГâÏþ,iã€Vž¬†Kl1|ZÔJ`~›­Õ÷?øÆ׿û“Ù•Cð›‰Ü|wp¦ÖÚšžÜ_^(U÷-«—É ©)’É®…ra¤ÕÐpìIÏ‚Œ(M/¯½°´õ@ÖÚ££$° €ÙãQîécÁc~ !±H² ÎxaÄââñãá߃+äS¥e`ú€×N×ÝÌ2×2ù9;Õ(UóZÕÞ^wæÜÎ釗o½ó̃÷÷Ï?æÄ/dÌ@à:Íñ9<EbQ€¨,Íd"~PI<*P¸Žšdd;“ç¯>¬ž†À·€‹kÕö€ºšÑp¼®¤5#q…â2íÁˆ áÊ¢Ô¨·N¶{ÀªwAÌÂT¯Qt17a-Ñž4ø“ Ò©r _âà$Ú«[—¶NÞ¨¶WW7Ï­»UNH9©)Ãí¬m_î N㤇 ²®g76.äóSீƒŽÇMÿY"’d™,ép\EÇýBy~±Gpãc(^¢ŸÎÎ¥2IΞØy¦ÓÛÃW0ÕÉÃÎìåtiÍ°:Ëk—êÍ5S`@’éÙdrVË€Caft~ú©`4ÄaˆÉCáÑQ †tÑ^ +ù+&"E$þW…aðiè„RuÝ4ýÕ+p=4™ÐÕ²_ÃmpŠf‘¸¿ÆG#!‚&ìp;>:N9! i‰we)Íqi/Ù»ýìÛ'Oß‹C:A¤E±8=WZ +–ÄdŽ±žT~&H2é?å*W¶ ÃÓ¡%‹ ת…óÔÓÁ8ìÓP>c~',<¤¢q ðÎè @¨”Ž&iŒï¶RdÅ2H½b}ðKû‡·–6¯Ô››“ƒƒÅ­+ýå£Tq‰rùÂ@3ËOvæh`†‡üG$æW3 `[ +Ö‚;cc.“«.ïpþÖëÝéƒ;w^½÷è='Ý'è4ÅäI:+* 7µPï^œ\¾cgæx!Ójï›[¦×UŒÒÁ_ßX×ûÀ}Š;#)¾ÁkSSzR¦OæØ|®´B³Г™ÜÔ™Ã[o}ê ç®>ÈÖWÌÔ€—*[{w×vŸQ¬ +Jê–;998U­¯Úv+ŸŸ”å˜à|i& ôL(ì÷õ»çÄ ¿zŒ¡>tÜG­h˜Uä²aN2\• ³®[_ß<—ÎNмëfûs[×·Ï>×[¼X<'[½hL)ff.Ýxg¬ñ ó7'›ïÐ shÜP…ÂÂìþöÎãÇ£ÇÁû4½‚LìªU7O\^A-šéœd˜$¦ P= `œ§IÎGÂL8ìïœ ŒàS ¸Œ@ÊèHEDžO7"­T™YÙ¾°°v”,,7:»©x!·¼yar‘ˆì×ÿrá #Ž¨¶6rjlHâŽËáÐ?øбÈ`žK{:pì鱧Ÿ:Q 8Zóe7ê‹)`B¤¦äã°Ê‰ÉlÛI ´×:ƒ£fwwe°õ§ñóýsw€gTôF¦´àefÁÎ,Åçâ°Ì3‰õµ+(îŒ ‡ÇÇ"‘0Ñ ªjV’3¢œÃ Ëf²×ìmNΞ¬Ö柽ÿâí¯Ú©6-ÓùTfµÑ9½¶÷pnåúôüÓ饽SgnÉf:†ké"Xð”fLJj7[¡ˆLp(ãaeÜoF‹|–—Z²sÀ¬>xfjú„b”íÔT¾¶Ýœ<7¿vëàÜKW¼ßèï·&ÖÏ_yÎÉÌYnG3š,—¾¨b€‡š:‡•`ÈÏ8±¹gÓÀࣨ +ú5™y¶ÈD´_?Öýå!±hºmNÎ2|ŒŒ%£½¼~u0{ +ÄF­1KqŽ(§m«õ'QÅÌHX‰G O4««“½Ý¡'‘0Lz#“¬\cå*H½þôÞìÜ(eÍ°ê²RbÙ¤fú•‘(Ò«•fÀ<†BD0€ƒˆ"16“ƒc$À4×®fÒþyq'gN\¸{pñ‘Y¢¸ +‚¥66.ýÉ÷~TÊõ€ –ÉÈbC–'D¹‹+@fhjijîÐõÚá Â)8JDC +É8¬JŽ¦-ì<›ó«ì 7Ác° I(dêO&z½‰²$í²R^¶ÚNn.[]Ë—çVO¾õî—&;€è[Ý“€ÙyZ¬È HÞ3ªõd»þôÓ#ÃC‘áØ8¸£˜E`S͹£+Ïjv ª@.ñjÁIMdJƒÎÌveb…R‰Üt¹µ#k-ÛíÛ‰'u³)É5×™ª·Ö3“*´d£€0ÒEà|¦ +màpq*3–Ž#@tA˜«Y=V(ŠB~gûÚd[³j^v¶Ö=˜\¸¸¶sûÜåG3ëG‰üÌÂÒé/|ýÏt¯Ô€2Q©¹©¾aÏÈÊ”ªOb„­j•fgWR*þSšˆöûŠ àEQyŽ¯ŽùËÙÔÈ( b,WÁeJ3•_iOUM0/ÙÁô^¹ºÊò¹^ÿÄôÜI¸$X%¨p@²T + ÁÛÆã3¡°XÀÅèi U+†‹XÅìö/[;†ÛCF­VgÃM6qÒ%錛˜Î•–o K€Q‘0ËÐN4ÂFü…6†´ ¿Bežœ\\©ÈEðænº·°ymóàÞ‰ƒûûgì>;è/³°¥&C§ü½q¿gIfüÝd±'JåǪG‚©$jGƒ è$jÄ#L` cè‚ëÎC€òÓo u‰…¥pè“,®’TIx-œ0hÆ#(K” ÉÂìÌÊ…½Ã»{‡f¶®áŒ¹3KE£A‚Laó•a¸Ïg>ÌžÎñØÓã‘ ÇŒhÜ&‹òÄ׊­½³×X5ÇÌDaIw'À;·æNç:»œZ•åÜ¥£{Û{×€²Â0€%/97·pauíJ2='©µvmúÓŸù¨3}ꩧB H‚z^bºÕ90œiÖvön9©îñhîQ”¿Þdž´ŽDýÙ#£T(¢@¨gºsÕÆN*ÝÌìnžºsöÆ+go¼¼wáY+9Ct^ÌU›ƒS 4£Ü.I¥qÂêP€„ÄH0UÎÍZýØSÑ8bþz1‹e¨p\áÄþ­hLýØÇ££ÐɊֵܘ¯cÇ hL@0 %4šK(v­ÚÛ]ع51Y´ú¢YOäç*;•´íÉTn9‘[LÖ4·‹ÑÎxÈ/ˆ ‹PT +h€ŠCÃq (f ¸…Õp\P­ª–¨“‚›*ÍÌn\+··ËÍöÔ~½ÌT ègÔ?ÀR€û¦’ä„Œ¤ä»+×o¾`{¡ã’t «-)UsŸTíKt"“Ÿa¥,`H@L®¬UAôX)vwvÎNÎl¢¸V¬¯/ïÜÛ?ÿòîéçfWÎõÎxÙ~:Ñyÿ£o>|ó‹~s1ÜkvV6ïWjg*µÓ¦ÓÃÚxK§Ú’\st|È/ò<P¢q— ‹éììÍ»ï?z ˜Ö`Dˆ":J¥$½ÑœØnwÏÔºç ¾¢.[]XÓ ŠÉTFöZÝÁyÅlÂF¸À?Qqˆa€@²R”•/MY*’^/·¶'¦·NÞZX»4§ªdîÝ~ôÍï~br59®PTêžÓ‰J¢P (o¸ì¸(>+^®U:ûëÏ+ËÛëg>ÿá®m­ìÞØ:ÿBwåúÄâåÕý'NÝÞ;}«ÒÚ¨Õ—¾÷ƒ_¾úæç ÜÔ•Šª¶‚qtÚ±:†Ò€ãæñãp¬@ û~ùØSÁáão$Ñ´jNÊZ³XZRõ*'•kB4ÚŠ=i$f£qYÒŠÙÒìDOµj¥ÖæÔòÅ¥Ý[K{÷f¶n:ûš×O'—Ž^Ü?û,+9±ZjžÈU·dsA¦!È h`£Âa/ìØ“ml˜5*_¦4Ÿ.ÏÔÚ‹;gïìÞ=ºùâêîµrç§6p* „Š –PTFY6±ÞîîÏ^Lç—XHt¼ƒhÀXd¤ZÊÓYNçÖe½f6å)Æ‹Dùp„aù”fµ²Å¹Jc ükØM–u+͵N¿=y"•›ÏWW µÝj¤­³çn®ž8Ä3™™-6V’ùiÝéòr#SAjàˆrîðv¥²ø+” (‰ YÍÆa'_˜½uçåÁìîø8Áp9;3Ÿ®lLÎ_¼qÿ“/¼þ•åÝŸh.?º+Êc…òÆÔüÍùµgkK–ׇQ E´kWÖ›[þæÜ4Š'CO—Vë“g€UévÖfçöžStšWª¢Ö(–—fW.5z©LÀf±8Ќژ߽XŠ-ªFϲûñ¸ +±Š^«vvE¥Ô8Ãg89â†aT+µEE+L/ž;¼þj³«,JZ\!Ë$·}îò o~ú«+—±2Ì>Ç•â1Š±Á1llÄ/h?:ÂÚî4˜ˆ§žFãt$,ƒÍðUpýb™zÐ1A§êS;GÏÝzgzõ:°õÎööþ½ëwßš_<{óþë‹Û—2õù鵋@1%«[nPÌ­kϼ1·zQ6švb¦ÒÞ.T×5w#³¿ï¶02 “„KVÌßIË”ÇË%Q­$ò³©Â`ÿÌíëϾ–,õKíåî<ÈÚV³w~°øL±¶&F’VgÄ¢nwÍĬb͘É%A É,䯻q“¢øb u1ªà—¢es¿µAÒ´˜ÿd•~rð|º;savõJ©µÃŠY)LÎìåÊŠuSÅÅÅ훟ycï‹éʲá5IÖoeíH³ +8mZ…Ë>lò†ô*¥ÏkÝó«âûÍY`B°Lªõ^ðO%$PìMŨ©F¥Ú^]Ú¾š«­a¤»·~öÕ×>íºŠr'¦Îwú*õNb>ì?Ÿ!Å»uãʼnîÖ¨ßdÖ¯¡ªY“ÙÒF«®:±Ï±Éûw_ºvó~0D‚\+Ô endstream endobj 134 0 obj <>stream +¶ç7o_{ö½ó·ßM–6!Ä& ã }uoïr8¦ü¾ÃˆaÏ&2ë,WÅXéMî”›[ã‚tó÷ˆjÍKÏÛÉ$ånßõÑÇ?“HôÔ”Õº›š)ÕÖ·NÞ¼ùà“ýù‹œXg˜¼¢¶£~óèøÓOÀm@WŠ.E£ÖñcQ’s™`'ÇG}à4h1Õ9&t=Ín×:;­É3ŒX×ôòDÿToîPÆ…£{/½þ~gpÂÉön|âÞãvν²²y÷•7¾¶¼}G·&*…Ń³Ï{Ù^(*Ä ¨5‘O"°ñ»ii·ÙŸÚÅl,& ¸)iÕBs«Ö?Xܺ>³~ÑL4×w.N-Ú[ùÖ¶]Ì«”e§]hlØÙLÙ¤EÁÝÙýL}êÈÅ™‚`´ùEŠÏ F7Ú_ä:×η·±¸ Rf=’µ@À¯î=·ºÿ\éJcò _[SŸLuNÞõ +ƒTqnùä³…ÎI-1¥Z àX76pR‹D¹\iÍp¦x¾`Zmu¢Q‘a<ÛióBùرøˆ¿6§R¶\ß2ì 2#!Þs;8þ–ˆÇÙFgí΃7ï>÷ÆꉫùÂœiÕ!ˆ'0UóÀmù½€9†MUkÕêr:݇™¡¡p=(ê×0¡hGsã2”Y¯,;?6m¿¸}m÷èáÌê…tq‰bË0l |òo~riùt8¦ŽX¿°ŒßÂäIXõÆ’aÖž~* |(MeU½¥ŠÙóWÕÝæ‹_öù7D°gfvñfgúB¡º +ÀÐMNcX2è&ºû4•Å ,! ŽÍÓ¤‡"öñãP4LO÷Ö?øðcø0ˆº …ftÉ…TbR`¬™¹mEÍÎbø¦hö)R©µV;Ó½ÙƒöÔ‰LqÖ´ÍöÆæéÛëû—z³'råÅd Éð¼®ÓêNjFÝßÊ"x.ËÒ-¿2,ƒ¯>S‘0 ”¡“è-n\¿pëííÓÏöN¯-ïýè?¹ÿÂëF²ëdçªÝÓ™òF¹µ·¶{ïòí7—OÜhOî<|õ}=Ñ¡Ž—_¬öN5û—N½yòòks[Ït»;ßø“Ÿ¼ÿ¥ï„ŠjOzäiUét~µÙZ»s÷…gžé.Îl\ê-žÍÖ—¦—×/]¸öÒ—>™¯.7'¶n=x÷…×>úò£©Å‹‰Ü/Wx±&kÝ(°‘i£Àe%¹aÚN(òJ#Ù¢TE15Å1_ÔµUkBVê‘ô¤é¥Ùųº]ËäÚ­ö|¡²dzs¬Ø`˜Cgóú}i¢d2•GG•æi*¡6 {†I2l’åRŠ^ÑÍ6PeãA2‰$°o(0ç½äDîÌÒÆ5ÃjRŒƒàþ™Ž';îHÈßXåp\Ît{(fÇ¢b$$¤„Åpˆ…ïCÍÚÄöÒæåÞìi/3O²¹pD0ÔrÂë„ ÂŒ RÀî™F‹eÒqŸtò÷§´à˜6|::ߘAáþ +M'Ž?Ž†¹`€òÛ#ŽÀO–`¸HˆÅ E[ SÒ……LiMìBi¦ÚZìW:{N²¯(EàóÕ9QuyI×í¢¬•²¥µbcx½¨¿ÁÕÒÔ†¢Vžœ±%ý3€q‰"±ˆnvlF˜¢Šve½œ,Ì7:'æ—Ïmnž¾yçùå3þîÁÅ—6öŸ?íµ½3÷ëíUË­¹^»Q_¼xå9;üÂüÌÊå½[S‹G¥æª—ÔÜj1?ùìƒ×n<û +JºNrN³û©üêÉ ¯î^x¥\_]˜ÞþöwþâΣWt¯ÔXíÎïϬž¹õ›ŸÿúŸ}íÏ~öé¯|ûòÕ¾òßúÄ'?J“…E+5_¬ï,®ß¾ø̧6ösRMóƒ¹3 ‰b‹+$“æÑL.ô®'²s@ÔMM¯)JÉ°&Üì´æ¶˜”õÖDÿÌÙËլ햜DKÐÓ禗nº™u /’tÑôªÕÞM×r ·Æcf8¢úk +AžåòÕÆ–(— Dz`~ífgæ”îu`õ2ŠK4ï`¤#<ÃZ‚œ•’¤•t».È…XœÕüæÉëÕÆÐ~’ZGÐ ²Ü@`-¤€Ð‚P³FbPnÈúÇç%>% ¾µÔz4"Ñ,›2í– U¾ ‹1„„CÐ9ˆØ˜ŠcV(È]íï ŒH •ß4ȱ…€ªñX1Oói;Ñ®´Ö0"‘MT²ùž¨d¼Ô„˜6ì¾íNåò ™Â¬ 9ªêN‰f]ÓéÚéyÕîâ¸b¤ÓÓ¡  +8ªÃ0Ð$Âèô¤¦„!ð}8n RŽ—‹ÞÎÉÓwÏݯ÷ÖD5í¥š‹ëGÙb¿\íg S¼”A¨ë ÃhºÞHáBe¾ÞYW2+•pÊ%YO7‹®S-–g™ ¿dÄÛ È‚¹¥óÝ©íl²:è =z¼°¾kÙå¹…ƒk÷_¹÷ò[/¼ñ™¯}êÞÇß8¼~y}ïÁÃ/^4¿xîÊ­×ç6n-lÞÝÜ»·°z˜VšM¦¼ÖK¯¸¸uqdŒiNÈ)f'Wߟ˜9⥬"¥?ñú{¶] &\çÎÞÖ©‡§.¿1·uG’³/Üzý­ºƒ=’ËÉæ%Ö©=5{éìÕ·ZƒCœ´ïÜy©3¹Šˆ~KôˆŠâ)š+OLrÉ0›3ƒ½•­ëÝé3õÞ¶dÖ02)(ÍiÕz'xµ‡p_œ˜å<Í9À€Ð\Æô:3«—Ÿ{ãËý…³šVµSˆH„õ—t£þó.`šmQ**J6“›R̉æÔy39GsÀ:ø­ËJÐY,¦ÓtÚMvÓù¤Vq2á·Éˆƒ‰&ÈÀXÿј¿™mÌßFèw¸b~hÁ0×ï?5‚ÇQÛðznvÎJõ gB5;јaª†sÃQ† MAΧó‹ùêv¶ `]Q³™lÛpë,9^¯Þ=]nltO=)Jé×ß G¯x`À£ìèh|t$@ xa†å™\{b‹â|ù'¿ú›½ÃÛŒTÉÕO”{çfwÝyé û‡÷%×-¼ó©Ïœ»ƒT`îtw6ß8Ù›½ttóÝ|y)“è¼üò§n½ðn0"{GLQ®oìÞ»úì{—¾Ÿ(,·[+¯¿÷‡ÎF<®@ˆ¢õf÷Ìîùo?úÜìòu`¬nÜúD¹º<äwçA‚AÃR *Š¥å¥õ«ŠT¸uóÁWþèÏ$¹ÈˆM3¹>ÝN¯ì½vñÞgêg0Ä~öÁ[÷_|;•Ò£ãø7W <%ˆí¿×*}xêúíg9v,xìéàS ;†Ä¡„í-c¨µ¸rfrú°¥ª p¯„“I”È„ã`îrÀdQ¤iÛUð5›2¼É\e½78X?ùŒ“&½Xœ÷Ò¿ç)¤ÝrþöHÆÕä +q±0Æ3j,‚G"4N§6ì Eç:ƒDè מ=³{ááêþÝÞòµTi+å0D2Œ‚úþž8}Š©_È——Y¡2"š—!2í@XnÑ/߇ZšTŠøûI¤|iÈ]M.qt +Ž«fðÉf{,oG"Ã8pt§Ú_8uâÔ3KGŽ×Éd&¼T¤QHjZžg$¦ñ”ÉÒàO¸±qx+ŽÉ”' CXTR„ O» iK\àó@0“”Íò ŽKªZ1“hö:ËÍö +`pñÓ ½t®«ê9EIZFÒ5’š’õ×îŒÀepÁ\Š L–8è)™ž’Œ‰HTKå³åUËéÎ,œ]Ù¹ZënQ”]Í·O¾V,ÍRD2“›Kåf,¯£èEÃ*Wœ¬¬”H*1ö¤9ЊŽ;“L/iz‹ç’†ì5jýþ`Ë?¥XÝL•7›ƒ£fÿ0W^HäfY.McâÖæáöÉk²RRд&(¨¯¤*—ÃA: ­üÒ£·?þÚ»ÀËøýUbò(¡š«le‹+¶žÿà£/?~õp:…C¢(5 +õƒþæhTŠ…‘óØ" € $0ø@ûõ{@1`ô„Äêò©zc1©lËò908(ÌECXhBã¸ÂË£Á ©Êľ™˜UÍ)V,ó¬=?½µp3•ŸVÍZ" Ìò +Nâq‰% ELÅ£,åIÜ¡‰„Àæ§|Š%2­K%MÌO4––VŽ Ì´‚6W#öôÄÚÅât8Äâ~ æqCM0&<ŸæøŒD²-«YŒÝd»ÚÚJå–Lgjbòt2=ƒaF·³V¯/Æc~eV=‰zV’¥&¸¤hµÔ”mÖBÀ7Ŕ߯BåŸÄ‡ÍpX0,?Ci&g»“®Ófh/“€ fÙ$ŽÑÍRþŽDŠ0@Ð☇´ñ 2‚&´põOg‡Ùx„å)›cÒ‚T!¨t,ÆåKƒt± À¢Úª^Ä´¦ä]³ ˆ‰x„–…d.×AVIh ¼5 \pÜN8ÌF#E%`HÇ1“Àm0J$©‚#00¬Ö{'T£Î0)†M㘠ô’Èg -Oãz4LŽ@ 7)ÂŠÑ Î¼Äji§V-΃<†ÇF)IQ\™¤Óá0ŒÊÓRïynexñÏ…y3½™ó [·fV/‹A‚p"-“HLòÙSÁ}IJÎK´ÜDD¾.'M-ÍÒ&˜–ž4C&Iá A¢2q$¨‚Bã¤È),c$²m^-`„¢ª¥¤w7N]¼c˜@¤¥ÒÙùöÄa2³B’óP„Š†H4.˜ŽÂË4i3LFVZ›ÇaÍVrç÷.=xüI”0Ⰸ〠1h¼´H˜ ãq ,ÃÀ )0b<)ò B"pi×k1¬C‘Z¹:_¬.¥rsnj`9S€DÔpí†ë¶À³LMgs›$ÕÂÐb,ªÇàxÓ$GÇý22qÀ$™cè2N¤ ÈDQ;™îóBóû?Ä= Œ0ú@F`8ÊbÀ;c~U„1'Äe)Ü"q%8ÛZ9—šÂQƒ 6h(†øR¹ŸH5Âa‚¥-IJq¬+°M¨hœ‚"8Oùl5Ž¡1„Â׸ “1£#ppœÒwèx$0†a° s˜/LÃã=@˜É“Ó;ºš‡cË$Ü# d˜ÇÀ(4>pÓÇý +(°‡$jyvÙ1AvçÄ:~< +¨phÈ×ÒOŽÁ’á)‹¶$X$!(p‹<Ÿ×ô†ã´’™ž¦×Â!*|Š ‡£8ƒ ΪW§s¹®i– \ƒâT(Ç",MæIÜ&q5Ÿî6§vF+ ÀX,8£1N¤ÇÌø•ˆQMÅ|¨Ots% ‚ÄŽŠÙT˶ʀ‰0Â'ãQŽ‹*0/j‰ÀU8±Ç–¦… ®QlV§«Õ>K«¶™ehTð‡8"£qùøñ8€,$îßÚÈp8‘`Äã…ª®OØΤiÕ1Dà³°x èÀŒ$ŠSÔz29U©,9®ÿä0aYÖáy„º¿.æ7 $1àýQ)£‚ãñh¦PƒÀ¥òá01®¦Õ%Ñ +’Ÿ˜¬6ÀŽoz‰Uÿ fFý…6€«ÔøhŠqÀæ°lÚÐ Ÿ|RZ!  Ës;gÎÜ¢I+Äãa + +Ÿ7…ÁR,BÄ LæY€6r,ˆÀ`GJ4!c †Iß‚L…ÏeüuêÅx0GÇŸ„Ljpap,62<Fb¬Â{†–òÜœ*˜/oí]€Qq| ~²(ï¯ËÓ”!ð†*™)(Ì9I(2´ 4ñàç$J ´¤Ki áQˆDcC¨ ·Î±ˆ(ë¹ &ù(DÅâ`UÌkòÓŽÁCÇ(¢ˆbšã<Ô7­ŠZ$¦kRŠ!4bt=Ÿ¯.£8øD Šùû3Ÿü6cÅP˜‰7 Ee–L áÊg’¹¬“9FÃ! ÃÇk•jË ¢bQ\Q³½–LMú]¡GaN(,’>&U©Bá.¤l¢UH·‘8 ]bu“i\aq Žá±0ÞÿÂÑ… ãñà(<|,4z< 1~™GÖ~²,£…DI8ÇÂã#a({ªVËxBÊRj½'«‰À8ðPÑ1ŠQR ˆ0:=þôøñ§Æ£AVâ "—A¢¼@I+ŸvŠ†Vˆ 4.à)€åX`äx88 +ÅC¤È$ Dà ÂCù…¹šˆ…Å‘¡èÈñ*f@@ŽGAÚe)ÛV ,fÆ‚üø0G@fÑcÃñà8Gx +‘ *0¼ÈPšHUÓv¯×âÉJWË­d"Ëñ +#$‚xÀ4V&R™ÆÐPdl$G9SJ&´¤Â°¶Äµ ©µµ¥d¶ÁC€CuIÔSž]ÈzÅŒ³½Üøܽ‰‰ùññøøXtl4ÌS’ +ä‘®¢„Cˆ«J…¤­ð ¢H4,RH.!× ö…“ ‡g׶úÕ&x3ÙÐØP€€ybŠ p%º¤;¦jh²czþôèб @Ž£ÀuŽÒÇÁǎņ‡ ð8‚?BÑ–M(”£`Æ’X h~š%—Œ„°á¡`8€Ñ@ÃÄ$ÉXBE[9~¾ã®ÎWZ ¯”W'ëÎÅÍæ½KË{[U»SöÒnÂP]‡…Æ"x µ8!!P:ÉkèÆdªUsl“³ ѱ-E`3ŽØ,©k=ë•;'^yþàÁõ¥ço­×+™ñ±Èøh‡`M‚䈴'` TŒ~jºª,´_’OÎf^¹»ùʽ­o}æâ¯øæÏ~ñáç?çÄJ1뱪Ä3LCìÈŒULXݪ5ÛI š™¤ÊŸÁ1‚(YNð|(7à€€¯‚“¨e‹€KŽX6ðý¥â…ÝÁ\+=‘Uö™n®â¹ÝϽ~þç÷ï]=±<¨ç\›‚P4J@aŠÁ,EÌó¤Ìc¤Îõ$?]ÑûciÂ>¿ä>·_üäÝ…/¾±÷¯üÛŸù×?ýÒ;ÏïÝL6J¦ “0…Åi(ÆrŒ'ÒG©.r'eTm~®f­Oe'r{Kw¯l_=œpcí­Î|âÁÕ«§OMVkù„kH,õEØàÂ)8FD> ŒF‘0††ãCmu²–Kª¢ÅQÍ\²žÏfÌDÖÊR7t< +@léDÜ¥Bm>;£¿pظ}ºñàbïÃ7¿öþµÏ½ºùÁÃÉß~çö?ýê½?ÿêsï}üpu²˜Hû F¡à8… +"2›Ææ²Ñµ*riɸ~²xt"q;ÿÌéÖƒ í×nÞ¼ßÿü£¹¿ù‹WþáWŸþægÏÞÛÏ”-< +‡ƒ0G©<%Ó0¦b±I9Óe/ΊÏæ>|iùSÏöß¹ÛùüãÙŸ}ëÖ?ýúÓ?ûÆÕ_üÑÅÿþ“—ÿÇýô/¾vï­ûËWö¥”G! [yO6‹ŽÒÉ +kmýÌŒµPÀ–ªäd–Zë:›ýävß»¾W{ÿñÎï~óG¿øåW?úàÙÇ÷¶OŸ˜Ö%* AEäÑÑèб$H +pNBJšäCI!Ò/ÈK-{µgžµÞyxâÇg^¹·óï^úÑ÷Þ{ýåë­Š³4×_\Ú_ß½§›"vX4-b]‡8;­=:ß|îtùpZzåRígßyôÓï½òÙç—¿ðpð›ï¿ôïÿð¥ýÝç~ôÅÃùÅKùµËçW<—…°ˆ_“Ae!$4’æ£KEòþNêÛŸ=óÓï>ü£Ï^øôs½¯~bîû_<üÝ_>þ˯\üá‡ûÿò«—ÿîû×?÷\õ¹3…ƒ…|ÑÓKIÀ•i[Ï) Ÿ‘ɺQánm$ßzfæåó•Ç +üÁ…_ýðýÇoþögïýâÛwþóïÞùÿþß¿ùÛ_~ðø¨þwvþ½çß{t"o«Ñ +HØXÖðXŒ”M*b“ã‹EúêjúÊzþôŒyqÙyér÷Oþàþ‡¯îøÆ•·^¼^ð(ÌV ªª³sb¯Iß]Õ>¸Óùö»g¾õîéùÖ?þèÿññÛŸ~ò‡_<ü›?½ÿ¯¿ùÌW?uñä\>$+{FR¦(›A;±ZD/ôé[KÚ«§Sß|}íÇ_½õÝÏûÚ[[?øÂá?þàÅÿüë÷ÿí×ïüê»·~ó«¿úã¯Ý˜¯{>  ÃDOÊFÍPW2Ì+»ú»—SŸ½YüÖë ¿þúùÿówoþýO_þó/œþÕ7/þÓOüý÷ïüðƒ¸ý‹¯ŸùÓÏîÞÜÍ·ó 8‚aq†…É©Êv/±ÑTn®™_zÔÿáN}ãõů½±òÛ½ò‹ï<û'Ÿ9øÞ§¶ÿëï?øŸÿõýú«7~ûíÿÇß¾õ÷¦A,„ÇGÇâ`»ÃñóqÒŽ÷ŒÐÕiæá®óì®óñK¥Ï÷³»_kåÇ_»öÿð¥ßüùK¿ûáËÿþw_ø˯ß>\­. úÅRÇ´¼“h¸J?EïÕˆ+ÓÌçïµþ‡G¿þæµo¿·ýÍOnýø¯þÛoÞýù7o|ç½íÿö•óÿû/_ûÕW/}ýaõó·r‡S"@…‚£Ñá§Çð`(ÍEçRÐùsÍ~|¡üþss?ù£;ÿüW¯ÿo?~ô·ßø·?|á§_9úéGþɹÏÜ,^™W§RTF!ür¢¼ÉQVÒ*õíÉÌ\ž]Êb—Ìgïwþä½Ýïtøç_ØÿÙ·.ÿîÇ/üÝOÿü®þü£¿ûÞ•ùÅó¿ýÞµo|bòS—“/VZs’PàYϵNÞjyÔT’87Ðîoi/í[o_΃Ñøë?»ó‹o]þéWþ¯þòÿýoüÍ··¿õéóoo KÀ|JV2"•áI_+‘§•WÎV¾þÚæw?}æGŸ?ÿ¿úÔÿüÏýýýðƒS<\=¹XÌè¬@P&™jÖV³ž’L\IA—‹âÑ\öÞnñÅS©ï}róýöýßýðÝ/¾¼þÑÃÉï¼½òã/ÿê['œ«]*wŠ ä””£ x1žÒ v¶îzE™œNPg§ó³ÎõeçÓ7šßÿÜé_~ëþw?{î›oï|á…õ7.u_;S»»•ÙêiíœhË,ge®è™ …–*Ž^Ò™ªF.—¥'Ë_{uùœü«o]ýõwïýî/^üç_¼ó“?¼üÓ/üËO^ø÷Ÿ¿òË/í|óqñ¥3™¥ŠÄ¡±xsôJ!Ù3ÇaɶEuudÙ‹>3/|â(ÿÖÕê—/ÿÇoßý—ß¼õÛï?ûßññÿÛÏþøë7¿úÆÆû/,®M¥ÍäÜN£Ð±!#ÓÛo–ÒЙóÜvú+½—εîŸÈîöä/¿qãÇ_¹ù×6¿øüÌÛW&/ϧ–Ë€S1™\Jf|âPVFcI::å’':ΙÙÂÁTæÚjñųµ·®M½óÌÂ[Ï,œ›4Ï÷ôÃI{¹â¦DY£y‰€æW„”Ä¥ 9oJ‰z:SµÕŠÎoÔ½ó3¹£iç­+­¯¿¶øW_?ûÏ?{é/¿xôåG³_~Ð{uÏy¸¢?ÞÉoUe‡Œq®JYÛêѤl ÓOÐPË ¶ªÂ¹óü¶õê™ÌG&÷ƒçÿŸÿøÊ?ýòã¿þ΃¯¼zöòru¦”ÐEFtá‰Xœõ÷u‘Eo9ÜLVÚhG‹Ù«kùçªðÒú¾yê{swöjs5SdQ(âP\Ì${ÍúzÚëiœiPt'i[é_?XdÉ‹3úËç;_zýÊSS×ÖK·w*û¯_г G9~¹BÄ¡è 0òÀAg“Í„æ*î0tÙT+¶Ôp…õ–{´Pº±Ù¾²V==›Ÿ/§ær)0Y](…©XŒD–ÊИ‡!4å ØaØé|öÄdéh>qw3ñáóƒï~æäW^^þþ‡—¾ÿ¹£o¿¹õ­¯~åù…÷¯·®.šI¦]æt¿ô1™  ' ÄÔÜT/íå¸XßENuÕK³Ö3+ηÞØú·¿~ÿŸó©ÿöµ›ß~ïük7æ®ïTV»ðÆš’uœ †öXÆÆAåÌn¾žW¸ŠA·\¡¢2MSœÍ;ƒ´¾˜á.ͧïíM]˜+N:\]—³’bЃrÑ0cF†€$t1%bA +Šåt½šôÉdËsŠ*—™’*4)Á @ ¦¹]ìÊœ\ ”<*çs=Š°â ¶)4~“f +¹ìb½¼RÎtU†õD¢ase…(ÉèÉnö•k{¿söÒÖüj£šUe™")ŒâxóÃQÉp&›½ÃFëL!5£²ÖêÌʵ‹·XLó%jBÍ–Õz¶‘·ó*­¡!‹©A`K‡`TìF£f4¢a¨+ 8„’1ÀõdpóE8.âˆÎ’.Gy*Æ‚q<ÆÀŽ ‚¿be±TJõ³LÅb +°½Ñ0K¡&GÚ¶QÓ”Há5F™(Ôðp<)'rNÕfYTap-ìWa¨ÃP™P€yê;öÔð›ª:Šëi)ei˜Ôi)!iþY\±ÜfYO0]!'B~A˜n¹}à%§-{ªÛ?é¦ê8!ÑŒk˜Íbe#S\bX›$dCNLõ‚ld4 ó‚Ò2½ÞüÊZYYÌ÷'«Œi8åÊ ¨t2Ôb #ÂG†#ÑOá I¬1LÀ‚ÚdHBÈ’PX EüVG™4̺㶠½œJ¶Dˇ¿Ð†ãø• Ue¥¦ê5Ë0¦,¥µ„‘©8b"¨ÁN&qÜ‹ÅdÓYÖÑ´‚,g4­šJMy‰¶e”Y\”XÙ+ex,B`¨©ª]'³3¹P˜‡†ã 0p² ]ÿ@bˆi‚ð8*AÂ, ‘o”ó—LS ÒåŸÔÊC1¿à9øÛq)˜©(•Byƒ—j±¸«jx‰~2=gb0¼ž¬”4³`‰hL‡aKë¢X„¥À8GÓ¥Rõ„éô­ƒ‘éñˆ^å’š”+nv!]Y­úigŸtWÚítw¿z¹i;ýTf9WÜLäÖ}h”%âq3`Ÿ~j|lS´‰tåD®²e:½ÃÇ!(*‡ƒâÓOÇFGq’ÎêÖt2³iÚƒd‡"Ú蘿,Å3æÿ)Y`tŠ†· ¥¢ +©à ¢"S˜F‚éŽÉþ‘¥˜ +ã‰8â>ý±€^¤„¼ ¥·7/vgöp6ÅÊ%’ÍJZY5ê¶ÓíÎœŽaJQX!g¥º—ƒñ$B¤e£×š8}tóÍRk}$ÀDa€‹^nG2[„#Òå*ˆ7÷02+ëS¦7QÕ’TŒÆu±Üfø²îL&²3ŠÑ$¨”ëM–ªë’\Ò+–$³›kœLU¶½Ü’éMŠrqrî’¤6aTWŒ+uw’W8[$¹¢åõ'úgÖwŸ!˜ÔXŽÆUV(ûü˜,-øGx³Þ›ÜÓ¬Žjµ8µ3ŠkJê °“ˆÃþžÀp”AEQʲ֧™J,"Æ£¢ªÔ„''d½­¬çªÛŒØbÄ&B¤ ÔæÄÍæÄ…B6# Ó¬T!Ør jŒŒ24“ŒCB à’Eñ„ 5X¾Ì ‚Ê2\Ij†= +Ë0â¡DŽdÊ(‘aø +AgGÇȱQR×Û‚TŠÄø¤Ðb™«_Ñ잤úÛ21ÂÅé|0ªG`¥ n~CuçœìªZ¡žãK’R† Å@î§âP€3Af Èg(6ïxÇFP×ï=3X©)ª=Óh °ÂòرX`ŒŒ†ØxLÆðdÌ?ÿkAˆ('4FX£IÇr§ oFu¦e{šdKÃC§t8¹žÊ Ï?lô6 ÂÄÙ4F'Ô´“žó+†™Þßl3ãe¦b˜ˆ ÈbÅf£w¡1¸RlÐRÆ Aièîœî-|¥ó`ü-·ŸÊ-Þ€—d(F/™ß³Së‚Ú%™Š'ÁHZ%lÖ¥¢"WÙ,7v Õ­dv1“?qpW4ŒR+NœžÙ¸½¼w~ëv©³ßœ:§i­\zjmïF·p&BKO,f«»ÍþQ}òB¶º‰ÓI^.)F›—Wñ)Z=IoÍΞ8ýPÖ#2†Ú‰Üj¹}.W9d„ ÏBX¥ROöÂ)0¢Œû]˜5¿ö/‘ ˜Œ%moàeæ ÖE)L"§öÇï°l¥æ@ŒÅãúTÿÀrzà~a@"-Ô±-›N®¢˜C’iÔuk@1ŒôTs*‘]MÖ3ùÕPX‘ÕŽ¢÷E¥ >+Ž%Bqk$ @hÂK/Ñ\ѯoO&8¹&[“’ÙçäFÒA`ëî4Xï„Ö$¸’•Z´ Ý›å´nM(æT2·Œ€°Ô@hQtERº¦; îAêéö bã‚uEo§ k¬Øòk¶pUѸ mèXðرðñ*†¦½gº^ª‡ƒ|4"IR…)ŒyàåÏ$RšÑ”n¹¶[ªoš^äR¼R±ÓŒM +JYÒ; %½ÊÍ5z»ºÛ‰Àªd¶&‘Z(ƈ,B7Pªüû=ü1ÄBˆ¤bOY©…fÿâêÉǽÅ•Á0·ì¯®Å / »18IÐUÍžÍ5ösíÅnûÕ +sœZS¬¶¨5D­)[ÝTq5‘›c¤¼ê¼øÒúÙ»ÍÁA¶¶­'@L‚é´·Ö÷ž#&iµrk¿Ú=jÏ]©ôN+î4ʽÌìâæ­Rc;3S™ÅÕ·fV.÷æ.m~h$çˆøÕ:'PÒ&ÙÜüÚÝÙ•g›ƒgR•=‚ÌáTB1Ê’Õ ðሰK7Lo9‘ÛÈU60ÊPÌz²¸a§W>4§¦Wnäª[¦7 „–juaÜ‘´ªlöÌÄð‚lÍF`ÿ°›ãNÎ/]dþöÞãI’ôÊ»“Ó]•ÚµÖZ»‡‡Ö:3##µ¬¥uuuUw£%0h €ØÁè᎑\î×hܼðÌ ÿ$òy‚³—¹ìfLËщÊ*ß÷ÞOxx|Omá$¬r5Lvº3˜C3:ôF„£ñ£Z}¿Œ9ŒÐ!é/õ¢úE­ÿÔŽŽH¶Ùî¾}ÿ 2ÛÙO-V,. tòôêÝ_Öü«Ÿüö?ýçÿc8¹(”M”Œ¬p5;ùêàéŸmÖq*ì @iT'_8¹M €«‹þôuµy‰"Eú–=‚š*WÀ®|Ù¬¾)Ô¸ìo|vo.9– I&!©*ä$Ë7q²JqÍ°vÒ<‚F0‹ÌôIS»õÞ#^l‹à°ô€‰ïÏ–þ©æöÓæNwz5Þx<Û~ÚœúÉL¦Îf»o`Õ²¶¹Î,iœ6Þ¶ÞÇõ¥=N©LÃ*æØ  ²Ždc#¨.>lì½à²{÷ƒt׉Vš½p«QëØæg>úöam›Ïv•ï‚^ì}¶ÿøǨ}^­/ON^þÝ?þ/‹ýǤXUÍÁâÍæÁ×»gß7 rZF5YïJZ—•«’Õ#Åšlîž}÷àéŸO–oÍ` ¨s±ó^wç¼ÚuâƒÉê}µsá„»€Wiû°PfqZ®u–ÍÁnT_ÑbGP§^¸ßê_<~ñ³§¯^(+(næb{÷›Ó'¿Iº/kCÓû¿ú7ÿa4½&éPñäúû_ýáúÕ_ÿÇ‹7¿òj‡ ‚pëïÿák;ÅŠÉð¿zÖ™¾Û>ùááËßM—Ÿ©zg÷ðUtRÆT’KTgY¼:{üÛÕñ—{'_ØÙFyƒþôq¶ˆtì„Û^zh;Š¹9œ½>8û’å •¢h׎¶²›Z•!h¶GÏ¿ûö—o¸c^j§Íó´x_µ²65¢[óùÎgµöƒ|ÑÀð0¬íÕzgÉ£ñò%àZ—~´wòp¾(ׇõk;Úu“}ɘ ʤP2ZÕ÷ßÿEÍ>ý¤T* +‚ÜJ—Ëãï^}õ7£Å3 ÷¾ùáoÓÆA‡¨{gÅ€pâKµu½ØùöÕÇÿîá›ßáìõóo¶vƒâ +â´y8Ýz²±ûzóà]kzi¹ÃÑôb²ýJT»†?1ù¨O€XÍ`;jϳjÍô6{Ó·³½ï¶Î¾î~føÓzºýøåŸ5‡Qý°3yröð‡_ýÛ?üýîéµÆÞÎîóí½—A¼Õ]m~èLž7ž?üþå¿m÷—«''ç߆µÕšHÖPP› Ä4k#nœî§»§oìhN µ¨v¤à$f´»uô“Ó§¿„œŒëGõáó§ß_½ûÍ`õ9ø$œM)6 ª›Ã­Ç8«{Õ©bÏ oÕ÷“¹átÒÎþâø}{zÙ_ö§Oz£+NLÓöyÚ†UÞ­vOAHûõ‹0=.^Ä}œrf[O–GƒÚa\?´‚…o)ƨÙ>¬Ö­¢uÏ®¾üî×ÿýó/ððûéê}\ÛÕõÖë×?ýñÏÿ §cNjÔZ‡Ë£/¶Ž¾Ø8|¿8ü"íÛïþâìì=ÏW­5?xôðÇý?]ìýduö£î,K[Õ4W[ÇÕÎyÔ:1ÂM?íñãöðy¾ 3l½Ù»Pi¡ÄËb¾¨°\æŒ@l㸽¶N€|5ì™’eÝPÖÆ”=}õ›Vçô*'Ö!€%¥4 Š«Ú:íÏC-›f÷ÁñËÞø€c?˜rŸþøðå/»o“Ö®í vöŸ/?` êäªWÝêO_lí;Ø|Ó›?o/\>˜\ÉVTßïÌž7gOÜÚžjO£Ç'~‘tx¥6Û~Ý_ï¿}÷ñ—gO¾OÛž79=~·òÖt†½áÙû¯~ÿæ‹?\¾øåéÓ'«×AÔýâÃÏ?ûðkVøšºñ6ä@{ü<¨Ÿ+Æ´Û=úöÏþ¶ÞÛç¤zgx5Ï“îÃéÞ‡×_ÿÍÙ“Ÿ×'/ßþêðúk=˜Ô†—^ýæïFÍËöøÕlç£l9nïÛŸý`ÉU9©%SÙšëÞB5ÃñãùæóÇO?>ø\6†·@&ù:+7ÂÚêàòÛ 6ÕZ{pÒßxÜ]L–/ëýKVìñr§7Ò^Ò|jx“ÖäÑ`óÝ`ë󭣟7ßÕ}Ó}õÝïß|üµåÏ@\ÉÚ ÂtùºÙ¿Lê; `5£szñåùõ—Íî~X߆l¯5†Óó7ïýðÉ÷àüpkÿôãÙ³Ÿ§ƒK3Þ1£¯ŸüÕpx@SŽã'ËgÃÅ£zëÊM÷wP*-UDz|²:ùðì«¿:zñ«Îæ«ÞÆóÎì™áí—*èؽƒw†9b0ï1I%hG7ç4æóE‡–½PÊ5œH kiØÛqí2m_‚/Cp +ŠšàT­—m O:0¢ÖóâU½s–U‡›)OËêÚî¬Ö>„bt‚ÈcÓž´×nº›òbH­ùêÝ|õÁ­îˆz¥ÿÉ¿[]þh:óׯ¿ûþÃÿ6ž_GÓ¼}Õ }°ØÿÉÅ»?Àª1\\[ÔØ“uÈ·¶ vE¥kÚóÖ :=yõ]«wx|òY’îî ¼Í7P* Ào:óÉâ•múñVPÛUíÑjïÝу¯Ý IÍ' F­=V­~Öí:^<´ƒ%,1Ø„Vÿ\”;7¦Ï0t’“æøucøD1†¢ÜX¬=ýÊ +§8€ôsÒ›½„§4ZGA°Èö“‚VçˆZ•Š/êÀ‰ðB»Û:™n9‹Áè¼7¸b™„À]ú%ÄL³½íZûŠ:N´e3¨;(ÅèƒD×…ípJŸâk‚R·½A{¦;j/ëÝójãtºõa²ó…êÏ Ö¯õŽÃæ>΢ڛ¦ƒ››> ¢8L·ÇM7ŸNW/šÃs?ÝÕƒ§5½×ì?èN8€C·ý¹ã-ÚÝ£þø¬ÚÚCIGÓis[PCÓ¬{á<¬îæ`-ÁÉÆ€b'X™þN›vÐk Oç;¯/X~Q6•ÝŠ?Ü>|-™}°NÙÆàælº|¶Ø}:_=×¾¦õÝüW­X‘¡ +ê“«§ +#©°Ùæ„r QÁGËZ³‚Ê€Qm9.çÏ_|ÓéíQl$ÇQz$ûV° –ð-©ì¿?¿þ +Öh¾Yí<lU> Ò½°~$Ù†ÿ—¿Ï€Y¦¸º¤ ‡³žüÙÎÑçÓ  Î“ÙüÁ?üÃÿ¼»ÿŽ{µÁÃîÆ«ÎüÙpù +&œG{Ïÿóÿþþì7ÿb¼§îÕ»†oÚ£ë(Ý Âų§ß¿ýø{ÅòÚ@w6Âêém‹ê„ÚÆjïälôX©Ïˆ=ŒŒQÌ3¬Ápvytù/Uu½ç¸³jý`ÿôËÓ÷²6@0·TÖ|o~rú¥ªõs9©T2 k±±ó¡;|bºK–ï¥ÕÕßüÝ?½}÷³õu|δEeÚl]´ÛÂp[W›¾böX¡Êr‘o(úP÷–¼6™Ýê?©·¯k3˜sPžIsÏÊ6äŸ jWzª=kõ/÷/¾ j;%Dó1ܹb [£°-/Õ³­Þ& w0×£ëÑòÝê쇧ï7ß{ËÉ Ãégé„Û “€³Pô1/÷AvBŠ²R\Mgà³0Ê +‚Ó!¼EX;¶£=Ùjfçѳoœ`¢è¨S0ášÞí/ÏžþŒÎZìµo®éoÍþQµ½OsñÍÆÎSVH0ÜÔíAZßÚ\^Åéf±¤åK:J¼Òª»¢«JèG“îäôàìýîùÇÖè”bP)^¸}³;„ +uRy÷ø«ó§îTOqª^*[µÚNÚ: ¹R¼9?}·Z^«JJÑ.'ÕÂÚîîù—‡—ß R—¢cœð%¡%òMu(*Dq8&ëxD³VsK–ꕊ醫Öà9IEhE+Ešpt9UÍ©bLx¹¶ö¼pÙ?3³F6;ó`ÇüêNyåizV$¨® oÓö' ¿ÜØo‹REÑÍ!/7Y¹iD¼Ú&gõ~³{Ò›=VŒŽã§Ë—ÕÎIÔ<ˆÛûÑ1¤–éMÁÅ`„§S°¨NöM9+¶Að@¶OçW`Ni±.#Šm€ t|0ªKM6†p†«“/H6ÖîbûEúd†­íÓÞô!8tÓ8î€åj–¿é$€„]FH¥*ÈÕ$ÙŒ«(.#˜TFÕBQ¡¹x®¸uª¨m]ŠWׇǯi>„ÒSì±h gêx›º9ÆpËqûÎ^XÝHÛn¼¤…‚+O‡ãGQ}Á5–óy¾Žá¢Ž`ºø¬ñ¢­ií'/~à„4—cqÜeøšní}½:úÖOÖ Zsa9*¨q³ÃñU]ëúÞF½uê„[–Ýovv-åÄÊ„—»Ž¿•6ƒdì$ÍøÝþqúVÓ +·Uw³‚‡,×´¬Ʋ‰©÷;/¦;¯y© ZH:`ëHܹ8{·½u¡k©ívë­Õ`ö`ûø(4óò¹‚تÔÓ•ÞúšP.›ª9,._ñ6E¥’ÆñõFç,ˆWkët!Ÿí'ìû‹ 9èÏÞÅ­'QójvXÞ×̦ª·¡$uo.€}‚kA¼0¥$i5:ÇÍÞu½uò8SÇ*J)Ã…Ànã­7³÷AõÐr7£ÚžîŒ »;™]Í·_²R•Fª‚[|üæ—ï¾þË߀['iL(`#6Ì!™`Wœ|ÿôã¿mMÂDÉê²´T’$!Œã)ä¯^Ïv?4FÏ©Ö¸rcõ&ªíDþRµæN°sÓÓ +?n·¶?ûøKøs µe ëcðAÕÆy­ýØò– W8¾éù+͘iæÌà€bE]_Ïšv¦×ªÙ¥¡Xè˜eSÓ‹J‡€$A-šv÷^tíºáfgü¤Úÿ»ÅÞwÙFa¤Å›v°%ÈmÈ=ÃÙÒìíÞøeR;eùIèž`µ¡[}x0|£X6QÂÓ½ÑÆë¸~¤YýÑâºÚ: ¸* +´Üp·3~Që^ÁD¹n÷üÑ÷ï9µ-ÛS#Ú•í…îηöß&W’ÒH’ÑæSÓ[zÑ‘éï*æØñgýáùr祜}³¯Ý蜷úµöÌ'u@ KŠ$¶]{‚a +ø5PQhGé¡¢ŽwK7§(¤õCËž"ˆI3UQzÕ£zÿawüTRÛ€¥pb‹ÕK”g¶óá°‚EAz<ŸªJ½X`-³[«oyÁ8m€ùÍRT$ÇìÞÄ$I݆5SÔ>ˆ÷‹EÑõfª6*5(.’šõcù:‚ÈåEãzsŽ?Éöú“1 O#‰‡L«è…"×í켺¿¿ÆÁ µD¡#pu5áÅ×Ö µ<à¥F>ÏÜ|lêù +ÊXÒ§ ÑE}j»àû*¸©™ã$ÝŸo¼ÙØûÚo¡tXÆ#pmAh`úh”–ÝÜæ«z«Õ;l<šl=žm?OZûÀþ‚Ø2ÿøM|½Ý?Þ=ýéb÷ËÞü5(Ð Ù†F"ËÛ +k ì½øz8~;[¼ “Œ4àÃó˜r™5ë0|ÕñçÇ~úðÕ_§”³^†f4ðªÖÄM9eÐ>o½—õ Xõéô4­/ &ÂÀö!xsYÆ/zÓ7¢2%@R¶¦¸2Fx$è­·OwN¿¡˜:Ǧš>©/(=ðP $¥§éÙ€eD‚â»1Ûz~úøg¢6É—Ô2¢IJ-Œ6!nîÇX@Òž>úÕáÅO•¬·ŽJ²7<í O@ú&µC7>JÚ@m +ò +6_à³þ)δT’ ‘¤Fè8áa½óü7•Ë"Iš†ÑÅB3ÃÅ à5u¬iS(ìN:ÒÀ31Ã&P_!,¤´ZßÒ­.ˆ+]íÔj‡Íî%P<ͤéðŒg™-Ûn°¬¥kMÈðFë Ù} Û Vì®ç¤JYXOäcš‰x¡é¸n°Í°)ðãýû”¦¶úƒcIJò8®‚…²½]¼l½ö‚9ŽÊõd6Y<·øɧd¾¨–P•F†%§Ú´­þîîgëķ÷°BAäaPtUÌò±(7loìù#p †Uç²Ö6ËFQ´]oŸØþL”k¶7‰ëKYoAì0“,—•³îLx¥nØS?Þ3½Óßµ ÊòªÌò7¢Ú @¨å¨¶«[Y³Ú´u ¹óî–ƒêQuÛ´Çií¨?#[ÀÅ#JhTp@àHÐzœÜ.!@ÊsÓÝUÀñm˜°] ¥ ·!cA]T*2A{:îJ77 {ÁI=uE©E±i u8yDo{àà Dz.3%RHQ›¼¼T—Œ¹b-L·N˘¹žõ@4ÀÔÐ8ý†nÏ!Õus8œ>ª·ÏLwÊsØ1ðàË<(”uœð-wü~¡ÀWÊRÕq2”µ©”*Fx4óÙõ„&R \[*Q3'`ˆ@ܤÐl ØÐ¥œØµ½Uwô +æ´ÇM/moûy»¹bhCM€G– ¸›G¥ÄH¬¾5=ü›¿þ-³YAŒ +b¡D¤YBušÊ¶¡@QÑçºÞEζ\af‚ˆ’¤¬)6R‘Àâ bO1fŠ¹`ø~±(eû§U$C«+jëÞ]*~¼oÇ{iûÜòw %ûÓ{4h6UÉ® ˆ'K7ØÔÅðÌvA5Irª½¸º’ÁÒ +@ÞwNàØвÇ~¸Lj»€6†Õ7œ6Íy•¬}ž*I¬}Œ5”Ô(.-kÑ;2ý%Ã6²}xÌiPÝß:úrç쇨q +K¯XD +RŽºJr-Y›ñnÒسÝi-`£CNîRÅú4¬_Øñ!p(Ié+zvS_v$ꂵ!©šÝúÕέ“å"§é œmIÑl»T3ôY¾ I0 xŠfoIú\µ62¸Ÿç× +\Õ¥ÍÐÏzP›¦¿íÆ{ª³I‹­2f`¤Ë‚TÖzÀ_À^¸›¶¯«õÓ½£¯ÓÆè=Sm@ôe]V\äaœo®>ÎNÄÅ¢Œã6ŠYśے}*ª#7ÜsCøW'ŸçQÔà„*+¤eÔ$Ù*X]0˜–»UÀŠæŠÙò,פ¦íYÞ+e-MMMl5k;²Ãr£5Û½ÑJE©TT Ìð­v§¾÷+ål#¬¬¿_Ë ÓU(:¡$i'õ#XÍBžø: XAlD¸¾N¯ÝGE>RÔ!F•Š…‚œ@mÌcÖÓ-€TÌçeEî Ç—D(f¯¹¼FÑ5QêÃZäóJ£¾õó_ÿ»4ݾŸY[Ó8±EÑ>†kÙ.4\ömžK «QôÈI_ZÖ¹Þ‹šÙ'ipy¢a£dκŸC24 |¼Æñ‚*¼Ùq„Ó†ÎõRÙæøŽìBÝÊB‹ak0-œØa8 8½PÒy©_ï\%õCAL_¾ûÅñÅOxyÀp-^éctRD2oË $Ã=*NR§ hÂ+åûkÔúº *=À"H¡ìu¡¸KßÝÅV1Û©¯d÷ô|ž,æ9@š‡Óë¶(ÚÅüõun2¹„:º‹—/¨b‰\ì9x…Oï‘÷îÓ$* Zn](ÂX¨*#Ûškçòl©$šUZ—¦«(ê„[O7æó+šN +SÖ63£GÅ(L¡‚õ’”‡Ù@MUDÕÃÎÌH&$ë# BäUï<ŠÒ‚Ü—ä./6ˈ¹–crÃ}†«M†Ù Y'ÛYHHEµÏK`o»²ÖEH^ŒË$E­°\(g±‡a²ÊÚÓHM8Õ0=pÂmHÙþçÖÈ‹¶’Ú¯tŠY.LS¶KC) <Ÿ^5ûm’¼\V!@\ D™Jr[–»À‰A°!É­¬æ×»½øÄ°·üpÅ‹ 'CiÔjK3h®V¼øÞ ¢ÀH/WâAˆòb—ãê€3 4B°JµT¶òÅô$ÝäÆzž+W,ÍÚr#û~|v¬x³=#IÇðÖ…Š’X3æ~í`0Ï.†€Ž…rýá—?ùýþÑKð} `—6æ•Í×MáÇ=QLâÚªXÒŠ%j„#ô-ÿ(¨žçó‚&66gOhʇDª` 0Ü +ÅÍ‹Õg–3έ<0Tå ÓÚÄÕZN&¨† æóIÄÌ*L…ÀÇÙ=¥T${îU©¤!4 ó¼ÉLà>È­REO:êÞ=¢TÒ):Ñõ°›,wð,oAg²2$hpp3Nƒ•ú¯ Vv9Zî‚.¢¹š¬Œ rüËÅàOMkÞê> «Ç$ÓĈÁª$Õ(–­ +ê‚œ @NˆMUd7l‹5x}P×Ù ¨|×Us +â–€w©@ó,kg´Ë…ŠÙu¢ÍîèaÚzÀe®E€Š\k¶v‡“«¤uƈ-ø{Ó‰B +êD©®4D!Tä kÃú J³›„”¢ÜrIf÷½¹®u!U´#´H¶,ÌŠ 8IŒ°e¥ çé› eu «Û›“,X†4pµuá§-‚<¾i 0R… ¨›ðjŒP3ÜY³?ý ÂYí,– D€ñâÅdã$-A¹IºgHÈKµREQ§;³å‹Ýß‚Y†èÚ½G q*DpòÀ-_PD±îøãʯ¼©¾>À/IƒºÓ +‚Ìçk…< ê%CšÉ1v£þ¦§6Ø +7ᨨå9Çõ@0@†ËrvÑ©XqÔ[[§P(Im4Ï¢ÆùùÓ_¿ÿîß×[—÷ïs€fðÈçDf€oå2ˆ±N«sÑ^+Ù ÕÚ|ñܲç8+v I®æE›'~ñ»ÿ”ípH§bµÄ'Š6…$„bDb¸¢P¯[P “ßSôž˜µSéƒÝ+£>'uk×°vʈ—Ýt¹å.2¬``…¤õ:©ìZÚ:V-x}X Ó€ç¡^à6øŠÑ¶ÃÅ|õ™@õe½Ïq±Äš’È +YöÙMÚ<ã]’ + ÂÖÔŽ"×1\)PP§n¢tG +P܆r“²/ãÔ1T5ÂqUÞGõ37Ùp(#:,4¤N9‚Ò¢ùF¦sœ¥íoÀÙÝÖ¨Ú: ªÀ\Pt ¥T}Þ ÇhdݘÔZ×¢Ú㤆bM +ˆ}o$0KÓ:¢”K|©ÈÁûªÚ Ñ¹â›vÌA½½« T} p‰k׃`X|<ºþ>i@Öõ·¶_Cí@’›Þ¦¨¡œ9®và ðªÖ5Ì1¨8ÈPq$1\“å ‚îßÇòyˆ£PÒJƒ ƒ¬|ÈŒ@”±l +rݶ·y¡Og‹ëV*êúº¾N`ˆÍÒ €_Vl¦Ëý«ǫϻӧ -ËeçÞ= Åì«`ýpÌQÔ®l·»×`0ýÁq€*ÛÞýÌ–åŠQU-<šî~þö›¿üæçõìåáRt r|¢d ©nº‹NcÄIÀwv¡l•²æq)Øa(.8g°o4ŸrR7×íÑŒ +SÈIAl4Â)fà,?k±q)È÷x±QÁ ¢lñÂPFPû ß&)H°TÊ>ÑÙX±×à ÓVõ•a¹áÍeàŸ+ЂØh´.“Ú¹jn`dBqMpÁq¸¥ª-Ðx`K›³Z÷!ŵ< ™*ÈìjýØv' üà_us¼¹úìðü[Ù¢”‹–j‚-7AtœÐò“Ó¨~¥ÛÛP­¹<]®H ¾d Fàí`&%mΊ}{ºÚœaÙÄÓ­Gõþ¯Ìª^,ë`ëd¥uÓ8[Ç Ý´¦Ýñ³þìEúœdk•Š¨ é@T*ê(hæ€b‚2\ŽÍ¶|d:Û¦ÌçÅbÉTµq£~® J"€6A‚WRáøì²Õ‡ß>;Ð+–]?¯IJ÷Æø¥Šâ1͵‚ä"]Ï `«µÓ¤~afm/зù"WÊút¤hY»ŸD§Z?8¸ø¼18¤Å.NU1ÂljÈv7³®¾t¬Z‹FïÑxþ9Aƒyé0|Ÿæš¿—ÕB æ¤ÚhœN7?ÛØÿ¶1xQBœ\AÉN p€5¶J mÕÜvÂ}7Ú•µ!`c& ŠjÏX7ÌHµ›Ýõ3õX,+7-ul@•+ŠYsmÂÒÕ¡çï•P̹j.ml˜šÊö/W´RY«{†3»ùÀ½E³Mݘ‚M@ɧk²:éŒ^´O p² ‡EjÝ š5ûgª3«÷¯F[¯G[ŸÉúŠ–&NöÝkNtK”{¢ QT :këCR°ú³ÎøùÞÅF¸‹`™œ Ð=ImHZêW74g›å³ #PVP\…"ø¸ìú@¶º30ݹao‚’ä$öJ%#—çÄ$‰(ûIùP˜þª1¥‚º€N÷ï!ŠØà2B  ÀAi¤­“Nÿ +­‚8¡…Ñ,Œ¶ïÝ'ü)&.ãÉ€Emf—vó7{`Š]ÝÜ´œ%¼¯( TËeWÓà²+`ÍÖi8æ +§@Ä/Ôõu†Æ]YJ³5¸šdnôŸ-¿®ƒ³ Èûáâ©-ô‹dUÖ6 wÀ§Œš “$ɲÑØk´Ï`n %§Œø€]€-¹¢PÁ-ŠoXþ~Ü<³¢m^°/ßÈxÿÆbT9yJs=œ¬æKYŸ#%Qi{É®›úÕ#Yí³\tAe« è ŒgGŠÚ¤%-€\¨Çý÷‡O~¥{KÈÞ\^(gWð¢˜bÙu ¸ÆöwŠ s^(€ÑæÁ’c¸Íò¡¤¶pÊL3³ë¨`(æl +ÊHT†¦³ ¸¸-ÅØT ¸QÁßðâecp¾wöõÎÙO¢æÁ´<íj“›+Q=ÕÜŠÓ#ËߢÅ&xÞb†]¾íL|jÁ-õH®)Èǃ7‘,¸¤fv!ëcõ*ˆWF=^‚9Í€šð +†¢(ÙôÃmÓri (:$cË^ØöF%3Ô±íniÖ‚•:8žäòZ./¸«Šm µ²v?àéª{Ιlƒx®`ºíLÛ3Ë}òI„¨å̓ډáˆJEµ5¦\1<¥¨w0Ì%©ä?›š>¸+ŠŠ@u1‡ä <[$0„Oƒwš5›çÍá#/ØÅ—QIÆãÙ%ŽY€¨`FpºÊ)ƒ +ÊB(ŠB‹¢]šu©EiÊr‚hTаŒ:ù’Hó5ææn=Œ X¹7/gû?«ž‚Ô¼êªt½vï…îîß|þšAáªß´˜ÈÆ–´\†Ì\ZAŒ2b@Zrb+J³/_£¸ÕÝ]µGGšÓb¥:€¶1l ŠÕ +ª•EÓZð\ úRvaÙήfSQ¯X)QõÚlõÜ +ÁpÅ ß̾i^Ò+¨­ÛQ•âc¤^µN¸—I/ꆨ5£c¹-ÍhÐ|H²ùÑOÎ`ÑoZéŠ1dÅFy8¸Éruôùbç­Ìd© +jD7Æ­áCVÊ + +Á"°9Š1ëŒ à€Ž€À&"HNIŸsÊ°‚ăR±æzS°?¢2TT­éæÛÝÌ0i±*«)Ëš»d•Ƽ8ÕôŠº÷×ÈRY¥N©b‚¢¸V­ÿ ê<ªužˆòpm[[caæÁ|ñR¥x(+ËÝÑ ø&˜‚õ÷!Áò †;ë9ü£$ Tm˜}üAÒÚI¼CÌCõ +å—q£¨bN¹Þ†»¼P— ÄV©â®çõr(µj¹[n²Ëˆu‚ ³¯¨£VïÑbÿ‹ q +z#»… ²U£CdU“´mÕÜ—õ/Àðn®Á6¼`s0áD5È°"<t8XrÈ1 ”|X½lv_XÁ‘ݦ¤ÃðuNnc”_,‹(áΖ¬X¾zÎî8*g=Ô€ñ0Š À­`Å*Ýõ‚LRU¨»rÅ¥™ +vƒê)Xõ\I¶½-7<½a¹SÝì´ch­ Xd×%ôaqÖ Z±bÔr!Œ"¢ºáb¶|²wöáæþm­P!jú(I÷I:Gã¸Ë :ðãÃÙ€ü¹w¯Œ º õP*R¬UX{ܾUŒiö¹f¯ç3aɸLY9ÐÒ9`V3¦ª>Dq¾Z;·–“ +e!’µ‚ +KÊÖ²7Ììî”=0È d-_ñs%—á†õÎÃ8ÝAðÔæîûÓ‡¿¨6NÀ‹­ç¥õ¼B1 kfÖJ†¨ ¾ýÛÑê ^å +Z>'Kr?­Êý“ÿ¶øé=’f‹“7¾4íœ'0̃¨4!±K¤#̓泧ïÿÁ Ž%}\!ád"ÀŒ«ºkÈI¨ÛÉZÁdXñRÙ%ñº¦nôFO%kT ?˜¯?lš´T/ƒ†¡ Û Ny©™u…¦дÎëîès/>¹ ˆ"} <¬77x‘`½ +¹aûIõ‰f®òŸ&Xm]{É%4Š˜U¼¹'$›í›Ës$¸ÁaT¿€3/£ÆzžÏŒ6î]*hã¨ñ`ëৃÍÏ5w» o‘“9¶Q,ëëÙ§'0¥ZÞîé£ßô¦¯pIJ;®…Õ3Í\€=,T´BÅ¥®5bvÁ>dWÃøV˜†UX‘fv†Êp€ëã4üšPl“fë_ˬPIÅðS}ù(²J’¾$uT­—Ýx¬t w•´®ƒê°d.»$êÝåaÙVH ×ó9ž¤"ë>÷W(|²=â<—%y:ÝýÒŽöeeÎó=˜Çì·š[$©Ý_Ãi¾/ë;~õº;üL1æÅŠº¶FûÞlÿôƒ €•P?]£ó%C37A-V€IYådß«ZêÖ¤PV qºÅ‹ÃîàÅæîוÜû4»: +^†Sº KîßgÁ@Úð2ÌÞ´2ÈûÖÌê`þÖò%ïÿþW2Îþÿ>ÿ¯Æ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mÜrÛÆ] ·mœý_ÿJÆœúW2þ„ç{/.»çïÎ?Ù~·Fþ)ü¾uþöÝÕ›OæŸð§fëÍ»îã‹w_¾8ó‘Jà¯,Ãñ(sëêü%ýñH +¢o?|üþryqþìJ¦48´ +ÿ}bQ6eÝüoïã'zÅ®aû¶Ø–ÅÆ–g8V†AFn@=‡ƒb'6Ü0tǶ}/ú—=ËúãßÅð:~`9Ô??ËvC;òlïæ ùvÿUý‹·{ôÉî'/>Ùü$¦$™ÚÛ…¨ZWŸ¼þ/ÁÙYp7ó×üì*ùãÛW0#ÿïd³`Ÿ˜Ý«÷/®¶mjoþÉaöäl>ÿøƒú/AAÈQìa@SŽeS¶dÏô_÷ŒìŒþùYÿüÿåÂYÚáÍ {Tö\ëž¿9Ç,*pcÇþdoôßPLÖ±'–¯rBËZ²T1"¥¹./÷i¶A’ÙÆü4›húH”»¼ÔÄ© ‚Ûð,‚H&ÎZ(¶ $²Ú¶Ü±jeí¹8x®ÐÕ)‚;ÅW,2(¢d}¥ÔŽjÍds.¨cFnãLXF Óî+z‹ "Yæ†ãï²R SNRlÃý +b’LÊmNl›ÞÁ¥¹¢ŒàÁÄ(n•+:AŠÚwý•lŽ9¹…à6Á„ãrR\Æ5FL¬`éÄÇaãZu–ðt„ô*¸c»[QóÌIöípǯžÊÆœ›Âf…ÍÁ$x¥ŠV,I8a´Ãñ1+T‹e Þ‹¤ªeÔ©`.BøTÖÏ­Ms)/6i6%èZÙîÁ4ʘS(kÅŠŽâ¶fŒdµWAõ +¢ b[’ûY=$ëh„áŽ$¶âx#="ë(Õ,–ÔõÿŠ¢.ŠÁÃgù.+ö(¶M±Í|Ö È„¿Ä‰ˆ "Žo1lÅ<ŠN+¨“mGMø ¨ƒ`¶(v¹ŸõÛÁ‚BÙXËqðȤbq:d!³\VÜÊçÙµu²Pˈ`NqIªF’ ¼Z© gn2|ÅÝ|­T 8É|^Ä0Ÿfš$Õ`ÙŽ õ%¹Óížøñ AeœŒDy`¸sI땽\’1Ôƒd„.ÁÔJˆS*W7Í©® ܳ¬ '6PÒ…”ÀÉ€—ú‚<`ÙÈÐ[¥²HNÍØ”)ÍCv 9³nÞLT©¨$hÖÔOu7ë½I m„òI:>:þºÞ9&h'}E›Géc;8¡¹JHÖ¥ÜB03kGšoÖø—o£D„a±¬å 2œ65&j’lªèÓ 9kv®;¯HÞCISÒV´_í>v’cF2bVdwç‹ÑâÆF%ÄPŒE£û"¬]2â€ûU¦'ü¬cY]ÏóeÄÊúo#f.«# ¸GAÂóu +&œŠ12A‰§k$WÍzx2 ˜CÈ@8 žXA-HÔBQÈÚ«fÍ3í +¢—J*R6QÄ‚ƒD"ð0 v;—ãrël±(çòüÚ: ‹ÁtƒåÕˆº(L$i\,iYO " ™,F>ôtsSþýuo ‡äLQ”‘, ¡X²W+ª•J¶ùý5<Ÿ£ Ìa˜&˵(2\ϱp8îŠb©,C.U/W0ÊA³S¬<Ê€¥,Cy˜„<ãeï8î¾mïòB' ¶ßþ‡­ýçŸÞ+ÉÚ8k±Ø<åän¶8–5Í(VÔlcì +L¯¯šCEëÑát¼\¾Ñ¬a 5r%‘¦«A|ê„G4S´S*I7Í‘†€0• dBó]ÍXxᮤôpÌÔ´n˜îiRFlÁÌ ÊÀt6&³g¦3%(ÒÒ°—º»bÄŠE$SÃÈ,ßn6çŠfB’4ÔN•fÚ€l4Ý$¨ Œ¨YÃ!œÇ™Øt¶»ã÷ÃÏZã+œó!Q­¡b%{BK=ËßovŸDÕÃþà:Lw Â×Ì©®$}B°-Š‡š¼d T‹@A¡¨TzÓÚWƒ*e‚ÌvÊ/"FµXV²EÒ]ÍÞ%ù´Paže}^ªXù¢r]œÁpAÁ,€)Ë~"³Xò9¾‡¥Ô‘Š¥*=AhAFår|>'ü± z.Ï–“ SI™q„Fš¶T”y¬¨¡Y£Ãa ÚÝ’Õ¹Q\z?Gæ NdÝÀh&%ˆ Nû¦I¬sÿ>©U*‰8fST'B}ñ¦#‰–E¡ +…°^PóEPšÈÚ'ÝÁ´I^v=GgXG„<ß‚((¯i˜‹FçZ÷&ŸÞ+‹ZÛ ²hÖC©h€“qñ† ¬`(^0D³%5¹;=æÄZ³H:Ⲧ%Cœ†™T@(*RÕ¾n1Âçå&Å×h¾I@]sÍ›¶·šëÎÝsÃØþDuFŒØµbMá'ÍÕIºE;ª5È—ÅBYÁñH”F]‡ É& _PþZ±l”‘€åz0Õ¼˜58‚¹¥™*ÃU©)ª]NÊvÐ7ƒ=ÕÙ ¹Ôö·-o!h]ÍpZ+HOf›½Ç0ÿP#&šÒD]ÏsBŠ:Ó+XE›ŠR‡¢€lß}ÄìÊeÈ €€H +`ÊÖC`e©AuX~bygP2(á9ÎRÒg…²ž+(¹‚ +l/ ‡°ÅÔ Þ+eЩ\Òà‘åXžÇ€×¨ä¦M”/¨¥’™poÌÒf=!;%Ä.–àLÌR 4à„6Ì6bÖ €µpªÊðXGÀ4–M1\üÄ® G. $ 4Šûkkl±  +âýû‚„¼Ð'o©z¥â±Lݱ'¦Ñ_ϳpò…RÆ}å +äv—7Lw¥·µu¦P»ÖÖ‰õuš¦¢4Ù—ÔÎÔ‹*Å¥›ÎêMX#I›ãt#³Ó !EQ™ lŠ­qÒP36M–²N.c³û#BXk`¬†uHƒ×âRµ‰oƒÚY/Šz¶‚؃ÜÖ̱b Cù³oþvïÁGœõ1Úe%dË]ÑAR;æ¤V¼2êd§Š±£è+IÝ€Ã2¸ªjŒK¨d]F<˜IYHê”WÆž·½³ûy«{VƲ决Œë’æUܼÔì©cÏ¿x÷;«:ÍWT4ëÉÖ€¹y Ë77*EranÚ¯Á+ã’蟧âµ^ÌZ‡¹hV¶i¾¨—+>ŠÅŠ2””ÖZ°E)#1/m(úRÑ78qpÓÑ,R,òYߧ_ª¨0 Û€ı \¶Êe ¾X€2S×sb¡¨NBjƒdå@ò̽ûh°BA)•Lq(` g€× \¾,£„ I+)S–‡¢¨Á´CESdN ^p(/—s9©\¶ ,.AE ÇÜ\Ž»¿ÆmÁñæ¬eh)` öPà#¤aZb‚®òÒ&a[ Áp °‹‚'"<+ȗĵ‚¸–— ºNëºPâ@—‚fȺ PNÕDeîG§~x¢ë‘÷ãpîEیЄÙLó‰¦õãh/®Ÿ–[–›‚Ô¹˜©®Ë +Y݈k—n:6Y¢[š«1(Õtká'{ÝÁÕ›ÏþÍxù˜`^éHÆTÒ§`þØ©ŒæÛätP¼ØQ™¢Ï9¡/)càJUŸMFϳ—%Ô/£>Å4D©++x®¨ ]wÙ¨«Æ£²nÉ ×hû{Qí\6&¶·ùâÕ¯ÂÆ$|sëeŠô0 ‚ùðg  s²öÅrp)£ªF1ÍRY+eË-À£X<¬hl†QÖm8W O0` +¬Š:¹¼\,e}óŠEr¬PaeI*.Ut`·õuAì|^Y[ÆQ ÈjD² ÄAm‘ dM×2ÿE¥fÙÒP ËÖA3Ãk‚~ƒ×„ó‡ÔÑU=¸T2õ^Ö×yH§ŒŽó‘ +ò‡¦S 'UŸ‚Ty9/ JA©¨€fƒÌzeãö:LSlÊ ‡n¡Ègc$©8[ iU¯j§š1縪,$ãáE«wF2+49±)ë=ÛUkŠ9ÌUEíJJ4žë­L{×´ö¡f5{EóoϦÕÆ~ÕAÓL½Z»ì Ÿ/úÏD»ÏË­vÿ¡¬ÊxxÓ¥ay+/>ñ“SQÃ)IJ7ë,Šº`R³Ü¥vÏœx¿ŒU ÐZtBgä¶UcªhãÌQ’1L¬ µAötl{«Þø…éokÎ"nìãtXÈj0N˜x$=Çuà€8ry‘cªŽ»ó )+ÒNÑ68¾‹” ºo§¤ÃŠãYk£&+Œà'cŠH`Ör|® mÁ¹Á¯• +h³8_Èúå +°d,‚šàÁa­A©Êb?ðv¡_ª€ÖoY +éQ*‚™²JežR®€Yì–+™ÚϺAeàÄ’ÊŸ¸Q ,߆E¿™ +Cø  ~…7RÔÐ80`©¨¢¨—ÏËëë àX&êò !Šd]e2T,‚.Vò`EÞÇBÈ%u$ˆ|;_‚Œ¢!×טJÖ7¾¢h7WaÒ0ÂÊåðO?-‚¥Ar#6Ë~v²òWû$›T2RþHz/IŠ;]ôx0mÊW¥÷®ÒV–÷ÞwU{o¦§Íôøa,00x/¬Ä‚0Z¤ieC dVy „V»Ȭv÷¾½ïž{Þ/Zçä™3ÓÓ••ñý>™“…b¾°µ»pZYmƒ÷&Ø8#$Õhž@³L4VàLƒã'y© Ñ8Œ'½A;‚§ÀÇF_Òj¾L2€Ìœ¬5x¹Ì«5œËcLÚˆMÕ:' w2 ä THpÛÖ¬)YJâ6ü~Ì áB˜%ÈM՘ᕠ‚«‘•˜"8 ÛýZS¡ˆ Åë‚™I«Ú$Ú„0¤Ÿ€XÃý‚ãÂÑ&±YŠÍkÑ^,>Ĭ`DÛFÛù‚ÁM‘ÀZ@ò\Ñ4»a(Ã1 +¼7œ?t[~0?^èt’üIRyQòB¢7‰g¼¨ŠÑn®PË£cÐpÀŒ„3àQ§‡Ðfìg®ÀHŒý6/âDÚ0Á;HX¶ÎœÄ‘ÍF"úÈhиŠDá0èT:Ž‰®ƒÊ‘ m¥ Œg¨ À—ÌIjJr z4<3òùû»ÂOÆǸlø +t HË8€CA'vopa`°Aú‘tz´¡¨OÛ²›ILÍO]5êa®<†SXB·¬æ0\CãM×ÆƱWz…t62âÇ1“¦’A´E˜>ŠHFa™’¢M'#ö‹ßzm +±!ÛMTŒÆÆq^i¡Ž }!¶¡„e2½?úA@Ûkóp/‡ „¶FÄLŽKúÜØxxl,8>TŽÍ«J Ç£áU à0rƒA ù=:áàQ†M@g¾£Æpí—Ðà›T¥…|0$ËZ‰dð4P5„¨ÃM­‹j \éöƒ˜ îßßB6®•rMg"jödµâ¤§h±@²9V¬B& ÈD"½–Ìo`(r6‘[7âóœÒ„Ø@›sæ­ØœžÒŸ&èMÄ@Û~úЖk †¦5¦…[”2À¼ +r¿=¶ }O,0B>ÒRÙYɪxƒœ' {áÖ"H+K•íRë$-×0"f:}œÝ7ƒㅮÙŠYS¢X÷ÒOöØ8•Ý @›š±’JGpRd0dµµòx”qôWZ (ûцÅüȽ ŽŽ±ðËW“‰#Œ›° +82‚ ßòÄ‘¤ È4éÄœf¢ƒÔ`îÓZ>´~`Ny|œ¤©Ö¸@³B!;Œö°uÑ•hDÚÇ…o÷ø8¯_@û®{áÂP(°O/ÜŽD÷-52‚GígUSÇO=€ÇF#^/6~¸)ôÂÉCf6;›ËTÁQ†´!~î£E¦" 7WX„,ip»Ïx†íU•òþÐ +ïójáA;*ÇX.‡†žèd¥±ÁJÙ‘1ÚÙYbƒá‹©ì'VT¥>¿~'À¢1. rtœ¢’¼hÉj-›ššY½ D«ž}`ESTN7¦š½ éÒNg8¾ »Ãé"&(6^ï'sÍä\ÌêÚ¾l¥zÆð}~FƒC1Jr—bKçsÅuðÏããxø'ü¯¢¶ &£½Ü‰d£³ËÈñ‘ÑpÚ=žŽ³B®ÞÙ«OœäÕº&Wº;þˆ<2ÅH*vÚdrz´ ‚eBÒ1 7÷å‰ò#JA¹ÐNPN8¢D-àmãïÝ£cõ áfð`![Q+4›>0‚ŒD §ƒŽì‹NœZòv7<>fŸOxàH[ÀPé`·4¥d»-O@؃ ÏB"呃~•&šR‹„ÈÇå!Ö‘¢ «AÈ@¸1;—[ ˜pT@‹$ûEæÅP¶,ÆZ4²×¦ }då`ú¤/$zÇ)2bBîEïóƒ¸$bñɨQ÷Œc$¦0” A²€œ"StJ’«@w¬P›ä1õIãã_”tÄdGcP;¢PÓô^<»ÈJeÿ¾š³JÑ’i.å&&q: L&¡T¯­_¾ù‰jk ¾—¡2pZ( +¥™†–Ôž•\Ž0Eˆc² ˜ô•0øXž-FÍn ¢B È8eB-ŒG{ 6IÐñrföæ[Þ&¢££7,§L }46µ£€UÓÍ&Dà 7" Ãm83ܸmힺ+LBZgöç¤LøÃ\? Ën¯®_[il‚¦ŒŽ†½^ +â2æá{¡.ä¾ôؼ±gœ#ÁÑÉBU6Y!3îA1'GÆ(PežIóLFKºÞ$‰˜m¶‚!hgd$€G>Ù…:uÜË'ÿNƒ>·y”A¾1S‘3ªRØ߈,"B !ÐAЀ£c$Uª=^y…wlNa0d ©"äø8@VŠƒ¯†¿GÂp×þ$‚ÁÁëª#c$p(#A¸8$q,iel؃ˆ‹Ç Çm/ÄÝ1Ú“6ØŒ!4#¦`¤ bù¼¤Ö Brb#ãºÙ5“ á=Íò9’I2\Ú0›Œ€œ©ÈrT´Ã0(T@-æø´3œ?B%(6dèñÃÉšÞMVݺbq6ëExQˆž€D±YH£$]`Åv„ÌëÆŒnÁ\ùC2ô\!´›ÏiËFV9¨û‚|t, pÖd,9‹w’é>˜p8"t¥À?¡)d¹Íò5šƒ¼iUŽ`†/À£j‚ü+䨶=›,®yД“5> ÕMzJÁ@òH „æÅ¡ ¿36{Œï …ÐÆÈcÈ:2(íO¢Y˜Gäó(ƒ ƒ#ÔH* ÊÂ"FU(=ÈÈc㊨At1W¡÷yD™+Œ’W\¾ í­Ì‰¤ŸBŠ4xã0Ü)UÚòDƒ€–ƒvo Z¤5Jƒç‹ap,¸%Ê’‰#V˜H„°4F-g9•ß±RKXh& 2 +4Š „PÄÕ†/%°˜(ãÓ‚çÅšå.D­)œIA„¯NA‚¦âéÊÆ¢™ÜRì Òb$†‘3¸þ°sÈäSÙCr´Ù@؆Ò&¨$p ”?ÜW$.®F£mÞS>4@$  î—€i1‹31‚Mà$$²$òÕ!TŒná” >-HXq* *Œf‰8ˆ5XM¸£ýhŸg…:NdH"öºÅ~hFzt4ê›à'Ãx‚D¾KJðŒ3H† '†à„Y’ì%áI9¶Žhûƒ¥ÐG"IÀ·ƒó$ÓŠÜ €á§±°iôòHR)‚%#‘X0n†ÙÜâ$ø¢¦v©ôG}^´[òWxÀDyçaFF¡ÐÐPª…_âFe áÀ( ,êõª^/\vÔ2ÛÐA€j"lEBh"Èn>ÒFb¹˜> ast ÑøÊ ð@@Ct ¶ƒÀ¥)Ž+¥€ô{=2|¢Ò~4”ÁøÏØ ]Ô´.´0\ÇfÜø£l4ðŽ'Y¡­óñÔ¦íAƒÖ°!¿¿e1t7Ëf$©*Ém†-€Xx¼"Geã±)(Z-V‰|uÏŠ/~!SѬØ@õŒîªjÏáL:‹ 2ª1Ôcó¼N8.i’ÎHj+Œ;h` ’~šÊ Å‚ßcãÆü!×´|P´$Ë‚ÿÉN (pÆexpVõ0ä»°áñ°~¯, &tF=ˆ  T9¹€Ƹ2²ÚÓôa1§F³X H÷–ðú4ðÉ8TPP‹@þB{§Ã‚j@ÓMQp}>mäåöÜÈ8õ 29¡¥ëóª6D#E\‰ 1‰R^@V'‘¡ÊÈJ+T°°ÊÑÉñ1|²ÛÇR5ø(&ª}p¿AÌF8bƒwm +Oßx8 …vå•>P7Ï8š

0Báx:ÖKaXÆ0º<žÖÕ¤z$lýÝ:ú<  Ç ³X|t”ò¡¤I}ù}Š„VÚ¾¡f^4Ѻ¬úP79á08ÕØ\ä8J½ìó¡É0c~ð{\UÑ{hñI@¦˜ÅäÃD "ɨ‡>„Ú1È\-,qÂh(€tA&ÉÇ%±.*àê©®A/³RžÐT^m j;Œ‹ÀÛ(pZACK 5‚«„ÂÉ^y»?yÄÂçWÉ aZ zjzÐÉÉøЇ&òtœ,òbD©9Š.…0Úyéê…• ÑÀVy ‰kc¨TLï’„FA>z=âÁǼÍ4½oÅæeµ .‹å’,ŸóÐ#HĘ‹Ž°‰–âD,†ÿåÐ,( +,Ç”q,ã÷›P³XØòyYˆfÊàªöW Ñ­1/äA'›…„Ïü©ûpa¼Ç R ¿,àC ãŠyòá‡Lõ‚Ô‚ç¡Æ¡+@,9ÃA“Ƴ P+[¦ð\À¯8<€€Íà/Þq B˜¨ÄyhðÃñ Ÿ? +ú½Ú¨b¦º?‘×Ô.ÈäM¸#8Ð: «] X8¸wt=~ Jo ®J¢}ÝAJdh È4ºÆü[à´–áÞ¨@ˆ)8|¿º?då¦s v!´Ÿ< GÃ΀ |Jrà R†/ƒÏñxH ƒ Eàëö'âÁsÚö€“ó# +T@*‚Xœøƒ&”s hQ3xDcè\°/¨ÃpBCV;éü¦žœÓø¤84å¿Žá©ÀCïø¤PÈÂɸé kííBuŽ¡a}@±Á¾Ò„Ë’ QÈCƒí !Y°j~lI®ÈR‰ò€á},îï;€|°RÐD`*ð„šZƒ<‚ÛAéÆÚJúE£ûb!B;¸2|àÊgœ -ä>¬ý2ÏAGÐ(€¼ú¡¹pΟ ݺ/ëÂØvàJ? ~ôkçù¾%“9& ÖÔ²-„Sø +€Óè( _f Â÷úFÀÉš°(܇cÁp2†{¬z¸Ðn?dù€Ÿe ªÖ’Ôf(‚f4Ð óyå•^ÚpP ”±1€7ÜDBhlt4Ž±pXG”c§è$Z…¡ÜƒÌFc¹Câ«y<"T:\?Ãc2æ ªÐ€€7øtü\¥ntb‰iÝ„Ñ𣶠âg0,†1ÈGà_j‚áÏúBðqÑÏ°<BëX€BÑ,0t™‘PQ@¶ûãó`]Ààp2…Æ?é4Zqˆâd˜ +úèœ<"(,ÇW@¹ Áí@‡B!@h¥¸œfõ”h 'r [Ï‚ðáЙpØx@›“Âq°ÄБ04”Íó94‹§¦L“™ š€‹gAnöçšyˆ?àZý!Z2™T€Ùüà{ãûk¥8Щq8mvÉ€NƒògàO4£7JŒP^в@pä¯ëÀËA!ƒ„A÷Ñ0€ÈXzt$8:àd Ë£;ÕãÎ,ÍØW^9~àJoÀ‹°´ŠéÝŸOïÿ¡þ'oÁÑ‚“:'TÁªc!#£ø³Ÿ@ìàjƒaõ$§Á«û‘˜ª# ÓÈ"Š‚&'–G«Ph. V#\‚ÎíÏ£É;^.ÉFKŒ6¼(Š‚eµ“¤Óp nònM >…‚˜ˆèÈÉãÈçh e‚?ÇåTµ¤F+¢\#è<Ã4U&(Ë°š¦=™ âÐMž€â ÈàÏ›­£‚”ƒ„ŽÖ¸_A·¦ùÁ-  ýZÉÉæ ´lÃGÇÅŽœN¥½AI :ËKU‚IŽŒa=^8dš¤óà– ²`ö Ap à)V—*{‚Ø¡h4‡…ƒ– øÑÔÉþROa­]#2” °õAeù{è¡p‚çêëˆðаÃþb4‚=J{ÆÑjO¸5E­IÑôÑþHfåô1&Á0!¡ ¥&~4 +GFHP±}? Ð}à|Âh”Àc› ¯hÍ=…Z +£¥•ðyè+¯ùÇÇ(``À?x?Š*AþBb,Âhyˆ—×#ì¯6hî‘‚[ÞŸœbÀ«„P…±8ô5PósW\8pE]’°N¤H´z- a„°Cå£üZáHRTšV|*jõ4³iÆ'R|…Wš¢Ú4b“vrÁÍ®bt!‚–@„ \„ÎEs¯8T}'Í¢ˆŽ¨8àST § ¯¡E«É YU«F.+T9¡B£Ió¼¬4jµÝ\~MÑêä@–pNðB`’! ±\b»?ÆC„Úä`dŠ—k¢ÖÔ„5pãûs¾êþJ×"ÉdàÉ´fÝô% QnNÿ>ïy%ˆ“¢Ú” PØQ4h ÌfJZ]Tkpµ1'‚£õ«‚\U…t Lè£å=@:pï2 `·#Šy†-d@ )/„H Ä|h°qDnà¤*ðF2Ð;ŠÞàäbÔî0\VÖêVrRPÑòÇ©eÍéiN?WÙH–¡³4»GIÊåy “¤ 7Lg +*4UXªvöÝTh‚æç­Ä t}{îT{þT®±f¸½xª7˜;<\i8s“«7æë;¬Xçå–îN j›@Ë–,`ªn€Æ3ýda6[~؉eæi¡P©¯>óɯ% + ¾ ‹÷'çÎÆ’Ð_@ŒÇ…u ÞíÃ7²J)Ö5pVÙ…Z÷X£ª?¾1Ø;~úŽ37üƒjw²Å•™Õ«]Zؼº?r~ûòê±ÛgÎ=üäs•Ðo>›¬v·&OvgNM­^Xع±;sdõà™³·ƒ°ç¬¾\îµ2ó‹çÖŽßSŸ¹à$»ÙêP×i>©˜];=—ªn¤*«µ‰½ÆäQ77ìÎ*tÖÍxßIMŠz%–&r3‰ìÌôòåbc‡•ÓŠUIçœUñpr&–žÏ”6'N¶&OÄ3ÝD¦¯;m7;ShläªkµîVoêðÞé[W·/[ªF½Ô>Ô›>>³z¾;u¼Þ;Rhîêö`nîìÂÆ5$ãŠj Ñž¨vwó͹õK+›7\¾í±‰Ù—Ì»Ùe€}ª°j§×…½ÎôÕQ½EÓI^*‰j)_]t2“Ùê²›Nçý]Ý郊¹™¹¨ÕÈ•ýíBmÕŠ5E9jØŸ=cŇ¹Ê2\­j¶òÕ•jo+YZäÔ–“™nO+šY)wÆRýBu~bþD¹½™ÌÏ4[w=øOpª¨ÕœY9·¼{Sé|¥·“-/«F m³½{äÔ½¥ú +ŶÛhOšÛ8·°uarõê¥Ý[Mw2–X£ _@{ϯO¯ß4\º”oη÷rÈTÌÖ[«íþ:N™Â§OÙHÜç3ÅÄ®Vµ;ØΕ!žñÙTõ[X-¶¥K !ÂE4p_¼˜0춛šËU7*½ÝæäéÚðä¾xr&]šOú•Îr±¹–©.%ó“ó3»Ï|âK­É’u“ÙÉùµ[æ×n]»¼°u9]]éö6}øCüóÀ¥L¯œ]>|ëÔÚuíÙ³s›—çÝKÏ]ºæÞ÷~àÉòÐR5³ŸÌ-Wº»3ë¶OÝÙ=¾¸tâƒÏ|º>Ø t†{Õî@nóèmo|ìØÕOfŠ‡æföVÖÏÄó…é©“±dgÕÌëkíÁÞÄÌáÞäæÜòqÍ®"²«7:{õî±RcTÌLöšÝó×Ü{èÔMŒªõ¶*ýÃÙúFñB©¿çæ —/^¸ëÆ»‰e:Þ j8ÀHóNz@;±pmuíª/¼ô­©Å“¦ÝØغtòÚ‡—ŽÜ¶~ôÖãî_ܹͰמ¿ó†›å墓˜„/­w—›[‰Ã“+:³§Œxÿì¹ÛnŸ—¢¥rû`m°—*®dJ«­Á±C'ß3¹v9‘]\Z½(F+ã>8ßp Öõ­Y#jO•ë¥òd§·ÎIi=7šuz™Âò`ጓŠZ©¿xÑLLHQp=Aoz17@¦£Ÿ¯lcT üd6?KöóÇfÖÎfëë˜I¡Òlºõž§ìd³Ü\Zؼ¦7{:^XÒ–ksJ™×jp©Ü<Í»ºSu’.TMj*žTk`œV–O¬mœçÓ<<·qazõÂôÊ™ÙÕ“ƒéíd²ÿðû>ðõïþdûø a"ƉYklŠÍc…&´ù¢ æo»õ½ýÄ õÆX¸öÔUPí™óSk7ÏmÞ&P”Á{]¬v6ƒè™bKŠÖký£ÅÆæä™»ùÄ¡7¥rÃFw'A«EݨÕAnjí#'oß:|Y7ꉃåöŠ ¡(kxz¾Ü:\inÓl2拾Ӭ˜¦‹eQ:‹:S²ZK¦†k‡0Q‰fr•Ù©…['n­ô·!_øCZ ,³¢ËKq'ÑÍW6Jí½Îì±ÅÍK»gïI€`EËÞA3ÞÐÝúî™Vvo®OìÕ:[íáð ÁB¨·­ä'çx)“)/ &æON¯^5\:f¥»œKf{…úRub§3{º>yÜHÌpb.›dòÓ »“HMij‰a\×íugŽ7&ÄóÓ­É£åΖ¬—²¥9ƒj54»£9NÎDH›¢ãçÎÞ‰žîñ° ›rC>G§Qe„'å2ùa«¿ Po\?rGîÚDnsvñR{ö´™´z[—îxR6«²ƒʪ1‘(nµænH—6‚˜!ÈÙZk2T¹µ9X:;³vÝÖÞ›;·Ô»G +µƒ–U=}öö‰éi2róR¸wÅÍ­!Äsó²–=vüºZm‘ƒœhv ÕµDn”+ž]ªvd2SKkçKÍ5€.P®¤$m»Ýêlô†‡äh‘áÒœxÇ’SñÜ’áNë³ÅÅ|a!›™Ô´ÒÔì‰úàˆ™šÖìÞþ°RŠbóQsbyó;9ÓqÐG3>ìÏ\Õ›=Õ›99˜=­ÛýJuñêëå´fu˽#P™«6Nݽ¼}©FQ,\¾å¡¥µãH3ñôª¢WX)¡LÈV¦ÝÕô:8RŨéñ©BãPmâ(,Z¨É¦´h%•îÃ"Nèyj£g¸3‚ÜU¢`izÁ°Âr–›l$ ‰üd¡¹±ÈL ÕÕDfÚ²«ÖÊÆÞuÙú’bÖ£¡;ÝXbÆŠÏ& ë¥Îž¤W@Ž«õöä‘Öä^kú¸ëRbz® o‹Ãçï?rþ¡æä)Ó 9hdsôÔf{½l$¬(j¤9‘Ÿv²“ÉÒ<#g€U¦—ÎAoÊÑJ®¼Ü›= ¬Øèm:‰–¤e"„*ÌðÙ@HJ¤&ûÓ'šƒݹk•5ÈÂ$k[±v½½O/pRL»¤—Y)Ýn÷fŽà¬LÍóbŽá²ÙÌp ¯ˆum·SN£»·¼us¡ºYk® g¥‹ËÐq‰XëÌ™Ûs…^×RåÕJ÷Ø`ñÒüÚñÌ’m³RÁ²çÎÜQ*ÍÐL²ÒX_Ú¸¦7y¬P=X¨nIZ#—›™;ÍrétfzsïΩ¥K™üŠÆâ“r´ wZn¬FÍô”(eÓ…ùDvv8{jéÐõªÞ +‡”˜Y|ð½OÅã=‚Š‹jE·ÚºÕÍ×'.,¼{¥<½¼uj5 Ú¤hƒã$Çq—¡3,ƒÆ6×^S¨o`dj‹`â8)YëFí¡/ Á!kÛ±—FkÛœgÔî(Ñš¡Uv·¯Ï6p΢Å$#dÕv|Úv‡¢”øyÏÆR3z|2S‚ÂYfø2H0†[¢˜‰EYIJ3Nzh$ÉÒJ{êX23™Ë¹~yó¬MóRªPY˜^¸jnåbÅ9=ÖgÄ,´g¥¶ +‚®ê GV¶n™^:øÄÝ[ÇîˆÚåfmêÄ™[+í M¢µtn9_‚Ì^Žà1Y)Sl,‘Õh¡18¼¸uyrá4Ä«#§œ_½T(Ìno];µpF³R´ ç!Ù¤cO+r-‚&45IÉXnu,¿DKU^­A`‡PÍÍ'd­Ü™8‘+!Vuä"Ba•f\Ãh|´Çƒ!–HÏT[ÛÍþáØo1Ç +™ÎÄ‘©…sP¼œPníæ*kèõ)jŽ ¡Íséâ¬jÖDµ¼oþëÉÜR«¿7³pA6Òæ¸T25€Z†zWõ:x˱Լ¢Ô)2.ÊyÝîðJ•WêNr¦?szyóÆ…j]Ђ@HÄ #ŠqD¥äfg‹µ5hÛªÇÜ–Ï/Á¡|€Õ£fS‹¢TR”*…›s“›W_÷ÅÙccáHHظ6)9¤éD0 ëZñ¥ùþÚêQ¿Ÿah+™…3¬¥²ë¥êN©¶…^áÒé)ðQ>? K‚Ñ‚º‹£vÍ·¶¶ÏW&q.*h©xnÂÉô¢1è‘Ü EXÙÌŒ›‚–±b +Ú§l–O RA·Z*j´ì‘c—ë½u'Ý“Ì*§fy)iŪˆ{n“aLǪ¶zíU;Þ¢¸˜?¬ýB¸ËW¥óóP)¦Û«tÏ­£Rm¯8©6Å›SÓk'.ÜbÄÊã>NTZÑØ´“˜5í6´O„tÁ²–ê[Q§„ã¢i[éå3k;×Í®]èMï%2ÙlïâÅ[N_¼Ó’9±µ& {˜Ê.hj¢\:‘OðBz°T{RwgÊ­cõÞ)N.†0Åq«ÙÂŒfà~Á—*jEQ*ŠT¦ˆ˜ßC†4ËزZpâÔÀ]àdL7ÛN|h8í0-Ö— +­ƒ‰â‚¤!4Qt,æ¶;{ý!eµ +Å›+.5;»éìüþ#0"/d*õuŸŸS¢…DfØîéñ –1ÂŒ`QÐAFH’lÂIÏNÌ_˜Y¹z8wU©¾)* ŒLBËÀõ`¸LRº¤äS…ù¥óR¹eE¯ÁÉi>.%Å(jFÕ‰ òÅåbiÍ%e¢Ñ¢×Ïz=(\ùT$¬¡Å„AÙ2jçÏÜRÊt}Z2NrR‰Ö5­!IŽÏ +EºåÒŠ,W”h% +j6•Ê£È?XÞª*sýùµ£WmŸ¹0»uÌÎ7»”ÊMÅb½TjJ’óÁˆDRQQtM«Ou’¹ž•¨Ù©z©9uý-®9_ê̈FV¶Šéb·;»‘jÍ⌿_«Î¤2`ˆUT`p>F¥q°5uÚ-,³JÖ°s¥öŒ[躅–ìäI)&™éx©2X_¯L/ófšWShx\Íc¤îñF"¸ÀÎW–û3'¢NNuÍLŲ-IOnÁÉ4T§˜*tg—7W—;´ä:ÉA<=»ÿœ‚1>Ž{Æ ‹–*K¹"˜(Ÿr¡y0–‡”Ä©EJHqJ2Sîènc5‚7«Ôì +R)T¼ãC誘R¤,˺8a„qb]Ói»ùy^«€ppBüØU×o»˜(vü¦t;9™ÈÎñRÞ㡼^:6Îñé`½ !15$u*[ZI¤g «~üÌåCGÎVºs‚–`"8;ÓUc5œ5ähªÒYSͺ¬×ҠѼT›˜:?¿r½›Ã@KÑò™âŒ«Fí†a·,§i'šÁFcò`2ßÍ—§ •Õr}3“[øÄWFGqI.$xD yÆÉHÈ0V«½U©”•šß/ù¼,ËÅ4«2ê!Ƽ„ÇÇÈZ«T;’/T¤j$l8nÛ´ +õúààæѽ#g¯¹|Û¼ÿ±§ŸþøóŸþÆw¾õÆoýå?þóí{÷åþìÎûÌíÁµù÷×€‰|¦ +^·:ìµçSëó ëÛ‡_¼öòƒ¼ÿî÷=zÓž»ùÖëï¸çÎ÷¾ÿ=÷>òžü¹/}içèU{G/6»‹à8!aÇ›±dGѳ±X±Ý™^^ÝÜÞ=rîš‹·¼ç®÷>þþ|ì£7=ø¾KwÜÏÃO~äÓŸ|éë_ýÚwðåo~çƒýô¡£çÌX‰åœPÎN'ÛùBÏrRùRcva}óðé•­£Ã…åŃ۫»'Ž½æɧþég¯üü7¿}ëÅo|ã¦;ï›[Ü-8®ãa“ÄKò3íöAQL…B’ÍMÏoO̬u‹Í™Zñè™o¹ç½<òøç^|ñþGŸ¸ó¡÷ßóè“n¦V +è «ºZ6ô¦e÷ ³.ˆÉt®S¬ö›áÄÔêêÁ“g¯¹í±|úɧžúæw¿÷Ë×ßøò7¿uùö{V7Nµ;ËQ£BR.AZ@AŠš7 'ŒDtŽKç +óÝÉBmºPž¿îæ~üãO|äÃw¿÷¡ßÿ»î{ßmïyà¡ÇÿñËßþ}ö=÷?xîòšY!ÇTYN9n7“³ÌV¡87òùÁÄ`ýÈÉ«—V–Ï]¼öÚo½åλŸÿÂÿÇ?ýÛ;úã;ï¾þæ›O=ó±fsÎãå¼^ Š.^¬V·BA=hR7ô²$—):AÓŽ$§5[.Nœ¸xùÖ»Ï_Û]<üćž¾êÜ ³+gûÓG ³ŠÖ²^Gåätq÷б«Ï^}ÛM7~ðïéÅ~ùÚ¯ÞúÝo_ýÕ/^ýõÿúÛß~ûûýò¿|íéþØÞ©k[ƒÃ$¢ÉxR¹U(¦ËS!Ž_¸tí ·ÜvûO<ñ¥¯~í+ßüö§¾ðÂ3Ï~ükßúÖ+¿þÍ /}å»ß~ùoûÛ‹_{ùƒÿü™s×ÝQ(ÏÔ›+Só»õ¬V+íµÕ®¿ððCïùÈG>ø©Ï~â›ßýæo¿ýÝW~öå—_þÞOþî»ú?ÿ÷ÿþé?àJ~ÿÝŸüä¡'žš\ØMe@˜¢`f“¥^{r{{ŽcÇOÜvçúðÓϽð™~ö“Oê“ϽøÂ_ùé¯~ýË?üûïþçÿÏ¿}û™þøå›î®ÕçL­¡•tj¶ÖÜbØ$K™I§Ä}âø©»î¾ç‘ÇŸxä©=ü§^üê7~ôóW~òê+úëŸþüÿùëßüö·¿ûÝ‹_þúñS7Uj+Ñh3îNiÑz*?“Ìô‡ƒÕÍÍ#W¹ðà{xü©üȳŸzþ¥—~üê/~ù›7^yýõ_¿õæ»~çý¿ÿÕú£ŸýêsŸÿZµ¹Š¨ ‰ £’Ž(åX³VÚ;rê‡ß÷Àcô³Ïþäµ_¼úú¯¿þýï¼ô¯¾ñö›oþî­Ÿ¿öÊßýãÿ÷þ÷oß~ëSÏ?wý·—*CE¿Í…ÃM›º–k7—–vÎœ¾æ=÷>ôÈãñ+/þô—¿øÎðµï|ëwüÃ_ÿë¿Þ|ûÍ7Þ|íoÿý·Ÿÿú—ï}ô±©Ùíz{Ó‰0 -~öûxMJëj&lu:ËàI¦gVNž½øÀ?<ü™ç>óÊk¿|ë÷¿ÿê·¿ù‹×ý¿þçÞýë_?óÂç}â±;ï¾?™œÐ´¶*Äæ‡K‡7\{æü7_wÿ{nþÀc÷ã«Ÿÿ÷û- ú7õ‹_üðó_øøí·_ÞÞÞ®Ô'R¹I–MQ¤¥ˆq]Ž%íD¯Ö:uôø½÷Üû¾‡ßûÈ£ü£ÏüèÇ?üÁ~ø¥¯¾ôòËßz÷Ïþé/_}þ…Ï}þ‹Ÿ¿ùŽ{nŸLmÚv%—îÖ›3•j¿Xl­-ÚÛÞ=¹·uß­×ÿË—>ÿµ¯½øíï|í7ýÇ¿üõ•_¿þʯ~ùöÛ¿ùÿüËÛÿþö7¾÷õ½ïàÎÑL¡oÚÃ*ØFªÓ语ºxáÒ¹³çΞ:yï]·½øâç^{íg¯¿õ›¾òÊ7¾óõ_¾þ³ýý›o¾õÚoß‚byõ /¾pÛ÷t«Ÿ¸dÜíæ +‹’˜ÓädÆ-÷½ã‡·žü‡‡¾ú¥/¾ü½ï<÷ÅÏýô•Ÿ¼ó§wÿúŸ{퟽óÇß½úÚOŸþãÏ=ÿ©Ó®wSm°C@Vv¬•ÊNd²Ýù¹µÕ¥µsgÎ~ð©Ç?ù©}öùOþ‹Ïýôç?þÿþ¯}ç¯üê•ï}ÿ«ï¾óûßþþí¿ò¥'ŸøÀ`òÍÄ!¸…ƒ2Ñi*¦GËÝöj³>uò؉'ÿñ‰O|öŸþÂó?yõgïüåÝwþú—¿ú“×ß|íwÿýßþð»W~ñ£ßüæ•Ÿ¿òý§>øø­·ßQ*OèF'€VÌ­%õ\º½µqø}½ïË_ùÊO^ùéwðí·ÿõÍwþüΛo¿õ«ß¼þ—¿þ Îóƒ~ãÇ?}ùç¯þð©§>pñúÛ·OÞ¨Û ¯—'0‹À4ŽŽb!N⬙©•k¯¹ôÞ÷=ô¹/~þó/Ao~öÇ?ùÞþ÷þî¿ÿ ”ÝÏ õ©ç>vÓM7Þ9‘JZíÝ„™´§z­~³\]XœÙÜÚXYž=zxåž».>òÈ­wÝyñÆëÏ´šÅxÌE…¦e–ÖÃA!ä±0/2FÖηò­©ÎäÜÔäñ#»ÇŽn\›¹æâîƒ÷_óèûn¾ý¶î¸ëŽ«/_7¿¼’J—L«šÊ‚÷n’¸JªÀF%NãrîÔ¥#GNV Åa­tjwõæë¯zè[ž|òžoý ¿ºyýÕ7û‹g?óôu7œ_XYL$ón¼&AteL–µÌhêÌÉk.]º­?Xh·'–§§öÖ¯;äÙüÃw^þÒëo¼öö¿¾ñï}é+/}ê‹ŸûðÇþéǺéªcG†ÃÅDºãš $HÚö!×p¡H`’£:Í|öäÖÆ£wßü¥çŸ}é+Ÿ{ñ…§öãùÓŸ~ÿÙÏ|èŽË§ÎYŸž4›]ž×"aN–p°œ‡$:ª¨g…‰ÖpwõàmWŸ~êñû?ñÏýËKϾöÚþíoýù/xõg_ýØ3ßzËÙ~·Á±*ËÄD!¥AK”ý^F í¬[Ï»åå¹ÅCk.œ¹ùÆëîºíÆî¾å…Ï<óío½ô…ç?ñܳúäGûâs}ì¾Û¯>q¬ZêHrŒ TŠÒyÎUÔL¹<w+£å“Åã;Gï½û=Ï~ôÃÿô÷ß{ÇíÏ|àñ~ÿå—¿ýÒûï¿þÃßõÌc÷ßpéì±ÍÙÁL¥259{<™ú|\À/qlš$t,ij¤RÍ5OlïÞ{ûM_xáS/¾ô¹gþ鱧žxð¹gŸþá÷ðÉ~ô¾ÛnÝ;´Ýiu5ÙáX'¬HHŽiŠXJ¹¨ëV‹ÅÁäpeumGŽš4ÞR%Hdž6!‰Hc£ŸaIKàb ©K¬-£CWe3›ª&ãE†äh’a(^• E±£v§@ˆÇ" +‡žSpCïñBªeyÆ  …£uË’Ò4'f8Ã’\ÉfšµòâÜÌ©«ÎnnoåóyèÇP˜ „X`•1L…•pD6ŒB"ÑPÕÏ[QÕ͸iˆ£7^ÉgKùB£Ù™_\M%RÅtf¦ßïU+ ÍâHR3ÇÅ%—ÌNIjqd4 n'f5-­œ4sÕV+_*ÅÝ‚ß;¸9Û¯µË™¹a¿khª£©II*2´ +A?ð‘~/îóR“•"l½Ö®Î—3ÍV¾vÏm7_8y´[ÊÍ÷:ýZcuj°6Ù© )Œù½ãxÐφÇÇ°€Ÿî¢I[æSŽYICÌÊVŠùš¡Å‚1U§l$¬|½Øš,-¨^JFFbHXöø_ÄÇ4›¶ÝP”Mi •›Î¤»PÔF´ÜŸ8¼¾uyaé¬mfYœH™v9Upõ8Ïaò€"ÃjNLŸÅ§éÊÿÇ F”çÒ8¦I¬£ vÆÉ”ÓÅB*[ÉÕÁ¾kŒ óZL/ºV-é6SÉ ƒJ±R™¡awF® T¼^2hBÅ\4ZiÖNœ½§- oYTµZTo@®„ AÚÐ,ÆÊÆÆBpx¼¤ßDZ”%‹Y7Ö5ŒzT)Hr½H*,ÃÅÆ): m®JEŽ‰û4†K8©ƒ±X‹$”HDä¼bVÍXö«$)R¤( &Çê’äV™æÈþ¼ƒRA÷àu)*Æq ^p%9Á”pX&I#ä0LŒDs!#›FM–óªVfÙXÌÊéFrÜôŒánËRd]RjnjQË>˜"£~í÷X€ +û‰°g9nWu5!r†ÈÅ1Ì‚ôÊ´<Ò96EâFÐÇEГJz0làT"ŒY q¢˜¬×¦O;_Î7B¾°ÎÛ†˜ÖŤ·5†ù¼ Ϥ}^úÀ•^¯‡äÙD(¤À%OP\ +ÈOO1L ®*æ¶ËÕ5×í¥b ‰q(\¥0yajW•’@wp*V¬ +ZGÕ»–Ýá„ FZTôþËoíØ0–Z(Tw+ÍíÁÜ7=€Æéò4CY#~ôF Ëu&æÎOLžÄÒØ(á÷õÒÇ&FÇèÍpXeé¸muJåÕ\v!”½cOhê¡ DâEÆY.©¾ÎMÌŒÓ/îõa>?î÷äV1¯¢ëQ̲à…5½¢¨†I²\FDËÚc4›Æ©ØÈH`l, _ È›Òä’¦U~ÍÚz»wxÜCy<8tº¤–¬Ø”a÷á´4eëJj¢¿¦DK^/åó‘MQV¾´Ï.˜±ž¢ä …N"U#H > +aÆI:£›•úq:ÂÇ8éœ*–APG1qÝlz;€^Œ&•±¬ É0qh1 3>çÆû¢šóúH‚pl{‰õD©HÐ)A®‡"–Ï/üÂaq=¹ú¨€ +9K@¹1t H21ì¿îÇm’Lá8zç€(): +‚UpI:ŽÞ¤ç“|Á(´U2=™/Ï2œ wê÷R›Ž„Çгê<„w’ˆ¥ãó‘ôùX8~| %ha´À€ÏÅ“ó‰Ì +N8Š’v“=A)¶Ã~ɃַÓ<ï6¶T9ã󲘖µ&FÄØAo‹ª8‰936$©8Ï' ¤t†§²¥uŽ/òb)±¼^Ú1*³3W±tbt$‹9I*éjŵ› ÷>z „ùµ¥S‚õù%AÌÓ\Fʶ3Uªnëz7à“‚~‘¡( ¯‡ ]óšÑÓŒ ÛÑ¢Mô +JÚ6̬bæ¼~:RÑ[@õ–鱗sýéãÅÚ’¬å5³®h5'1´Ó¢ZÇétxÿùV(vœØÆŒ¸,Çei&aèu+Ö÷дÉIY;9%Dk!Ü€²íÍ­³ºÓöA’ËÔ‰ k0L}sûÙÜ1üZd]Y-ŒŽQû Ee\w˜IOEõŠa6pÒòúùPDÅ“ŠðÕÍÞ‘ÅC×+QÀ˜9œÚmõÓt½^!à—I”„(¦gœÄl¾´–-­1|=~EÄ4§W럘Z¾`Ø- +Qn@›Ëj9QpL ¤ýý\Ðw¸¾ „0Á –IФƒ…ÁHþ€BPñÍC×;VõÀ ×Ë‹:ÖPàʇ¢T ³Yk4Œj*ÙI¤§h65Zvr:êô©ˆQ.FÄàjÁ5í?„S´z2=£HE0Šn¢N³6CÛ’˜\…CÍ$1ö‰³¢ZVH0Tq0(‚{øyY*(j)–ö/°jÙ@oÉ’dX¼À#lPÜ& ¥ÍÁÇÆi€»¢øÿ“ôÞ_r\÷½à_`“§su圫ºª«sÎqzzzrŽ̃0ˆDDA‚Å$‰¤D‰¢(Ù²‚%[ÁA–¬Uò“½Ï–ÃzýÖöóžõzyoÏþ¶ß‚Îé3gf€é®º÷ûý„º÷~¿%Ij€>‘”º(W>‡Ó Ṽ¸ ¹…§^,Hz-à%.vïî늚ÐÃD:f™$EEAkùý‚Àgx>EÓ\L2;—©®ËÑŽ•žãåIÇ#V‹ œ±Q|r‚ #6IfD¡)KÝ`О˜H<‹õ@ù€–†û ‡áò(ª‰öÓÙe°“`[ÜÓd"ŠDÜCa9¶%µæ$ i)m˜I7ìñ‘>¿àÁÜ…W -?¢ðj‰Ò!²Rsjt:–ZèL_èÌ^I–V!N÷£©išL41Bܤà=õmIuëä`¨Å¸£—P”R©¶KÏäó³'×sZ×óåînsp¾5w¾ÐÚÍT·±Èð‰~wý{øço½ ËnJRIVÉôF¾´Ï‹5]o¸IŠ;îA`"+(]=º˜ÌŸiôž‹¦—ð›¸nY z²(“Ô +h6†ÏÑ^­¶zÿÁÛókÏùƒà}JvjÞL,ˆfψÎGã+ L‚ˆÆù§Ut¢î‡`ÄïqK !-ì+Jb{r’c¨˜iT9± ªu5Ò®4w³å ŒŒ‚€Š¤g’]§µDa%×:d”š ÕUs +ô›×K¹k…vþÐIÌ'S‹*Ãn9w >Àë«RÄ +/–YÁ-hÃÉUÉèðjÙó´>A¥àŽ4£µ³3;¡A<XÉH… ØØ8>2’ļ(¤á=“8ÇDS™^,3ÍHyÓésR…ã «Ãr·’•[57…bÎÓj¦×-"—Ô”j63¼€„T5|Àã£8CgH*Ãp9€}À4 •`Hyæ™ñ·Òˆ«Œ(­÷„s:àËGF<0…“âÌ'âà•¢‰…ÚÔq$6M¤HSvµX/–[T"]PƒúÆk/0³z úÌ +&%lÈjÕ°:ºÙñøØ %ɸ? ŒÓ!D¡î¤™Òzª¸BsQÝÌקwÝÍÆjÁ=kïçÊëí©ƒ¹¥“3Çx9Æ%Ëj¹uSå*\ +aC9v¼/,ùmlœtâK­™+íù“X~…Ja2D‹JùÒŠbÖi!ËŠYAùÚУ-àq#ފ禚½x~@’z«³=·ñ|­‰W[¢Ö†—7 ö§vƒS±­­“…Åó㢔É××˽ÃÊôùÙµÛoëG B6*ëE’‹ƒŠÞ$Ù‚×-|¡x}œ{<|œ@ ~+rpbtF0:‰êž•ÝÀè,FšºYÕ2à+ä$µ¤Ù­\uÝt: a[Àšy<\ÐÝáÀ…Ã6Æ'HܱîÄ‚à©iXÞŠœô#Vh¾¤EúÕÎùlq×ë“GFÂžà„ +Ig%¹‚»R9Áp*U@B†Ix&ÝÕL·bæ.ËóEËî‚}æ™±Éq|b EÊÀYð8ñ,Çi*á÷GË^Ïqy Ÿ•J¦´š.®ÍÍ¿øè ÑD—“r…Æéx&®Ó>?=¸˜«íxu|œ`ؼ‰Ge©ÌpY7œ& ¤s¹Ò"ÉÄá~%)gD;vr*¯›±]¯ÌÎìßõÃ`X…!J7Jn⯕Z{Åæž“^@qSU’:/X{†¤â`‰ÌêêþƒÎÂ¥0õyYŠ‰QÓãÇ=4€Œ¤·3åÓ«;/8‰éh¼—)/lt܃ã”mÅ»K;ÏÝ{õ½«÷Þî-]´B6Q;sö¶î´Æ<,Î$S…ÅtiEÔ»™âz~_A#W9cÇi¶ ¨-IkÃ:n¹ºÖèìÂU‰®š -ÒÔ’'¨„Âúô¹|m9D¨v¼Ý[“λ•½ Õ½£+o>üô×çö^V¢s8“€©á˜l®°æq뼑˜['ÐöU‚J˜Ñ¾[À­È-`˜Êa<Š3iÕjG“óÙê†m¶º«G—îV“bc©QB–ó‚V,Ö×Î]}’)κGp«Ù?Õ¬Ž×¯zý"Šê¹ôÌTï Ð"Ž;¬Tää+•õ謟IW–ûËo>z¿·x<2Fcd<¨f—æ²à¡FGY€M)ÉrîÙS>o@R­A,½­YÝš9^›a]¨Äk÷èÞõ‡ïnŸ0X»a§êGÇÁûp÷^ú(_^©‰aqÓî¡X‚劙Â*x[È#$$ +EÊ€m|<à8ÃH '¿“(ì¤ò[$‘ #–®·°°=2ä%ŸA¥ÁK‚(òûÝ@½Á.¨Y¸6÷f‰Ć_Plwc0„–b7)w‹ZV6z‚8V¥G`c …"Bñ CWà…á9ŒÈÌú|B­¼–)ܪz8xaQ©—[ûÍÁq¾±j›…›7^_Þ8 áZ2¿¸²{~ãnµs4Xº6³z]µ;ã“´iƒÕÅ€p1†”bËŠÖƒxµò€°ÛûƉØmFÈlšK“•4÷t$+å9©`Ǧ9!-K©æÔvgî¨5w®Ø\]Ù¼:»|Q4ìX·1uÐìíwçΘə žpË>ä˜ÝÍVÇ&èÑ1R*º=£™S —D¹€ (4»%(IN,ÅÒ‹½¥«µ©óÉÜ¢®¯¾ùþ'À›0†8a+F¯Ò:8{éÕë/~Ð]º ¡ë‰ñÌT$Ñ¡æÓfCÔ„WÀpŒ ŠEƒAIò¨[—˜ +„LAi%ó«g.=|ùí¯]{鋉òæ¤_ᥠEÀL‹‘DF–¢Ôƒ3<‚4YñEÆ­ ¯‚ ‚¹²Ö@´S ÀÌüAo°—ÊÍFS‹œÒ¡Å ++UJ¦nâtÆã•MgV1nu ™n}ûÅÌby «CÏŽzf<#à‚žÔ&JĆG9ÈW5>æ>óye¿_ó4ðP8sËh“±lu%\v†¤¢“^n!QØ6+ªÕO–·!€m÷9U‹âòpw ù*ý>Ñï“Bl {Ð/ƒ.…PZ–P´¬¶ß-W…ÀDLú¸N**nËŒZ,Þlvv"VS2³Ë'ó›×êÓ§Xƒâã„qA ]¯Q„ðó  Uc6[<[kŸÌ®ÜÅÜâÏǦ"ÑH#_@{Ë`ôL»êW ÝéÝV{‹¡-S ¥…µÓwÎ]{ýøÚ“ûO>ª÷e¹úüåG¯¾þ¾¤åQÂB©$–!·Ñ9Y\}'²§†Ã#€!TÚtftHd<Ùí™`Alƒ º=-Ò1ì®êŽM“TB–ò…òÒ`û#•‚A£\Ùmu.eó« +'K[×x¥äH³ôø­/±éÑQ&„Ø‚ š¼Ïðå@H©ôaÇzàà¼~N”Jñôbª°Ò›?ºtëÉƙۼV³¬Îå+Á÷Ý°ºÉÌb6¿–ÎmRÛí‡åeX&B xmdôs$SÚ¨÷Ó¥5Ph8a&’]@ðúy-H‚ O›w³—h¡xj#±ØÅçÞ`¤ 0|q4¥3ùò™BåpÄ}Æå øiš‰Œ¢O›»É!pë\ÙtD¥Ÿè$0L›ìõð(£9ð³Í¥íë'÷Þ Âñi ¨»{M·;ºÓ·Ò«vvƒäs+—9¬·&΋Y©H U&TÁû{GF‚ÃÃÁq·Ú9ý´d™ +'ñHÀÏJRA³š‰Ü\¢°Xéž±3à…c‰i;^£8ƒáM†³%)+ÊyÃl9Î,²6 rt'">? Uà³4ã–ø ‡mžÍƒ³OÉBTO ¬‰I¨YËéì¢a5 I#-N!Qî·æÏ̬\*×Ö‹ÅåíëÅÚÍÅD?_Û“ÌN,³”­ìêöB8œBјªVD)âÊÞÐÃ?–΀¿`ÙGA]ŒùO {Dµì^,±\ª¬žy4˜¡—v÷Ÿ·S€/@Džî`Ùœ›®´¶G'Øñ1Zä+€Š?<ŠÀË©‰öpõ°©Ç0ñ@@!ÄtÄÝšïL[X¹žKVò­©–ˆ‚Šw’›|ZÜÛëaX6æ÷³e…†Í[N_‹‰vy¥"hÕNÿ@” ¼lOm7¦OÃop6Ä"!ÔP´z4Ž{Û-4ÐlGËvl9UXWô¶Çk@ìy=\·µ¶0Ú-7NCÔ©ÊVµ{N‹L `v¤žÏO!CÏú @8ñž¢!|.2á%JA)²| +|Y¦²“*n·W3å36…઩µº‡šÙÀˆ˜?Óêw›å1““ÔÄ9>Aü¶/Ão«áQD;4æÄ#Õå•óçåL{þÜñÍw.Üùlw嚟eø”¥ç֗ά¬\QõZ‘ýA uW£qì:ëmh9MÉa!ÈTK{}ÆÓ&}îš=: +ØHŠ‚»‘ä¦(ÖÁG„qCS©µù•ýõÓW·îîÞ>¸øâüÚ•lc‡`ãÕÊÂé½ë‚” …%I-ªz›åëª>ã©PÈ.séhØÆñ$ŽÆB ±YಒZ愸¦ç1 éÅfH6#ê5Ón4šë—®¼¬Y)€³à„¼jTã‰yÃè²\ÄpÌiVË+^·vÈã‘°-+uA* b‘"˪ê¿‚ŽKžÊ­uz‹wÂ÷ûÝîæÖÞß—ÃPƒp·â°(¢ð|‚ÄrmQRrbxn²ÑH”Ö[K׶μ”Hö·7/üñÿÒ‰÷'=*Ë7ÀS«[7î}æêÏ)‘é¡a²F’Jð)VcnAÎë55}:hz k œ~!½~ÁÇ<Ò¸ÛÈC7­Ž¤æ}L´×KON“îÞ3w·sï'(6/éàŒj`¸òÕµX~6QX*¶÷£ÙeÙî‚BîtÏìì¿dØ-[‚Û-~³9‚ˆ#!XÒ­Lî6GcÝ{šH@#QÓ±ËÝþ†kÖ[k+û7òå|c-^\åõÁ¤£‘êÞÖÕõÍ{øÓ& @Ó)Qª²|VQÊ4“Tä\¡0KQxmЃ«ñBƒá +ާşÝYð0ã@+OWÃe$l±BJÒ‹0¿æÚ‡}û[?øÙÜê1ü`3ž]莪Íí™ÞÁÊÒ‘iæM£¤5U«éf‡¢ ^:2ì¶XE!´ü>aÂ]ÃBF†ã¸g‚$q;i÷¦V6.{ü¨ÔmÌgËf-SÜÈ•·õH‹¤ì^o§R[ ¹UúE’Eê.1ÏgûåâÜØHx|'‰ø; 5'&¿rJçùŒmA`¸é´¢•ã™n·D¹$HU€îÞÔö`öÀãáá2X&Lô‹XXe¨(†jñD›<ÂQÐs³ÒZ[ÛºxpñŽáTx1MN›N{}çêÔàAÅPL1ŒÌææ¥\nþ +t(qŸ%¢ ŽÍ ˆ©ãcØ„[(Ï-ö÷81Ž$ˆÅû©Ì|2=•ÌîÞóí©}œuÄH½Ò;nÏ]M×M«½²~¥ÖX˜‚I¤æ‰9Y*9z}ìØXøÙg</£.&xÇÆð0b ¨zÉ뮘H4™ð¹^5Æ€O3 Š•HÄ]½‚ëa¨¸¡•Ün#Ài( ‘¸Eî÷äæ÷’ iû|ìÄØ rBS²à(rŠçS±ÄÔ>sæÜýbdJ’ªÀéÙâ:(X +WxÖzZù™¤¨„û8”/‹|ÉŽ‚Oy'iEŠ;VÎ3ÏzBa—æ@ùŒ»°ˆIÉÀ;c£ˆÇC‚P”GBtÖu[I’IpR R¯PÛ4íâÁñíå­çj­Þàpiû¹þÊI²°Ì‹Ù\~ GJOwæè0#ÃîŽ# +w+ƒ™&Ø–|½¹‡Ññq I,ŸÎVVö/>¼xû­îÌáÝ»oÜüA4Õ'™Íæ(&#©u'¹Xë^î­ÜµÓó‚˜n¶NÛ‘XW5› ¤=^·¾±aôÁ}œœ +ŒŒS´Pôi’->-Ó§ð\.[\e¸èÉtvúèøö»ï嵇™Új$9äòöþ½õÓÏ«V£ Ëéõg+µ5Ûnær=EIÂt€óeØ è¯Ïí1êvÏ ™nõŒ¡1<ä¢VÀÇ©JÉŒôX¾BRÇ©ml]He:Œà8™þüöó/N-]®ô.(ÖT ¨Ò³Wn¾F°Ö„‡º›“Áæ»ô¼<251¿8w°³wsh(0tÊï$‰ `@H* ØU­,míÞ/ŒbÃA:'X6Abf$¨ž˜¨¬äü>ÖçswÎLŽ“ð)HHAulÔ¡’ $À A¤˳«;—×Où•zû4 • fW¶®³lÖïWÜúÿÞçÃhTÒš,—†œ B܆C +MF)ô :>Š‚ øÄ©g'O=;þì3ãÃC^ˆjàhMÊñ´]¯-%Á8x)]Í…Â/ååHËN€Ò^oNÝÓ«ƒí?þ³_\¸ žQ5êéâb,=7nFçh! ++ßX#¢£#¾‰q¿ßGø¼ !¨JP³²’–”,AÆ©IL5¦¶zsg*Õ…¼rçáv²Åˆ…Tn3™^«·Ï­ï?š_½1³p)JŧÎÝV"© ÖÒAñ ð”nöd­ +[^¿¦ Ê„Op‘`‘ÀgÅ’Ëv|ÌÚ¹Ãç§gvU³d'§sÕFïÂÂúíà ¯^{øa½Ðìl\|îÅhzÞrÚºÙàø,øbPÅ€‡ºÖ …U×͸0j«Ê”i΀ÁÇ0Çëqk2 \~r@& "ESnýÌ°á.I…ˆÓâ• +$`¬Âx\5[+×sg!6ªõ9šJJʶêwµ`0â÷©!¿ÉñFe­7uzøéC$×@àT‚SªœRÔëÏìÏÍJr^(«¦USÔ"Ç%ôˆ[‰¦bÕâ,Ì£×Kz& ˆ( +‡D°‘ â§Ó»’N¹çqDÖéÍî^ºwxù±^¦ù2Š'77¯üÑRÌöA@z=,Ǧ©®(IiC*È ]+NÏ;±–ÏKA8yÆÈ€—Å…k¦še €]àrãn•Ýáap6ƒ^C"@ý‰øÔÃÇŸñ8Šq89§X­hv>SYÏ•æזμûÞ×zƒ= úf÷ Ðb<³¡ÅÉ@^ !„˜YùÔ¿«ØµgŸž NÀyy`‘‹O7æOž{A·«aPJQÐòÑd']´gwÊUFLƳ3¥æž¢7m§oǼ\0" Y©:ÑéZs]¤“ù¦b6!H§lo@ç˲yEmÃ%èô„OAAt!¸£[SœXÄÜÞÎõ^G·ª±Ì\µ{Ø[¼¼¾wçÂÕdz'ñÜìâò¹¯|ëOŒØ¨#€2I­:ɾiÏ*ê´fôpÒÖôr£}ZVËîS¿þÛŠ ð¢é/TÆÝålzt, 1 ip¢ÚHæV[ÓçµÌKf0³_ª¬qBvª¿;3F—ÖH:H‘‹^jÞ6²`ñIÀòc£”iÖ5½à›äÔHwjéj¡¹g:S( cV³½é$åPLÚ‰Ïd‹+ÑØ@‘£Q~Ç2Ñ€Ÿó» mÑ0¢{Üíûôäp¥ªàÍÔÔâÖõ­Ãû»‡Î?<8~aÐ_áh°¥–Iº{;CnÏ&ŠJ»»5¨xÔîK«Q«æ÷Ð8¢Q˜ð°$jP˜ò³“ã8ËägÊc#n©!4è“}^Ð'®²\ŽÇši2lŒ¤-IÉ'òs³«—öïí?œÝ¾N°.äÎ._–Ì:™ÂåH:ÍòyAÈ€>Ìí‚s<õì„’ Í€n“ª…æþù뜖 +á‘x~Ùp:ðÎÍùsÙöi^«(JöÊÉýýë ¬pp£KÌÏ/^Z[.‘š—µj«:óù/|Òž9ûÌ3ÞI$Áb±øL³}hFg°¾·;šì"–!ÝšuŠQOd•ÊÂöö…Åõ‹aÒMÒ®k(‘bµµ~tòÒ•{Ÿá ý•Bc‡Š(%èdÃîºv¶°’+­ ¨22Š²l:j»žGÁ 5:Æ3HXúƒ,AÚVl(n›û¥Ö>¸æ|ºÿö;Ÿ\¼þ$TÌh#žØééô·QÌDES«ÝÞy^(3îój÷Ù 0<&ðd$25;³÷àáÛ¼X%©[mÙl‡É èÌ\egóð%+Þ^Z>{÷…w:Óû în ;ná}"FÓîz_8$²” BÚpKdŽÑ^¿Š`±ˆ3_©ï%SÝÁìé­³wÏß|ýüÍ×ö/½`%zAÔ¤l¥±Ùœ…ÐÍ2¸]ŠN¤ ÔÞIÁï•ü`ª”]0õÚ©g&ÇFá t׋…`”¡Êóù݃۠ö;¿ã£A'«z×r0_§N! ˆâ:Fê WíjeêôâÞíÎÂUÉêK‘Z<7_îì‘t¶{ÉìJ<»”ʯëNg¢^· jÀ'!Ù;É*„ 0ÜD +Ö|!Q³*z¼F‰N²8;·y½ÔÚ)56[Óµ6˜©"ègÌ=ÀRÁ}Ó šIðbZVsÝÎê[/Û±öðŸ¢ÓjÉjŧUû$Oçf99âñ‚€br½Ñ "°\èîíïÍna„^¨m¬ìÝ?¸øÚés/έ^è/Å2ýT¼ýá'ßyôÎWÝæbD¬Ñ=\ÝzP®•«ç"Ñ~(¬OLâ©dKVò0GCÃn‘ç‰I5rH¦ÊÌݺ÷äÁãwÁ´züb50:)õFg§Õ=ªv/’B¢.SY¬&˜8ÍfI:Æ{­îà¢iNúxœtÀ?Uq&Ä0 HVš¶rÅU€*µRs§3s¼}æöâúÐœšš¾çñw~ð£NoÍã•x¾ (*Š5œˆÃ´ú²$æi:6.;$IOÇJPªåöÁÆáK…òÊÎÆÑ—?þýõí“ÕÓ7·/¾Ü]½ÑYººvðp÷ìýs·ËÍÍjmù‡þ—o¼óe’ˆjYÓš€`<“ŠZmS­‡C‘¡!+¡Ñ×/ŸzÆ32„¸FKi‘ž¢7 +ÅeͨðrQµ:’ÙR힟 „Y/dŠsþ¾fU‹Í­é•Ë˧o/ïߟݾ“oè±~*1¸ròÊÁù8¹ÀK•bc7[ÙV"‹¢<ƒ Îä$6Êçƒ|áÆŸncC`Öè88¾tq!Uš­¶–öÎß=}|ïäÖ+k§¯—Ú»¼V'èQ*b˜pH8"JµÖÔ¹þÜåTn™“@¢K(𪃱‚d¤-•v$º’Ên(F fÖh6æ>?Ë IÝjf +óåú2|5íÇ9åÆz»Ðêí&³ ¹ÊZ¾ºjXõd¼yþ­µÝcœŒ$Òs…új"7cD»‚R÷5H U/ß)—¿<A(šA±L(Íåçnß}m0wzb‚dù¬^H•7{ —o>øÜËo}}åôC’ÉuËOîIJb,_Úœ^¸µ°þBµ}ÅŠõØŽ¡úõçÕÛîæIÜ4F$À¡§ŠkµÞX•n{}n~ðœfR‚Z‘ôz¡´<·z¥>u˜L÷6 …nVÇÝî½Ää$GsÍœ²ì~(dx½œjT+íÓ’Z5Î +i^Éa„iš•ruIÕó3KŽo¼ÑèfËK²^‚+äØDÔi]¸úò;ŸÿÆêæU0Vf¤ÏóÅPPE‚œgu Úr¶3ñÌ3£#èäã÷€e°Y¡×¢VĨ“L²6}¸wòäÂíÏάÝëQkïìÜ¿qïÝ…¥ó·¼µ´s%][˜Y¿ Š)QÙvR@1·¯?ÿöüÚeÅlØñÙrk'_ÙÐyœÊü¶ÛÂèH˜"’´‚îNZŽ¤c‚R”´r<7—ÌŽîÜxáÍD±_l­t »Ïd«Û©‹ƒ¥ç Õ”Œà¤)ë5V*v7ŸS­ÙHbYÔ:•AÜu7žf“´PbNçÝR´\Öï¶6HD¬:î>Yež<ŸéÎ^š[{®ØÜ㤲¢æ{³ûÙÒ€æœdaiiçÖåçßÞ¿ôJª¼bÆgŠbluýD·òcŠz™•J.l +i–Š•‹³±X tcЭŠï6gÀDÂv"5¨ÔVÑ=•@Q ØªYÕÌr¥µ¶¼s-[]Ç)gãüo~ÞqÊ4ít¦/¶û—ʵÝh|Áç>Ÿ¡ÀâݾùJ§»=æ6™uk¨êV/SÜlö/T:<—xpïÕë·x¼äZ¾º³°uçú \¼ó^¢¸… 6Eš_ùäûûW}Aõ·FL{.žÞàøòØŽ†Õ©Þ^©±=1É ˆáî~I«ÆR vb ËÙ;Þxü©/ÄãS(Q´š“œ-V7¶Ïܺõðsý…˼TcÙœªµnóèгÏNÂmz&y@Wš)ÖЩŠ(Ùô,Øɉ1°ŠÅýƒgs ë`ôt»Umï5{G¬TÓR§vjþ(ãÒÉýWßú°=Øfú'7?}ÿÉ'{^_ݺ÷úÛß\Ù¹kXr~éðüK±Ì”7 Ôš$$аäw»é)§ÑŸ>-I™`PĈˆ¬WòíjÿpiûÆìÆåH¼±±wyzù8ßÚÎ5wìÌ¢irjI‰¶òõM;3Ó6%f0¸;»Ÿ®íãbÍ8›Íf<·D 9Ѭ +f‹ª¢Rc…Ë»ö6R õ.FqüÚþ‹k/ö—Ÿ«÷sÕ ˜úD²½{|/–$ ó+g^È·ÏèñiͪƒcÝÜ:!(Ýà³Åu3:-ùˆÕ°h ±lÌŽ¶±têThÔ]›SE9Sªm›vA"~¯sÚK†B\½½~÷á;÷^|{m÷Z.?±j"¸&K9p[ãn/`žå’•úz¥²’Jõ}>vx8®ÃÜ&4¥,Í:,©U–G@Û/í\?}òhvíRª°Ls¥pØ…ħßùÜòÊ9_P›˜äÜÂ2n{÷ È9Š´jõe3R}öøP†ÎhFS5;jdÊ]Uw¯M©ÕæZ{æpjî°5½›.ÌEìz£µ¹uîÎÆÁ•©¹Ýli)‘$é€çu¢ÍþàŒnÖÜ­,b^à3…Ðr+„ø^R>í÷1  £ñ©¥Í—nfçÜ ýÅsë+û?ùóŸ=xù-3Ñfæ+ÝséÒf©¹¿~úþÕ;ï¬ìÞlõö½ñ¡ï±h,·T™:Ûè_9sòΙ«oÎo?ßíî}û~öá×~&cÞ€þ´GžŽ3-:“Ê­5šëwï½¼{ô|wéxvóÊÔÒùLmyfåxiãÊ¥ë¯Þ}õs¹ÊJ£³}ûá{/¿ùåsWO/]Žgç¥,HUEïÀFÒ<Œ?ÊÈJ=b·y± ¨õ bKrÃ5_€À]Q×Ò¬Ž¢ÖH2ô¤Ź¥ó†]Mg[ÍÖB¾¼‰ÍsRe‹,“çõÛ.Ò(jT"PÆÆÀJ Â1èže,—àø¤j”H TÙ„‡ +!ö ó®jF.–èôç–7¯›Vƒf£(ážéxºãŽBÜUQžÏFœ) ·ƒÉïiý>ÉçåÂàû°Hµ³³¼uujî\,½@qYŸ_4µR<Ö%IÂŒ$“`÷"f“cS!ˆO&ñÛSZá >2„Ÿ +àG7iÂ]Ac˜øг¾€÷LÒn{ÄÑðÓ%Þïe$)M3dJ*¿˜.®Ë¢/ÎVškÁA¹½MôUµÎ1W™—4G Ã.(z1S\/Ô÷ÀëÜ ®–®ÕU­üôŒ-åž É4úE¸Ùñ±0ašŽÒŒ£¥D~¡ÞÞ]X¹°µuîÖÝ—V6ÚýÓ‡—_ÝW©oKJA Ð ë·Ú³gXW“h”0Bf„(NéaT`9KTÒ’Z”õ¢a×D% ’–Û:s£R_í'k5 5>ˆ©(u4¬{<4€„‚霔1ãƒRãP1:¼“…¤,ºÖÒ0k¿21Îp\2b7E¹ø2‹1Œú¼"è"6¨¸åõ° «Ý~™¥ãð£g’ܟ䨚'å!eÇ[åæ:NÆ3ñr&7%©éX²cÇgL»o;ÓÙÜb:?'ÊQMsÌh‘áœH´k§4» 4Äó…¸3H¥f¼& ̇A“ˆc£ÈÓšBŽZàûÂ嬠ÚS{gÎÝ;:yP›Z—´T,ÙXÚ8Éú¥J?“Ÿä,¡aÔM³áÄ:ÂùòB­½¡™%N.´Cq1#Rp¢•Bi6žî¸E ko³óË»Ó;™DeÐ<~üdqã´e—æ¯?xýþkï¾üö¾ùþýO½}|ãÁÊÆþÃG¯\¾ñxaéÂs·ßšß¼½¸uokÿþâÚe0­ —HÆš¯¾õñÒöåÑqrÒÃðbV´³µƒÎì‰ gT9õé·>°í¤0éÄÀ8·÷·Ï>:{õíùí»²’¹|éö[ï~ÔìS|V‰th©ÊÊ­é¹+篽Û”}÷î«íÞ¶×/¹-ÑýF$¾Ôé¹bF³ƒýÕíÝ™£ÚÔŽ©âTBTËz´YÚ´R(,Â}ñRRRr ÂðéH¬=»võÅ·¯¿x^×+v|u‰pî’nÀ}Þ–¡Ñޑ䂪fÒÙi5ÒiL_Œ$æ¬ÀoMQ@gÁ Á0)'ÑMå²V!¨¸Û&o) MRqÀX÷Ѹ»™mÜÝFèv¸1?<Œâ¸ãöŸ%B˜mƦœÌ¼•ì›ÑŽi‚fDK³¼ã °$•\*·”«ìdÊ`kª–IgZ¦SCÂr46Uëž+5ÏÔ»gŸ¥tëïy'ɨQŽÁ€¸±±ÐØh@ ¼0KAg6ÛêlÓ|LQ³QˆäΖ™˜’ŒbÄi×@²Šñ`ÐÝÄKÕla3[Þ5£}‚ppÌ°œ6/Æ=lµy>ÙO÷U½BN (z<Ç:  +üw' C™¦ìäb¥B¶£(IËÈ´šóÓsë­éù\±g:U+ÝÎTæëÝå…Ís¥ÆÚÜÜÞß^ܽ#iš%žu\%Â\.^=sp£Ü\ýl[½trÁ‰MkF §€ñ)C1/P´Ã‹u'µ\kl}qÿâÕ½[ñ̬&%^yôÚÏ~ý·ûÇwX¹œ­í–¦.Ìí=¾ûêWŽÔÛËŽ“ÿìû_:¼p/ˆh`î g.W?35wåäÖ{¹Òr:Þ~íµ÷o¿üžÇ/ƒ= ¡I©mž¾í…®>ú0ž_i5Wßúà÷ëíÍPHEPU5kîÑ鋯Üyü¥¹•`¬nÞþt©²2ìvçA=Ç“…âÊòÆ5UÎß¾õðëð'²R`¥F$±Ÿn§VNÞ¼|ÿ µÎŽÚ/<|÷Á+ŸIfzfl‚„¯¡FIQjº½V™ã³7î<ÿäÔ)Ï©g=ÏüŽ÷Ô)4„ÄíØ +ŽYK«G½™]°¥Zp¯HP ŒLûB0wY0Y4±í2†©(|Ï%ÍX/[Þ˜nœy>š™!I£PXˆ¥nÏSDÝ8éáÝ푬£+i áƒ>\`µ Ÿðû‚I’\ì ÍdI&D$Ó,ƒ„k;ôhíàÞÔÊõdqÛàqT6Í*Š¹þž:} j¢Ï•V8±‘JNÃ%!¨£=é“À-ºåû0K—‹~w?‰œ+.ÜÕ•"Ï$Ã!ÆMŸLfŠl¿gÙ(Ž­ôÏîž}~yó$k§ÓXrŠ¢£’˜ÐõœÀÅ)\èÇÀŸðã$x+žÍBÊS¤cf0 «bZ`–²Á’C‚‹B3EÛœçù„¦ÒñÆT{¥ÑZF€‹ŸY¼TŸÚKe»š‘UÕ„e&3¡«wí~’ùŒ +Ì'I2‚†e4$=%RÓ²Ùñôdv)SZ³¢ÝÙÅó«{תÝmš¶+¹ÖÙs× Å9šL¤³óÉì¬k«FÁ´JàÊÁÉ*j‘¢ããO›S€VŒ:³‰Ô²n4>a*±zµßl»§+[ÉÒVcpÒègK‹ñìǧ\ÚÞ:Þ9s]Q #V‡f@}%4¥äó0¾I*ª—^}ü™O½ùx·¿ê¤äCb´XÉ–·3…UÛÈ}ôÉï=yã³>;<„ø¼’$×óµÃþÖÝ@@úX‰‡ylRd@( ´ßÔ`„ £'Æ×VÎÖêK!DCñœ…ÁÁÂ|À‹{',D¨‚‚"a !1YîDâsZdš“Jg/ÌlÞJæf´H5ž³¼JÐùPHæ(S•’¡‡Šˆ2d\ä²Ñèø2 O°TÊ‹º”ëÔ——WO<´B6Òüû>FæìBaÆçå'Æ·óƒcAHñB#žh)Z''Ѫ4·“ÙåHtºÓ;—HÍâ¸Ùm¯×jK¡ [™ÅÀª'üŽ¹—ða––´#U/ø¦ úÛ@±Ü“øáˆÏ'š–›¡ ›µžm±L,”As\‚ÀÍ€ŸáhwG"Mš´n„}b’Œ`HÝ7‰¹§³}\ÈÏ ´Í³)Q.“t*äsÅAªÐGQ°¨¶fD)¥«9'’W¥xÈÏ(b"›mc(¤M‘:„·®Ãçàv|>.ài:F „ £„#²&FE6 +† kµ©]ͬ±l’åRnƒ^’„´©çÂø¨ñQr“&­‘áÐØHØï!8R9=­V + §##áñ1E“4_¢˜IFYVãÁ´Ô¦bNyduÏ…Åf§f/.nßž]»ƒ‚p¢,—)\vÙ×à¾d5‹7x "ßP=Å1˜ŽOš&©Eš>Ia +ðÊj¢Ê”Ä«kÆ3-AËã¤aš¥¦Nož;¹|׌€HK¦2 ­Îq"½JQQ<, ~:॰Lâ–ñ°ÂP6˦µ)r9"¬Ûjöâþ•‡O>‡‘f(,„‰p¡&CÀK÷û(ïaé7¤†Qói‘ AT‘O9±&ËEiJ/U +•ådvÞI¬è´ˆ™Ž]wœ&üg˜…Dr&“Ý¢è&Ž‚Õ3ùq]Ž*R|È-#‚¦¨,Ë”2‰  ³©¾ æ@¨`x xÜý%a Àè ‡Þyw«"ŒS —¡ ‹"TÏDØÖKÙä4™8¢âa“¡@ ˜aD(–úñdÝç#9Æ’å$Ï9"cH шŸ3—©„|A,ˆÒpòqø8Ÿ— {&H¾ÃCþÉqëAÂ|á:ô€0Sz3{†– yŽ“DŒ"mȘÇÉ1db4àŸ$ܘp+T``)ÌŠÙ¥h²;K¢ÖÐP¨pxØÕÒOÁR>/¥H¶,Z©x&1p‹‚Óz4ÚL¤§t£êóÒ¡ ð):<4$$‰¼U«Ìd³ÝH¤D:¢½ÞpÐÏ1TŽ"lŠÐr©nczol°™zƃ ÎKŒ¤ÝJDñ¼¤%ƒ.ÔÇ»õù"¨ )N`R&Ù´­0NZT(À‡C’æE+’„‰ôÓá ‹…À4ï$K„MÇ,4*3•JŸc4;’áØ(hTøCU°24ÈBCî­Žø¼~9ŒÆ±b;Ú‹X5|—UÌHTœªÕ‰éry9ê¸O~Žã¢‚à@¨»ëbnJ +ïÉ¡ í™ ˆª€›ÂÃrÐÏLŒ†H\8@%ègITdq‘§d†Tpx|T‡!%1+ðiwÚK#AæhèÙIß8é›$& NùƇ‚Þ +CTŽêrtK.Y<>º"È.äUÂA JaAøyƱ˜ÝŠ;Ó8¢ÓÀAir ?õŒ×3ó¢Á'Ÿšd)Cð‘`ß&ÇÂTX•Ù$EÂA`âª\ yNš€[¦IÝÔA~ë1#vᕨSòú˜PP"ÈË¥y±D3)Ÿ³çäì÷¾úý ª>ó;£#Ã>4È©BÌÔ“1'«‰‘KÇW·÷/…1ib<ütQÞ]—ghSLMŽ$P˜ó²X`4Šð{ +cDF6äŽ +BaAš%µ¸Sã9 E`ü*ÏňI!€ÐÁŒ I9]é A˜hl<<<4‰¡ª$¥x>†¹¦ÕÄ0‹Â ]N²¤Ž"¬aär•Œ€O”‘ »?ó鿦-³àõ‘££ApÓH@á¨8†(>/cB:‘ÍDã +«}˜Ï‹ã¸5‹Õˆ¨`@€+j´ÖÉžÛz, á„…%ÊeÀ„&—iÂ@ÊÄ›ùT Qé2g0¸Â*GÈá ô!ðþ—NNhBœ zÆÂ#§¼cC —uËOã‰Åƒ>it80:äÕ¤4äØHâh—£m[Ësx$è&Fð°2‹ y&ˆpÀSô{0‘$–Ö%º’²§¦š¼(a`¬T¥ÔLÄ3¼ ¢a”BјÆr'™®ûÇGCá‘q=¡²œ-ó­|r}}9‘ÉB¤ÇK„àPC–ŒdÌÎgb…ttg¥ÿèÅûÎÂÄDhb<0>æhYydh¦$êhr>a«DÔ$ðI4š+µ¼}éÌâñùÅí~¥o¦˜ˆ ÌSSL•²h¦®D#1± ¥ÀÑÈßxX¤åR®RoMF2Ÿmñ¼Eâ"…IH€ :åuŸeQn¹º õÛªöMEÃC”σ“¸ª æE)ΰv¥2‰ä #/II¿FC<Ä KÉš`ˆ¬E P¶ÈgEÎÑxUg™BÜŒM”mU•(B‚ c±~+µ¶Ü•@EGD,ÀQa…Æ 2À&"„ý~,àCý~K’;Ùèr-~0W¼y®{ípæÍ×nî-¤­K«XXî ìÙßòÀe„ÀJ‡‰äâªU´ˆ¤’¼L$‰cYÀGV(Yåb¶^‡ø±ßгcç<@Žcà:ǘ¡SáS§‚#Èo‚†ày1,ˆgyãé0kÉq<šŸáȸÌ'ü^|dØã›ÄÐ0Aõù$*×°fVXh;k åf=VÌi½ZôòVãþ••ýíN§b·K±”75‡$¤‘SãÞq?Ä,^Œ‹´Aùs:¶ÙK6«Q;Â[¦µ-UäÒQ©QÔÖ§¬×ïî¾þÒáÃË/ÝÞ¨•Óãþ‰±Á7E9*11KØ lnö“35oaý¢rf.ýú½­×ïo÷ —ÿêÇïüâWùËwwW ™§ÉË&p,Ž‡£ +kâV·b͵“ƒF:¡ ùXTáåA¡¨,·+¹~¿¶½±üú›o6:= '~.`tðŠ×ËfÝGs§†yÏÚv³/e ! bŠ vÊùk'ÇÓ½©¨ÝÞ^ÊåÒÎ ­(qAˆƒrã—P^ùh¼š)£RÉ$– —N曩NFݤ_¾µñéOé­‹o¿tpÿÚîÊ –ulÁ°‰øh·T)'PŠ€SGÖÂLÙè—ÍåŽ}qÙyñ ð¹{‹_}{ÿwß<ów¿ü½¿úù×>ûÒþùA¯^Œˆ +¦ñƒ9žIL”a`ªK¦ÒNš[˜¯ZÓé¥Nv¹sï¹kÇ o®¿ûòѧ^»vîl¯RÍÅSæˆPÔâç<ã„“gœD9å™  >ó…L–.ØZ¯šMh’ÅÓl¢–ˤ#ñŒ•¡Q~xÈ ‹øH[rho+>?k¼|\¿s®þðòÔÇïóÃë_zcë£G½¿ùþþõú?øÔñÁZ¯ƒ}xˆgB@¼y Káó™Àz½²lÞ8S8ÙÍ]ÞÉ=®ùðRëÍ;ƒwô¿üxþoÿìõüõç¿óÅó÷Ò%‹y}>O˜§5V˜0®áÁžu¹ËsÒ“óÙ_]yÿ…þgﵿüdîß½ýÏõù_|ûÚ¯þàòÿþ³×þÇþüϾyÿÝ+Ïí׋ÉB¶ +1%RˆªíŒ¸Þ2Žf­Å<¾\¡zz½Ýê'vú±ûÕŸìýæ¯ÿàWùO>záÉýs»3†Lû=^ÄOb¨26>5Šz&b8+£EKÞ„èïç•å¦½6e›³>ûh÷³OŽ^¿¿÷»ï]ùÉ?xëµÍrty¾¿´|°qú¾)“_”ÃRÞ’çgôÇ/ž+Ïȯ_©þâûþÃ׿øÒÊW þúG¯þ÷üÚ¿þæK?ùêñ¿üêÕ¿øæÕ‹«1‡Cp¿[“Å%eÌŸËêÁ^ò{_<úùýÁ/}þÅ©o|zþG_=þÍ_<ù‹¯_þñÇÿòë×þþG7¾ôbåÅ£üáb®3Š àÊ”mdUVHËh/Žm–ùÛ›‰wŸŸ}íbùÉ¥ü~té×?~û_ÿé;ó‹~õ½»ÿñ÷Ÿýÿþß¿ý»¿üèÉIíÛŸ=ý˾ôÁãÝœ­&1 Y°±"£Á ”x"´ß¦&– +̵µÔs¹s³‘Ë+ÑW¯vÿèw|üÆÁÇo?÷î+7ò±85’®Ü|šÜo0÷Öô÷ÞÑwß;÷Óß»ýO?yûüûŸýÍÏ?÷ã¯ÿí?ø׿þÂ7Þ¿|f>—É)13¡Ð´Íbm‹\+`—úÌíeýsÉï¼µþÓoÜþÁ—.|óÝí?ÿÊñ?ýù+ÿñ_?ü·¿úì¯pû¯¿í×xóÍ› µ˜K‚ B‚¾0"ŠY5µÕ4ûúi㽫É/Þ*|÷­Å¿úÖÅÿë7ïüÃÏ_ûÓ¯œûõw.ÿóÏþÃîþø£½Ÿ~¼ó«oýñOß:kåâa?Ž‡X.LmN—w¦â› õÖzäkû?þÊÙo¿µôÍ·Wÿæ'¯ÿêû/üÑøþÎþÃGÿó?ôÏÿåí¿ùÞÍÿóïÞýþÇÇû3 ¾‰±ñlòÂB^êÙ¡)Ó{m†}t:úÂé觮?~²ðƒ/žþÖ»«?ýæõÿǯýõŸ¾ú›¿ößÿþ+ñ­;Çk•ÅA¿Pœ"p=×µŸdö«äs3ì—ï·~ùû'õëßû`ç;ŸÛþéï_û·¿~ï—ß¹ùývþ—¯_ü?þòÍ_ãÊ·U¾|;{<-ª¨¬è Œ<;Nx¼)>0ŸD.N ·Öí'—J¾8ÿ³?¸ûßþË[ÿÛOÿÝýÝ_þù×O~þÉáŸ~nþ · +Ï-hÓI:­’n9Q!ÂÓVÂ*öë­Í^z>Ç-gð«ö‹ÚôÁé}rü§_9øÅw¯þæ§/ÿýÏžüò®ýò“½¿ÿásÿò«—þæ‡×¿ýéÞûW¯—›i ñ²˜¸˜)éíœÕŒÑÓ òÂ@°­¿z`}æjFã¿þÉÝ_}÷êÏ¿qòÿ·ßûþí¿ó™ï~þâ“;Û"É‘a!©¨i‰ÎIá^ŒX/R—gÔ×Ï—¿õæÖ>ô“/_ü÷_¿ÿ?ÿã'ÿðãÇ?þèìGÖÎ,Ò'’4Ë-ck™˜šˆ‹|QÅV +ÒÉ|æþéÂ+g“?üÜÖÿú½¿ùñ{_}mã“G½ïfõ§_»øww^¨ž_.µ e rJÎ2¤^L ¼©9±‚BÍÄéó3Ñ‹sÑ+ÑÏßlüèKçþò»~ðÅ ßùÌÞW^ÞxûJ÷Í£ê½íôö”ÞÊJ¶Â…CœÂb‘ºÊÈå¨Q4ØŠN­”ä‡gJß|cåÏÿöÞ´G’5;ûæÜî®Ê}‹}ß÷ȈȈÜ÷­*3++kߺª÷}¿û½sgîÌÜ;3œáÌp8 E-4%B”HÚ$LC–?˜LË–(H° ² ÁÒgÿûDñ/pA¨‰FWwVfœ÷=ç9ÏóÆçüÃGÿú/>ú7ÿüËÿ?üæßü«ßýúÁÿòGOþÿøÁü—?ùërÿ¿ùqûGÏkG=U$JHô¬^+œ;²ç ÌÔeg~?ß—ûmóWõÿøÇÇÿéßýÞø·¿úwùÝÿã_ýô?þïÿå_ýÙgÿÕ/Îÿ‡g[‘g:ï9£Ö†+Ë5»»¬"ò¨Š>ßà¿w·ú‹ç?z5ùνæ|±øë?ÿô¯þä³?ÿùÅ}½óëìGÇ]È©¤Æ*soÃ{¾Ûz²Uûø´ý›/¿úxëw??øÕç¯Îë¹õrQ>îù‘¢™œ¤²2p~]ŽT±jkMG­ «µ~ÙèYÒù0x½Óx»íýêÃÉŸýüð_ÿÙ‹¿ù_ô?ýÑÛ?þáî5ÿÙCïû'Öï7ïô5)‰8e¨õ²;ç˜d ‹q2†T8tbÓwúò«9ÿõ]÷gÏkÿø«Å¿ÿ¿þ¿ÿÓŸüŸýÓóß}õ'?{ñÁq§S± Ã- +—è"Ä纘¶%MýÝ/÷¾õp°7p@ ù|A¥ÎÇÃÛÕ`nŠŽÍr¡ûêdùÉ“ƒUy·cýÖëò;~ëéÖÇ·;_Üï=^Ë–U·%8"ëÅå +qåj äAA×ÃqÅôu’òx®ë½²:òåÛÿíAçÓ‹é‡gýg»Íýn´×ˆ`ë–"³4±¥’P(È[ãHË£D¾(¢˜Ç ÛÍú½Eçí~åÛ•?üzõÏÿÁ£?ù­ã¿üÃ÷ÿòÞþ³_Þù‹ŸžþÉ׿ÿÉä£C'T0íšhÅ¥™ +G{%D(?ð£y5hˆ¥¥?ïﺟŸxñ‹;ÿ×ÿöûóoÿîÿü_öÏþÞ럺÷ÉýÞé,mlêuÏÛä¹@àË.¢3k›ºØ³¹‰/÷ ~ì(»MoUµkâûûÕ/n½Ùk/?ÞXMËúYÇúü¬ó`¨}xØz±ªßí÷úæIË:jº#KF¤P5%¡Kâ PšÙD)ÆÛÒ•©§u5b·&žw•ö½_ºýw¿8üáóù‹e¿.Š*Á—ÍVØ8ØX½¹ÐÒªkˆ4Lˆå¨–)j®jNÛíAäv}µë+¡!”uÙÑMQÐ(F©žN“8njzƒƒ\ÇPM|Wóš•V·ÖçQ4’…Iè ª€ieƒStNA—xPRhIÌeÙL†%©¨Ú8©·Oâ#dFSâ”]-dqHÓ¼#•·Gû³ãÅ`Y¾%(ŽRñb î'²ùS‘ 4mh‘uÒ‰\6™]ï¨o„Qn—íiÃ=Ùßž´.¼×Íw'Ó‹I}§a/kÞÐ+E|}=S*Æ϶§3ÔÚzô&Ç·õÃa÷¤[›¼(ô¨,vuº£fõŸ|üð§ßzñþýÓQ¿nhË°$+JIzYÎUÛ[Œç/G“ç­hÇÜÓ“ß}S X/™6*F½Séë£f¹ip&‘ãÈ’‘Yº†S¡˜_,:Å‚I¾&×°Á” ×3Ù4oy Q(Ü_d–PJY„*ñXAÂJ²ß±r62â‡Y¶J%do1/°„#2å²=0õ K&¯o¶T µJÃë{Š'b‚@èâmåÁÉj_Ó†5pýMÇkj¤’‰ÜÁ Å\Š )*(•4Š´Á3Í–¦ÕL³E[AeêÚ]RTAs`aÕZ&ƒ” +4I8†1ójçßÈåùD[[GÀ1(¦eسøÄ—Ír4ˆl…ÁelÉî6—‚4hÆ—.kåd\ð~7 ‘B:ºÞkuÏ%uPB<1pÂ*Ë°º“Mó¥Lo éÓ™âd¥X²0ÌU•¡¢ô y5“9®Óéßs¼¥nnL5Ï‘ 14Õ4š¨ôüúAµwÚ;Òî^v×yÎߘ=ãêåNÙ[FµãFû¢Ò8ˬµ$»ž¤ÄÉe„ï¥SIR77«½{ÞÇ[÷®ßBÑ¢–Ï*7n”’IŠáê–»Ö.œòª„–s3™ŠoKI|ÎœˆwÉ2Éu´˜ãʵõž!GÙZÌ,®±¤ÉÀr—´ø‘¥’Q÷o|#S®²rSV«w/ÞÍvRB$hF¨«f×°‡eo6ÛyV"u×¹áF3Zl`TˆÓUÍžO6Ÿ½ýì—ÉíD†/b€‡Aã¾j¯X¡áv¡$ÓŒ§h}ð7‚ +H¦®Y[N°ˆh˜#Um ÅË8U楮å-*õÝÓlä‹Nÿ¶ªu,{$(Õ™5F¢ÞÝ qä Ek/öÞW1FXºÝ”¶å/$cD mFl»ÁrsùüöƒÏi>Je¹"br7>àÇ×99~„Çs†óÅCÓÝ0܉hL)¾ÇŠcÕX€ +‚ÅgóEÇu]ïjæ’ã{¥‚‚CÈ—O4hÖ´Þ»Ýèßå• ¯Œq:B‰²¨t8¡ã¶"·Ì)Lš« +jº™¢Hò"¨œÉÄ…d ª"«#AêJrfë¼Ø‘Õ]^äò†Ý`ø.A×x©GsõdŠI%ËšÊj§P’J¨Î)]Vé³RÏ,ÏU#>–IÒ>Å5³E«€• ®å7Ï Ï«Ÿ–£“õ—ÉH¢ÔQõ.Š» ±!hàL35uÓižš^°òümœðãÞ£%[PÇŠ1wìéà–7o–2)¦˜’FRa)~þ×EQð(/—¢Ö8Æsý-;Ø1¼m­¼Íõ5ZÔ7DmÕV/_4?Gi‡ª$zѶWÝ‹+†9R|Øf'¨m•H#S’ ¨+(ãÑüÍhõa{ú„SÛiËúÈò÷¬à€‘†ׄùwýeÔ8´ƒ-€—jëö,G·ecÆð ‚ +áTsƒ Ë(fÊú¼¢Ñ»èŽ´úwÂúa­¾ïÉ·{Äëƒöæ³ó/Ž~gÿÎÇã­W¦9iT·Î~ŠP.ÅGàZVå°Þ0^¾.ÞÔûJZG·§’:bÅ6ø§âÎUk²»ûòÞ³ïkÖ(‘aJD¹Ò8íN_5z/yy£ê(Y!Øèò,œŽáz:îÂlƵé +Ë·02,« ¶O >Áú°ˆ¢1×½¸Ã²í!ˆµµ|âzs°7“—9yÀ+SÍY‰ZŸ m U{h¹›ÅÎV¥~ZmÝ®5Osy]36tk©è3ø.„¬ä7‘‘Q¢T8±×·g*¢6ÐÜ…ê,EmTD-plËß&!kÄ•ÐÆ´Øq£CÙÜ´‚]Ñœ!DEw¶ÂÆI¶ni‚k±\OÕgŽ¿ áD'«¼‰<0PÌÒ­iµu&(“¸fK†‡«*"e@¶µ›Ù›7ó·l‰¨êÖÜñW’:Ìg¥bAUÕž!LðŠ‹gÒ‘iÏe}Ö<è /œ`Έ‘¤÷ÊÕ)„²ÞU­ pBÕšF½Ñüåo0Cu&4ß$™'·KtçFÛýÛ3ü%ÜÅéP/o¹ÑÁxùîôÑ營âl$ýV¸<=}‹ÐAóKXHs}³¼Û=nLŸèåiÜX­µ'Ý*æH1Çš;‹Ú§•Æ¯6ËÑüÑ»Ý~ñíñêI}pת€O‚!Ó;·~3¦šƒîäqövº÷aoþL÷· ¾Ôv/¾ÙÝ-–œ¨vxzï›;'Ì÷Þ¿óìûv¸ þ£CQmL™ûgßÞ=ùîxõyÔ{H3 Š­èvWu'‰Œ”/è€]–sàÇ•Æy£wN²¶î Ãöy¹z +ø0Þ~»}òi£Ç vhî £<ÕìkÎÜ©¬ /hîn‹vóüÅþÑ;^¨Xeßñ¶š#˜]ÅÝa¥Q¡äôúw*á*SÐqº`Šm¹ái¥}_s÷¢Zoì>õ$®ì'¤²*— :¸ûÅÏduüÁ‡?ü£?ýﻃÓdFÉ#®ê,FìÜÿîtÿc'Ü/¢N£{¡‘Íé‰$KruŒ\´‡OýêY>g¢ˆ¥j=ˆ©L–ìJd”lÉ’À…¢³öôå[X*E¤ƒà‚úà“U-">JVÊAµs :WP‘˜ŸTi®¶îPL…%uLŒòj4{³sñ-ÑhÕ­æðvzw4¿_ëZÞ&SsF£å3Xµ¸m®>ò¢ãÞôUoóU9<3ó˜Iò!ÀdX^é+6DÖ'Omw¶ófºýˆŒÏ¯ì`©» Q›þŽ[Û7ÜñÑÉëûÏ¿ãTæT\U¾ Lx²ýru÷K·~쇳ƒƒÇ¿ü½:YÝE_Ð7:“g;->éNïÐ\É‹œÔdÅ&Áù¬ÚB˜Šbo,>=¹ÿýÁì¹boBêœl½’Œ1%4õòÎ`ñÊoœêÎð*¨ï&3Dã*Yµ³tÃÆ4hah:«Zûôî£/î?ýv2Ãç‹š¬LæËïýÀk>âÕ©(µ¿úÍÔž#XPñàü³¯~ú¿úùž>ûʬì[°Í_ýúOÊ•­TVÁ©†å5†/æŸ_<þÑpöRËÝ'íÞA¦ ¤'è³°óäèîûïo¼ÓâByöðn¼ˆXYwæf°«Ø[¼²Ñ=Ý9zŸ " ÊѺ»ÔÜÍøP+ßÎvç᧟|ïW²Ñ§ØzP=j €W‚6áÄ°I·^Vê'‰”\(:Ne»Ò:j îôg—òPé{Ûo'Räz'<×Ü¥á­XyDóƒdZ®E‹Ï>û‰ëŽÞûF:¢i®æEg³ýOŸ|ð;½ÉƒBÑüøó_Ñv sJÀîõĉŒÀ¿v>ÙúäÉÛß½xöCÛ=}øñæò.0.»< ª»ÃÍ{ÓåÓµá™jt{ÃÓÁü #4ek 8cF@bUì¹íw&y¥ lM17ZÃç£íO7>í._ÊÖ0 æw7ê삸áncpïèâó7ü֛ϵ<|W‰¶·–çÛíòf£w{c÷Mcð ?}p|ñÙãw?¬÷W³Å½ƒãOœÊŽ XµK U`b¢:-GDz1±œáòð™æŽ1ºâVv!)èÞŽâ.7÷><¼ÿ=ðÉr¸v/ŽîvûÅ:‹× “ŠD€žíot7ï Éô‡¼6’ÍEsp¯Ö»0¼X‘Êp,_7œ endstream endobj 135 0 obj <>stream + ÍéËî¦âØÑIÐ8‹šG$w³êô-o,ë ±šì¿ªÏý³öð^«w›d€Ç ~Ôa•—~óˆ´ž:Á~wò¨­Š¨>Ú¼7Û{kWvËá®jOŒò&/÷ªõðjIíðbóèöûŸ~ý÷¾ÿã‹Ï†‹WåÊR’jOŸ~óËïÿA+“lT©íÎöÞmì¾’öɧ?9:zEQ>/ÖÆ;¯ö.¾\|s²ýáâèKIŸ¥³š u0¢ì×öýƱ[; ?õþÝz÷a")áDXm +ò0™&S&‘â ²ó BÀ±çÅ¢vk­ôUÖF|ìu]Nì ìþ“ÔûÀWI&O€äÈòmHÓÀ¸üÚa{tbYQš'û[ýŠ)[ö¸ {ÿË‹Çß›,Ÿ{µ¥fv¶Vgûo +@ê8ßô7ÛÃG›«O:ÏZã‡Õî©a;ƒSÛÛtÃUcô°:ºgT¶mÐéÝ=¸ó¯±Cñ•Ñüi«¾½ÿüÅÛïÝû,¨ï˜æàpÿÅê๢w[Ý£WüøÙ»Ÿž=úÞáý/‹§¶Û|÷æÛ/ß|M0Â_C£<¨÷Úá1/›Í½O¾û‹°µ"Ù°Ñ=w«Ç^ób¸ýæéG¿stïÛatðøùW»çIö Ò=3ÃÑZºÕ³zÿÉhë­joêFë“/~0!}’­±òSÇ’9äN·w¼ñðîý·»'¯9e"›3d„ + .r*‹³ObØ*õÎA{z·Ö;̇í3‚iQ\£5¾WížaT ›ƒÚàNgãEgóõæÞ7»/l¥h½>ýñ³·_«ÖÈ'vA gO«í3/Ü+ÊÃÓ÷Ï߯6WN8o¯TwºÃãg¯¾¾¸÷èËÙ\¾=zðí s¦”·w èëë·_u»;ªëf0{ÐÜ k;n’µ•GƒtV×!Ay‹ƒ7>øí½G_56ž´¦£²¹JgMà±Û;/d¥‡ã ÞËê±Ày¬-IcXHÐ(æ¨Ú@)‘‹%OVg²6/W΂úè²\Q…€"é*¨AlÅäf€[fy6Žâè0b橪MÍU껌º=z¬hƒZçÜ– H¾t\k¼x1^¼1ü-FjæQS–š›ó'¦=”ä:ÝîÅç0ÿ§¾wòà¨å)ÉóÝ—œ”&ˆCÞ›ÎF³}Øê*fŸåü ˜Dµqw¸Wíì»ÑJf6›íÝre’ˆ¤ô.ûVx8W6ƒ…_? c9¬4·Ú±ìÞ»O~~ÿÍýÖiØ:‰šö¦†Ñ;9y}tû@Zàù½ÍwÕÞÃöì`\´¤×£Åó×ßéŽOÖ’$Í·^š“ÇAóB»ZÛÙ˜Üþ½_ÿá~úûE<@©ˆ—'åêÙÎù—?ü;‹³/}üôé§ÿýy|4šh®(ôÎdõá鋟ªádÙYmsø[š ßT´qíî=ù´ÖÚÝ?xéKÙÖÀ¨(Ú%Лúx0yb¹VyÓ®,­·Ø~±wòQÔþ¤Ö»WÄ*¹œæ{›³íG _åøŽjmšÞŽ L*ÕýÉüYXÛ£(ïøðÅbv.ðŠ$[q*Ëåñû»gŸÒlÅÊÅ’ÅÒ5†ªæó:Š:ù"¼'îxe»£Zu“cÃlV1œE­óAÝ|V̤¬¤K\ (C^P\ :¨m›Î¬Ù Äl¶Æ[oAŽYþv5QÔ¥¬ˆí/dsÃpWà »ïOW¯{’Îò’Ò¥¸*ÁUewJ uò¬Ô®6Z£»¼ÜЭþpöØo¸Õr}õö!‘k)æTL¡dŠò$ª?©1&˜:ðöáø6ˆSŒ Y¹‡BÝ¡:Ó8¹ W¸8x‡eInNæÚÃû@3,wÕ[à PèŠÖÑ;AVTkC÷ ›8íѼOs¾çm”ýi¾Èå +l&/$SXKŠÙ‚Ë‘ÍË—%ht’ò%±i™Ó°v¨;›ªÖ®6–¼Œ aBqMÝÚ ¢]Û[‚œÄp«ÙÞo/`5Ug.Ù¢CUUÀÛÂS¤ÖdëÑpë)Å6 ÑldRÔO^Ì7O%1ÐŒfX[tF'óýÀÐr3‘ä²9M`[ßZ»Eg2Š ôK‡³'vyŽ¢v:-’T5ŽìòâÖ–LÄá‚-kb{;íÑ‹ríž[=”AY¢R¤:„¤dŽ9У]"k`/L)‚¨Qc¿Ú:k·Þ@ʨˆû X6ÀI²[óÙhë•íïªÆ†[Ù–ôž¬5£Ûãùc‚õqÆÃYÔâÝgß{ñÑ϶N>µŽ`ˆPÀ4œ‰rÁ#À®r°sïѷ櫇åp±Ø{Á +í"ê€ÃÕ‘íÃe?žî}BsMIŒúƒ/Ø` oàÕeA˜öÒvœPO¦Y’µ6Ò@å¹3Èò9D'(¿Ó=ƒT’H ‰D1›@€cTà[S…eei/ôg†ÙËä%ÅÜ4Ê; üú1NWry \k4:®6(®BÒ, .ŶýHÝ,k&¯¤³BÙÛà…F2%ä‹Á´%mÞhߌŸ6:·!}Ðte8>wý¸xI/"6#v5{ÉÊFl +âbþ Û;FqFà™¬,É?XdãŒ×j0`2WE?Sˆý„Õ°º‹ ö|÷Õý·¿U\ÀDqB¼4fYÚ)—‡àó¥’Ép-YÛª‡²ÚŸ‰+É¢îì?®×7Þ•õBTeTdeÄÐõT\?D¨7v“s@ã|^M§…õu†$"¯²çú;æòIJ 6IÜËeemÍ13ñ!­³|˜?†{8îkéîBwcFÊÊSØn‘thÃÔi`z `ïå%Bš¹"G2 YzŠÚŒ;ÇéPˆ^õÄàdû ó%MRšeÝñ£‹Nïu9µ;˜Ý_¿uëû©¼Èñí°v®S«¼Tí±fõý`¾¹ý#¼\^v‚íúàigòD³¼2"˜Fz\ܧ©A:I–Uc3¨/vßgÏ@@h§³"/ö@|ñrg8~mO1G ”Š4R (ÊPõèÊ^|æó½wÓ€¼I3†eÔ, ¸YD÷dñâÁÛŸ w_ðÖȃn­‰–¨OŸ¿ýœ׿œl +Ct·¼¡Ù›4Wß“õMQ›·ú½Ê!AU’dšVSImà §¢TFÉ—LÉœö¦OËឨ¶{“s¿¶ƒ’> A× gÙè?ª4oÃDFóøÎgÓW¤Pç´¡ì.9m"ãÍÕóÎà6ËGž7ímÜWÌ™éî)Ö’Wúº5jwg[¹øɾzÔ8®µO+õ=˜ ’mN¥y–©Ú PàA¯á€ŠtÝ vy¡¯›’2Ìí ÜUµa.§`¸Ï]Óß ÛÍþ}V¨–Â…Me`žqåÃn¶à‚E%Ĥ¨@àÃT’P•f%Ü4í~í€øRdY]iØæÈ$‚Øݲ:â…6N€(CÞO¥Ã b/•!¸€~°BÜwŒ Â\ŽË¤Q×í‡ÕU¾hþF\ë+ñD¤äÁÓ²R2E6Û;[;Ï Ýß¼E€k1tƒ&Ãb^¿u«TÈ«¥¢M±Q"_Þ6Õ!ùÒ|Ÿ•†@Ñi¨ÚKÐ}Ù¢"*}/X§Ï¦ÛYÕ½<æd +&Ͷ‹H\Ü•á‚îàÎí'?o$›“lŽb™e,ŽŸ¬êÎĉv52㦠w8Þe¦TNTs šÃ¨q‚ÑŒv©¹ Ó2`¦b9lîßþøèâ ;:-!e–©b#làÀ^eßt¶u{4ÎcQBAÿª¦÷óÊdIÓEy€ Ã6œpÇ âšÏ¢Tí Y¡ +Z¢FѧÝÉÓÆè‰êlÁºkZ£Õ?ÑQ5Tg1Y½Þ¿øàk0{&©=Ð8½hØÃâˆÊF{øäøâ³{O¿·:ý¸Ò<ÂP³âOŽÏÞouK¨·¥+hÖTä[,åç²t¹<o>ÕÃ\À¼9¼8 ˜6Xk +¤¥Û=ïOªÖ ôÅ6²q +IšýÑ9ÉÀL¶Áß{‹äb ’WËOÑçK‚Ïó^½¹o¸3’‰2 ±ž Š%ÅÜ €'(Êå»äe5BÃâD˜É‚?ÃGÙàEE´ _Êð5^Œ‚pÛ¯ì”~ãF1›Óaæ“)1“Õ‹˜WÂA5´A(9î&dÕRÁ$ˆ)¹ðg&nçÁÅY÷ kEË™’uc K§p^lŒ×Zç~xñä··Ž¾´ƒ½\Ae…š”IíJƦhm©ÎN­ût¼ø8î7„i¦Ý1œWÝcÔ$3ºkΆý»am# †+³bS³f›ešGDÌäIÈ›š „åÛˆ+ø=mžw‡g²9*p ÇÙh6ö ³ŸÎ°@Õ€¹Tƒ;@ÖÖédŠµ­aop‚ z\Ó1%u8Û~½ØùO:#±ltvçc@€SškqBßñwÜÊŽïPy™ o¹Ó°±‹ÑÞZŠÍ—‚i”äMº<íšZsµÿÌ,Ïòˆ»–H¶YÂC”¬•ÃØ%IÛè·š§—åqä[·ðõuÅš­£x9™d!²Ü`«Þ½hôîóR‡¢kàlâfY~Ë[<×2ƒýJ÷\sfñ9¢’™ÍHàH"Û®†ËtšŒo[ßÄi²NÓ¢3‰Aâ(ć[À|AªÕZ‡ƒéÁæÝÑü¡W[Aö§™šò·OâKõVÿîòð›“åû­ñS`,Àâ‚rˆÓ®jn: öûfù¼Û>šî­Ã“lu[Ý ¾^e×(ïyõ;À6i®›HRqÿ}˜NsÉ$ƒ`N7tg7l<üÛƒF™ ƒ Š,×€±`¸Ž“e ð¢ÐÅ!„@|RsEÃx'<ˆ/ðlÁfÙÀ7%µ äJ•Ênµy)ÃÑ)ÜT•š¦E¡Jb<<ªíT›'’6!˜æÚ:›Í04a2TÃ]Š®êÆÔ°ç8@~¼y…Z»³Ï²^"ICŽËN›ûçͧ¦=.æ¹Ð & ¿ñ’H é¼I°=ÙÚs½ÃB¸¢©íåòåÚ-ü½…dR ¹®ì ˜QLPe†‹4³oZ=P ²’qk \ׇõÍ1\E3åpÆI5°f’ ãp–ôŇ²6´ÊÛŠ¹¥X+`›ÀÀ ÊTkêV‚€-»•¥¤ÆÍjƒÚŽhŒÓE#“):tý¹¢õƒÊ^{üŒS!÷P:Ê]Zl‘\=ƒ¤ÔŸÌ m´¢ÅG¿êëkH&EŠ0gåzQOgá +-‚ª‚C–ð~EÔ6Yi,¨9ľ™ n%Él^äù:Ž™aBl*ÖÜ(o úÆÔ2¹€Pe±ù Øt–AýÜ·÷> +¢=à{ŠAôÅ]V!¹pÝr°¿±x#ë[ÅR9•âŠE-_PS—Ç’yiÈ=ÃÙ6ø_=‘ òy™¤}‚2y!|º 0Ucîú{ E×Sq y‚Œh¶ª™ –·ÓqKSEdjÕÊÇ”a¹óY!®ÞœÓ)6JÙRëpÖ﮲™¸VÜ_ƒ +A2Ãt%“€NyѼpV3™ h*dK3ÕRÉY[ÃnÝÌ3”Ë ÝBÉÎfÕ<Љ¼–ñ÷t³Á ŽçÝþQ¾ Àë Å* Û†µH$ø(Üüö×'æ7oâ·n‰$SC1«Pã*4dü4EzàÕ¹Úœ<“À@T‰2`¹:Ç5!'Úö”åjq?²‚6ïšåYÛ´œÅ4 =É|T©Ìr#}Çß3Ë»ð]`E1×ÓQŠi’d8ä!—ws…2„j:£&’L¾ yÁÍEk 2“UEuÓp<¬¬òȱÔeyF+ÃW'³°KìS|£B†3+M†ñÊ•E*-¦Ò<Ä!œn«Öží'´ÈD£{j#e @0ŒlÑ-WO&‹—ªÞ__+Q˜£6„3L;po W·Ö¹éÎÀ`"Á"¥2X³ +SASåøL)êÚÞvÔ¼N‹¹¬/ yž‚3—ŠЭtVM<êÆR:-¡˜'I=Èn×(Æ~ Øu|• +Êá¾  Ü–à[²àÀAhqÚ%^iêîF³wÔNÈøæš És•jmÙÜöjG8SƒWÔCÀŽ€”J|ÄÐÏÙqËÂRßl¢52i2»eŽ%±IÓ/¶pº†da‚‰à" %ã«pº½t‘:àœÐÐÌ1B€d°ûµS+Øo¡¹þe H€‘ +0Lˆ €DAÞ€OÃéŠlŒ2í½÷r€¶³Å -€©  °ÓŸ<LŸ€Ó–Pà Vp…€„[IgE å`k4{´<ùÄ2XWoÝ–XD\Ñ?pK$y† u«Ÿ½Ô•—Ñ×øE0`wb2I£àùT%™ €Ý壀rô w‹ºì© ²‚Å]²aØò˜$[@ÀÃ9.ÞtJ%™bÞ¼µ†æ!$ÅŽW=r£ããû_¿úô÷ÃÚÙÍ›$ ¼ë 3À·LÈX£Ö8mtÏùø@µ8ž’©MQ/ð Ç ^®kÎd¼xi¸PmNj“d™¥l‘÷8Y|ï&¨î;å%‚:¥’& + ž E>™Ì;-X”fï.@A¾¨A¸±ñÃ8a!/!I_ÖÆnxdx+‡LN‚…×*¢:Í×0*ŠyŽ €3Ó¬)¼!>}¡öüÚ¡íï@æ‚ *%HÐnÅ"$N’•Ú9#´H6âÕA2§Ý¸…” +ª(6r9>“¦Ò)¾W;QãÔ.o]¶c¶ÃúR”©Z,àY‡\„aqðvïü3/¯koΟB쀓+æ#t!œI²r¾P”A bSVúÀâÀO€Å!¨‹“U‚Š€ݼYH$HHÉ´˜ÎÊ%̎ñA¸ÁA@×5mNÑm,^\#›Önå×ÖJ…œF`À/ÁTƒÆÙêö—ýÅëæð>pËLF¿qÒbühH¿bAç…¦iÏëÍs˜ýAq+›/_Zö,“Õ +¨/:{ÃåëçÿìãoÿöƒÇŸçJŠ•Î®áÅ€ 8ÕewÑ!/÷Hò–̨é¸y\r‚ ®äF€œèå¾}>N…ø$ÍÔ€QÃ=ÈYVÜbãŒæ¹¢I1Q¶ çŠ(kÝ¥ÙÄ>NÕ,`ã;Ú Á´j;µÞDú¥]°¸"¢ΔP«P€jˆòT”†€ ãR)‚¦<<îx 3Ù`AxûaãEEHîë8çÍ2Š›$[¡„+Duʉ½¢e²LÜ7ÊÚh ïWûwi¡‹’a¼Ñè$ãt|ª ä$èˆzïI£÷%üõžNó8᣸•Ë‹À<ädpȈ¢a•[·JéUˆX`âÙX€‘ü"'5½ƒ/Õ‚êmÓÝ7Ü…¤µAa´P)+¯²•/*%ÄÒí-Iè•ŠN:%&’d.'ДªðÖ<$}Qêp|'_òi`nB2żµNÜZÃK¨MRÍ­0\‡ ƒË®¬;Êú:‘͈…‚‘ÍÅEAQdCQf°:‚Ò—õ1ÍA2n%˜µ„Œâ ^lZ6äåA*ÓèB#¯t¢î}+<ô1ÎTf³@3²2L$> Ã8^¤…¬íÎFÆà¿žÄh&Šjg^åXP¦ÄCÉ*¨à²³)5àx K«£Jó%ë¹¢à>Ðl?Ü׌?ø_Iéo,^îÂ)ÝF×e®;+Ã]rb°1&)!›ÍÊʨÚeuý˜=¦2üeK ”5N×q +b¼¢iC׋›ÝCªUõ…)êi U8¡jz3RlSbǪìoì}îF§ñ]¹7×.©’Ð5­m¼2” /öee€¡qñLVLg$@`Çß–õÑå ÷FT%y2!¸E¬Â ƒFïQ­sœ'.8ÌUkÚî¨Ú>ôQؾÝÛ|ÚÛ|ÉIcjXš²·Ššç$Û/a5†k1Xá—°¸­‚Âêý‡Û§_ÊÎ2Wˆé†h±BÄŠåOE}NPñÆ„W2:.ÞˆK ëÅËÚP –ë°L+–×T.§ %7þµ 0ü¹Ï°\Þtºy#Ç3'D˜FP;h´o est±$:îÈqç7n"þ(^ÎM‰Z·v—50™¦¤l¨ú ¾—á ø™Œ!ŠPÙYfk¼檈Eþ²9+™ÖÖp¬hplßÔ +¬2mM^Îv?ò ƒÐûîä¾éÎ é§ +Ÿ§²1ðÉäð÷t«G%¼–+:À]eyp¹Õ”Ír°§Z›SÍ›Š±ËÒôTÍÞÄØBVi®£›ð¥#„•TmN9©ŸË›Ùœ™É›ÛquÉL&qÓ]oÃræŠÉ%ÊåAЙRVµ‰¦M³± .kƦ¨N¶Q,zë q=Á•Š†ÀÔ y5n÷šÎߎG†=òœ-Hš>¬7ŽT¥÷od€ˆªæØ®ÈÆ÷óyýÖ-<“•MkÁ bQ/,`’@.äGyC”Fwé¢.°Ž$ FNGHÏR²ñ’…v #Q—«ÇÕîÓž2LƒŒS‰ã”§ýÑY± ¢‚)b>Éw²%'™‘s%;_rº†bF©vHƒR)ÊæL^O¤Œªà—§õ +¸MpÍrõl´úÂïܪ~©¢Ò0·ê­G’±º¼ÿâšAàª_¶˜ïpò–¸\ŒÌdÍÉ™œ nI257ˆ¾ÎMˆîVïv½·'ê5‚ ´ g’NØ ãgób&Ç‹b ~}:ÞXÖâÝlÔ-—ë Re´x¨: ¸Ê8UŸ4OKÙ¼&iF–b ¼ Mtg;¦^%ˆ ¬å†jÔD9Â(’þ`ã­åÁ¢_¶:’x¹K0•j1Ûðf‹½×“­ç¦=âX؈$÷kÝ ‚*WpAæðò¨Ñ»c{€RvÉçd¥1Éw³E˜p`J ÍT sò‡áû€Š‚¼9Üx£s À8¤ÒÀ²ª×ÁpÛ^ ñ)ºO1CQšäóÆÍ[H:Ã3l#U@F¡d­Ò>qw*{ ×½µFÞºEÀ̃ø¢Øzõà ¬TcK‚AUA¬%H¯@V¥èz¾`‰Úœ×d*FK03“/Ùx-•’’ >›>ß÷"AP^¡¨¯­ Y¶#ˆÝøöH«yå-h^^Ê¢V¦hP¢˜¤{†¹](²à L-5ÖR&)ÕWMÃ[âLX"œøñ¡WkÝ™¬ÞÙÑ!ðø bÇ«†9Ð*´ÂŠsAYqÒ„b`˜—{°‘i¯6¶T KÁ+I>¦“wü³jó‘jOKñ10¡„è8’\½€Z© “/™²¾ÉI=‚òo®añ‰£LÜC 2>¤†˜†ºઽ øæZ’CPâ.“50< Ž`š¶R}=Íkæ¦áìßP¡¤4L—ÅšmOâ} ©›ÊékI1•Ujh®ž+É©œ`8“ÑìÞöÑ›ËóÛb2 DT“¥ž¬ÌE£3ÛݱÊ;²>ÿ¹q#“ËI4 ÖÌ£.¯.œÊÝZ÷9/ãûVmmÏX22fAê:péu`V”‡‚ÔÍu@x¿²úîÖ:›Ìè¹’w+)ÀÒ³Uµ©ŸNÙ\@íRId­õ´“Ý°qQ¶@_”J:ä©å«Ã‹ïøÑh±µ»–àKHÐ5ki™á;ÏÑ[¼£„ÞzRL¬s,×*GÀrã¿H½wÁðhrðåtç}EÁuBÆy`ø*8v:«UÀé±W}pÿÕ¯ {Ÿ•úY.Æl)` U€wuIvÑ¡#N sV<1b( +ÓVï>«öÒٲNjݷ%¢‚ÓUŒ 3ÀaÐhÄ)ÅVã®Ð¨ œ6j0Я›ÞJG©‚šº<Ïv’XObö®žÂ•gòòZ‚Š…vÑ + +¼”ûnt²¹óÍÎÆkјgà+Ö9’ˆR)ym-¾{SZÂÕ\ÞùAkø4*‰¯—Ã=Ç?• ÈÃdVLfe†mjq#fäC¼FÕo×ñaEªñ> ãÉ„(Y.bð£‡UŒIªK¡´P(žjÉÏ ø1ÄbÙ† ¶âƒÇ|C6^íÜö÷ K®Ç[âÀÞ`þ…B\ + èzbBPW–AªAý%Ó@Ÿ4Óš9__gXn8\¾¯¹+ŽST æDWÚµê&‚ˆ7o1ªÍI[–Þì¾äåq*+ܺ…Yæhuø†æAJïÝÂiYT6€-V€HZ¥ÇÏUÍ$uÌðE¬F1ÝfçÑÆò£êÝx/Þ-CòM %7o Àm(foZè}ífµ3~®9;‰´ùÿüg2Žþÿ¾€ÿ¯Æµ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!Wm\rÕƵ!WmýËÿLÆýÏdüEµ5_c»û ªÖ³áçÍãç/n?ûÆøÔ¡R{ö¢y÷ôÅÝÇŽŸ½E=ø'UÖMôÿeì½£d»Ê;ÑÿßZW·»+‡“s¨ª*Ê9WçœûÞ¾}sÖÊYH ‚Èd,<`ƒm²c °I" +ÂØC°1öÌó¼Y³Þo·ÆïÍÌzo­Y¥îºuNí³¿ïû…}võ—š?±wŽU_y'‹7±3WNŸ<}/.ß;wBcM¼µˆÿ±X›µÿ·zëH"ç9^ÒÍ圬cÛ™tžÍyi+™v3™\ÎõœLž=ÿÿù&+t,/—Ëæsy7Ëž#ozå5ϲò™¬å°ÿ~”íæì|ÚNÿÿ¼éù¸sÿ;c:wäÔ‘•#ŽÌñXUcWWŽ,ý?aÞòdÞW®]=5»w'¦äÂ+/6N`Nþ§—Õ¥ öΟØg_eñ2ë8Y ³TÇÿWoN¹ö?ÏšÅðütƒµ-vÌnlYì>yÿ<}ÚfŸÈÌå='™Ë¾òûèøý¿ÿwôïïÿ_åýþßÇ.ÿ?£°É(Ó£sú܉Â+?^ÜÏLFÓ=’j¸~úø‰ùnƒ]>²‡ùòÊ3~;œëLæ•HØìëX6®)K?õ¿uÏ¿ôïÿͳ.Æh燛fÉÖI:!Éî›E í#«ýÿƒåI;Šq©(Êe‘ô›)Æé'¶$­Ã U†!]8¡`&úŠÖ’ÔÅf#”£h.ËðéMÛ²\ÐŒ†å ‹ôq¬ÜTŒQ”r‚!1äcQ4Í2š†5ÖRÓ²1àµÅç±dÊîè‰:Íæ5cLÍ:™AmÓLIÔz¬P‰S™H4Åð%^nˆJ#•ž¥Å’/¨E©4Í{1Ê +G4ÕŽ›YÒRQ«G)›æs4¦L^)XÙÇÛÊU g‡G™t„rlw>_Ûu +kvn9SÜÑ’ÓœR‹Ð¶ W9“EÌ`H¥è$Ã9¢ä r1VñY [ ÇœHÜÒ–4«kpbIRjœP¢¹r.·i»Ë4_ Ç@Ø F1Ê6“}ÍhGb‰HÔ”•†ªuHƒÀ(iקU©{ÞjœIÓ¤]V-2¦|"þ5scq<2‚Ô”6+4X¡æ'ŽRx‘¢ó4¥:/Tbñ4Ë•"1‡ü­m:§²Ñ˜ÛŠÒÔµi&ÏÂÉIŸˆ‡? ƒ¸‡çr š +‡uš²ü~arŠ „”p4;‘¨Ë°e†)àl¡0Fžâ¥JŒrý!Ib~¿g8¾Æ°UAhÊjGÕš­ÖvÆGcÅä­›t§U³Ž&Â!-Kㄼܢùr(ê„ÂIQ¬¤R£„Ù¥©´e E¥c\¤Åd%µ#k]AÈ'õPXÅÉi&ge}ÄIÈ®.’“´*çó‘ˆÁpYÓeJ —4eåF”Í0œ·¹uo¥¹EsŠÉèæt¾tÚÎnsb3Fg£¤»§"±d$–Âõ’®ÆR#Fçct.6ý ÃÆH×%¹gsŒPÒ£la·Ö<1³|‰‘Ò1&¥š]+¿Vlv +[¼Öã•"²²|»?s!.äCѤžœ©¶.äÊû¼Òå”NœÉG¢IL#EgHƒÉ°1å—ÂQ‹4¦|~DGŽQi /UXL8ëÅ™BŒ.P\™‹¤A)_Å"ñ6‰YHÔ@P&½cIgP;M„BF4œŠE-$‰¦r…ìJ6³èó‰¾)!Ô|~irŠCq±4W¤.ÍÖãtE‘‡ª:†LÒðƒÎr|! ÄiàC;‘š¡ØÌ„=:I!9)ºÞ×ÔŠ…œ-hD"äoµOLR~GÇž¯ berS>à¨t ¨„Âr)MûÉpĉÆH-Aë` k¸ +?&Á/QTÖ²—wͶW$¹™Ë.^¿ñ¦ùµów iæ€ô¬íˆZ‹ü‘tQœt F òW¿#˜ÞŒ‘êéf›C†sÞÂÂÓê…bI_Há¸bÖÛqr›ﱜ +©‡Ÿz@˜8[ˆ2Nj™É™tnEÕÛT—rF4›AZ&í…„»Ä+íX<Ïðå8Còíð/§‹A\Q<…d8ÔN‘ã@6Ž«Ñl65H7¹€œ§x/å,¶×{³×ꃔ˜æå‚aõt{ ÚCNm[™µZëL¾¸ÑéäJË@`šÎ˜©‘[RCZ¨³.¡F3à…t‡ ª€‚@ФÙÒaßb +5š!m‚Ñd fGV¦Îp-Ó^a¤R ¬`žµÄt(bùƒúÄ” œ‰Séh f¦bqò¤‚Õï“~„2X†Þ–å:2Êç“ü>ù•ï>¿Ž¦h®¤êcQŠrß4t}:EV”c¤ES>N! š«kÆt:»ÉŠ¥ ãˆMZq|‰¦s€ û°®31A#µB!…ŠÛ,[£@h&Mó|SUš‚à)r…00üA(M“Þê…8׌´™4N;åãÖÑ9Iªã ,Ê«%S3ÕæA"=¼ãhX1N–´Oˆ‘Qe ÅxÁC"@YaX'ÌÅHˆs¦ÖO‹J9·./’Ž,=ŠÃL–ÍF'a âtFÒj¬T椺k‡=}M×®¶ö’îÐÎ §Ï+5ÅìêÖÏœXa¸b>¿lX]X „uŠÊ+jŸå*(0„tƒˆ¾Pþf0œ G³‚ØÆTK +éÞ„¹åø"/eµ¦-Q%íRÙUÙeÄ’Y´Ò3²Ù2­®hÖ³¥íñÜ­jû4æ501õuÊ/"…tcä•N :º9RÔ&Ë;¤©@4 ìò5ä@<ž1,`*Ö‹"²l•f›‚4´Ò»(™vœ51„¾€î `+œ §°Ë—Qï‘pè™xóKqð[8ì¤úF(”@&dH·]Òð²ŠÚÁF’ +…¡YQn`¶Aˆ¤½€1fQl‘—ºˆ#0MJqÊþ ±#1À‘ „d@£TfrRŒ@@™˜`£Ñœ$wà-[‰DÒ_qìa*Ù™ò | D¸/AnW$m6å.™É!ÀmrŠd`×ä=5Åql¾TXS>ÅW‚‘$*"F©‡mãkˆ‘jNS\%ÎþÙ²\ŠÅ4š¶Y¡,ª=39—²Ê +͸ ÇZëTœÎ!Ö` ÒêC&íßp—aÓÞ"ÔÎTPèle¥Ü6S=ÙËe¹ï­«ÇnQB&ι‚ +I6´Ü¥l~½PÞÕ:¹ +œ9æÒLERFzrYO,©Æ,ÞF39Y,ÉA(–Y‡£i̤f Uc$éƒtzqyåF½µŽ“þëIgÁ«+ÔNxµ}Ó9öôí;ß`Gþˆ# 窘+ÈMëBÞªäÂö–Ùñˆ"€þ)P¬7飂¤/š#e[òáH&÷t½§êõI?°EG=IÕ zbVTº‡íj Ø=”HS«€Š,˜E¨"‚T<[á0ÈE +0mʧ‚ à$R Èò@üüщ(4X  ‡B©hÔP ÈÐâT@ô‡µí"iU}$H(Š2¦ͲȜ:Nœåù|ŠÏ§†Ã6÷B¸Š IÅ]ŸˆMLò -¼?w& ZÊqˆ½øÈd8L‹GsEIíbÒx¡ FÅ],ŒFqTÖR&ʤ_ÅÕ5ë] +Í@Z¼°yŠ-+út&¿“Ém']EÊx¹ét~‘—kH0ÈfN*˜fÇ˯z•pÔÖ´š¬V!‰ê[‚ÜÕŒY¯¼ïæ¡cs% kȉež€R9aÍd +«­î‰+×^?X8M YIoªÉ‘šÁ2¼Ò†“HrêBRšFr¬'¦E¹£êp¥‘ûçºã‹¡X&Ë°|UQ[šÞűŠÞsÝ…jeËHöâ,iÍ‹Uè@;³š/ïiÉ¡ž»péÕ¹ê2>w€u²Þƒb¢B¢ñ ~ePq‡ôfÖ:À%B%l™åk¡°"á–ñçÀŠ`3—'­”}y§òQÊ#}Y˜"'4±Á0åh4‹ô± -&KªÒ’Äš(T¹e€Q1°jÌñùµ`ˆ4 uäX  !² ë…" °ÛÔÚ~¿>9 ÆTbqj"9â A[L™Æqeâ¿ØÒŒ„†-Bšç„~Ã91~¤DWz¸P‰zÈSS҉б_~©?W=‰¤ä=r §E@i& +êÐl8!iNÙS˜Öc…’(#Ý@P"mq’¬Gb¡óÅåæY39-ŠEM. zÇëí]†Ï rMTjZ¢m»ãby]OõüAC7ZªÞ„ÆsÓK){%e­¡fM{‰“o–$”ŠÕµp,5Îñ•by¿Ù;۹Й=§ØI«7:'­ìR˜Êöz©Z饴·)ì(úCRõi›s£À¤l¹ éÜF³{ÎñÖÂñ" ­Å8r!€Ü†‘éæ€8JÆÃÄÊj²Ÿæ<;½Ô\HeMgÆ«®Q\.@j°'æ@Ò‹bâðù‘/:î Ì/R´ÓÍYQjEC¨îCä %qŠômª rÏÆ,]Àè$ X,í÷kSSêè~ÿX‹Æ,$'d$&Š¨púÕšÚ1ôžf´VØgÕè±r)‘iÎÄœªU€WvvYOÂñ”lôblÎOúWå`¶»äde­Œš°K—?F(‹âspp²>È—RéUÅìǹ¬åÎ!ÍkÒ[餽½Rë¬fÏ1iŽ‹¼¢ø|(žÄQ¦³®[ë*2G¬F(ä’妓Π|ñqa… VÂàñ+"…j9Â]ÊjËɯöÌOºJ{H6–Îã#&I¢"Q,šbé êGi™ÃQSŠlAÜ) +%™EÎLN Dxµb)0ìÑ-*ø…¨¦€d«‚6!žÑ%ÌKZä"ß`E!´däU$jü‚"Á5™×hLNÉáP +1…;›˜Ñ”Ís^„ô?Kù@ d Qh‰Y`2aáúJ_aÒñ4îÂÛ¦*G'ÂS>‰ÃËР6uC +ø"hÃç0Ëlñpõƒ=Jz‡Ë¸†ËÁ(‘¾”-I^(,MùbSSßT,6%±jšNÆÂrÒ¬Aar#‘Ñ{|>ˆ4 “‚˜G°Àïdr`®CY|ÓÚ¼RDu=Ñ`Å<^! 5¨QÙžj  +ììL„J`ÂC‡ýqÃP­\ÖNÏ&íiÝl¥‹‹¼ZcÅŠ¨¶áIÃÈ6Ÿ/îzÕcF.ç+{VnM2ú°]aÒy´êdVÝâ@:MIõCq‹ô4 ’~r`CÛ™Òâ4£‰4€V!ê7œŠÅ\+5—˯ J5MÊ+šÓ +D$XàÒâ„+­“Áe^ïPLÆNÏÐqò§0}tŠ>ÄgÒõŨécNlÀÎWê{ÐÏ>ŸÍ€_ñ¯†9€M&ê¯7:-蹉É0°I•Jwt¶;{Y6» ½5ž=Šë“‘ÉIŠåò¤¨PI%Ç ,” Ëg(Ú>¤'.D …øbd;Ã¥cq#é·­Wº'§àõàpK +4!äf‹‹G'¨‰‰8|:xätr²2àˆ~p£´å +‡x"s඀¨tÈ­„Ñp³X9\ƒÑ€ÀsIùõHÈäÙ|ÂèÄ‘BlF’ª°uRÒDâ¦ÜJeòÀ.TR‘Š{áâƒ8GF œ«kÈ1¤@ø!ºÈ u8ʹ¥ËÁ¨ðql܆vMN’ÁC —|&·´º~ÅR†À¥âQ8 øã šÞ܉J2)2 j>ü‹G ø¼¢Vé àP0I!C¸4)L’yÇš­µ÷¹§Èê +Ü>ÌÙY/m¯ìÜÅ ŽË)Jç‹À1–/Ðl–fÝJqaïôà w$r4ƒÚQ•N"5+oˆZ3tÈæ¢Q÷Gu^*dó 4_ŒÃ³ž 4º½yg{°‹Ï¸L‹&‘¢¼Ð3’Kš9íx[q¡;¦«Ph@Zð;)aèXY¬'íq8nb†"œJÑx"F'½Œè1|®YZyäѷŘäädœ¡-'=Ò"FS>ÔŽ©–²û°<ÀŠ¶âñE» œn'§¯¼:Æ­ ‡÷¤l8er2pÈË”_ö"F‚T8@×O6ÐÆ~75ÅBÑéJ;•ì‹JÉRÁ˜Àɉ) R–…¢,”tµ‘JõY&ãÚƒHÔìLLĸp¢“³¨ÓtvN”½W`0”í¡L|"蛲 ½dµÃ.ãˆ$s`„x @˜ÀÉ) +ŽÆÔº€Ç;Ž¦&qr˜Á*À®ÒçãÂDJIøhü¥]‡7´8 ­kNL±À(0#Ãdi8q*·2å# ì'À%ÓŒCÓ®"×rÙe59€È'ÝCãV”Ü3(6¤åªfv`!%µN±¹”=¶ó œó^å ++x‚T´ì¾ T|aЙI$wØ$í“ÁPa\,ÉÌ3ÎçòœXúC8y>‘k;ÙÚžáÎÓb9Mx‰«þ°Æ‰e¸Q–¯‰ê0ÎVSÖrÊž‡¸ +EuÄ #ļCp[.‘Ê‘T0‚„¡'§bxf0Ng!ã-gr#¯8‘…£"”jÊǯ˜ +]Šr‡—à7Hå8eÃ2©&ø_¥‚Duݯ¾ë'·œ”χIFu³~?k²V7¬¨4ÈêSÌ Å@€G ý8Y1óB"Ÿç[IkæJĆ¡¸ Â>&kw¼Ôvs[p„©ãˆ2ˆðKñˆ  •N;c$C8l“©8øQ‹„“ð#á(¹/¦(M¼g2{JÀçF£¤ëó‘Žq»ÀIr׆ò¨r•xòðG,WA’²¨8ܨ‰ÒƒGžòIÄ¢FÈ`©¢úU]jLL²GŽ@w‘ÆáDœAýP² !ƒŽc¸R®Øx’E?R+MZSG‘H¨–pÑ“åz Š…vT½Æ +¹H܉1ù(U¤Øº“Þ*TO9…M^(‚F#Èa@4H0KGãY°6>”¡2ªR Ç’\T”ª¬vœìzÒY¤…,<´:Íå(6«[¶w`¸ËÜb1Š–Y¹—Çò,W—ÄF,ž éq¸XŠÅÁ§Cy²EC…!x|<³(ˆÆ€‚’qÊ‹Ç3‘Ô&‚9‹¼¥YøzÂZ %ƒÒ +úÈ?D”Ÿhab…F–RƒÄü¦a7"Äk(G'Y h `vÒ±‡²š‰9ñ(¹‘ +0Ä…à(PKU2©˜ÍÉI6 ÖøŽ£qx8œ t`[˜Ç°´ IM@ +¨?à×q ÇCd)Cœq¾žHŒ1À$–²¹9ŠsÉÂ;í‰Ê0a­å +ûZrF ³á¦çåÃ~Ì·(–4­­éCA¬,üUâʹÌb(ˆVÀŦ5[mŸurëÈŸpÔ6Rs¢Ú#õIZÙÓ]¥… +‚Åp%ÓšOeÖdJ8§%Z,_ÒÌAŒN“æÇœ~QRš‰¡÷ lB‘L(š Fœ`Œæ‰"ôOy‚¢ …¬ CYucðw1ËïC]!H˜žô3 AÅhKz3 MÖ¸Jº9HÍGr1r70 iwOQù@0L£‚"ÚäTþ‹4†Ç•‚50u›¡@ +Ù`01q”BùC~CøȪ8È–”A*µf&æÉJ‘Ô`Øô”Ÿ%./¬ÕY"¨Jº1ˆF *fJ¼ç›¢'áݦ$‘ëà0&©}¨ßH +b#w¡ÀMÑHš¥‹x¦c +íŽ;‚`7¿Ü$Ÿ$4iª +Ù¨Y*æ"¬LFu¸+€¬nMàÓ^fUUòÁ ð3 c`²?ªÅ›:n)|ÎPª § ?<R4ª…æሦ1- ,g,bótY´ŠMŽ®„CÆÑ£‘£$±Ed~ø4˜ˆ¨(ì<æ0––äh%Jâ9 $&ý°™æá ˆjƒ¶à7qEx}8« šŒ×NƃäwPz>B¸&KšÖƒJtÌü#/€÷Éš?°§…YƵ‡IŒ@Äœ +?d.Y Ü>Ÿ²‹Rî$ÙªA“egä@G¥n(Wä&tŽßÏRÏÄñq‡7â¡9]wNÒ«~, h-Em OBåŽ8ÔO|FR@Iééæ¨XÝOyK]ÈEë@9u”³Ãh&Çr¥`(EÑ…8•ó!á :4›³ÓóáÉZ{Ž€¦È²HEÅ]ÈWžÉŠl^Uª˜ÀY’…T ‘ÄÖô–®5$¥Š>”Áêáò~™R€”Â!a€TЄ ³?…ÉŒârÈBº5EúÄ#.©H$yH*æùè±£wDý>1q@"è>–Š„tYB xb@¯!L—åêë!­+SSÔÑ;BÈR¼ %8*'˵CI¦KBÒì o sŠ@:MNòør×€ >78y'xÆáh7ËDb^8†kìNú¥ pw^>ƒäÅš™hf?'w4È"ó{ÇPm,’ˆ†©)¤7. –ó@®Žæ(&‹¥$F! rï‘ýQñ}È1xÞYËuÈ +)@oÂïWQé?•¢3q6ˆ˜˜@äA°ð3TeÊeòK)g.F–m°Ÿ‘˜£àÒÈÕ†à/£8\Íæ–E™,‘},€Pr!³` ´•?\Ÿ‡tÀ«Ñl¬òE²ã.œ¤YH…ø¡äI"ÐH¢`%¹æB¡vPL+'Uδ‘ÐLE[8 +ćäàð¥XÌAz`N€$áX’qŒÇ0Q®,WÈ]lº(Mž-EÈ] ^ÝÞk–a ZCQ 3éåçZ½cGl!èÞÜá^) <åóCù'ï.YŠo +å/à™ÜÑ›ä'&¸¸,œDž€ã1hÝ-‡B…!|² ©‚tá''"“HN^ÞG®4•K¯ð‚{Ǿ£wÂ’K`Œ8¼Ÿí„‚éÀ8 >…&Nº’Ò†TŒᑉý9ô ;Œ6­{ ]„Vú±T61'ŽÂóD""‹"6„“(“](¼T†Ô¡˜,ÃWï“›w²ÞЭšìˆ…duˆ’ä‹x0‘·6…£ˆK…ã)¢äi¢s²…² ã/IÓl˜É–ªw¾*H5¬D5αœ¾íΠ3Laò‡ X‡>ïÎ+Zb_H› —–A-ú ²“S¬2dÛ†=áS'}jœ&J‰æŠ@o0)×e­ÍÞÄïìÈÀLÐ4ËW¡–¶†d…á $08×ê­3ÖYEq<¹‡ˆÂ![PBäÖÉáVOåp¯]žbJ0J0ì€>TVˆ G*ËËRW#k$Yv8ÜlCV°'y¿ìöÄ¥fGKö£Ã•Ì$ñéSBÆ0’ GàPÈV“YMú|êÄ ;ÔÃH-5å#K  QÄJ4¢ü€5| +®‰ÆȆRŽËýüGB!ßFþCûq\þ‹Š©¸Àí ¯€_9Ü9l…É}p\#‡K>¼9%@«D‰ ÍĨb¢ÔÉ:¿täHøè‘(¡° ÍX²{ÍÃR‚q–S¤|ŒWR+÷T£ïä“ÎtÂîÛ¹YA‹oÉF_5ûVfÁõֳ劯ÅÉÆ@á:‚Kî½Ò¨úÍÍ’Ž¸òS5àÓkˆ5â« ¬¾¤”ÍD;iE¥-)-žÜ4¯êF¯Ó9]©î‰.Œ<i‰sB A$à ‰R¶=‡ðPQûÈŠ-ÈzGM s³5~xÏ×<ÜéZg…r +™-&ìùlq“SÈ*7¨3tˆ{S vR5ÇŠ1 †$‹–@6[KtU³ƒÑúƒ0bé8Mö¯*z¬ +w $Gv„cd{ È×g=$ÔŽªV±Î°$-\^”F’Àd‚d±š`!D7á„2…GÓÊ EÉèÌ8œr¥ê#.#T5£Õ +Ûd1lî=¡š ka†Ý0çÉÆ9³W€&÷QL^ ê§K‹jªŸÊΧ KºÕ3,`W%áv+íJï˜é ‘I«5˜=£§ú,ô¡ÑAÉ[™¹„;V“-E¼^¹ºÞ´z¤wÜò*W^É–7$c(i#P-/fXQΜ쬕1²%Bg´ÔPÒ¢VWÌžnÍZùuÇ[Ï7“é3ÑÌ\t¼Õ0•”¦›_w=¼¾œtç¥Êy¤ +OöÆ;`[Y)«ëµÎ1¯²V¬n$í J8æ*FWTê1²ƒÑ=Ü‘‚}ƒØ>¼ùk/w°9A,+jÛÍ,ë©l4ôdÛÎÎÈFâÒŠÙÆ%ãa:3˜¨Bu+[\±ò³¼V›‚y§³²ÚÐ}Ó™Å3¹@³ãdç{Óg¼Æ¦æŒ2¥Õly=C¶pO›™â²KÑK¥úR½»“).ÞÙe³}YP«‰d—åÁ†:ˆïðu#5›BÉΓ,•«œ <ÇdâÀrÒžnõýIïj8© +‡NnÙS)ŽÏ'A¹»Sì—.lžº¿Ò;õ¶lB 5a¡†¬ulg¦Ý=(5vqªÙ.0LZT*PG"ÙÁÛÌ‹õLq1ewÈv8dÂ@Ù¢VK¥gÝ‚–¿ôÉWrÄ’ T g ÛÓ wÎõ–*½æh?™î$ÜV¦4ççâ|¶º’ÌŒr•e3=VS]%Ñ’HZU1†ÕÇQ¥êÎâÚÍÅÍëÅúº•U’}ÄÂJììt±±›©o .cN8îè‘äRÊ‚ŽÂªœJf¿Ô:a¥gvOM ±[v~5‘^4ì9=5S(.-¬_Oeç‚1 Ë7üªžë©’o–ôfÒ¥877½Vºçä‡ù +¹–ly Š‘Wª¦=ŒÒ.C —P69Ô’µf”|#¦À EŠÁ+n¾´Yíì—Ú»ÅƘ.\&*ˆ“+’ÙL¤§é™JëX¡¶…`%Üa8–d¹¬,L°sáU+ë7ž}ׇ[Ó€ßj±²ÐŸ,\/_Yܹµ~ê¡ñò¹ã×N]ˆu~íÜö™šÓçÒÚìÆÝ‹Ou—o¥½q¹=ŸÊuyÙ3ì±[\-´Z;Ù³½…óÙÊüxåDm´gçfÒ…5ÕÊçó•å|yyiëz §U¬¯6”UŸà°·œ)®•šÇû³— —r¥q¾4“J³ååZïX¥½ÛL/ž9{õ±“÷-M«Ûž˜^º¸¼ss¼x±;}®Ö?rçVW¯¯»›²ªYEJôç/µÇ§«½ýÕ½{·÷|àñ·Ï®\b¤2r>[ÞBÚj;nq7_;;Zº+™ð¼'k ÕlTÛéÒB¹½•-/ëk½™Ó©ô X,[ZM:½Js½7s²ÖÙq2}U¯€ gV®9¹ùJk £5íAµ½Ýž>ð’9H—–† §ýí„ÝjŽŽg +3µöÚìÚ¥æpß«.÷ç^ýÌÀ©’NyûÆÖé‡g6o¶¦O•›[¦5AÛž>wåuî6'Zn¶7œ=±zìÆúÁ­…»6O?fg2ùu=Ù †ȃ\uoiïáùÍ{«½3ÕáÙ ++ÝÁÎpfæì8“†ÒNæ]Bîk¥ú6AW§=ž;YinÀž[¹•BûD¶¶Sž(6Ö£Œ' ¾d5o¹ÃlaµÒ>Öš>Ý_¸Ú™¿ß—ó–‹5¯6ÓmÕû»¥ö¦W]X[>ý¾~z°pŠ³^yam÷ѵÝÇVvX?x ØÞOï¿õÙßyËï*eiûúÖ™Çwï®\_Ý`íă™âê½w¿îMïþ ×œFÍ„=ãU¶ZãÓË{·N^yr¼rqcóÒ{Þ÷Çݹ“ÈÑüÙöø)·þñÛ½ýÂ]ï*ÕO¬.ŸÝÞ»‰ôH¹ƒtIµZ래ۼ½åõçï~ÛôꓧîÚÞ»¬[­li!_]³ssn~¾ÚÞ:qù©ƒëOƒòÅ%$žjÖq†„3„ýd¥Êõc³kW%5§%*io!†´pE Ø0þt¾¾ãäæÝG_û®³Wd„ D—¤¶Ú3ë£3naER;)k|óæk^ÿÌ{sù93ÕCFU'£ó+ÇTm†ÏHJ‘áÓï8éq¾Œ;ƒ0u毚'd¹¶´x9ãõiÁ0íj½»;œ;;»|fzauëbÂm‡ãº“éöFg»ã ÞI°˜íM÷ÇÇnÞýºW”Bgú 5s¦Ü=6³q«1s6[YG”oßzõC¯~K¦4 +DL+ DZK´³ëW1i;»w~âS_\ܸl»½c÷^¾çÙÍsïìâ­7lœzÜrçî¹ù䃼UÖëéü>´;>ÓìôfÏ,lß­\±r3×o<~üäM-ÙhwæÎêÛ¥ÆÎ`î‰˯]Ø} _ÞØܹ­&[¾  Ì·Ò°uÓJb¯‘t›½½Fsa4½'iE„^Y'&ÓÓ¥ÚÖÜúµti^M4f6nÛùY- 1­¤ú*f †5Sm¤¸ ôd¹ºœñfæÖ.,ï^/w÷ˆI¥ÕïŸxì©ç\¯ßìo®ïß=½r5WÛL¥Vf(M9ÑÁU*k¼œM¥Ûio6‹ª),æJs­Þ.„ÓöÖ¥Ýc× |Æ gVÝZÚ¹µ´}meçòÜÒIÏ›yöÍïþ‹¯|ýäÅcLFRkz¢‡´©÷/Ôú˜ó E­>þØ›ÞÿÁw{«pÃÅ;QÃ囋»¬î?¨êÐ^·Û£ýùN±£%»™óõÞþÂúµ×¼åƒ'.=\¨Ì÷ÆÇh6­$:É윚è‚n:ÃSç.¿êàÌ)«;š=Þn+‰º ÔõÄ(W\kδú'yÑórÓÅò’¨–0u™2qgÉô¢nv¼Â<'ºQJ5’¥JkeqýÒÁ¥ÇZ3'á/BÑD8¦‹jVÖréü¸Ú:Öž­\ØØ¿÷ôõ§ò ¬d³7}ÜÎõRÙîékOoŸ~¤;{¶3:Οž0"L½ëx‹’^‘µR©¹‰4˜]»¼´sçüæ§8–ÔŒWž®u7Û³§F+W» ­ü²¤VÊ•¹Ru ^ÀrGùÂbÂlB6›/_ì-œËU— 監=Õ(7V‘ ¦ÓK¸£Dz$é¥8ër|îÆõ'É·{ü¢ –PnDç˜PmA©IZ¥TÌ샺Ãã{瞘Y½'_Ù_Ù¸w¸rÕ.Ì ¦î}â]ºÝ~团Ò4­Ù|ý`°ú`±q,BYŠ^î ŽÁC5ûs›×—wï;8ûäþ©G»ãsµÎqÇi_½þªÙ¥SqÖôš¨Vµ$°w;[Ù ä*kz¢|áâ}ΆŸhkíÝ|e Ì•+o¶ÇçJ¥ÅÍÝ›þ.R«™u€¤ë£cÓó'ôd]Š’RBzg¼Å\eÓÊ.Ô»ÇËõjm½\ZH$‹+—ºsçìÂRÂ>\V*pb5iÏní?èz³4Ÿ?Ú¹ù™å;§W®L/_ž[¹šrgZí»îZ׋ gÜœ>‡¢-ßyìÊk¶NÞÛ€PTk<úÆÍÝ‹qbHK¹âŽ‘j‰šçlx+Û'R](RÃê¤r‹µÞ‰Îìy,Ù¨)ÉV¡8ŽÄTšµÈ÷©­i+»¬èc# I3‰¢äd½žW›ÍWjýc°Ev~¾ÖÞÉ—–·=l;{_¹»iØ]Ãê¥ÒãL~ÙÉ­xµ½Æ謖jŽÛ½½á¹ÁÂÙÁÒE#3æÔâaº®s²[¯Ï_ºù†s7ßØ_¸bggy ³Q€7'ßú¡Ü@@ŒÇ 샚óÕ¥tyÁk¬ z ¨²´yÑÔ“­Jskzå:P±7½ŸÎ´D)ÎXሧ¬PD Gµ|aaféRîÒxõî|k^˜]'3ìOçŠë’Ö…h×RMQ+ŽçON/Ÿ£Å4àÖdµ"HyÝ(ö40¬WdÆnv†æÒ½ñÙ­ƒGjíýNw~åB±¾…Àå3ƒk×^U©MGèD¡¹Ó_˜Û¸wm÷¡\iSME­æ¸½מh4–yÁkõö6Ý=½p¡Ö>^kh‰^¥²²¼zU”ŠÅÒÒþÙ'7ï-U·Ó™ùLnAOöq¥ÍÞNÒn RªV.ÖÖòå•ù•+›'î7SƒXÔÈØõgÞô\.7Íp9Õl¥œaÊ—ë{ ë·¶ŽßÅÞj.mÜm:}†·9Þ’ä<Ëæh:+ð%Q k›{Çï®uQ<µÃ9šËÅ™‚ž'Ýù`Ø<:AÃk»™e€'{Û Ê3鎌dÇJ´NŸ¼¿Ü[§%‡W=A)!«ÝÜ’›Wµb8$+r9SXNåJ Ζ 7AÁí¨j)iÕuë5–ÓÅy+?ç5¶‡‹¼ÒB¥<þÜý[û×µdQÖ +µÖúÒú«Û·[Än¬¦23‚ZÆ|¶:; t3¾8·}ðèÒæÍ3—^spቤÛìw/]{¬5ÜÝPäÖ!YX+V¶ª xöfœÎèF“3ñ¸n&k½¹3,¬_…½:wõ™µ{kµ•“÷,®_K8=-ÙÄ„à<¬è¥Ý%CïÄÉ Í„f”œlŠ:SÝ䵶lv`ØQ¦Ýã弞hŽf/U‡ÍQÑ˜É YËê…ƒ¼ßO”(.·'û3g*ßjETJ£Ùs‹ë7P²^† hNWZ»äϧ˜†ÇœWŠõÓî¨fóPüw½Êæ`æìòú-3ÙcXW’ +^aµŒz7S]h˜åLaÍ0º›SõjÊÉF[6ºioyfùêÖþCëÇìŒNƒ ÂQ•fcpBZ5ÙòJ½³‹ypn&;†4¼ˆòª'í¾¢ÖU­amŽ¶WöïºïiNr§¦bñ¨¢ˆ¹4d’7ÏóùHXO%êŸúó¿ÞÝ9 + ïxeœa·PÞk´O5:äE„”bq:*’1±,„ê.YOºlnppòfkvƒ–’J¢«Ì¦KÓÉ "ÒÀrŒS.-g óà2Q-`ÎiÎå‚¢ÕRÎÀ$“V>wáîô^º8­ÙmÉ,ËšçdÚ-ؽl_ì´ÓLï wÜÜ€“2¡˜ø…¹«¶O«k¨;;ÝYݽ ¡Òn§ CN¶—v/ÝzÔÊ4}AI5ÉÌR:¿b»CÌOœÍB²6ºÉtƒ¦UÛ©æO-n]Û=ußÊî­é¥³ùÒl¹<}ûö£Wo?Œê’ZO:³–;_(¯'Ì.ÇeYQÎËŠ‡( ·“¹9Ó]He—›ƒ Ýé+’^RF:Û.×–V × ]j˜-ÃhZ“c2!? ó¢àêf-›…Sƒº ÙLʦsóVz£“õîfmp<__×Ru˜&ŽÏd²ÃÑìYØÃPX ‡UÝl£x+õÍþèt±¼vøUVJ­î^0$ÉZ¾4?˜?›ÊÍ)f“bì8• +ŠÇŠùtqevíÖòö]ó«w6ºûªÑ£X3ƒñP´Îr)ͨjk›§š[»U¨l©NÎË9ÝjV=aµÓ™¹j}«Þص  ´R2Y„Ä€Ÿ£¢ +G›ª\ˆÇd3aDw¬ÎÍk6J㠟הRÚ[0’ÝD¢§i5I.…ÃÇf›m]oÉV4®2j¶P¨Ë?·uО[oͮάí;çÉk·V.¸Õ¾á6 +•ÅLfºPXÔôj$®±\RU³¶ÓÈF^eÚÉwÜB·Ñ_¼ÿÑgvÏÝlŒ–U«¬;õb}<^9V¬ÐB +ïï´— ¥Q$*&ÊÇjõŽ¯fk[¢Q¶ÜJc¸œ­³µž®²ZF³‹¹Fkno¯µ´%ÛEÙ,åq³J±) § $vµµ5³|)™®(j*a2å–ò¬l-]ê™éz¡6^ÙÚß>s1×ñZ6íÍåŠ+‡ßS°|>Úïch*ÙhmVê9(Ÿ +¹Ö?ž)¯Á%IfS +’á•š£T¶J‰ F¶ §ÑŸ;­hHÄøI™jÁÐÊ¢˜¥+F§81k§‡Ùêšœh8$%wáÎû÷/ÜÎ×G!JŒq)×[È—We­ê÷sŽ¨‚˜“äb$JþB,n'R ÔÅrc;_\±œîÅkœ8w½5^UÅ0¥B!¸¥±™éТ¥' ­Ñ®iwõT) Ž–µÎìâ͵íû³Þ\$¦ µŒDµT_¶2í¤Û³Ü“î»ù~oîXoá¸WW›KµÖN³»_ª¬‡ƒêÑ;““´¦×¼ü,ק&£~Z¶5 ZíãºÑ …´`@¥LÂiMú™©ã +zbÐ蜫֎Z;³ÒÙ¡íԺݹãûçÏž»~÷?ý–·½ý½ïýÀGÿøó_þâøãúçyùïù¥¯~óÉ׿}nõ,Æ:ܦʥ6´n{~z¸6·¸·¶¾wòÌÅÛ÷<ðÌ[Þöš7¿õ᧟¹ñÈc÷?ñÔ“ozÛk_÷–O~ü3ùô§O¿óìùÛýñ”€¤äÝ\?ãŒT9“©GK[;û'OŸ»q÷íG_ûê7½ãmïþƒ÷?üÌ›ï}â O=û®ßûã?úÔ_|ös_ù›Ï|áËïyÿŸ8ÃÎ4D9M3†"¹EoX­M;éBµÑ[YßÛ?suûàüüúÖÆñ“;§/]¸~÷»žûß|á[?úÉŸÿüç~òõ«§kõ9šNÑ1›¥ÓŠT¨U—‡ÃãªZˆFµT²²´vrvåxg¼Qï/wf6Î_{èѧÞôô[Þñ‘çŸÃ[ßùäßöÔ[ß•- ¥wTÌL™M+ÕwÜiËî*ªW¬Œêí™þh~vqgçøåëw?þöß~ﻞ{î _ù«ï¾øÃÏ|ዼê©cW†£­¤Õb¹,Ã:€ ìBÍâ„ñxJ’Š•ÚÚxáT­³TëÌß¼ï‘÷|àïü½ß}Í›ÞøÌÛÞýê׿ùñ×>ýÆwüögþò+¿û‡øÚ7ú‰Oþìç¿úû_üêç¿øå‹/½ôÜûþ ß_õ¤@@CÑ‹íöA4’Š„žMY©¦¦79>ÏóiM/f¹Ùœ»téö½ææý¿úégßù;ï½óƃ+Û×g–Î[v›ìe=B'uoifãô‰ w]¿ëñ‡zÏ»ßö©ç?þÝï}ÿÇ?ýÉ·¿ÿ_|ñ_ó›Ÿüìï>óçŸ{ïïÿÁÙ+÷ æΰ|gs%¸r§V/6a!.Þº÷ž}üUï|ç;?ýÙÏýÙþòCŸøøûþðŸûâ_øÁ>þ©?ûÊ_~é7¿ùÍóŸûÒ{~ÿOnÜ÷D­¹Üío/®îŽ7²^»ÝÛÝyðþ[Ͼñµ¿÷{ïùП~ð _ùÂ_~ù+/|ó3_úÒ_}ã[¿üå¯þëûo¿úgŒäg_ùú×ßøÎçÖOÊsLU±Ë^cz¸pòä)<.\¼ôø“OþÎï¾÷Ãÿ“÷ÿé½÷Côáç?þµ¾ñý|÷?þÃOÿí¿üÛòòû~ÿ<üšNwÕNô ¥U,¬tú‚艜í¥îK¯¼ú5O½åï|Ës¿ó컟{þ³ŸÿÛo½ðõo¿ð«_ÿêÿù_~ð£Ÿüä§?}þ3qñÊíÎv2ÙÏeÉn¡ºì•fæçvö÷ÏÝyíÖ3ozúÏýöïýá‡>ú©O}íÛßùî~ø‹/þàÇ/ýòñŸÿÏCµþí7¿ÿ‘}®ÝߌÆMp"E%cd‡dZÕªéL¿Ó^<{îÊÓϾùé·?ûþ?ýïï;ß~ññ×_þÔç?û×_zé§?þÖ÷^øù/þý×ÿò“—ü¡~øþ‡^ÕhÍô¶‹)ñW½ê“'O¶º³…Ê‚(8Ö1Ô\JÏxn~º3¸rþâëžzÝ›Ÿ}Ó[ÞúìÞÿ¾¿ýÚWÿæo¿úéÏ~êK_úâ/ÿñ¿ñÝoôãùØ'?öȯ;~òúÜâ¾ë¶*Åq·¿ÜjÏÔëƒÝÍgOž¾|öàõÝÿçŸþØç>÷ü_~ùs?|é?ÿ§_¿ðƒ_øþw_~ùGÿü/ÿôò?¼üù¿ú‹gÞúúã§Î—j3¶Û²œškF½™Ýí·oÝ{ãúëW.¿îÕ?ÿüG¾÷½o¾øã}õ…>ÿå¿øî‹ßü»Ÿ½ôÒ¿÷“£X¾ý‰ç?þøOçvÙS$/—WjšZIè^)ÛœéM_üÑ]½u¶0„X¹™A¡<[*×Vww6wo\»þžçÞñGúƒ?ýèì“þÆ·¾öÏÿé_ÿî?áû/üÕ_ö—¿øÙO~öòóöéw½óÝs 'x!ã‹èt<Ås™T²9îô»‹—/\z×o¿óƒúÁ?þÄG¿þíoþâŸ~ù‹_ÿÓ×¾ýõ_úÞ/~ùÿúÂwþöG?zá[/üõsïyÇc¯z¢ÑœMYešQZ™lÇËw+ÅáÁ±3o~ã›?ógöõ¾ñ•¿ùË—ÿî¥_üã/^zùÇßÿÑ‹ÿôë_á<óÕÏí_úÖ·¿úÜsï¾}ÿ«N^~(åö™¡†JHüÿMÒ{6Ë‘¥ç`ÙÀ5å]zï3+³²²¼÷¾nݺÞ[\  4¾Ñ~š=Óf,g8CΈÃ9ÝP¤Ì’E¹Ð†Šb­6ôA»ûyßÄDd p/P•'Ïyßç}ž<ç¹ÿåçO_¾xüêõ«{ï<œ®®%‚ª•“iàÞu$*`1&$–€¸Ü¾öàÊ•«å\~P)\;\úèÆgŸ>ûîw?ø›ö§ÿàæ?ÿ‡ÿõÿ?ÿƒß~øøÎÒÚrÂΚV…銫¡©RòæÕû¼èö—šÍÞêxt¼¹üðΕŸÿηþÅßþÅþ/ÿéÿø¿þË¿ø—ñ—¿úÅŸýÑO~ö£O¿ýÙ“§Wƒå„ÓŒFEšN ˜î €®!ƒA&a Á¨gÓW÷¶¾|ÿé_ü£Ÿÿê/ÿèÏÿä·ÿý¿ý'ÿý¿ÿ×?üƒ¾zçÚÍ+›ã^¿^oS”‘›€‹ ¸XÆ9ÈõƒÃõí÷®ÿàÛŸüÞï~ýO~õóÿôŸþÍÿýßþ·ÿçÿýoÿáßÿÕÏ~üÍçÏnuÛ5’<ÎЩP(»DÙçÁiLO›Õ¬Y\]\ÞÝÚ¸¸¸ùô݇¯_¼ûéûÏþä~ü7ý«?ýG¿÷ËŸÿð÷çë?ûåO¿þøå½óÓr¡Årñ* ¨L‘&/¤ŠÅË,Ѹ˜µóg'½ÿáÏú“}ï«^½üñ÷¾ý¯ÿþoÿöo~õÕ'~òÍ×?þú“ÇnìLú ¥Òh89³“¯—ôûX’p˜ R—3õóýÃ^>ùÓ?ùÅŸÿê~ü£¯ðoüòç¿ý¯ÿþ_ýþOúñ‹çÇ»û­F[ä ’Ð£1-ä ±Ê3¤dšå|¾?¬­op’ŠáÀ-…"D£<Ž©4m…ÃììŒ?èà D£É8ŽÈ,¡sî% œšN–m+#$†à8J œÂ󺤗¢˜áR‘0OºûÌ`„š÷€ª%(\Áb<‰Éš"%)ŠF\1XœPX®”NÕ+ÅåÅ…k7níìïe³YÇ`ˆô @•#9âCaNQr‰DM’¥I‚™2£)Ó*eÓ…l®VoM—ד‰dÞI-t»r)!j$"€j&I‹ç3vzÄ +ùË3!`;q­®‰E[ÍôÊF¶P°ÌœioïLº•f1µ8èæ25Q0DÁfÙ<Ž™A?ðá~/âóD½ô×NV<—ÓåJ³<-¦êlåƒO/®ž´ ™i§Õ­ÔÖGýa«š«á=7ëóÌE>rn&47ñûHÀ. Ñ9*i¨%dVº”ÏV1ŽÇpU0rv-¡e«ùÆbey°lHr!™K()–PÂ!nÞGÏû˜HÌPÕº®×x>‰¡"Ž@æ:)§ I­HÅnïhs凌[ºš&¢±¤ª“9S¶(“‚(R´zo|+ný~ö­ÿÉD”"hDd C¤õ”‘*:ù\2]ÊT¾‹8-Sb\ΛZÅ6ëI»‰@¦hÉÔ@Ñ[—ß +B¨xØ<‰[>?‰²QDbCãÃaŽæ²¼ZVã5]/#ƒ" K«$!³¬©hEŒ4@ûStRé²»¹/\Eã$™ h“åìp„…8Q2aÂaš&MÐȪRḬ  "×2²bÏÍæg£hTçØ ”u–¯˜Éeš)z½p`‘|^Ì7‹øÑ/òEñgéeYH0¤ÂV$¢úö¸_o-e’H"Q%à%ÃîN%9R¢h"Ñ Æ1Œ]­ŒÏOï³µ 7$SºÂ82c³ð8€Q³¯§pÇëÁ.½åñÌ#‘y¸ åc¨í òŽÇ¡Uq³Y,o˜f'¯±¸F4Â-Ö¸ƒ¯"˜2-¶¹­é-’NE-ýÆüVâÉ¥\ù°Tßï/^˜Î¢ß5N®Ç8ª]¾ä÷¹Žšiô¦KwzÃë4S˜‰ùæ‘ja‘$3³1ÍPH 0K×Z…âz&½pžÙ…BÑ”ƒ‰j(bdT3ÜÎL,ÌÍaóž¨Çñú¢>o ÝÊd÷ÅõÃdsiàBË¢\â…ŽÛ™bÜeíqŒp¢hüòeÿìlnðs4‘¹‚(– üê•ÍfçhnŸÂ ³BA‹½ _‹¡ºÌ'{Ý ^*x<¨×‹øýŠjÙ–•^RãžÏær­D²CDøl0€i!XJV{¥êáÅ‘(é>|U0Äú$DŠ[²ZSä¦ß5FcÊ„Äq z,Qh*cZ]FÈx¼H,fèzψw6Ã’4W †5¯†ð …˜ËîÎ…PÀ‹ú½h(@ÒdÒ Çâ’á°zéÝG4ª#H2u=&bv0TÁD0ËuÒó²Þ€}e;Ãlq‚“&<©Ïƒ²„ 8{94ëîU§@¼#±¸cMјíõpùýÔÜlÔ`¡‡ÝTƲ§‰ÔZ4fð¼cÚšÏAl‡|ì¼»¾£0«]Û¸”wá‡둘Ša×-ªd$ÕøA-ŠJ€Hi ®¥ ›$•§˜B(¬y<˜¡”& 7,1s9L1–-ÈBÉÔë8f{Ÿ¹Œ¨•k4öúXšÉbdŠf‹º1*”÷e¹í÷²ƒc¤†g>†Æd–ÉŠJGTzº¹ JuׂÓ5Í« ×Tn¨V7™^ìŽÏò•NÌŠj•+Fb 'ÆŒPbNèÍþVHöhìÍÿYœ&Ó$™Æð„"WµxgnsÃSI6­Û#Zª£ +ü˜K7wönÉFÓ }ˆh ¡žMC‰ˆP¯ž^¬mŸAhaktŽã*,[–ä–¢ ÚE>°"ÎÍEa,pÜ`¸¬¤u’Ù5ÃœRd¦_²ì<‹[‚£A$X$©™ˆ¢&G&Zõ –ÏÃz=„ÏËÅd$fG¢¦šéš™€Ba ô™H˜ÅP̓îZDZ,[ˆD¡UYOÇkÞ‹BFâ‰q¡¼*ÈåPXqýÍ;ŠX@ïY. ÙáñÒ¢Pã˜üå·ü³—˜†± I-$–p½—= ¨ QÈB{И +Ká7 QbHܵ4! gœ•µ›íÁ6N% å*À©$¹i‹jªªÑ¤Yg΃x¼x ÈD•bsºÕÃÈ/Ö÷îi‰Î¥™È¥KáHX%H‡¢2q³›Î,FŠoc“r3³è› ƒ ES¦9H9#I.)j-Šh ‘˜JÑy¸u½sey÷/AŒ©ƒÑa£s„a ŸŸóxh¿Cb*K' bÎÏÅh&-l¤ 8•u·_Åâ¢Ñ©tÏG«ŠÞ°b¸ô9'Ãa>‚~öÍF?êû<°¾ën0‰(žÀ#zÀúü| µvvZùÒ¥€ÇCŠÚ€&‹™F¡\¢á_8;(à*QÄõP”|~!î´¼ pg³”X²r+¬R#¹¬a¶ß}þÎ:ÔÌnÒYN9˹ܺf/ÌùžI¯L®©Zcf`„…H¦Èœ•O×6ºÇ™Lçæ¼VcåR¦¼Rlí—;‡µþiux]±F—É¥ºßùöO¦[×!%QTEPÅm^¬§2²Ú »nð&€êšçHº„S%†­™Ö‚™GbŠÇ#ÜAîî ·I* Ï—µ^©m+J9i·Î#lIièöX2:8› f$‡Ökz³ 7΋UÛYàÙ<E3QÅÇt–q ®BAÃmšÉ}"™4#¥%²8`€½û}Çæx¡·å B(zü®K€$N˜ÀÍ ü"1*l“€Ô&/]ŽÎÎa±¨É05Yî?‘Õ¶¤4Y¡D0N*¹¹ÆSŽ Ud£ K2Ÿzþì3U+hx<8‚PŽ96KÓIàZá°( +AÈ1ŒÉ— Í%9Hä—¥F1i+Ñ#IÇ3Oø}<ŠØUÄ®"£QÛç)"™Jù—†çšŸCçfQhMW¬ä$_܉áÙâî&“0Är7…”jËZËÉNÓªr>nfA4¢BaÑ5Á݉W([aD´%æcd"‘[Ö’ ©Üê`áÖ`é^¶¶)Šù|~’Ì-0,d¢‰“àö¼Ÿ†ïì´dÍõÉÁ±ëö^FUkµÖ^*¿X./]<øˆ×+‚Q®ºÓ½å•ÞQ¡yÀJUVÈL†;þ§ÿüö㣨B¦,×µ“Íï–k'‚Ô2ŒŽ›¤„ãn&‹¢:4’kÙòigüv2¿€Þ$ŒD¢ƒÉ`D €¥S²ÖÎÆ +åxrÜjm½xùåÊöÛá(hŸš[13«’9Ž'W’éM`&QDgÅò¤»Ç!j…®uÓóÙ‰ªV!¶ý~ž¥Sf¼ÉKIkkV¿Ñ=*Öwq*‰*R?¼N‹·2•ÍRïœU[¢ÞÖÌð·`vç +í>|Ðɬdsk*³®;wAªTE©!HuNt mx¥)Ç‚Ö†D¼1Ã'é<‘o&íÎÒâ!IêÏVŠ T¡æñss1Y*Kbîð<›ÌÆ©Â+—MgÂË ^¨X‰Ç\'+×57‡áÎ73èšÈeuµY,¬@]@b†ÅCPÇç –)PtåKû€iPV¢1õ­·¼s®Ó«‚$UU½Ï7å @—Ïͨ* J0ŸLƒVJfV[£›Vj!™ŸÊVWKõÔ8UZS­!°‹i{÷þ`që&ðs/ˆ4®hÍxb`˜ƒ@ˆ‹†8ŠJ‡#ª×ËĈº“›j;¹ê&Ã' ³Ü^8rkw¯AzRªïôGgËë§7?” JȉDÏõMUšÐ* †vìô$]Y#ºÇK9éõÞâ½þÊEª¼ÉŠ5”ÊF1À¢Z¹¶©šmF,rRQT€¾vŒdêx<ÝK—FÝñnº<¥(£78XÞ}·5¹#h=IïÃŒh“ÑÑ˾_ªN}ø'A6H²žËí”kW3ùM—ÅI%Ãjñ qvvyuóÁÅ£/ýS‚Níï_¬®Ý€—äB¹½SŸ7n,m?Ù=û¼Ú¾,”å’ŠQ¥ø4°8¨›W ºÆj0Ä»Ûý$‚@éODcîNœ)ˆñA¦yœ(îâL§LÃlJZpŒK²VÓí^©¹c:à0€- Í>ê®pàQTGи×G Ž ‚¦f¨ò‰ôÔɯ³Rƒjº5in«GÁ27‡âD†S”•áRå ËC¨4 Y6𻳙®câ®(Õ„=ûÖ[¿—ðypï<PÊBA‰y¡ÊЙpj´tñœšÇ +EImj[ùêöòÒÍ÷>øa23äåR¥s%]„ n,Lo—Z‡ADózI–˱P7‰¤"×Y¾è†“BºTª­QlžW–KñäÀÎNsõ3µh¥Å“Ÿü(ŠjÐEùênÍMüíZï¸Ú=vò«aj”¤A Òž¥è4X¦°µuòr°z%“¡ G³©(fÂ’7ÀÈÈF¿P¿²uøÊÉ,$ÓãB}ä’ÞAÐv"=\?|ûù'ß»ÿüËñúmQ¯3­Ó«O §ç p›ÍUÖòµMɪ;“•êF¢ñRãÔN¯1\EÕz²Þ‰¢Üzs»38‚VŠ®™ÝêŠZ-Uc¨±°z­ÜÚˆ‘šî×n,íßë/Ÿ6†WÒ¥uQ¯ BúwÿÁŸ?zö Á˜@íôF}t§Ò¿®ÅüÆh<Ø;>}~é2ˆVK1Ç…îIoóÁp맺%SV¢ùÛ?ý㓳G>? ª6‘š¶Æ·Nï|>X¼çÇÍ…1Íq¹y/é p±¼Ô–´¨3 Ñ0ÇÐ –Ë ˜ Y\œw—/6Ï>ܽþáò]A¬ÎÌ`ã…óDrt­VI¸ô”‰áʃlq+êº(ÀW%´ÊøX0j¡ÅH×…Øû,ðIá6†Æ: 4ÇRP+Qø|À“¦ã0”!ND#Ù$hœT~¹ÞÛ#9GTkõÁy©}’*n÷n&³«®n€£CÕJ(=¯…]OÕï—b1'’S©`*bÉvÚ©!¸úfX±Ú>˜l¾=Ý{GrãñQ£·‡³6°¯ti-‘]â•VµuØ]¸žÌ.K¥Z¾´ádSÙi";´J¤E27;;ÎÌcjJ¹òN¶ºŸÌ­ÒlÀªÜÜTÌ‚›ŠÞ‚Ôîï^¿xuÿÝÏ6ßæ” ·ùêƒoçË®³w¥y|ýÞ·^óËǪÉe‚ÍÀÐðl±TÙ¸>oîúÚá¨FÒ39qý\GnÇHTA‰$ÁæµD?™])6wãÉno¸uý΋x¢Ks)œÒi±HIeQ¯VÛÛ×îZ¨.¹¯GˆDwreTO ‚a-–0Ì(åGãS(‹ápr•W*œ\7’KFz1ßؘlÜ~çƒï×nÎyœJ[©©f¾j~žHÑÕš¢”.]#²–˜¦òzbj$Öf9*q2qtýùÃ×_Üx9Ý~dçÖêç½ }øçïÿ¤\ߪ‰ãiÓcx†ã«…Êh[È#$&U*SU.€l¼Ð˲rÇ)f*‡¹ò>EQ$a=µçfžyê *ZHQ8ìîO€ÍBÛ܇%-ˆxzUµÝ…ÁZªÝ¥Ý%jE%>uÀ±&M:"—b™$„JX¦N”p²0 +‰­úv¡:u]õ|haIm×{'ÝéÍrgË6+ï<úlc÷"FèÙòÚæÑ‹•ÝgÍÁõéúƒÅ­‡š=ðú™¸Õ©‹CÁÅ5èRš««úâAÒësÂîÙ7Že÷Y±DryNª‘lQÖÝÝ‘œ\æåŠZàż"纣ƒÁòõÞòµjwksïþÒÆmÃêØ©agtÖŸ —OÍìb”ȸ¶Ï%eË•-™÷P¢Ü0ìEÝ_’”r4¢2Lu-()^ª¥òkãõû­ÑliÍ0ªgç÷¿õýŸAÝ„>$H[½³«w>yøÞ†ëw!tÃ1)]Y™I 3ß6Dû‚"N8 L0<Ê¢\Æ\_b:3Eµ—-oÞyýá—¿÷àýßÎÔ÷üaU+Ð1Ì‚‘‚*F‘EéHrÎìДH¯±®3¼"ÆŠµ¤vWÎÆÓã\i)™[ãÕ#58¹ ¥d´úÁAÅt–T³ãº+ÄhÌtýíç 7«õm Õf.y.¿å@¸› —E­‹‘©Ùy>³AUy=î°PP ‡õpD E)×F›J›;唊‹ôYx„LåÀÌlj‰I¶~yÕVußSõh¾ Oœ 2’Â!9Ñ@¶@·Gà +ðRõ7¶„R"Ñ»vU „?$BKx¹ªºGf´Rénwph%º¢XXÚ¸XÙ{Ð^¸Ou81M²JØ7ŒM&"a˜¡_*V¯¶úK›Ïp×ü™ç¹œ•5 +EDç(H†øØ´'À~E¥2\8êõ÷Y&AáZ¥¶º}å鵟Ý|ðé‹OÒŸ+JóÝ»|òÙ÷e½Œ‘ ŒÎò J»ÃÅ‹µ­w ²xy ¡ó¦³h@"iÈ Z,êžy¤êÖ nu`w\ž¢3Š\®ÔקX¹Æë£ÞàN±¼µºy±¾ÿ@Pkáˆl™µ¾øq<µ0?ÏÆ[T€“OX¡‰@õ¡|Ø©1(¸`˜—äZ:¿–«lŽW®ßyüéîéAo%ƒ»÷^ƒî‹"F<1ÌÖŠåí|iW”ûîyXA–cS@´ ®ÍͶ +µÝöä<_Û†Ff&; GÄ`X€Ð‚$8¼õétïYgé#V/Ïàžºýöç¬\€ŠAËiñÅrý´Ò8Ÿsßq…"a†aSsóØ›ÃÝ”¨u¾n:«’Úƒ;ý$Žk “ƒ#R z¶»~ððâù×Qx"!a†¹«× {`8“D~Ë.îRB‰¦Rµê/‚ôÖ%Ày©¢¨ Y¤*Ä¢hÿÙÙàÜ\tv6êuÝΙ7–eJ,§É4EX‘0'Ë=ÑÍ”–3•µÆð4‘Y-œÊ,ØéÍÇYÁdy[–‹’RŽ›=ÇYB€ÖF$žI¤ +s@PE¡È°®ÅŠÚWe š’=†hžP°|~J³(Õóŵx¢C’q†Š[ÉjÜ©dê“ÞÊéâæzk§ZÝ88|Xm­2|ÚÉLÊ­cÙ¤ +ëÅÆ‘a¯¢hÃRšÖä«hÀð†ò×ç2üÚ &óê0¸“¶š›7h!-(…þʵ›ï|uëéw†›Œô+äFigýtsóžf´¢ˆŽÊ˜;Û˜$ ˱Û$aD"L\/éj  IåP< Åß0rçì˜ùyÀFPÔ¬t%© :%⢔댶W6Ov®Ü?¸þìðüÉÙí÷V¶ï;‡$—n6V¯?ål •e­ª}NhkÆAäb±8Ôb×hÌÀP› ²–ŠÅB4èd‘/ÊZÓºQÆÉ8Ťh®@qÉh™v§ÓݹsïC5ÞPÔ +( ^,kñf:³9¾ d8åt›õÍ ëƒ %µµ-ÊuQªÒ”“H´uá_G$Ï•¶Ó[ãµÛGç¯áïûÃáÞþñ£_›ËáXœt—âp¢ +B†"âõÖš¬–Ä ð Ý”x'SÛé­?Ø?}?“ìÝúËÿùß8é‰? qB4Eµ¹ÿèù·ï?ý®j-ÌÌ5²\ƒ»@Zy\A>4ucÁJNu£…¡:§HXŒD¤`X D$O@öºyfb kåP„ 2~?éwמ‰„»œê~†æʲʨ‚«ÜÜN•—2•õjÿ$YÜPì!0äÁðôðäý¸Ý ¸Ü®ù‰À•H2ÄâP¡JºÎäîáhœûìQ‰èf:v}8ÙM¤ºíÞöæÉ£rg£ÜÙNW·c@²ù¤Õ<Þ¿¿³÷œxsˆF$*2LN’›œPTÕ:ÃfU¥T©,Ñt´6èÁ·±Ãò•àógw,ä8”•7³á +‚&81'UßNwûG?ù£_þÅß-oÝ„ßl¦‹«Ãéõf÷`q|¶¹~Ý4Ëf¼fÄ[šÞ2ÌÍT‚mnÖ=bÉ3Ah…C¢ÏÃBæf#>/ðQa[V¼p¶¹{7æÕ`îÁ|¶b¶ +ÕÝRýÀ°zmLJÖVÌué—( +©;¼\œÔ«Ëž9Ô;OPd +ôŽ™>CN‚PH${îëA&¯êõtajØ=I©‰r {<:˜.4ƒcÓPI£a G5–N☞ÎôÐÈó1Γ”Ôšn÷M­N‘ñr¡óàÁ{‚Ô©ÔΫ³Db”ÏOÓÙš+ פr­¼ i5;}sfA^V7w>Ü8x­=‡É•=.]\vÑBáM—Ap‘\ +£ÌhLž™ ýÜx©”­n‚è­©ì:ùMN¬æK+v¶0º‘ê6F'Ã¥[Ç×>¸ÿä;ï¾þÑÙíO¹(J ªÓòùé¹¹˜×ƒE#€¨<ËåîOŽ¥$‘2NR†búã½Û>˜n_CàG(Ž•Fï: ®a¶“©¡btÂ1ò›B±8@:'Ôd¥ÝêžöF Õ‡þ€DBeáÕ› [‰Æ,Èð‡7ü©í@ªF"äK ‘’éÞöÁ½ƒÓw½ííýÛg·ŸÆ† e“ÙÓéïÞM¯‘t +ÃÕx¼°·w§TZ€O‚ŽÅ,÷]"–á¹†Äјæõà>×(Ï5{„gôyq ©ô$WXÉ槊Z8:~·?:!8G²ÚñÍþòý\uÇLô7wîµ:;SÐ!™Ür&³¬È5(ŽÁçñ —Þ +D‚¹˜<;ôx‰cXøRÐ1‘*rµ*ŠâPO Àª]Ërg¯ =,Žë5×Ãm8EdŠHФ;Çí÷áá ÅRv(ÀNz|Ð UÊ)¢£*9AÈ¥2£§¯¾}zíE ‰STN–›PÓ‹Õ`°4¡ +\âó3EÓ÷u¨P—„šž úUN;‰0œ·.b¨[æ€ùxÝ“°H€‰Ä¨;žy$ €¨Ê¢‰!窭,Åfx¹©Wií™võìæ“ý·[ýñô|ýàíÉæE¶²!HÅRyjXµ7+s è¹YwÅM¸Î`¦ ²¥ÜîcdÒëÅ˜Ì ùbcóäöëÛO¾.ž?{öù‹~ÌM(6Çp%š-ÈZÛÉ®µ†wÇ›ÏìüŠ(廽+•Î•jfˆt èúÇãP—g#—g"s^šÛ¢±@qÕ76}ªÀ—ŠÕ-–OŸÌ®ß|òõ÷zëÁëBkËÊNE¥~pò|çÊ»Z¢ŽÓñ„3O¯6ZÛ¶Ý-•Æªš…áåËrà3Á{ƨ{zNÌtÝH†ñÙµ"!^Sk¦5æ„E§µ»+W°¢ã&+o¼7Z¿ÛßR£HT«ä—î½ó ’KødÔ]œ 2ß5Ð úo8"CAX%°YEÍËj‘¤R¢\³2£Îh¼|Úh®¾zùñÓןÛÙ+Ur¥½l~»Ý¿¶sòÁÊÖ£ÅÕ;Vr”K®^¢Z¹(ÒÒÁˆÔ)Ã+ú0†&‚aD(_Hó¹Q ‘@g¥²vzÄÚµów4³fgJÍÃÎøÖêΓó[Ÿx¢ •EâÓ •‹·_vV VE½œÌòÕié°>Øb¥lº¸Xë«F×v&vz*(•¸ÕQÔ¦“\huw4+Ÿ-wU³‰™PÚF4P¾WVµ(\’ÉûBÊ̤ !#1⥊,•ŽŽ'‡F¢™*,7‡çãµ»;ÇOoÝÿhi÷"]ZZÛ¸öÓ_þU<5vP&kM';1í%U[Ðãc‚²u£Þé_Q´ºû–&lüÚ.†) bÃëNg3ób,Ó¡’ÖÉ–¶z 7t Æ¥0]<©5¶y±8š-®œÊ ’PbÒ €T¥ HÀákc±µ UàÂ3O›f[7*A¨b~^³†£õû•î±éŒ0*…â‰nÏÉtHÚ¡Ù¼“^,V7“©©ª@}LBD…C<Ç&#a>ìN´%QĸË!tîÍÎ5¨•šZ/wr£µý‡ûç/ŽÎ_žÝx}vóÕt²É3 K-ŽÍºk;cî™M4wWkÐé¤=¨Ö¶’‰V8ÀˆNãv$ÀQXœÆÍX˜ó{ Ž-;Î*%³Ü¤f°hH Ÿ€¸*J=ê’”Ér)ŠIÈj9S^^ÚºsróùÉÍ×KIÎ…Ü¥»²Ù¦!SøÅä9¡,ŠàçÓå#PŽ—/ùÂ~š‘<¦ˆ"6+Ý“y=#¬ty#î à›»+׊ý+‚ÞPÕ⽋‡'YàF5•YYY»³½óv&·¢èÍ^sñ·~ø³þâÕ·Þ +útO¥Ò‹Ýþ¹™\DPãøäI2;œ™G|*C¹žuj¼)LÕƒƒ[k;·Q*®˜Ð¥ÃDª£ZÕfoçúÅû÷ž›W¡èoV:‡ŒXň$ÉdcX2ŠºóÚÅÊf©¶‰`êÜ<Æqù¤íjFËD£‰yïñ²ªÍy£á(GRv"5ÍTw«Ý“ZïTs9?ùò«ŸÝ~øi$ªšÉNº4µóSÓnc¸‰ ª®5‡ã‚X÷zY÷}µûnPœEI"kY£¥Åã—¯¿¤0I#ÑWÌ>J€g–‡{çï'Òýõ«Ï^}5X8‰D wy$ê¸ÆûdŠaÜù>4&q´ D:q-²ç=L0¬!xÊrVíãln8]º²õÙw>»ñÎ7Nî¼JdÆQ,.ÊÅFgo0½ +`˜uP»4“#)¨ƒ~1”Ã`ªV\5Öå·üžy4•¢î|±3Ô¡|tö$Õã7B=¹ö¤ÞÝk¶6þñ?ÿ7Ÿõ;iŵº®wÁ6—LôM­Æ¬™+¡ù9W/_~+07ƒ¸BÏéÖX5:•ê†oJUK d³§Ùc3½‰©ŠQ)T—“=Ѭv÷6ïn\y²qòbéài¹f¤&¹ÌôÞÅÇg7^ñJEÕÎQ±q Zk’²ˆ ŽßÏ‚Œ +… _xï›elŒ“Å—¯®æjKÍÞúñgWn>¿xüñö•‡µþ‘ ·I&DE’«8Dxµ$¹Õ]›,ßÍ•6x(ºŒAÝÁ VŒ  ¥Ú·’›¹â®oÁȆ""Ã¥Â1æx1k$º…ÊJ½½šv‡çzg§?9ë²ÅÕRc»ÜÜŠ'ÚÙt÷Æ­ÇÛG7 ÊÊä—+í­Li1žŠj;Õ!5HL»uói½¾õ+P$ƒa /ÄÐd©¼üäÙ7¦ËW|>ŠŠv~5W߯Þ}çåw?üâ›W^SliÐÙ¸}ñ\VócåÚÞÂêãÕWÍþ½Dj‚âŽßþ Õ9p×0û9PÓ8™…ž«n·Æ×Aª û;Ë+'€ç ›µ†l´+µå­{íÑy6?جT¦†Ùôº§÷’~?ÏðÝ%ìI,y-Þlô¯ÈZØ8'浄“¦i6êÍuÍ(/®ßºùèóÎä¼X_WŒ´ç2I§wëþ‡_ýÖlíÝaeZA¨Æ¢å^Â;ïÚ{æyÛY„xë-ßüæ÷±áH›Ð~ KXñ6”cŠÍ¶Î/>½õä;‹Û@z´ú‡‡g/=ÿzuýÆã—_¬ÞË·VwîcÊ4œ”˜'ßýreû®jvìôR½wXnìÎ +A~}ÚÂüJSE%¢îJZžbR¢Z•õzº´œ-OÏ®?}ôê[™ê¤ÚÛ®BvŸ›Ñíéú»•æ!FYe*F‹“+q{h¥—µÄ’•ÙôMwÞM`¸,#V¢¸C0e׊–/†Ý£ 2V¢M¸oVÙ7χKw–·ß®vy¹®jåñÒI±6ex'[Y_?||÷Ý/Oî|œ«oš©Í›’”ÚÚ¹0e’5%£ÎÉ56Å(6wÚ9Ù½ñù·~Ëqê ã n÷'wê­£dz5侟¡Aâ=yçãÁðÀã2ëz¨‰q¡º×Üj Î>óòù'¿ iȵrópuÿéÃW?¸ýô{™ê>‚Ù4eþôgprr?Õ~}ˆi/§ó»¼P÷x ÕFããZçÀçg$ŽîzYo¦r«vfª(ŧ/?ÿè7˜N0ÜRõ–“]ª6wN?~ýÝÉê]Anq\IÓ{÷ðèØ¥K~xÌ€_teØj$’˜¹Áµ˜_9éó€|1< e1‰ \ xôža÷šýãîø:'·Œxm0¹:Z¹ %ãÎÅ‹O¾øQz”,L.Þùæ‹Ov|ë³­ýçŸ}ù‡›‡Ïâ‰A½¼~~ãýTaŒHQĶ&‹ •ÃîiDFÎéL®Èr!•pÒRŒF¹sÐœœ¯?ï˸ÇC¸o`€ÎÑT¢ÕÞ0­æ¥·B CY¦ Ç»š9Ь‘;«ît>þô‹Wï)ËP=óËëû‹wÊmC'³H™€»@ ÏX&íñ‘–¤¶À—X:…cöÌ  ±‹£ÝŸüîŸú½äD]@Fa˜Ãtf-›K\biåPÓKP³8±#[†ÖšÝíþâùhù¼·p”¯,[v»ÓÛÛ¿öt÷ìÞhù¨X[ÏI ydw2=5Ì–»”E*‹Bg“Z®3ªÂß%1 +1á Ì0™­ï=ºóäÛ‡×^MÖ®ílžüõ?ÿ»—~af†ÉÂJcx-_Û«uOv®¼¸ÿô«Í£wzãã>ÿQ<=‰âÉTi½1ºÚ™Ü;½øêôþ·VÞÿèÏþîG¿÷(• +FŒ7gä[Г‹¹Òv§»óìù‡G×ß®ß\Ú»7Z¿Qhm,nÞ\ß½wçá'Ï>ùn©±ÙÃi'™Y1ìI¶´}zçó+w>«µ¶×ÿüWÿôÙGŸ's£j{{¸z¶´}ýɇ_ýÎ/ÿêÿêïë~ÿÁ‡¿øùŸ|ó»?ËTÖ3åõDvµÒ:^ß}z÷Ýïï}*(MU.MW®CE‘x4¦Ñ\Ä£•Y›¬=JV€Ô-,îhZÕL œÂ¢áô€Lªñî`rýÆýß”õ‚íT“é®d´‹·7;ù]‚¬ÐlÅJMõÄ´[Ü(B<@mE­PXwç"/”íY­"XøÀêÎãþÒÕxj¨HŒ×pRaÅ$A(&r|BRó²VUŒjÜnIj9e½´ú¨ÑÞî§è-3¡| ˆ©ªm 5@B Á ^.˜éi­s®Æ‚XRĬ"¹Ò2n¶"aÕçey>kÙ]Ii¾D@bÌb¡ <‡€ˆê$‘8àÕîÊÀ°Â1iø1àg!w¼~>‚«Iñr‰svºWïîTº®J#Y˧²;½hÚÛY(–ÖòåeIIêºc&«,ïXÉ¡[Õí!”!A¨¤i.· °±ˆDâqN"yæ‘7žB%@÷‘dBRŠ¢ZéŽO¯=¿~ñ²5Ú‘õ\*ÛYß½(T&µÆ¤P^•"a<Þ6ÍŽ“@ +—ë«­þ®nÖx¥J2ͧâVÅI6*µ¥t~àš@¶ Þ– V6n ™Æ´?ýè£O×v¯$ìÚÊÚùן½øÆ×~ùÃ×ßúþ‹ßüò棗›»'¯?øøî£V×o½ýä‹•½'kûÏ÷O^¬mßÑÊò™lªûÉ¿»~pwÞKù¬ 5«_l –.D¥ )¹o~ñÛnAB)'¹rpõƒ«÷¿\9x¦¨…»wž|ñõO†ÓZ(ªÖ€‘›œÒ[X¾wãÁ×ÝéM’¶Ÿ=û¤?>†e÷Hô°Ž“YV¨ ÆÀCî™Vgiz²uðh¸x½5:T¬&Ag$­n$»ÍÑ‘¨×b¨Ï%ÈYY-±B+ä­Tiûþ{_þþdí†a4ìôænáÝ)݈û¾ $C§(+M+ä‹ š5è,ܶ2+¬Ò à·¥j(gÑhœesNf˜+M½AÒi÷˜<  +MÑiÀXw‘×]Ìæu—º'Ü™ŸÅÂqÏŸš'c¸m¦FNa%‘˜Énõ#QÓÒóœà„"ÅZ’ZÊ•ÖKÃB`KÓ ùBÏtZª$S£ÖðZ­{Ú^}cJéúïýT2^OA‡Gx'晈æ(Б+öŒRµb"y°ofFr¼j9ýPV)º ¹Y¬ìëGfrB’ÇN_P*Þ‡b¶  ›Òù‰f4HʉD¥@€æ9XA8â®$aiÓTœRªV)T5›ˆzÝ•…åÞÂJ©:6f"ß/4VÚÃÕ½kµÎöòòñ£÷¾\;z=iš5sHB#Q¾”nžž=ªw7?Û‰q>»ê¤ôx ¡âÓq5~~~‹fAj;¹Vÿlÿê{'·_o?N–t9óñßø»÷On>å”z±uTÝZ>þèÙ'?=»ù²Ýßpœòw¾ÿãó[Ï£ˆâ.î,—Ú§£å{¿WªmäÓýo|ãûO>ü^ ¬€<‰a–¬¶ö®¼xðê÷?øQº¼Ùën}ñƒØîïÅb‚išÙê ¯_¹ýñÓ~¼¼ù„Õ;O¾Yklκ§ó`€HYˆŠJusc÷¦”Ÿ<~ý‹ôWŠZá䎕Y‡»Û¹­³‹oÝ}ñÃÖà:Ù¯^ýòãog c_€õø(ø3Ó)2+ɽy÷¬UöæÕGOßýäòåÀåK·~#xù2CÒvj“Àë[×Ç‹G Ku p¯JҜʇb0vEY mÙvÇ5 þÎgÍÔ¸XßMÏwOßM)*^©¬¦rS÷ÌSÄÞèîòHÎ1Ô<ŽÑ!rz4L†Ã,Éf)¾r†a‹›"²iÖÂõ–¯_¹óÁöÙóÑæÃlõ L1Í&†»¯þÞ(} ‰ê’X.Õ6y©‘Ë.@“L…Þö‡dP‹®}ž0”jØ]O¢”ªë@w µ*°Y4¦3„ àS(Œxч ŽKàÄ“ÉÚÕ£«ïnì]$Sý|~ÊŽh&)KÃ(‰|š& ‘±x>"x}h++BÊÓTœÀÍhDѤ¼È:mƒ$‡—Äfš±y1-ݨäÓQ³ÓÛ‚Š_\»ÓçŠC=^Ô´LÂÌ8fÆÐ +îܽŸ“„‚ ²ea¨‚ÅD(O™Ü‚bÂ#[\/Ô¶ÉáÒÚ­ãÍáÃØRï굇•ê2CeòÅ•lq)‘êkñŠ™¨*%«jUšI{ßN\1é,erF¼+ +SMµ›“ÉôÀÝ¥ØØÏÖö;Ó‹Îäf±¶–..óBŽ%äƒý›‡§U­TÐJ ØWFWk¡òÓI£öÉGßþÍo}´Œ{¾ª_!)Fjë…Ê–/ýäg¿ÿéçß ¸Ù$”e¥]nOöŸE"J4ÄÉŒc—¦, (IÐùÀýFÓ Bôž”ÞÞ¼Új¯ÇC- ±¼X„ÎÁQ!$‚>‘š¨bŠ#”(eëƒ3+½¬[ ¼\y{uñàìüq¶´¨[ÍtÄòÉ”c1…§MMÎÆ"<i2ÉRi‰/&“#Ðe8‘áè\\©riÐÞØغ@ Ê +IÙHLì‡X…·+•ÅPPðyH÷fKàô‰(æ1 ‘ÎôT½@Pª“é5ºÙ↕\Œ¯erKaû;­Öz,ê:“`8HõL8’"ˆªªt I‘žÐ³¶Õ ‚nŠj¿žD„»µB!ÉL¸ÊrEÛ;ÉǦ¢Qh0ÏgHÂŒ„YžqW$2” AKñbøü,dK!?îîÎñ±0/2¶Àå$¥N1¹hT(U§¹ÊÃ@¢Úz¼"É9C+9VY“Ó±0«J™b±cV MÞ† .Áã„B|$,1LEâ$aQ¤ ½D Š.%%. ‚CõÖèH7[—åøIØÀ—d1o%–ŒGB´wÜd¨ÄÜlÌ3‡†$O‰ +oä’ÍFeòtnõz Ë2Bfs•ä8]ÑÒ¥œúÜæî K-–n¯Ít ¼h/ †’TåôŒk#ƒ¦é"ÇÖH*‹ ŽÛ™ÜD”J@Tp"uÜý%™b Àè€Ì£h„'@;û×ÁK“@\!4©|¨mÔŠÙ7 D#P“¥ ˜("Vk“t¶ +Q<›P”¬À;Ÿb)1H˜Y³ThÄBQ<Š1$Ô‡ãÒp»PóÌ£Ôwv&ì÷jDCãEd ÐÂL/Çõx.M‘)š²!#`ýÄ7 ûI–ˆû\‡ +ä!'Rv-iAv),13R8;ëré7Û`éPVeûÿ'齟$¹®sÁà˜iSÞ¥÷Þgefyo»«ª«½ŸîÓãý 3ð ,‚$‚ÞƒFô"%š·EŠV$WeVOZ¹Õj#6ÞÛØßöä(¢b¢{º*+ï½ßùÎ÷eÞ›[UÌH*NÕºA°Ôjm»ùðÊa:Åqœ+y€zx_,l@Iáàý19›¡ãÑl:ŽÐ˜„çàT…ddL^×»²E.§<4YCà^è{þ^ø n¥ÃmÀ«tt>Ëð`s8®h5Q–VH¥bØÎúÙ+Wžb(;'²IK‹ªÀ pDΤ˜è\–ĶQ2)–DEyJfHGñtò®¹Ù™$šáTÁ3õ‚—¯h¢uóÚÝ£ã›&E#ÈÛòá}y†6EÁÔd«…¹.‹u–ɃÆCsü?…1"#rG,Gaš%5?ßå9ÍÁ ¤Tžóò€I!£3Y2‚&Uue1—1 ÍG™“1 U%©ÈóšVÃl +7t¹À’:šc £Zmï`|£œË„û3þµd›õD’œ›Ë€›Î¥Žò±œ’L8&”‚JÙõVÉ$±dÇqÕõÎ *“àŒúÃý 0 »BÏ#' ‘¨0šÜ¢‰<©ìjÅ!š¥€ÒeÎ`p…!TŽ‘ ‘Iæàø7oÝ¢ 1:›‰Ï#³'ó'Ó™–y䜇7‚,g£i +I!ñH2:—Ì¥OÓ;%¯W+ØšÙîŽÍEÁC¥#ácDNÍ¥Äù™ôÉG£'‰¦ãœ,Ô$¾„¦‘6»Ztë¦^KÅI,+‘(ä9Är"6w2ŸÏe”Ä$ª$£ <äó4ž'1?“”æfÒs'šT@ÎϦ‡v9Úq´‡[™¸Å‘D™ÍÆ£’òSqLd‰¥u‰nñxÀ‹É.¶›ƒÀ/ó‚Š"(…¢˜ÆÖb¡Ô›™IEæ²Hš·äÀוå™Ö +ûûÛA¹–Î’ñä ‡²d<§Vöê%÷ôÎôåž[\܈F³ÑH:2ŸhYydh¦$94¯ÉµÀQ@T M'%­øJ·æÜ<¿yíê©Í£i»SLĆ +æ¡)&áL Ùp-ÍÔ×òÆ1”:GçAö$#ˆHËÍj»7\2ŒB­2äy›ÄE +“rif~6{âD"¼–E…åb`ê2 Ôï°3ÙÜØ4 ÏRÉ8Nâ:¨/ß%Ÿav{Ù²j†Q“¤B*I£Y0ÃR²&"k¨)[ä+"—×xUg™ºoz†¥‰²£ªEH2›‹{Û#YVd𜈥9 +QhÌ€DðaAaæ$•ÂÒI4•²%y±ânwý k—G÷..¿ùÞûÏn”l‹¥U !÷ „ {ô]ó³'SipÙi!Eé,#‘œ¯ê®¢Y’JBð¦1M$ŽeYA d•ó½ŽdùùÙäÉGçgNÄçÁuÎ3'O 'NdfgrÉ( àÏ&0,ƒ—ƒñ4ÂÚ²g@ó3éË|Jà³3ñd g@ÃdH4™”¨Œ¯aƒŠ°±ßÛh z^£ªMºîíÃþswvŽÛÎBÓ+æ}SË“„4{"’ˆ¤ˆ fó¢/Ò•ªêØÁ¤0踎ÅÛ¦ä:¶*r%Wê7´ý±ýÆ3gÞxéâ‹÷·_zêT·UŠFRÑù,€`õMQv%Æq_ÂVZæÁ´°ÜVk66m(ç×Jo<{øÆsGßùÔíßüèC?ÿå;Ÿÿü3gvëeÓdeóqÄUX»îÛ£¶½¶PXé—M¨y®ÂËÙTMg]Y^hW§ÓîÑ©í7Þ|³¿8Áp"Âáæf€¯xÝXdÙJxiîÄ ãÇÔkÍržD³DC3˜"¨‹­Ú½[×–&c×qŽ¶ªÕ3¹­(¾ ø Ü8à%ˆ€‡WÍõ;å:$†+5MâÂvý湕õAq±¬¯”^yâÔ^8÷ÙÞxë¥ ÏÝ;³³Ò­ä:‡ai2—¤YÜV¥ª@)NÙ „å–1m™Û‹Îíü ê}vóKoÿÁ›çÿú_ùÍϾü‘—Ž¯ž^™ô–¨Pg™\†ãYOb\:‹©nšÊBÁl;ÂzÇ>µTÚZ¬o/>ûØé{×6^|°ÿö+W>ðâ½{—/MÚªŸ7eŽÈfA}åR\ñ¾kö&ußûŽ§sñ¨KÔ$t­ˆ¯—Óûmôζyÿ|ýÖ™êíÓÕ'/^¼9|óé•=?ýü«ëõ§oüݯ?ùíÏ\}îB©iÙD2GxZh…Ap ÏLôʈ»½&½~µòÎk;÷ô#Ï.|þõµŸç©øÍ'þ­{¿üÃÛÿý§ïýÿñ³?ýÆso?¿óØq¯Qðh¢Uð«îª eqh\Yµ7køv›š”éý‘{8 NO½ûÇO¿~ö÷¿ýÃ_þêë_üÜ»_îôå3ˆL§â‰\ŠÄPe~>=sbÇ©ÈhCÇ!ˆ©iMÙ8{cûòšý‘—Ï|äõ+ovçÇ?øÄß{Ðr·×§[ÛN{ΰZd:érXQÂG.yuYõFÿ…ËÍkËòw:?ÿÞ«?ûÁŸyiç /¯üö‡¯ýëß}ùŸÿÙéÚ?ýòµ?ÿÆÝ»^žËá©°&!‹) JÊXª(¤·ëÔóg ßýÌ•Ÿ}ÿå?üÌÍO¾0þúÖø¥k¿ÿó×ÿü«·ôÎ…úõ{ÿæ‡÷?ûBû…+µ‹›Õºg4È•EǨ¨¬P’щ´ø§‚·Ÿ\}ïÖë7kô¹›¿þÑ[ÿü÷ßþÝÏ?ñËï>óïó‘ÿïÿý«¿þÕç^¿ÕýÖGÎýâ/}âÕ3UGKÇ0H²`cEF'2R~.nÑ)‡ŠnÕ™{{ÅÇNU/¯Z·wÜ×îŽþøžçýÞyë±·ßs¿æù"k$Ý6¸õyÜgžÝÓ?÷ÌÂw?vå;»ü“¯<õ÷?~ëüÛŸþîgýÑ—®ýÕ}þŸû©¯üöùõj$§xf Ð´Ãb 6¹WÇnN™§¶õ÷_.|ûƒû?ùúSßÿìõo¼}ôg_¸ö÷öžÿËOÿËo>òëï?õÛïÝûõ=xóÁF× “ ˆL!³D ˜SÛ-±oœ3>v·ð™'êßùàæo¾yãÿüý‡þögïý“/\þõ·oÿÃO_üÛ>ó£ÏýÉ;§ùÍ+ÿõ3çž8WV}$…ãY–C¨ƒ¥Öé±ÐWŸØ·¾üêôG_¸ô­n}ã­Ýßýø_~ïÝü©‹?øøéÿøÛÏýÏÿøá?üÅ[¿ûîƒÿã¯ßþÞ;׎— Éè|$›Â€Û]^بI';6÷–ٗϹï>ç¾ïNã×7¾ÿ™sß|{÷'ßxüßþîË¿ý“×~ÿ£÷þëß|áÏ¿ùôµ½öæÊ´Þ¸^uý^^˜ãùØ2ûù熿øÚ­ß|ûñï~âô·?zô“¯Ýû—ß~ìß~ð½Oœþo_½ñ¿ÿêÍ_ýÎ7_nþ©Êµ% XEeÅø|zöÑOùôz!wc,<±ï¼~³ùéÖú‡Ïüã_|ðûÉ«ý×ÿúG¯üì«·~öÅ‹òÑõO=QlC[*Ð%• ˉ +OÛݘö†“Òz•Û.ãwWØÏ<¿ðÇŸ8÷Ã/^û“/\øùwîþþ'¯üÍO_ÿÅÞûÅÏþÍû§_¾ô»<þ­L>~7xíZkP2±,/‹5óLI_¨Ú^ +Èë+úóGúkìß­ÂlüåÿòÌ/¿s÷g_¿õýãWþïù£oøôw>yãõ§D’#¡ ¨%‰®JÈÄ#öÔíeõ«­o¾yøýO^ùñçoüÛ¯?þ?ÿýÇû£Wô¹KŸ{yïüV½dp"IÓ¸lieG+{jà‹|CÅvêÒ­õòsçêï¹TøÁGÿ×ï>ÿû}ìKï=õÅ—'ßûðîO¾|ãëoŸyñzçêvs¡Þ²!¦ä +CÚàÅÚ¨9ånÞ«+Ô²O_]vo¬¹÷wÜO>èÿð³—õç¿ÿ™ëßþðÙ/¼rê­;£7¯tž=*õaErÉr +_÷¬žÊÈ-×hl[§všò‹ç›ßxÿΟ}îü_|çÞo¾ÿÜïÿô=ÿøËüôkwö¥‹ÿôÓWþõoüêËg¿ýzýµ+¥í–Ìc™l +wV-[¢ërÔЦGºã¥ŸÜ?p«úö½öW^ßù·ß}ìŸ~ûöï~øîÿþË÷ýë_æ'ß|âëo|ú•­ý¥‚«[ëÂpzµ[K +szÁ[)àÛÅÜ•ö…ÓÅ·¿v}ðü™êgŸžüê[~òÕ'¾õæá—^Zýðc“»…&äT\¡%–0@ÉDgs<Æ)X&`ÒKyêÌ‚{e­vq©ôø^ý=W;o?¾ô‘'7ß~róúĺ16®MœV¾ ):#È´š_ 2_4•ª%ûÝb©íh-C8èz7V+·–Ý·|óÍ­¿øæÕüùkþ¥[_yuí+/Žßì¾¼k¼~¶zÔV\*ã„&—{ÌPØ@aD$ë3¹IµÅëcö¥Óöû¯”¾øâä÷öÒÿóo_ý‡_½ï7ß{ñ«ï¿zw§½Úð É@Pƒ@2“åÂ}]TÝ.¿Z–zæ­­ò½ýêKÛðÚ©¯}èÒGž[渳ޱ$Ë¥’ÉX6—•JÁ¸ß=UôÆ:o™4³Ø×w§÷/n®”©Û«Æ{o,|ùƒ=siéñS§Ï¶.¬xÓšQ608<í†å +Q—fJ`äÁA—ƒ¾¯çUœpY¦ii-GîåÅSƒü­ÍƃÃácûíËkÕfa½R€e,’H“Bg2\*%rt‰Áu$™Ã’i>‡¸,·\-Ÿ™4nmøÏúï¼´òýOÿê{w~øÎ~öÖw?tô÷í}õ¥ÍOßÜÛ² Ó®ðFXú˜òÒÍ€!ʱ|a\ô*|fšG/´;kö“»îwÞ:ú—¿üô?þöãÿíO|÷7Þ|°~ÿlkoä7ÖÕ²ë.²ŒÇ±ŠoªÝªÊ·Lf[Û·¤µª»R4¶JüâsÇK7×ë—ïJYVMFd1>bvn iH §…\NÅðŠa´¯Ï­k|EbšØseŸEA EeX)¼®„%)Õʘ&íl +Ä6MdÕÚ~coù`gaeè¨û ãÉýƹ®òØVíêJùtK;ÓÖwkÆvÕîbdA$‡åtkâ(ØÀ,8Íø\ŠJ‡[S¥¡«4l­Ä4¥{î‡,üé­W¯Œ¯NÛež—1ÖÑkAesaå6φRh'aB K6t^±e}X¯w +v3/7óR qŽ*ZªÎs +A)`Õ£QEuE­°¼—H±HN‘¹¼­¸U¿Ö,µÙ\® rƒÀíÓ‘TFCfXpR¹ ŸˆÓ±…be·\ß ·iUµ8\´•€F!M³–à,÷67F;“ÎJÁÈœdI¾Zzv.žL±(Qà„ž¢tM­ÃÓVt.ŸO‚¯·d/¯žæÔsX±w‚[»õã‰{c³z{wx8(¯VÌiÉíº–Fggc™tøl{4FÌ̦Áo2l­RÞê6w›¥‘ÆržDö¾©’ ;?*¿ñøñûž¹zçhc¯×.kŠBS4Nó‚‡ã.†;É´lº“þøZop¥VXÕ8{ou÷ñÛOq¸ë%’š¯•~»[îUªÆèX‚Á3Zlé  Ê!ùtÚJ§tË+b I`Tr=âáå¯4‹d%58*ÏÓI™x–È°HJ@2¢Þ±²9º …³,e2*ØÞt’£1‹§Çìèê‡EUk"™ ¿â¶]ÉåŽÃT–Гa¥ñ Ž¹,]JÄØGþKäÄ#ð›4¦¹jÞÓ ,Æ1e0²/ë᳸$ê°„ÃqžhåÅR:J&‚0£æð¢,ÛÎÒhz>_è¤Ì°yÓê×[¥ú6Ë9©˜Š¿4ÞŒ§ð¹ùl<)ˆêÀòVMgY +k•©:]9¯Ú½xF'èð¡ ’.fs&‰Ùi¦ÄÜl*h—¥ËÖ€¦PÌÉåLY¬€,I$¥D*luDRiuÝüÀ4š…` …[>ÂmáŸD¹­¨ÍèØùEËí+rAÕ8UÈ¢ŠÙ9Ä&¨€ ¼LF!pƒã\]¯)JI×Û…Â’çm³É’Ì),¬\ŠÅ²™‰c–¦ÜÒÁVIvn™™Í0ª¦™£ðÄ3$éñ´O!•£LÁlV—, ×H*/<¬•‡áaÁsøl"·TµUkr'“u³Y ÅLÏŸÅÕx”ͤ`z=EmèÖÅýtÆ@[–º’ÔN%åX”g˜F£}Ær§ª¾€SÅh #h| Ëðh¼ÔÊ—7‹­½vØ‘vía·q•eò £sbX½ÜrÜi¡´S©ú•ýXʘ™§gçÉlÖJĸG‰FæqU_,¶ÎTZG–»è=™Ë¥•d\zôÑÌü oK ¬`ž ¯’ÅægséK¶©¶4±äÒqŒF×)XîŒ>²”ÑÂÏ¢ùGßsŠ[´XåâéÃÛ£Õc‚+pJƒâʲÞÔÌ®ãŽF«—3¸šEUN¬Ø…ÉW"@É¢bŽ‹—o=ñ¡ÆàÔ\ŒM#À[^å¬l®Ð\AÍTF$)WRÚ€7Œðpª¬K–·Œ¨é=Y®§³FuPÂa…¦áNüòªjöIº÷&ö)Yif“²5ªôÎZ§½Ê¶åM$¥>Y¿#k}3T³ÁIu#?´ÁÕ)¾n{ÓÅé•Sçž$ÙB$Τ³'6à ~l™ÃGx\«;žëö‚fxmH°-šïËÚJ: ´ãg‘pO`2Í¢¨ªªMEŸ2l+“’²iIS;âÃ'cXnª´O³Ò€•ú(YÈa/5®‚¢¦$Ö²ˆ•Jé$SääÉ5cisnžeØ ›c±°,Fø¢Üㄦ ¶HºÌò Qî˜Î$‘TÔÃÈ +Å61²Ä +-’)ÏG¨È¼ÈÈu7Eµgä× o“ºS…ù·óÓBeËô–€^29S5ÇAõØ)œµÅV0"€õŒtrˆ.ª@E¥uØ쫵‚òV©¼qæâ³’ÙcÕN}ñòêÁÓ;ÇÏo=ÝX¸Ð_º®ëƒJqiÿøA–° ¶Ð2ü­rû\z«;¹YnL ( Õ +ræë€OÉËÆ`míÚ™Ë/+Fo.Fe0ǯì5‡×+­k¬¸ˆåîctáá^8AÕhØ…Ykÿ’>ÍÖÊb¾j-•Ýx +`©´h¦%«#+¿ #B1Å<ÃY‚D ŒÆ¸b¨Æ°XÛç¤AX³%ÆÂY¥³0Û̉ø‰É“st+ªÆØʯr7Ò)Y–[„0îÁ+,žIts,ª£fç\£{hycŠ/jË)®à\ ªMÙXÊÆ°PYïÏù…¢ÉÖ€d«8UbÄz†,£L£›ÿ¹‡?ƒÚ(¨Î’]ØìOoï}¼õ¥K8ž¯Ó½½[YÒK"ù L[wÖ*½ •áEÕ†Õjë¼ÖQí¡¤÷$½¯Ø£B}ϯ¬³rÕ)ŒÏß~íÔÕgû+ËÓ†¿ ˜„, N? 3&ëæàB{tk¸þXk|YÍ/clÝ+­m>ÕèNg¬BikïÌS«»wÇëwŽ.¿lë@b€Iëòr £Š«lì?»¶ûîþÊ“…Ö1IUÚWͦlæbB2¥wÖ¦åíø•ƒJë§MÕêõ§¸üÐ_¾µ¼û Ò>²¼5Zš=BWÖÛŠ5¶üÈ Š½–B‡ÝÜüdcû6Ë•ÒYXå¼å.U{0k’½J ½TÆjµü`%–RQ²’E|‚®ÙÁž_?«ØëY¬X®¬]¹þ|6¬ìÇEâ2—Ú9{êêûE¹÷±W¿ôµ4;{ó1)™µekÒÛ¼»zöÝÃÇ­`#³*Í]xB›§q¦ŒÀ«ƒz÷R¾¸ŸL蹬!+-ˆ©Xœîš‹IñŒ!„ +ûõáµGO"‘ŽáVu³¹<`#Šél>‡-³Ø8„HÉÙPŸI¦ÔŽªLÃ@&š³ÒÝ\=|†×ê^q©Ú=ÕžîÏ–[†;„ÉT¬^ozV-l›«öÜÂNkx½µxÝ 6a˜IDÇÙh +2,+µ%"k‡f~m´zs¸|÷¯˜ÞTµ'¼2Ðò«viC³ûÛ»7Î^yÞòÇDXU¾ +Jx°|måôsvy'Œ67/|èc0X9¥òœºÐ\^X½7ݾß‘ŒKòŒP¥ù*Æäi¹–¥|É\˜n?Ø=ûrgtE2!u–® ZŸàªª³Ú™\ÏWöTk +|å•×æcXaüʨؘÚÁ¡*$×Õ­•R}ïôù§Ï^zv>Æ&ÓŠ( ÆÓǷμâVϳòê/¾çó­îAq€7žxñ}Ÿ{ñÍwö.¿¨ûk LkñíÕñ—"q %*F~»Ò½:Þ|òðÂkÝÑ5N¨L×.Ö[›±—Å]N‹Û§_lÜYÞ¼­„…òõîépGµÆº·&™K¬´Ðì]ZݾƒÊ@Ѫ=UìÅpS+ÛÍvtüàþ o‹Z› Ë^qÇ+^á”÷@r¿¿tÍ/ïÎEÄTÚ²üe¿¶]éµG€—’1péëË›·@ÏEÈõVp ØSÍ]¡ÅÉvæ£b©0yâ‰7l»÷È»¢ÑI2%·°?Úxpñî[ƒs©´þø“oy…å be@Ý«„^€±äKƒ¥ûo}äðò«¦Õ»tüøâô4(.Ózŵîâ™áôÒÂêÕRw_Öš­î^g|‘⪢ё¬>%t ±JæØ.l4ǬTµ&é µî•ÞòƒÅíÍé5ÑèÞøô…wk;X«tÎl>yóî{o>ùötë¶_X^š—/˜Îb¥ujaíf¥s®=<·søÄ…Û¯–Û+£É™Íû–¿ÊÉZn’\”/ÂŽ¨ «;ݺ¬Ø}„ôm ’‚ê®Jötqý±­³/&`=hnŸ}âÔÕW“à“Ò˜—Ã\3¿Ð\<Æ=ße•ž¨Oª3¥Ö¡æN`‘C³eÍZP¬¶h/Jö¦YØõ*û…ê6N…ݬíÃí‹jÅ«¬ 6®—»û•ö~½{¦Ö:…SУWÞñÊ°ÊÓ|u „´ìYÞFspÞ)¬¤sjoñÌhý–é¯9Ášl4g‘[Åò& Z,_Ý>uçÁKŸ8¾óúêáÝÉuÇŸ +BéÒ¥§ž{ù³iÄÁé‚_Z­ß^\¿=\»>X»"íþƒ7¶·¯DžåKýÕëë‡Ï­ì>5X~l²ýœ Ž¢q…æäKùÊŽ]Ú­?åöéróxn^@± XÛãÄî|Ĩ¹‹áe˜g0–9N§•“3¯¢ÒcCÔ5¾ÊÚ@eg/¾Rªl€^Å©É‘fë¦AqåK[õÞiˆeIªîn\¨µW Ê1Ì~(÷ìs‡^L¯¸¥©¢7–VŽG7S ꘼ž_¬wÏ/®Üo,\®õ‹Í=Íè7:{¦»h+•Þq±wFó—9¥ÓhÞ<]jíuF‚ú>FÕ¦RëŸ)6÷ÂõN©sÔX¸ÚX¼±¸þTs᪙_‘”Öݯ_¾õ’lô@\1| Bwt©Xßwƒ%P°¼XÙÚ»³sp§X]±‚1 Ý/®6»;—¯¿txæ 𠆵¸²ukûܳ^c_r–${ äë[/6›«HNUõvgt®98 +J«n‚±”ÌyѸªj]Œp'›7ÏÝýÀúù+ kÃãJ¯Dã:èØåÕ«¢ÔBQ0ïN6çÒ yŒ%Aê#ˆ77GæKV@Js>qEy$*cÇß÷ÊûàËi +'‹à8¾Ϫ0_ÓIPÙ£C •§,W­ç—× UsòXR:¥ÆæMç ù’@«?¹ÚŸÜÔòK”PMætQ¨.Ž/êfWË@tk‡OÂüï{a÷Ü+ ›wegˆÓÞxíäñÂ×ûºµP­oÕZ{’Þ¦™¼ç +¥~³»^llØ…d˜^­Ö×’ˆ µö­pQÆѽI¾¼„4²åW—0Ò2ÌÖíûož½ùz¾¶ÔvǦݡ¦µvwolŸº L :¿µx»Ø:®n‡0 E3j¹0¹rãùfwf'ÙÐKupÁ«îBhK« ƒSûð;¯½ïÓiÔËV8ÅýÕƒçŽûèdÿ9Ií_ºôà“ŸÿV» +<¯¯pHèÕÁÊc{Wß«†âNlQa™oe’«RlURú¥‡ìtæâƒRmmcóšëME­^! +Éœ™¿©ö;ƒ‹†½`8‹¦?å”Ödùêúî½BuæÂÆIÖn¡´ÌªÛeЮýã q¨˜#Xb° ¥úÅTš>ÈPu7‹íK…æVlRLa09Ú>{W¶ºóð†¬ÎJZï|¤PZ7ÍAXŒ6K•u‚,ÅãÊ\D€œ˜HšY®ÖÏvú7duÐhíÔ§0Ôͤ5úÑ„ +HSô±_>EÕ^”ÍÄ„+ÖA¢ ê@±—p¶ž#|’ ½•AtIk•ÛûAu'_Øê.Þì,ÝæŒ~3üÚ†U\I£&ÅÕÀ¦ àæºgL{ Þ&(mœ°» g»“óÅæŽáM³‡óER¨ë»ÕÎ8tÅè«ú \]¯··ó¥ådVå…‚W“œ%Inõ­ü´Ñk¹Έ9ÔU͉d Óˆ¤˜µBs«¿tqmÿÉÉÖ½TNÉ…[ñ›ãµK´Të—zÝѹÁôlr,ˆuž¯k&ø/?g +‚Ê橳πÆpƒU,,NÈDøh†/Æ“ ð†í͵Á`çøüã•ÚróLwÃövLwE6À2¿¹þêÊÆõƒÇ0ÊGˆb¾rº1¾4ϙ޲¬ÓbXðÿð~»· f9‡4ßlöÎïžy÷ÒúîRçf¯¿ûáqºr¡j~ã°:¼XéŸkŽ.„Ta}ùøkô“§_ùˆU𞊵TšÃËåÖí-™ÖàÜÙ'®Üz•š@¤ßÔ¡•_•ô1Åup²\(L–7/3b £ë(UKedJåF³·¿¾› ó‚PSµ^>X]Ùº³¶yቔñ†ÞßܺÃñõÙY:Ey0\ºYmž‘´FÔ¼üäƒúì•«OÏÌ à Òh™b»ÅÒ^¹¼kYc+ÂðY©†‘y · gÈ +MA|dv©~&(ø•m˜sPžnqY ò÷H®F°5Né•êû+{L)š`á|D­ÏÊÍRkFÙ– ƒ°Ô[çPÔZ@SN°Zh´FW'ÛOž½þZù +ÎDµÂ)­ ¨ ΂ÚSÙ Åh'ïõÀg¥r¨P˜4bÁWXþ†b/3R“—*GçWÍ+T NÁÂy¡ZoîoŸ} [ì•T½Ï oÅúz¾¼‚àÎÃÂÎ]ŒtSiIP^°¸0:åx ‘(?’“`«v~JQÇZ†Ý©v¶V·¯Own•Z[9Ì•¢[ã‡Õ!8ˆ ÊÓ»;g_Vó[é\ɾ¿ä•V³¸/ŸÊØÛ6½M»´QƒbÖhùHD,¼\@q¸Þ<è/×Zç³h€àE¿º¢ëáU Á¬\6¬w|ùùÅ• 4ëöb£wf°tÙ«l¡T´"è±ÅÑq£¹ƒâ¶jõíâDâòÎýRëLñ %ï.Ž–ÏSl‘a²±¨»«œ4ð‹ƒñå ´NîÎÖÕÉè€c½¢á´oùÓéεý$]Í!N:cÐd‰"ŠÉ¤šËYÉ4¼'ìxeÚ½Rq‘¡ƒx\Ò¬I©qœÍÙÉ8‹PHF“º¬Ø!˜P´WZÖ­Qµ}N +Ù,õ—n3òË霞Ëé¼P1óQ_Ðì•h†µ;Õë’9ˆÆYAjLcŠ¢=$¸rò¬P/V7k½Ó¬XQvwt!_Ù´‹«Ny¥ÐÚ€DÐ’ô.¸˜TFçÅ.XT5|R£Qe<€önÿ˜S„ +h±•Ã + UŒê†ÆˆM8ÃÉæí,æbu0>_ïž™aØ“By«Ö=‡.) Uë±c¸/ ª LXEI—dó$“wÝ'?L¦™DŠŽ%¹ù‹à%ð\Ni‹åÊm¯MÖ6.!„¡Ç*mJlŠjWÕ©J˪V/T–­üÐ+Œ5g„µD +\¹×lÙÁR"Íc¸AA*m²\ ¦‹/*<_>sþIœôfg±tZC _·§ë÷&ë÷5gsfž§4XŽxR|X‚Fʼn¼ÀW }”¶TkQVêÅÊ”å=œ2!L¦ª‹^aÍt§`'Ô¨Ö7êÝCXMÙsÚB7ÏÄ +G׶6s’ŒÅ$Nj—vGMgœË™Ñ(A¡²m:““3Èü\X!NØ0¦»Zï]uJgìâ.'U0Âà¥"'”!$½ÏˆÀõ ^‚ñ”f³r¡²Q¬¥S o "T!æÁ±R´‡âd·öâåÞÒu3¿&k ¶¿,¨-Q©vz§úã G)¥óàO_~áê½÷/í>n=‹`BÓPªH©Y´Üåx«gÎ?3^9v‚Édý*ÍÕÓ9 :„—{fNûÂpý>ÉT¾ÐîlºÞÍxT;œÔÑÍ©iO®<¥HÖJO—g Ë'²*FäÍ}H%ssÙ¹¹t<ÉGˆÆÖªËJ“niz+–$}QsVÁ,äË;(é'’ +@«×Û)V'9T†¤™ÊÙ]Ï@ԭòƒR4Î9îËUæ#\2m`T]PÆ•ú™NÿR¥q +ÒIúÝþ_+gÔtÖ¤ø¦bNi±CñõTŠŸŒÏ5[;9ÔÃ…`` ±‘÷&ñ°#F„µ€* ™)f±|,6ú Š«Aq-›3Çk×ÏÞzo©sÅp @i4JÓ¤å8]À|&£SLMT¼â–(7Ãgâ2"Ï«ÊåEŽµEµ–Å|NêyÅMQêQd9ÖáÊ•µÎàØ8™”£Qnv–±‚ë¯ÛùU±SIb™ã«8ê&â"„¶bt¸P™ä!­Ól”?‚º(šW Òí‰j‡Š”‡$¨/Ô +ÂIdE•8¡£»``ÏhÎ4‹ë‰4ƒSàYZ’\ ;Ç©pˆnqÌà`ù&§ô“Eª@eÍþÑöá½½³÷ -FnvFg';·ìòF$É3l=(ÈÚÐp¦²ÙWŒvÞ/._E07‘-o¹Ü¹Ô\TÌ +õ0ª‚à.öiª`˜ŠãŽ¬-zÅÉÚíþè2Xíhœgù˜/VltÇ+w!=©æÈ Å É”Š`v5ÒÕñ×;“kíÉ¥Þôf¡uŒÒu°6+‡“˶¿!#Nî«æÒÞ&øN¹4¾vëø9šTH¶ÁmðAùÂŽ_>-ë#+8QÔ /öx©g8«ð†Hœ›™ ›vµºœTE Xìä“/­Kzb½LšÌ¦‚Ðdµ¾²Þ£yraý6BU o’”fh%Ã&mÖÓ=˜\=wëîÚUÖ€xPõ®¤TQÌàångáÒ•[o]¼ñ¡Áòƒ°PXVµÅ\$™2`OTye\k_pý-Œð³A׬†‚\‡J"1)™Ñ}Ø^r‚u^®·ùÒjϳadI³¦•öy¿z +&JÓª;GO W¯ã\™Qº¢=e” õW®4:§h¶àºÃÖÂYIéöºdLY©­½zsg´t Ÿì+*;¥úž_^‡ÙÀé +(áH”¥©²¦tR)ü +¬H–moåÚª¶(HÝdÚô‚5Yé&‚æ)®©ç׃úaµ}–æÊÀ¥pbƒÉ”gXù°OÙ0¢LV'cƒÈ<&KU?XÔͶWXó6¤ˆÓªT1õ.ˆÉlÖêåËÕQ ,€y?¡4½Çñ­H„‡àùAsaß1Œ &ÍÙv;(®$Óú ký1©0ŸÍXi@Z\˜àÕúêÒêeH÷'NâðÐZY!ñ ”àà'OfRI9“6 º07‡>¼mªBò%Ù6-tA¢SBW6§àûâi‰—Ú®·Ò^.ß3ŠëIÄŠ¥t’®§³aqWŠñš£S_í/ßõA'§ß_<ÏËŠº€y³X¾CPu¬)ˆ–fó =8–ø;‚®ÄÃÇUÛ½œ‚™¬Þ$s gB¢‘VË“¸<˺åê†fpªÈñµÙ9"1sˆòÄ=IêÒlXPÓº(Äâ€g8” (JçøRŠ-±|Á –óþLé»MÇ*Ìü|„ÅÕ4âfPp u0J–½Y5“Ò1,Èflø7¶ó`Â,€ºš±Ë9±Œñè R–¯—j‡ç_=¼ø¥íçLo=‘’i®¤€d’›‚¶ÈK²µZj^êOû !Šn64«ã×)y!’õæcª­ºíÓAi Á4Šqh¾ª£EÈ2ÕíT–%qÈ›Š ‚D%‰#nn±€ó9¡Tªmu†GÅÓ½ñ±[ZìOR%é?ŸÄʵöééÖSƒéZÿ(Ð aA1@I[Ö-„ý†î4ÛWzƒË–»”ÊŠðQóèá¡5« D^5ú»O^|rJ,ìÕ(òb‘¯*w4o gåæq{ñ:#tÀªw»[^0Ê v +loÆoÎ0ÍFû|­{™b› ²9…Z@\¡GËèYÄÑ”·–¶Ï¡Žy¼Ð©O²5ðP h¶Æ aÀX‚†à»Ñ[<Þ:ý4Åwæ¢\,ÁÓ¬oÙ €‡û1Ú­£×öžbÃÞ:4(ÉZs«ÖÜéëúkš³î–@m’Lvnžû§¨Ýh”™Ÿ§²ˆ‹’ÕZ *Çÿ¹Ñ(£²YIK XTEq<ϵy¾ !îTAlì0ê ˜ ñ‰§LšöòÁ¢ WA\ \Å÷׊Õ}Hñêå²*ê²TR”†É_„J«Åê®  0ª:3KÇc‰éá ¨MEUjæÅ<È'Näx®Tolд;7OBŽ‹§,FçW‹—t³ŸN2Ûë Á-¾ë‘ì\„‹&uŒn‰Æºín¥ ý²Š\ŸN¯ÍœDy45?Ï‘LÓôVsˆQŒÅ½­-p ¢àak ÃlÛåMÅèQŒ¯è'1B Æ3‰áa8 j‡`Qéβ¤/IÆ +¨MP€ˆ2ÙÚþ&P¨eÛŸ +rجÖ+­òZ?šÖ¢ ‘ ;?–”¶ç¯×û—rq+Gâi``›äk8SŽ& )÷%m TN”arÀv”lbA]ÄãLÑ39KÕ&‚´ *œ®%’E—r˜Mª8Ó€D¯˜Ëààca—™(b¹"/A´ØgådLœÒV,%Í„=E05N¿ (}€º 5›Ý£ ¼-i]·ÁŽ€_–H›ó1!1€em üþü<Ññ¤ÎZ ßUÍÕh\MetsˆðzB1§2il¨D^ê€!q ”‚`>8° Kqªªè“jë"Ì?h‡m¼øåñq¹8A5•”€1ÔľâQ”Æ„ÅîÚßü”,ã 1ž“›—B’ ËP$“”aõ¡šHˆp¶±3 DM‡M±q,IÕX±ÇJ”¨G"tX?-N‹|Àr¥GO"јh8+Š³ì•wdc:UyÍƱá’DBpÜ‘fNuSéÐvA4ÑŒ'ˆ5'?aÀÒ’:õÿ¬œ€c–¬´ käúS`Q®‹jÁõxØ>£éJØ>FnÒœŠ‹[ô¶$c„b…°Ô5ó+‹ëw–¶Ÿ´ [°ôœXEÌä0;ƒä³x‰á;¦3u ËŠÖµì‘jŽSˆ…3ÕP±Ðµ‚=ÅYƒœÊ„fë¬nê ÷@&5°6Ùœ¯„[¿Ê³3ÙXçPÎ +Í´¬ÃQ@fÐ|„Wi¡ÏÉ ‰¬ybŽ89Ç“<Ë–QD'0bS2Æš³Ì© UŠ¥ÄTVÃ@*ó5È_`Ýšzåƒ|°µ¼~Ï+¬ƒÞ“¸„!P_Øe’ Ót¼…ÉMQ]JgœH„I§•dJŽ<Ü–Ì +]ŠkiÖ²fÁ_Õ¹9"™q2‘^,)e±‡ø]‡µ˜›c Áâ³/}ÔóÆ'N 'Oò8UÊ!F*͇UhððiwÕ‰$xF›$óérBQÑš‚T§èÀV®‚$ /¹„<,·399‘0Ì$¨p/A&kd^ÕAu§ÒÚ j‚Ú"h˜?™–ã ì0E•q²Fó §œòÞe™ð*b¥uÁ.Yþ¡æìÐ<|0À0‡¤Hâðƒëíêö–(/ ¼|2£ÌÍb¹´"‹ YYÔuší¿éö²f®¦s.Ï ¦rh>‡(ÀVÁé†i¯˜ÖrЈ›ÓéV¨€ü …ɇëu{ÀKõ,.¥¦í.#a÷sC1‘D@^à 3‘d Ò†d‡“0œ2`x."Dc +NT s +q*+‘Q̇iÁ© +ŠC‚æ£A׃Ê)7X#)ïÂÕç7ö#˜Š—¶žBÜH"ô¶8YH„¼'AÄÑ\”’Ñ£æÄÉÜÌ É±5à"€P¸E¬šÚÈІUŠ„•úˆxØqO˜›ËFæp`„€Ó«·°|3™2ffðNgâÒ%X¼¹y.•)ÜÑÕá‘G³ž@²Y X12ÏÏÎxCÊâØ–"w kÏÎaÑ( j +Th]É'“z&£Þ°ß?… îü¼Äð ¡ÑË9ÉŒ™Aó‰œ9¥ç`6’Ç6ìü’¨„æ$S"ìäÉ+¨ÙÞ.ÉÔi¦JPÅXB:9‹ÎÎS©´â>Ød˜ SÃÊB¤Gqu‚{[eøj"«ÁÁÁø`¨›ËAP³n1aGì¦åNÂö4tNÕòVUk )¬.·t{Ñõ× ¶ ›p‰`šÂ*I˜¡D`|jùð>Ú@‹q0@ +\‰Ò£™2ÃT!'šæfJa?²”TOëΦ¨,Ö„ *žD¶àû£DJDð¼•_×5ø.E*«ÏF ¢UÅñxÄC"i'R„j4&ÏÍSÉ”àz $S˜™Ãcq™—5ÄÊᬂ‹<,ϘEøêù8 ’˜û†¿Úè‡C@ÇB8[FóÎc¯¯¬_߇wñm‚m D À°Fé´NQ®ãO"Q>e!v@¡d]6ÖÍüÎÜÉS……Þ$gâ)ZWà…daž‡æLÚ¹ àé@G=úh&rˆ+-Èn SI‡¸)2l3ƒ€ƒëát^]gŒxR/G3UÐEî3lKÕÁ —Á_`¸þT’û¥ê¡•ßÈ¢ÅTÆK¤òÙ\!“ãI äDäUä„F¸a›òáø ®Ã ¨„çœÔq›o‰€ S´‹[¬TUí…jëÐ+íâáÍ5’eübiÚìœrKÛ(U‚ÿ—äEz Ž@” +l"-–1Ö1˜¢4¼ÙDz¹œ‹2Ù ½/ðU’ôX¾†’¥,V€,ŒQ8ÉTFaØ"œ§j.€\d¸€á*ŠÞÏb`LÐÀùÒžá­ZH¦ý°$Ј +"(‘àh(é‹Z/–Ry$hZK W‰P@;íÁùÎð"€6“Ó\oΘ ýhœQáxK½Ñùéî}0Ë0ºríTb:g%ÒàÈmnž¥¨@5Úñ‡¾òaôÕ~³¨;~~žÌò ~u—ÌZ’£­ÙKÄÞÚ`+Xp܆ãA-÷q¼‚Î0áE§È<•Nê'grII¾á·íÂÎÎÙ—®?øtPÚ?q6ƒ×Ü, ø-1V)Uö*Í6ÜPÍ÷DzÒO§­H\‰¤¬,îëöÂêæÍç_ûRXáñ29«uÓÙdù.€‚€„⌂eA¾.B,¤20ù5V¨Qa;•:ؽXÒÀ©¦ OEy)–ÐÃM)-“ÓA‰ò8¸‚ækÄNç h^iƒ“áø°@LM‚€xÕX±¬XƒþäšfAÕ¡ŽãM˜<ë2,$²ðÞWÜ°œi6ge2 +ÏUX&H¥Ùùù$¨ÓTZ‚E©¶N$Ó +„>Œ¤’¨Ï‹J߶5wÈ!–`¡ZéœJ²%„(„:ÇÂ)ÆÞî¾[ùÒ–™_…ÌARŠàÝÒiH4Œ vüÒÅÕpºÀÊù„òèÉl&%ó|%‘`cQ"Áá{9¾Q¨ì™ÿ?{ïÕ#I–¥‰½“›•.ÍMkmæ&]k­CëÈŒH-+«²´è®žj1Ý=Ó£WÌî쒳䒻 $ÀÈà>ð‘ßõæîAû@€EZ{yGDº™Û½çœO\3÷S?ݶc®tg®¥ššÀ%u®‡`8yøíõóŸ7ºÈºÉáñ{Ô’¼œΠ嬪}Øy–óá…wä—PqȨ8A¬ÉjOѺPA;;l.§‚8òE·Xòy©BÊG¨ÀÔZ׊҂\ÃcMŸH$¸q©ädv™L†géP‘º€_Å赆O/žýfqòõhõÚ’¢¢û÷A‹ä£°~ÙÎ(©FÏa0ÁþpPeÇg_¦•#ª²bÓ­^¯Î¾þügÿèg¿þë·Ÿü‚æcQªCÎÁ×Øî ƒ¤Úv]Ùþ\5Áwaž +Š¤y\ vÅ…s†}“´SÜ®Û3„ +[ÈIÝèCqb"É pVJZl<Õ­!Í%šÑ-±>Í(ûš>ÓÍ9j_Ö‚ˆk™äŠvȦãþôeþ•¾W Ç !p†S–@ ]ßõV@ø¸BAѵ†L:Þb&‡&|AãAgøVÓºÈ=++„7뢜¨f[s†¦¿tƒ}˳BH• Ò7*=¯Þô¯tg&ª²Ð!DªÑPtrWì$|Ä`þépþ©¨4³9¹X´e¥)Ê)͸P‚ܱ|$dWÓåxw—/4–|`Á d3#CìhyÃr4•Ôöú­Þ³¤ö ®xáHÒ›€J¿Òw½©eO¾‘+B¹9ù‚¸›Uv32/VT­¥UKÚ*jkÛ•°SÎf•å²l\¢É—Âiê°\>BtœòÂ6ºŠwsF&ç‹òÐvGi¼¼,0UÇJJ”š-¸ŠÑ±Ë3Ç_Åé1ðð-W.âô€|/½Z+Q6+¶m¤é£"I!š<¿lô*d½ˆ¢¡‘œ\r+1ì¥[þÆp ±'Ö‘œP¡èðn’ïø¥„åTÛ~»>QÊÞ¶Ô xpÖ²>5Ôx; Wµivª ¢“f綬aHy±l9½¤q¤ºͦí׿¨uŸ«rƒ4×æÏ™%é9¬„]Þ8å=Û]øå¥$’ï§Jn‘ò€ÀÕæ¹­·Üû’Òóül#Ô8©m9Ëáü]úIÀ!_8l@ª*µuorëDëÎäÙüðýüðKËÛ ¨šzã¢;z®š ^êÖØ°0Š&/‘¶>‚ˆè¯‡‹ÏŸüƯžÑ,‘’ =06®é¶Òæ¾+YAY¡¸òø8²>@¾=š–ã@™ÖÔ4ÆÅ¢ŸÍi4]øyS&Àßñ†9¥™è´sŸ¶®J±‚‡Òhõ'Ïh%Zçx·Z[WkÇ÷w€¿(×).dXÔYÚÍm¿Óyåƒ :ÂûX IQ±ëîÁe—`Í2^‰¹â¤.è¯D§ù¼“ÉÈ[f‹\ÔPÛfy¼÷åÑÕM€\i@ÞÏöÞ$µ#~P 4-wß>SF&Èr£Ñ8êvÏ»ƒ[Ìm¾Qt +ì¶d z‰ D­¤õÞmP;Öœ©‚ñòõ­ŒO·£©ê䕤Ž9¡™+’>G%Ã$³¸q•6¯-g¢¨Mè^$Q°=ã5à l;Ýl1BÈE=î_|uõúw^r„ìÍætŠ¬àu £Å’u \¦g€b¿¼Éça´5Xr– ­j:}NLie²Ž +“8eØ°©ÛsÞ•£=QíÂmÙþã/á ‚¿›ÔºÓGç·?œÞþ´Ö»åå>ÍU¡]}¹]‰;åÃzë:H%£Ï[ Ø•†Ñ2…T«JæXP{º5¼éZPà’z“õË[ÐLR¢ŠI4ssJ€šOòyY”¢Zã ­—cK—f`èA¨á^î—ˆ¡®‡ñ¡ì)æãÙœ›ÍY<;Æ€eÒîž®yÞÞÆ•cˆçë…Ñj0¼ Êó{÷(Ñ ÙTÚýøÒ°' íîÊTÉOÒÛ™r\IJ)”¤È?ú®·Ü ¶(Ö :ò@ :T”g_à+2ŸJðz× 6õÞ£ÞìeRÙ7Œ¡J¨¤Z­ï/ÖO96¢ÂŒpRSµ§%¾š§|š¯0|ÕÐû¢KJ ¦6Ì•¢.y¾[bª劆¤µåíÝz¬\Q¬Q½÷t}ñ«æô ¤ò +ÔƒªŒ“ÓÁø_l¯¿Ô€f( ú¶ÅüÔò÷nh9‚Ìj«Dûí#-U£_k‘_3\‚êÏŸ æ×nÔWÌ@;®>ÉJÅ0š%Æ¥hÛuûØD_$ Ë!YÍkõú‰b6¯½>ù8¨ÂpÕe­G>i^ôJLè…KÃJIY!…€w½¨zN¤º1j×qßõ»’Öé/¾M·ú¶Õ‘gû3Åh³bÂI•¸qtrýõÞéçIem™M¨Ï_ôg/“ÍÖ`sl=œ¿¬4€ Íל¦·QíY‰Ã„C)ºÑŽ“ìa/€ŠŽ¸:ø&Œ!€e¹U(Beõ,k*É°Û ^hjúB3V®·Ç0ñήP¤lÃKeØ(Qí·'k×íákÚífÔÝ]3ó¥™Flà(« >õ@Z¦ “SE¹ VÕôænxl‡™6h”g`&Ut·j¼_(xùœ]¢¡gÈu Ek°\”É*ð¦9uܹü!iÃFýT„Ìc¼’˜R\ÊŠ T±ªÏãäœåbMï˜È£_,Å™œGQ ÔfÆ3ÙèðJ•||À™÷Ç/÷.¾«to 7È},B…DMªJUbÛtò…åíi&F²]ƒí&•‹ƒs` D5dXƒ‡%GŽPòÕæÓÞè]PÙçÉm`/D²ÖQ­+¦Ê`øÄ-o®hÍŒDî8¢H50>¨ÅÐÄ +<¨œ(ö(“·±‰º£J±$·`ApŠ1ª4o`Õ³E &‡qõ +z#ˆW^y(H‘ïö+•=².áÍ +t”É»…R¨Ñ­ÍûÚ‰«{ë£×ç·ßlïßvóEÑÐ÷æÖ… Õàh¢ø¨R»Lë—~´ü¹Ÿ¢iO7a`F¬ÙÁIµýª?ûÜöWäºf²2Ö2•¨  -U³®¿r¼ÃE@øfûþn7k橈æ»y¡² Âý2¹;å™+´ÐΕÒl1–ÕYgø¢Þ:…¿àù¬úî/_„| +“tâ<›5Lkµ:û>¬]XöFÓƘ“¨<é÷ÁÝÙå$mby§ióùhö¥ío +%gwWJ“õÅÍ7º +á|´+劾[>€ZVÀ¤CVEäsUG^°ÌS6ê‘“úš1MßœýÀ‹û‘ÕQxÕA–ìì(°HÍÂìàQ÷ý'˜Õéæó°z™+&ÿÇ¿'Ûí endstream endobj 136 0 obj <>stream +ÿß'ðÿÕöa wmû0»¶}È]Û> ä®mr׶¹kۇܵíÃ@îÚöa wmû0»¶}È]Û> ä®mr׶¹kۇܵíÃ@îÚöa wmû0»¶}È]Û> ä®mr׶¹kۇܵíÃ@îÚöa wmû0»¶}È]Û> ä®mr׶¹kۇܵíÃ@îÚöa wmû0»¶}È]Û> ä®mr׶¹kۇܵíÃ@îÚöa wmû0»¶}È]Û> ä®mr׶¹kۇܵíÃ@îÚöa wmû0»¶}È]Ûnÿ·O¶øïÉö÷4müîéèÑîÏîiýyzƒß}þųÏîmîi7åþg_Œ^=ùâÕ'ï}ö­ØÀŸ?JÄòá³GoEó÷¯ñ"qï³W/^½Ãž4œÍE…¢Z(È m“®RÎÐ ÖVy£; Ùpr•bür8±½>/Ö,gá—÷£ôL1ǼÐR­™¨tX.-ÑeAnÉú@5ådŸW[Ù‚Es /×. JÏWlg§'Vy¡Z}š y¹Ê˱jÖ)ΕFP9ŠêªÝçNt„Ýi!)qQÖz·Qã"¬ž¦ÍËßHF¯Ä‡ŠÞ•TLBR,¹…¢Éñ¾ EªVWôf2ñ^‚ؤ˜¨ÄÆ4ŸŠ¤›Û@R[šÑ“”/µ«Õë0>åå.ÅFyÊ-”<† ]n9ãã•hW7¦5!ôhÒψå"Óè×ëç¬ð¤ŸT¯Pt2YÿÊ01Ãâ‘*ÚH1Æ¢2•^Žt*ã_ãùšªõe¥Ã°‰(µJLD¾ŒšOY®B3͆†1´­ é¶ÃVò”¿›UñÈåÍB‰d©ª è2EÙ<ärÊnFÈ Šöi6*ѱ ¶¡£)œyYÖ: çòJ©äã$s9ƒeSIî bWQ†º91­áhô0­¯iÆâ„šaMýxcºcŠö¨¢Å2 (ë#^né¨HùªÚ)—Wž;å¹$–ªÑe„)Á ÍœèÖTQj¾×/R&HN×ß×핤!»¦HNÒË[®•JŽ UÜ`•¶®¼˜tÞõ-¦‚T¿~ðCgø€—RNHmwSk½ ++%uÈðšô(h¶LšÑ3eŒ—´ýÕ _cøjrsy §¶Dz›«‚Ò²½U¥qÛ>Û;ýTÐF(›î4¨]4G¯¢ÆÙšÉÆ9;ýn¾÷ŽUjEÚ·ý½îè]µýT6¦’1a…Z‰ö1Ÿ’Œ”“ÉiîÛt9›Ctt†KD$¼Ö1áb ßश 6IO¹‹9DâeرÄHÔ|A'ÍUIëÌ°D{Å¢CSe†`H$ž«6*g•ô8›U³¥P°²9m7#!ˆ,/umÊ‹}–ïúÒ4…¢K:bðIn#d–>Œ½ò'¦;Yñþ.‡ä¦ØöÜ2g(r´‚S*‘/3ßÙårY‰g#Yî)j_ª™¬‚Óà¸$_0Š”…\*ÑI6ïS¥ˆfH‡)Åš`¡,Œ"‡IÈiW ÂÓ(¾Ã3MV+Ç_}ý/>þè~Ñr¤ÁbïFµFä[ÄQD,i™Q(9äk±K˜ÞÔ)Ïlw,!Ã¥úÑÑgn0+2~¶hHR³R¿‰ª×’\¥¨X4·­‘f@VlÐBCÒF®¿—TÏL{̱e×U[çn¼Í–lô1óº=-GûËõÛr´âÅié‡G^|"c†­ r›H¾m¿Z\-`Dl(H¨¦$€l’ÔãÅ +E;¤Ý‰Þ@Îsr½_Íö¿ì/žqj"ë '˜Ùá —’9Ò‹Þèu­y5™>¯¶NÀ<ŸºåUX=1½%¯ôE CèñBðBÚ§L@A¾àòbkÛØ×E€ò‹È÷äh?Ï„4Â*ôiä†g‚ÖÊSæÙò6ÅR+Ø;8Ãr ÍÁÀÃ’gºT.äÍ\VËçJ.Ž=Öõ>2*›ÕrYý÷=г9…¢Ë¼Ô2íµª/U}îºG¶½)ÑÈŠ6CzÕX!ðRßr6IåZT[;Y!—W9žô“äÏW8ím‹Øhg‡Gj‹dž¢Øã@hJÓ‰,Mc¨(uCo¢2y'WÒÞ`¥! Ð6“•ÖñUMëã¢Êëùå½îð¹—,?ºOî ªþ é ÔpB½°%”f@”qÀ*CB\u­ÑjýJ5Ú%6¤šJZ–Ì8 3é@D±æ8/X°|ªY=QkKZG]«½mÓ[7Ž7ÝÑ#?^†éÒ‰æ²Ñ3Ü©¬ð,©AjÖj§N0ÍQFž²9®f˜sQê  ÀÒ.|¡üÝåStEQǘjÍ í0·’ܔզnö g¤šäûóË•s'ÚÔV˜ÉžîŽÜ`ªºýJëáúàÛîøæ50qí5“S‘B¶³ª·ž!:¶»2Ì¡(5;ä[÷iØ•+XÈ–­€€0•‚õhDVìòâPÑ–Ar‹’aø$ŠŽLo§¼lÞÎæ°Ðcù,&ÊmÔ{‰òNTÑŃäXNcÁkbcÛ$ÈÌåbÑC&ÜßH;ZÒrX¤ÃBgR.R€ÐŠª0Û DÒÿ ÀȜؔµ)âLS”˹À$v‰Å@H4Ê¥»»J!ïäóÆÎŽHÓUMŸÀ[±S*%ŠÜ‰ÂeÙŸdr +N>_$ÜG•ÛÍÚ/Ç'®¿¸ífä|^víføLF’ÄZ«qa:sNîJ>*‚áÌm_õbdºNê°i0 1 ë-†±x>•¶jÎ\ÿ "”^ˆAŽ½ÑK–¯"Ö` Ò C'ýÑp—ã.“ú1ÔN¦`ô¶º1Fn»å…íϪéѯ~ö7ç¿å””•bÅ„$[ñI¥vÙh?PÍ>ŽÌļÐÑŒ•íŸÚÞ‰éìãe¼PÕÕ¦ã/ŠL²¦è3i9KÓYiö"IŽOϾîn)–4(÷££zçq£÷¬Þ{ꆫ(Ü|÷Å_ÍU®ä0¤#[sy`YSÈ›­JqA.ò¶ùŽŒG‰ôOƒë»Y®@‡Å )ÛV®àQ¥”aë¶=3íþnØbSt]3÷mïÈööUcºíçÁ†ÐØ…‚Fº>åµbÉÁ,JäØ +ErÑ +DLÞÊd|ÁN"µÀ €¬$'ßß¡¡Áòy»X,Ót @3 ÅL^ÍQÃÇHZÓ^)Š¢iGE‹"2§ƒg@yÙ¬‘Íšòl½ˆQ\Ž³Y ¶³+ƒ¶ðz–v Zê,Ä>r ÓR祦fN1i²Ò‡ãX`—ˆi{UrEc7oìæLŒnØž/ªÐ¥Ð ¤ŠXãĶaoÒÚMZ}èySCKëÕMR;–õ ²YÒ®;©×ÎëŠ-«§›]ÈE¢:Ô‘¢O-g¿Þ~× c«%^°”Ô¶L@©í{iã|4}öÙ—±8zÅ+ÍšþÊôV° ¿ïS&i$9€u¡CÇ_ÛÞFÕ'¦½W:Þz9;]RdRŠIE¹k˜#Ëžb_ÞÅñQ·óÀñg¬Hz%Ëj:0LÏkíG–¿ “ƒwŸþ®Ú=E—ØX§Û3(v *ô0€fSü Êà؈4/¶&À%B%b[”{EÊ-’pëx +Às`Å°Y­‘^ÃÙ¼ŽÇ3„±È70»Y-›7A[87üZ*A›ÕsyÒE(›GÈš)Ã#ÖPª–1©$gº>)–ࣽ­#k!=Š˜© H9Ø…*Á¬Á#ÇT‰¨}Ò ¸IìSàÄ¢åÏoÕàQÑ:ü2Á²gx†@¯x#Û™ƒ>@â`ÀbÁa˜$—³28FD]Î24é)CP±;.¶sH°‚…7âØ*r ¢Nà*†6È‘Q²1³+—H×øD)h7[00i,d³ÜG¡`%Hn:Tà甿3”F‰rjýnqXÛ]B{ jU1ê®ßÕ pVHÖ +’(ÞjíJ·æ°Æ _Ï—b–o@ÇÁžåM +´-*ÈÌŽíÍt{¨»^ërJ3H'«OƒÊp0F¢†¼]zѱ]>0œ5ì6^_‚8*Èš‹ {³/h^IéCÉl·}Z4£x‹%ˆ™¦ë‘„´<Yc¼P\ŽrP˜`%œ<~E¤P­ G¸KÝEµK'<”HƒuÒ~ÎÎr&¦¿,²án^Ã_T­‡êÃ\ɤí2i^/ò5¼Å.  B1tYäSÔ#"ŽÒ2S´‹)E¶ ¬ gv3 +Þ@-¦ †ÍÝb‚_ˆjÊ[@6°*Pk%âc¼¤‡,ò VBKG^•h'ŸS æh¸ejŒÑÙÍèT±Œ˜Âíìy.”¥z‰4+gA dU8Þ>0™°pÑü}ã]Ò”ámSH•û;T&Ë#ñ`xÔf¢Ž`H_mäš³,6·«â}Ò\[ÇX© +£D#r¡¦Õ‹”–É2™L)›aJ”«©]×™ð¼ÏPºïö 0¹¥’Gôž\+ x_QkøLÌuÑ"‹oÖX6º%Ú¶½¨Öð²PJè¨4™îª ¬ì•8^Ü6¥ Z¥J˜ìûáÆvGIóX6{¢ÚQÍ1<)…Lkµæm½û˜“ÀÈíZçQP½Ðœ9lEZsv£ô¨Ö.£ËÐ^£}fE£|IËQvCc WF/‹÷²=á„4Löx¼5¢Cñ"” ­4:6ÍQ6/S”.q&+ Òn$ii*¤4J•Y>„‹,Ѥ5Ø*—s²9Ä«ƒF•ì"ye±"Q/$w3*^¬iˆ8†)ÆEwvˆà)AOš(&%Ê–Å$Mæ4 ƒk·°Ö¥KUrÚÙ¬(K5Ž)¸ÀY43¤ƒm…´§$+º˜Ÿ +Þ=WÐòEƒt]ÏãÄ 0äS.Qh ëo%–´³Ã‡Q[àzîì“ÏþŠ,Ží²ù¼™‡?"oA…yœÛí³N÷IEEô1†ýÜfKH% +•Nï +^ ny»E¼ Oúÿú®3Ü.­è…¼ÇÐKú)§ªÖ!KOr}4{¬Z팜ƒ÷$’8Pô~£}«™#×™^<úIŽRÉ]•¤ºnt‘Z¶;i7ŽOo¾5üqn›€hIꔃãùæÛæà9/·4½W®ÒbB±!˜KŒ/ïÕ;OÂúy­Ÿ½ø1jlîgø->“¶à(FË^Kêv¾ÓýœÍZÐ øÿê¸ ØdÒÉ]¨ÏV¯»º³K+Hïx¹ªéêÍtÿ½îN={´ÞYdíÝÒî.'J5ÒgSé”ý5 e"Ê)LJ[z’ŠRˆ/F¶ R°Ž·ƒß/tïfàõàp[4˜!;îHV›÷w¸><²%ªn,$¢bšre‹':0n ‰J‡ÜòœA\Yä(c»,£’ÊÙ¥¢+‹5Ï™°H!1Õ´.l€”´«‘¸¹¸Ó¹””° TäØ:µ-:ˆsd”"Ŷ…CjÉä|¢‹ìZ‡£<8y_ Í|VÙص»KN¾P¹ÔÒê‘LsYNäE*³4œ|Š-É ËîTc™”™¬lþÅa¹f˜]@:(¸Xð9dˆ”Â$ÙX‹‚ýÞø‘¢·òYýC‡[Á\aÈzéøìæ»"ëHRÕ0ú²ÜŽ‰rƒ+¼wšG^ýÒ‹—"GSÔŽiL¼ò¦Ú¾R­aqËæªÓÏѶ¬5*µ#^n²0Âb]1ÓÉ£õ·x_Ej À4ÚGŠÊÊÌñO,wÕ°JvÌ6¡Ð€´àwRÂбºÚ÷Ã5ź˜aƒ§Íz ï{µ.ÈÕaëìWøOÁßÝe>ˆ’1ÊdQ;¤Z9œÃòs8>`YãcŽŒ‡þâÕg¿cD¸ue{M*Ä3ÇU@€š(^Þ<úéhöœ²»Ëäó2ä’ÉéÀ^ÄHÑ:è:ð)ÐÚ8—•2ŠÎ6Æe®­lÑc'w2¤¬+M]iÙæ \ž‹B‡‹ívvv +':¹‚:M*ª^ÿ=  +ÚÖêÄ'‚¾¹Ð±[®ÓÛ¶á†D$™ƒƒ ÄÂîf88ך?º—Ïìâà0ƒ]€-\,d6+QDJixküÌ2 °k{Ábyh]w'#£ÀŒ‚PááĹn%“% œ#À¥óBÄó±¡÷ª•SÓ_@ä“öšl@“+b'&H*UïZîR3ûœX-‡ë°v$©0ïMUïˆJ]ÑšA8WŒN–¹DrS.é/ †¢Lp±¦w0Ï8>+Õ$µ0ÌqðšW^7{7•Þ#'>äÕv‘ö¼ÄŒSfŽ²$µ 7*Ê=Õ\²b·œ–ÃCˆ«"m#^8CÌ[¡·©\*JH~7ÃàYÀyFGiý4­®êÍ=ˆ(¡Ìs™,‹_1¶½Tõ‰¬ÁoFÊ,(Tü¯ÑA¢ÆñY½›#—œ T6‹IFu‹¹œDQ–nõ`¡²úĸłšÏˢϒ³z±CäËòÈ.y©E,!Å…pXöEŠ¬ÝÉÚ8®>€› L½m.ŸDä4¶ä”ŠŽÀ%I´F2PTLæXð£U¢|øŠ&×Å cˆ×ì@fg¼/M“¶È"âv“äª ä1õ.ñ ä¡àA•gcGIjÉR†R 8+rßóÖ˜aœ€¦¶*ÕNŠÉÂ;_W¥\TO-#†Ùˆ“C}Û°áVÕ–e-{©¨=E.ojR»š@´.vƒýîøMT½DþPtè”TsFê±ä•7>ç•‚%H-78,§º%\µ¼‘(·,wÁð éÌÁé75cÈñ˜(z¦XJ‹t¥PŠ +­®ªÐ?]ä Š‚W*Še5eàï˜ —S‹yÛ H˜ìæ áŒ5{HÁG“5®–ín¼òa‰ §Ã« ¤Ü=ÇÕò:™G•¬Ý ÿE:§c¤` L])8B¥Pðvîs(Èo¨‘,Yõ…š±(—/\ï¬iAL29‘¸<ʪ‹DPµlgA—Žq5¹žÍð»ðnM•&ØŒIjê·T†Ø`ØÚ ÜD—‘oâ™gê(´>*€ÝrYruòþ}öÞ=:K\' #˜ä€-l|}Gâù&Ëbö× +‚µ®CÓVs!ŽP;( +¦UÒ:^´qü/tu„}¡@²H~ŽÜb˜é9’PL’qdLT¬ër›o*ÊP[%r'¯‚n¶×šuبÖ"`&뵃Ñìñ} [º·º½WJOesPþÞöêR€ d3(ÏäŠÞ®¼³#åÁe”<ÇhÝ¢-‡B…!|%rR 4é"ïî”vwœ +¼|–Œ´\MÎd%þè£ìýòTžäN °ÆÌo¯'B;áŸ`:ð‚wáÉ 'SÍCªÆïgTxdb¶Þd‡³-1 õºÀ7¡U€~"WaJîÎ}X`™HDdQ)„pRurŠ¬µ!u8¡"Èí•brñN·v°0ýYžXQHÖˆ(I¹‰ SyrØ‹±2Å–‰’ç‰Î1È-”mMë¸îÀõG¦=䮢õ²5¤(ˆæa¼ƒ,U„)G99ʆ>Ÿ/>6¬:'DÙ¢µC†æ¡Èý¹“Sí +ä¶p'kîfM–'J‰—š@o0© ·uk,(õ ïœËëÀLд(w¡–±‡d.Rp\[ýÑëÁèa®$™\CDá[PŠäÒÉöVOc{¯]Z0J0ì€>TV‘ G™fjº6µÈZGŠÄ#ËÛ›mÈ +ö®œË’»=14ÇXþ 1Ú®dúħg”Œa©J•àPÈ­&E² +êg³æÎŽÛêa¤–Y€òaȨÀ§†Ú¡KF>X‹Á§ppàš!7”JR­“?º‡*f3ùí'Iø/b(2¬"Û@^ùœ±½s8 ÈupŒQ·§hš˜Ð”᪈ŠPS ëüÚ½{Ôý{49+Ba)/4Dr÷Z?(H !BZfHù8¿O-†­›Î<ªûÑÆ çau_1àâGº37ÝyÅõËJû†“{,¹±F¸à’k¯<ª¾Å‹@3ŸÀ‘TE~š|z±F|M„5׌¶ëý`­cÍÉä¢y×vf“É«N÷Öñ¦0ò¤%Ž -‘ 7¤j]Øö" áa¢ö‘9œØÐí‰é- w³5¾½æënïtí‹J›‚B›^xXi^KYåu·¸—É[°“¦»6œ}0ì.Y´²…–75Ý Î6W€KXžÜ¿jØc°*Ü%ÙfÈí=0 +ŒëH6¨Óì*j_;HZ¸<šG’À¤²XM0"ˆ›O%¥Íá„é¤ÄÅEšÜÀÉÂ)—PªõB)”®åÌ¡Z‹THÖ)g{ï +ÕY ãÉó5En«r y…ó¡È5tÂ;äÒ’€ø6àÄóÄö‚s#+*EÁ…@EI¼€ßkž;,5¯¦·Âd…üDZ*zr—&æ¨jÛ]ro3å!Ј ¤¥G“hÓ A<$¹ìB!0ÂÅ +?:Œ’Ã8=@¸á éIWr)–IGÍ ÏÚ£ë°~7¤ûº;SÁ¢ÚºìÎ^%­kÝž’‹¼|W4k |ÉÊ@ ÑqÊ3ÍîûñJÑÚ¶7êG†KnÏ3œYX=nöÖÚg~²/CPX9Ø !«Œª·¯Ûþ¤=xh¸#F¬` ªµ0½};8ÐÝ•€Ø©mË&cQT=UkÊÉMÕœ(HT½@Ø^—¬2B"ªu<,oì…ë°rZŽtkªªIî‚:Kdɢ͓}èjÚRBdÁËP ¹Œ"5q@«´¯4g©Y+P­¬¦¢‚(W€Qe?¨ì¹Ñ +ÙRâS«¼Ôìjõ wfûAí2ª_¦Ík?9r½Éb~Nq‰b ãÚe\ÇßOýøP1º‚RCªÈäÞøl«­f÷²7y\ï\4»W~¸T¡˜Øp¦ªÑgÈŒñöÖˆ2ìÄööâ¯C>Ü!Vµm˜ã8=µË ÝØþ8¬ìéN“ÃcÈx¸Ñ&ªÑ}Pižµ}Ùêe`ÞùŠn,oîFûx&t'Qåp¶y]\[Ñ*mWÚ—)¹…{Ó\§Íd—a·Zý“þô&mm¯ìÿþfû¶bv=*Ê`CÄ·ýD@ß)¯Á&„P*‡$Kõ®¤Ï1™Ø±í‡›Ñìù`þ\³'€Ië¡“Kö\Y’k~´hOoz‹§Ë“w×/ÿ 3{®ÚcÝ…ä)¡nMÂho<}ÞÜb€¦;-m!QÔ‘JîàVÇÍþUÚ<.‡ò ™°P´GnQë•“ý¸qd•Á/sò‘µ¥'ZØáÆ‹âúIgòh¸zê'/¥­ƒ¸y5+Ý3?]U;§n²6ËSÃI4«k¸'˜c¯V÷æøâ›ã믚ýË ²oøsÄ"HVaeÓܦ'ƒÅ{̉¤À}=REo•ã%è8jœëÞRsç­Ñ³ Ùó™é!±GaíÜKŽðÀ.ï5š'G—_•+&@àªÍë¨vn—×vy…$Ç‹5{èÇûœ—XÙ$³¨¶¬uÈX*í (FÙèºá’æc@.¡l r ¨¥[Cš|"¦!)MNÀ_âZëº;yÚß6ðÀta˜¨ IïhîÐK6^²×=nô X^¼¤_”*º0©ö,LŽQ¡ÞõxõæêÙ/{‹g˜Þjç*ª"ôËóÏ–Ÿuf·AeSmlÎ_^}:ÝŽT:áÊ,Ïðaº¶Üa¯wEj¹ÁË#T2Û;X*§«îì¶;œ¶OºÓÛãëo¯_ýªÒ=W­®b6 »×öPãÍëùáÛZçüñ›?\ž¾Uý¡j÷¢ÊªÚ:ìΟ$ÝÛÚè©ß8ñ«ÝÙQMJ¬eØÝzçr¼ÿ~|ôùðàÓáþ§õîÃËϚý£ 2mŽÆs UÒ¼èM-O?ÁŽ^ˆ\Ý£…PÒ¢.Ãt?mžõç¯&›Ot§oº½0™‰jd8 ?š6‡ë—ÃÕËåÁ»ã‹¯!áÜpåkà-†_i^4{ÆË7³ý÷­Á3 -¸RkŽ?«¶Î[㛸qR®ì‡õ£FÿÊMVŠ3tâ—î…õ“öè1fxyòÞ æ’œhZ]äaU¥Õó½‹ÏçÇo&{oVç_õgŸ½ýfìé‹ÑÞË‹ç?ŽZûW_ß~ò§ÓÓo“úº=>,W§²^wÂuÜ­¶ÖµÖ^9YVÚ§½ÙãÎøv²~¾9~ýæó_ß¼øhéÓÁòÙæä“Ó›oÖÇŸL7o{óWåøàüü«ËÇ?•Šév‘óÃOÇëWÝÙÓóG?<|úóóÏöÏ>´6r¾Ò~€´oônâæm­÷fuò½_^Èr]·¦;莯’ÖQ{ü Ò>iö/f{¯ÊÉX¬Ò:÷£Ygx9Û{Ñ›ÜDéÜ´;`ý³/£êagôg놋îøáxó¼>¸ÒÜEÒ:Y½Ìzáh¸z’6özã‹ý‹O‡Ë§õîéüàùïþþŽCùÑüôá×^ýrïú›Ñæe{øÀ ö hçËWo?ûóÁô¡¤qe¶ÜvþøëËçßÝ|ýê×aå(­]Úþ¬@ÕG¿<¼þ¡;{Ý]¾éQq6]Ü,÷ñRÈ + ”¶_=Ž ¹_´ú ºFãõÁ‹Îð +ö<¨ž5ÆÏ*½›þòYspI ÍzP_ºY âe¥qÞ?m^Í>Ÿ~ßW­Ÿ6õÞÞhõ ?¿m¯ëÝ£‹ÓWÿêïþÇÅÑKQ­ÔÛG·xqûë³Û/ŸÿØ?\ožþÍ_ÿgÿä¿ü×P)'¿zðú×Ç·?[ž}uþôÇ‹g?O›ç?üäÏÿá?ÿ»úð°@»^¸Wï<­_>úöÅg¼>ûäêúÓñ¯þ›éÁ äÀêðÍxý)÷ôãß|÷‹öîû¿mõŸŸ¾yøè¤G9^$ $Õyoúìàú»§ŸýÅÇ?ù§›ó¯_¼üþá£÷v0ª´ŽjÝ‹°z×»ãÏÞÿéó¯þ +¼Pkž ñL·#xÑöSÔ†‚:h÷ï_|®™UËë$õ=„Ò"ªC‚î}ü§õ/Ï|¦»ƒ½ËæÇ_ —//žýÁìôÛ¨õ8j\™ö°ÙºÖ¬ž¬ÕšíãÞäá×?ÿÙæüûjãøå˯¾ýîWíÎJC +{Aí"íÜ´‡O¼ü]£ÿHR•æø%¦`üM­UÓ›?ü³¿}óùÏ%…èÒÌÑxï“þêuÜ8ÓÌI9XóÍŸüÅßÿ—ÕÚ[ž!£:‹ƒÕÇgnzcAN5£)ȉ$GQ²®µQb¯¦Éá—á3]ï¿Oës^qÜ°ÛŸÞ.Þ쟾Þ==ð‰)ÖŽÒélõfº~7˜½‹…õÍ|ýø›Ÿüù³Ï~©Éæùhïu{úxïêÛÁÞ›JçQþîÛßýâwÿ$m­ò%7H€HIóI»ù9&íæö‹ý?ü/ÇWïÃxöøùïú××oóèã_òí_^½üMüô›?þù¯þF·ûIío:]¿ΟÏö_=üvuöYPÝûêëßTÄÆ(Ïó\…N°×½à¤z²Ý=Më{ïNo¿jO“Æh>öë?ýOãú|8¿¾|ú“ÍÙçÕÞu9YéRs†º7Á( Y¯”“qR߯ jÇÕÖÁhv áôðÁ§·¿„òY½>üíÉÍ·'¿<»ypò¢^ßûëôÏÿçÿõñÉÏ!ÕÌžíÍ6ýù»Þs~e˜ÝßüúþW÷ßOgçpËã/PËÓoŽouþô7¦ íõÝxõ´D>SYþt²÷qöôèòË?ù'÷ìÓ_6:‡³õc^L oâWLo +º™,_¾}ÿÛç¯,ÓÕþ“áò¡áõ£o{«jób¸x=š¿Õz½ºi¶OT³…©KÛÄùɱíNêCIiÎtüVgtv|ùéóO=Ú{Q¤=Š±U³¢[Õ¤¶îŽ–oVgﮞþðê«?­°üáló$¬ÎÊ•é«/ÿêá«_M÷ßLVÏ—‡o€'‚ +SGõcÍîèV«5¼Fì_¼?¹ùâðú]Ô\kfZoozÓëñþËÕÙçÓ£O‚Ú©fvÚƒV÷^ ˆWµÆ±ç¥R©lÖ§ŸÌŽÞV»'‹£‡«çvyÐœ#ÜhæÅ+/Yiv‹cI®~ýÕ“O÷äTEm¡ÜˆÎq¡4ÆŠÑÓ¬N«{¸Ø{ + +˜.Ÿi÷¯º½ËvëÈóÇgŸNÞ†/Þl—•’ÚõÃýO×÷y¹ +~ «‡{§_lÎ>Ûœ¾?8û¼ïÆWßÿÁ_ÙvÓ‹ÖÃÍ[Åêô‹ÇŸýɃ? ÍÞø®o?a‰!mU›7Ny¤ZuV +á­Âx핧P¤N0)W{³g“ýQ°äFMµáù£Fs]bL^ È穃MP95ìµãCÒlJŒ£jQ¥>«÷ökÝ£Þü1lQX;ìoj­“(¯¿ùY{zí„S'˜•“uZ;ªgõÞ£ÁêUŽÇ³GË£·‹£7‹“Oœt-™Ímº^JzÜï~úÍ_¾ýæÌ> +û²†ÙhÀ›“Oýpq>¯²Œã¸}Ps­{’´êƒ ÅnUN®¿F4mÔ>Øœ}Tœmž&µ…åµX! JËÅ’JÑV­q´wòéüàÓõùOj£[xaQ£t9]¾ª6/5k +Ñn•‡ªÕ\¾Øœ¾åÕ'Po\èfGÑjv¸0 0¬W¤ë¸²ÇKÉlýæÁó_õÆO'óÛówÍþ®–.¾üò·Þ¦Ä{áÍhýîàꇋÛ_T[צ¿T­^ϾþòƒSY©f®ÿdsô®7~Ò?·¼Y§svzþ¹ªýŸ$½‡·$U¹7ü|—™9çtŽU]9WuuuWçœs8}úäœÓä93ØÌ0dA2¢`ETP¯9gTDñz¯Ù«÷¾ß}¿w½ë{j\«— F¦»jïçù…ª½;‰ö7îèNž‰&¦Õ@;ì0B î4Sœä4ÌEÇ"ÉA(Öo÷M.ãIJÃÎäÔýïy:¬{ ÅeE¥"*µXj®3¾7µp{6Ó›Z>Í)%*#¨„!¯7èvk>4ŠùŒg›s §“…yžZñø‚n$èô„¾&øÛf+·o¿¼¶?0:bBµm ”§à¯²B^â³k+çbÅq7® ”î#£PÕþ`ϯµ):bµ$ „GÅ`'š†Æ™ò `—[¡¨¨ ¥VO¦GÕH[ +µôôt¥»­G;ñX{kóÜÔâ1Zˆt8™ï›>™5ìƘhø¨Œg6?„ΉÀ›ÓË—z“'Öwï\Þ¾&ø3¥|w÷èåleèÆe¼:4¬EâS‰4xöŒÓ`Ø ‚œN†’ÅÖúÄòùÎøa°W›‡ïÌœI&û+Ë·vÇòJ‘20 ð=^LWý=–É;š<ÍF­Š:˜DéÁåÁ°C pr%B Ÿ©6wãi‡9ÑPv‡ú4I*ZÍèȈË@‰Èh®¼Rj¬ÇA~SqŒŒV››ÝñãÐ)¯Å³³F| +÷ 0æñHªÏÉyŠËÜÿ=>YnlŒŽïqBÑãõãxX· —¡ß9±ZÌr <`Ùâ RLBôW 6G°UmŒžZ¼}|þ¶|u ¸Àj§ÜÞåaŸJ±i-ÖOågaüJ! •ÍþÚP]K$•¢è4Ëæ·<ÖY÷ 9œv’Ä‚*È$½¢!›•ùÔkÿúÙ™-‹ÅçC=ß0ŽÍ¥s«éü²a!#‘.è(³…€õ‚Ђ¾R‚?¯ËË+'²Í 7.|8oªÑº€Ià "%ÕÂmà2Œ +Ø»?F„I:)*eδØæöùB}NÔi9‡s1‚Ö•@. vO+ù|²ªäÊõ…beÆ,#xÀâ`~ÁÜ%rK‘Ä:EÖêÙêúØì *¹Ê´® „ÜíÍîî]’™a3N±e!ÐSC}Ù_ñqz5¬é² ¦ÝnJVRåöjwêèìêÙþì^½·Š6c±úÉ“—Ÿ¼Ãlgp*%(MÉßÇÆy®€ š&‘¤³µ-[œ¿#j£™òv¡~gRv«j¹Xr”—’p¿ KY.˲Y–Î ž€eÄë°¢˜ÏÏpI5اêÂí ˆrE ¶%µâp ©Âd²¼JÓb +L‚Z¥ÚÜ{h±’V+Åp9hÞxj²T]‹Ä7·ÀPÍæÌœ’¡h»ÜÞƒ-’˸<²Ó%úHÝ‹…ÔH¿9Ø>Õ;’.,RlÑåÕadàz\nÆ‹ˆ4›'“«··{áø+æáËQ"ÈHiVJñRN ´©©TzVEG!e²`¦Äe'7Ga§ƒ7ÚEÊŸ8z)­™GPšŒªz‡ +<_¤é$ND­Vñj™ô4ÃdY!kwRz6N–¿5µœkg›cÁìüÖ‘•£{ýåm¢ÄúÓáx7¨‡Ã]šIØœ´(J“•t0\Õãu%”÷‡ éR÷Ü¥ûg7O¤«£”c”T$U«õçÃå¾Û'Ÿφ£U›c9@P>R¶¸PîÖ’S“üñteTKÖ´d™Q^:@Ë‘`:Ûš›Ëö¦9Bpaãñ8—pyÅ“Óéf¡°Ù©Æè® ÆIJäåp V¦E]Ò’j´È©©p²ÖŸZœ^ß fª(­©z+éßܧ »G†=n—ÎNÆS r }ÐÈÉÒB 6—„s)„ ã¬ÍTE-áÂx!³JºÔZ#é´ÍÆš†=>ÈQa–Ža˜æöH·ˆ`š¬V´Ä€à³@8Ü>rnqûd(Uµ¸0"úõN(6FЉ‘ÄdB­6ʇq"b³I§Ì‹@©ÝXz:éKJaçèù¥ÍcÙÚÉG¬. +‚?Zãy7&1B8[åä#桤£ :ßìžLŸÓô–ÍABi±|"š•9Á_”üeE-ùC¥bk¾ØYеD¦—ÌÎd +‹Ñø¸ÕLí»Åzà€›f’z¨év2Cì#Ã^§]’¥r¹²œÍ-0lÞb¡Í& ü’=0â2yFÌ>†/§ó›‰äKçœIÕ*²’,Z ‹[›ÇNŸ¿rßÃ>öì³ýô'¾òͯ½ýö¯ÿúŸÿx÷ßÿôïýøŽ{kmÀµYn®£ˆh´n®]¯ ZݹÁøÜÊúÎÉ[Ïßÿð£w>øÈ…ûî?~ñò¹k7îxÏ£wÝýðç>óù—_}uëÈÆÖÉRm”N†üÁR@¯²b,HUª½©™Å•µÍã§O^ºëú{ô©çŸ»pÿƒg®Ý{ã¡'?ü‰¿öå/~é[ßýüW¿ùþç>±´u\¤1Bu{X÷GôJ"YWÔp"]ìÏ-®ž^ÞjOM,¬Ì¬ín;ýäÓÏüøŸüê7¿~õ+_¹pÇ=ckÉTËíÝÙëVI<œLŒV* ¶ÛiQˆ÷+ÍþB¾6‘*æ[Go¿tã=÷=üø˯¾zï#OÜñÀ£7yR‹VAJܹœÈe$±¤øë’\ )=¯¦rRµÝìÎÌ,_*˜p“‰†¦‹D&r¹e»M´YIÔ+Jb†f2BQ•f",ËdZ»»'Ï_¾óĹ+×ï{è‰<{äømýécÞ–$猵¬ÿâ½×˜X[Ú>uìÔ• ·¿ÿ©G_{õ3?ó¿þío~ú‹Ÿ½õÖ[ÿõ÷¿ÿæwÿöùýÒ³y~ãЭåÖº £Þ`\¹’LE2]°;{gn½íÒ•«O<ñÄë_üÒ¾úõ?û™¾ðÑ/}íkoüòWŸyí ßúú7þþ÷¿¿ú¥o¼ÿ#Ÿ<~öZ23Z(Mwk…Ú„¦çrÙÊüìÌmçözà®øý/~êc_ýÖWß~÷Ýo½ñãÏãßþÑOþô§?ÿŸÿûÿüŸp%¿ûÖøÀOwÆ×±&EÊ1=]¯tVVVá³½³{åŽ;>ð¡g_úÌ'ŸûÔÇŸ}ñã/½ú™¼ñ£_üòç¿ÿßþÏÿþŸ·óî?òÑóîÌÆd¾È’ÙH¸Ÿ/-û0Cd]Mpïîº~ç‡âá§?ðÐSO¿úů|ÿ'oüð§oüùoþËþã—¿úÍo~ûÛW?ÿåC²ùiA(µ./‰Q=Úh·f7Ý»ÿ=÷=þôû>ü‹Ÿ~íµüôg?ÿÕÛo¼õÖ/ýΟþòÇÿõÿþtë÷ü‹—_ùR®4iwrÀ‰.—à0VHªP¥|®»±y辇¼ï±‡žûÔ ?|óg?}ë—_þÎ7_ûÊß~÷w~û럼ùÆþô‡ÿïÿüïß¼ûë?ýÒ¹Û¯¦³m–½;$ŠÊ"¯”&'ÇW>}×Ý<üøãŸû«?úùϾùƒï~é›_ûí~ÿ·ÿú¯wÞ}çíwÞüûÿý'¿üù{y¬Û_)TÕ`Ëå2?[ÌOGD.ÑËÕêh’ÞèôÁc'ï{ïCŸ|é“o¼ùó_ÿîw_üúWöÖ/ÿ×ÿüÏŸþö·O~æ•GžxìŽ;ïÕõ&ÏW820hO®/nÞzôĵ‹gï½ëâSÝû•/¾òÿþ¨è·ßùÅÏ~ö½W>ûÑ«Wϯ¬¬d Íp¼ƒaaÄ«°TPdº?TÏ—míÜ}ãîzÏÃ<ôÑç>øý|ï»ßÿÞë_|íßøÚŸþò—ýü§ŸþÌ˯|î•‹×î^X9Öê.úýÙx¤V(fsTª<;¹´±²vpcùžËçþõõW¾ô¥W¿þÍ/½ýÎ/ÿð׿½ñË·ÞøÅÏß}÷Wÿù¿¾ûï~åÛ_¾ÿ‘{V·¢É†ìÏJJÒ/…«ÅÆìôÒɽ3Ç?vèàÝׯ¼úêËo¾ùã·~ý«ï½ñÆW¾ù埿õãûÝ;ïüúÍßüšå§Ÿ}õ3W®Ý¨µfHB'q=¨ÕâÉ šŠóŒÕ2b}g}ùÉ÷>ðÅ×?÷oó¥Ï½ü£7~øÇ?ÿéoÿøû›oÿøøíOßüѧ?ýÑ—>ýâá½sZ¸rÀÊ(‡cÍh¬6›™œ=~ôØûŸ~üã/>ÿ©Oâ•Ï½ô£Ÿüà?ÿû¿þíxão|û;_üÓ÷›ß½ûê^ò‰§Z%Ôãæ°1n§ˆ"QÈÔ*3¥B÷àöî“ï{âcŸúØ'>ûéþôÇüëŸþø·¿þà§?|ë7ÿø§ÿø÷ßÿöŸ}ÿW¿zã'o|çé÷?~ùêµt¦)J1·‡„Ò +hy=TˆG*Ëóë>ðàç¿ð…¾ñ£o}÷ëïþÛ;üËßy÷׿øÕ[ýÛŸá{¾û½¯üàGßøÉO¿÷ôÓO}ãúɇ¾|ýŽ“·Ÿ;Z.¥‚‰¡Xe0TtØH‡p9Ê'Åü‰r¢Ü­vÆºÍµí­•…ÙÑÓ'×î¿÷ô#^¼zå¶kׯ:v05Ž¤e%Žö.yÝêáHL q„ËñCg67æ’©v>}hmæâ¹#ÜwéÉ'o|ýËŸýÀÍ[?}ç7?{á“Ïž½íÄøôDHOhÁ< ÖÕ'c˜" á£OŸ9s¥Ñ¯TšS½îÆÜÄÙ›/|ø½ßüÆëo½ýæ»ÿöö7¿ýú^{ñs/èùgî{ü G¶7Ûí‰P¤âvó$ò¢~‹ | n·S­rj);¸<ÿÈ_ÿô ¯}áåW?óìð¯þóï>õÉ\;èèæ\¯Ù*•jÁ;8C‡àƒá*|hJå(1J6Ëíµ™…+§?ýø½ûÈcÿúÚ o¾ùýÿý¯ÿò×ßÿôÇ_|þƒ]¾t¬Q+â‡ùuØAÒK”-&‰úcZ!¡e¦Æ&–æg÷öŽ^¼ýìõ+·ßwç¥Ï|òƒ_ÿÚkŸýôÇ^záÿðcŸ{é¹Çî¹zjw;—®ÒLÀƒp"¸ÆrÑLf4¨eIŸÐS;«[wßy× Ï}虧½ûÚÕ>õø÷¾óo|ýµGï=÷¡‡®ð±{o;sl{u±ßÍf»þŽn›Í¸ÕBãXÄë]vó²¹xiweíî«>û™_}íå>óØÓOÜÿÒ Ï~ï;ßýøsÏÝsåòÆÒJµ\ãÇünâ´3NŠxh a)\д\*Õê´§gfWAF} -9—s»Y*“dÐ餇XíæUH<àóŠ4ægŒÈ1r,œÓƒ)ŸG½>BpŒÄ²~ÁŸu£ªÕN¸œ,nìSÐì.bÄ®#|êaqTTT0)ažW’Jû0‰f²±h)Ÿ™=täØâÊr"‘€y´;p«ÓRÙåíÖád$) +9.LŠÀiQ-v4ª³‰X:‘,–ªƒ‰™p(œŠDGz.âÜËkÆñ ËÆõX—æRû8@í”’Âgt9Þ̕ˉt:¨%µàÆÂb¿‘¯d¢cíF2^ä9•çtšNùPÍn%mŸÕ쵘ÜfòÏ$+–IúÅ|%7ÈDKåDþÆ•‹{·jéø ^mä‹3ÝÖl§ZH}^rxÈbvÛ,øðÇðËjÁ»P¯Ÿ!ªœ€ÍŠeS‰¼Ä|ŸÌ©I½R…Ty¬59ÑžP1N†¤(IN3b!G,”Ë£ÊrÉï/²lExŸ:7Ô ©%!Óh®Ï-ŸŸ<æ—c˜Û–ý™pRƒ„“€*’”R³w,ìY­ô-ÿ „(GÜ.žÆTžôGÕh&’J†cÙxä;ï#E‚ˆ)MÉëZ)¬7].è%mKþêþ[ìP*&“×a'QOQqAÈ– +ã»Ç®¹QÅåm™âø¼ ÁW’dÔãõÃ`¨ñ¬lhÈŸ“×bÆ1Da¨˜¨IRA`“43‚¤”Í#XA#0æÂ}A‹u¹i·WaCbŠ×Ã: É$X9'Š~Îë¥/E“2Ž‰4­IJÅUðþ‡VÚolîó€ÖEŽ‡R£ÝébÆë•l6Ü墜N’Ä5ðȲ”g˜Çg0,P⢤ØF†ÜˆÛÏÐq ušÍká ’Ê˜Íh`Ä+X̨eÄã²"‹ÇaqûŸJ1 A©‡Óª6 ðx:5Ôëp/» °B:A4UK³4›‚4›0‹™ñxÃ.îrkz´¢ëÀ  +Ôo§\NE Lº¤é €€Ë W•À|178bFm%ÒP/›âÄœÃ)ùf^Ýí ‚¼§™t‡ÉLò\‘¡Rûo±íý¡©ê¨ T½ž‘½l¢ÀMð\®ñ(§à¼¹Åã ‘&ŒLdrúh­½à#Bpå,“£É$M¦(2åñhð·€Uàtl‹±½¾x"³2¿vO¹¹ëòj0¼˜Áp#0 EÆ+­ +V©,‰e’ˆ:ÆT›QØŽ‘a¯yÄ7›É„ŠªJ›Ä3žr».§ƒ‡/:`³ÛÐ*Ðn¯Æûë QR©Ñ@¤jäÓ|t‚à³Áä$-q&¡jµõµÛN^~ØGG02¬hpd"™H&g}tØB±Tl²HVÊŒÐPÉž †zƒé³åÆF<^?zâ +«i1ÏMfª+¹úZ±µ]è–‚]‚‰'£'ÿÐ`þ0´$‚È^Äøt–/Eã³¢Üpið€b„ç¤q2ë#²]Ô‚£Z¸çòH&“3V»3¼>'ðaÙœ$—òÅIÊ…õj(ÒE1]Ê~½'¨ur!šË€«Õtsn€å zd”¥S µPÅü>ÔOS¨+‡G}:IÅA>áTŒâ2œ” +†.¶Ù(PïV ÁÐI–Kôv}bã2&«‘’ éÃ4ÐfP~.‡µ‰Akãûö»‡†Q([£¨¢(ÖAŸˆrM*4—Ũ8#ä@ÜzŒà©'äEµêr +"½|éYÉh˜L>¯W:fèI†Ak9<Ï¥9.IQ¸˜Df"]Y”ÂíPj‚“Š †š81`V ‹xu‚H |C;n·n±òŽF{ |@KÃ} #ÃC\Iæƒá~*3 à +¶ÅØM& Þ ±)Ì&y]Tª‘Ä4­,¦ZÂfGlÂáäŸñâhËé•9¥Hð) +%'”ðh49Õ=Ö?•(Îñ|*•ê‡“£ ¨ùpp{ÄJÂwÖk«¢bääøÐmŒ^\–‹Åêr45–Ëï¹›õç95Wê¬7GšGòÍõte• +4ïw_ýìWŽßv—‘pLÅ¢$ש¥\q‹ªªZ7š‹ñ /wÔðt"·]ïÝNÍzÁobj(TG±°Ý%ÙÀ’QQ)ƒf£¹\ Ü«Vç¯\}dráV§¼OQONjñ)Aë“áØ(·×Oó¹›):acƒ;è´Ñ^?•èËrjÛjei2ª*¬”šl•ë™Ò’»Ü€Š„ÍJ®SÕx~.ÛÜ¥å*ï¯)Zô›ÝNï +õüÅH|2‘œ†R2âÜ}ð+€v;X•/”9¡ÄðF  +UÄ@›SjÐȶ›aø8™„;ò*a½>>¶†ã~¨g+I©†3™±áa(ä>¿h³b,N¦{Ñô(-æ´HŸË,—†Ú ›6’¬ŒÔÜ$ê‹ÜLÐìFˆ\Â/W2éIà¯GAÑ€x|£©4A¦i6 °˜´âöÈ·Üb6’v@\¥¡ ûËpï@¸ÑH|ùð°Íf¦aRœ€ùx ¼R8>Uí FGél(áŽ?Ú‹f§å`ÔÅ ¶tÿ]OÍ}æ“‚$¥µU­ms0nC1§K6›)W¡IÒÅÅdaŽbê–«®‹•¼±× ÖÏ–[݉™½í£78)Ž`b(Ô4rS¥ +\ +eCFôX?–Ÿqzý&3‰Í4ÇNµ&÷¢¹9š/"DÂsÅ9Y«Q|†2¼òµ®†›ÀãX3–í6zK±Ü€ Ôf{ubéöjÿ§4 >v—Òï®_½ñ¾la`±Ñ ?1¼Œã¥dr1W<OÍ*NȪÁÈ Q£'&¦æÎì{¤ÜÚÆÈèÊÊÞÔôèqALçj‹¥ÞnyôÈøÂ…¥ µÃ Bi&,©‚ŠÞ$˜¼Ý¾íÖØnƽ^ þÛcláôQi>ÐŽW6B™%•ñšªU¥8ÆðYQ)úõf¶²¨EÚ a[ÀšÙl¬ÛXáÀ"ˆß‹ÌÂfw¬Ú­>7xj*,Š "©Z(S\ÑìWÚG2…u»CF|XœåË•¥2fHå8ÍB©T i:n³o3Ä/˜» ÇBz ì-·˜¬fÌbò™GP€2pN<ÃrŠŒ;íÀÑ’ÝÀs dÍe¹œ.Χ + ãGï¸ñp¼ÃŠÙ|}3–‰kwFŒŽg«kv¯b6ã4“¤7±°$–h6c”“J:›-Nt îW³p[O ’¥E-:¦ªåñ±­+÷>ãF¢Ta©h4þB±¹QhlDRS(¦) +PRÛfkOd +,žžŸßºÚž:àa‡!é¨ÕlNÁl£dDµ•.mί]‹ÄGñ^º4ƒ3a³ ÃH=ë̬ÝzùÞ§N_~¤7sœ÷ç3ñêöÁ j¤i²1Hæ§SÅ9Aí¤ ‹ýÉ-5Xp¹Ùò¶›¦˜¼¬4Eݨ@¸¥ÊB½½W$º¢ÕýÁ¯mnÙƒ¨£S‡rÕY®è±VoúÈøÊ©ÖÄv¹³ËÎðþ"ÇÅ>òÑWÏ]º£4‡zl¶Ô=‘oV£VsÔk/ol_Þ·LkPÒzéÆVsîLgþ|¤°ìÆ£ÁPåÙç^ÙÚ9g±ÒàjCÑAµwlûăí±SFpÜ°Sâc “1ãË +5Aiƒ;›àv2¢™¸Õ ‹‹íÝÆÄÞÜÎ]K‡ïïLœäøÂhot7îÙ¨U~Fh¢3y&‘™wéèU³=fwë hQÜHáõ>úÇ„>E™™íC£À•ˆô|À“$0•(N¯‚Óað8ÑÔD©¹Œ3^.–Ú»ÙÚV4³Ð=NLq¸6†ÀTYÉ">yÅixÊV«àñD`9¥"¦ÄgõH ůO¾¹ ,S¨­öçn,Ÿç¹d¯·^n.ûhÔW,;JŒ³RµP]kŒ'Æ@¥ðB1•ÄÇ¢‰A(Ñç”:‚Åx:714‚A½ˆ–ÎÎ&s‹‰ÂJ89EÒq«\eNÒÊ^Ÿ&ù«@@µÖÒá½k§o`níVFJ·›s×n<žÊÉÞùÊÆáSï½þЋwÉá ŒŽÃÔ°t&›_°9o„ÏÈ Ôn'ãZ¸oä‰Ü¼Ïq¹% ctJ µÂ‰ÉLe)n4;ó‡O\ „$õ~’ÏBŽ÷ +µ…C§ïKÆÇ#X¨Ñßõ‡Úv§bw +(ªfScÝÞ6Ð"†E±ÀJyF,©áq56–*ÏögŸ¿ñ¾ÞôÑaå#bÁè@Ñ:›52¤øå¢$e÷íwØ]¢DS«þÐ@ ¯M3TúðÐúáËg¯?¶zäê`᜞œ¨1ƒ÷a/ßù¡\i¤¦ÏÓôê‹3l!Ÿo }äõùü@Ó`÷4Ó´XäÖâùµdn…À3ˆ7¤ªM¢pšFˆ›!¨xIEN§±¨7X5 ×fÜ,„ÚĦdÝX ¥%ë ÒX¢–‘=Þ8V!ñÏDi* %D„biš*ÃLJe}x`Öáà«¥…ta`¤êY0ð‚\+5·ƒ£¹ú¼®åÏŸ{`viσù¹é¹õ+“K—*íÙ3cóg½m¶R` ¬®קÀ’LIö÷ i@Ø8û&Ô[4ŸÅ™#q:#úÝ‘Œ˜cżeù”$&ÝÕöÄáæÄ¡Bc~nùôøìq5X×£zw§ÑÛêLlk‰177bŸ]RTïäòó& 5b"x±¬êc~­ zIêÈn—LQqĈ $X¡MM÷fNW»GÙiU-ììž~ïûžÞ„1Äp]ôÊ̓'î={ÇÓ™“PºNKwƒñ¾Õn6DZ켋€1A}a·[äÅjä“.ÆËÍDn~ûÄõ»ùØ™;Ÿ—–­N™ó043,FàiIª b Îа )›¦dxL̵D;›Üé 6’Ùñprš•Û”PfÄ +PIwêSÝ Dë Ãé‚é^o@U«$r99P†J`qÛ}KÛ85jŸl²ÝÆ¡X”bÁÏ6fVÏî]~Ì wÄ¥P4ˆ¢Æê5Uo«‘~(5¯g–.KÑba–åÁzûÀy!/ÉeQ¤J{Ü +xÿ¡!ûð°{hÈm6ÒΩ›‘e’Ç ñ]NFóþP#žˆç§ËíP| ¼p4>ªÇª$ 9fuQÌR. 5#‘q/ÈZ—ÀRa :œ TžËP´ñ‡ :ÇäÀYƒ'‚f÷xO ,‹•jæ…R*3Õq<@`¸ˆäã¥~sr{lîD©ºX(Ì®®-T§(6‰÷sÕ QkGÓ3™òºªO!HE£ŠRÄ,ˆ+xCwS<* þ‚aŠ8u=lrî²y½JHïEã³ÅêÎüö Ájq}ëv=9ørºïÍÍ “DGËÍÕ c6QWT´9¸¡/|. ÁpƒRGDh=šŽ¹\"9·Oõ«@síî¡©¹à¹$9×ìî0lÆã–íVÖz3ÜÛn£&êt28ò AšÉ…"}.&Üáä2ﯴû;‚”çøD«»ZÝ„?Á˜¬Ûô Ù_ ÇÁq¯AC`µV8>«Gg“ùEYmÙì¨=»í4¦&7˜83îöµž,¯T:‡üÁîаOÖr¹®Ùä=°Ïh ëÉþ4‚ÃÆz<|1ψK‚/K—×’…ÕÖàtº´¦E»^LÑ‚ÕfgׯÕ}xÔé +‚iu‡åÑV+i±f þÏsþ™†Gâ) ‰P¾H,X™;Br1NJ·&=ÿ豋OtæΨ±qšK†ÔìâÌöÜÜ)E­º½’Ó-¢ÆÛÆ0Ž#z ÇT—‹ +ø³~9 †'’ˆ/ewn0á0ÞÙQ##€8 (¸QjB |‚x!Yï.LÎm-nž^=|im÷ÂÎñ;&Neêk8«”§67Îòbƒˆ¢RPÔÃÕuÃ’O¸Ì5âQQDÇ°†F= ±¼ + 2ÏfD¥Äò1¿šóá‚Š’Lš`Ò‚ZÕôz½±xâÔ]r ,Éyp,ŸS•X|2è0lÄp4Ò¨”æìF¶Çf¼ˆ.É5^,ñB$"¡PPþ_ÐQ`É“Ù…öàXoúøúîuøgèýNgyeãÜ?Ãå|h7–â0¨Wæ¸8JÕiQΈAáA»Iz¼¸Øœ9³²}g<Ñ_]>ö…¯~?ë[m +ÃÕÁS*+ç.?~úâ“rpôÀ]#ŠEøh+“‘1ÈÚíš_ †~µŠ"~N.'ïr v'os &›h6òPµP[Tr&Ún§¬VÜj¬=ã1c9ð~œdr¢ +Ψ +†+WYˆæÆãù™Bk+œ™•ô(ävg{më΀޴ÜFø Çdq<æõ€%drãp4Ƹw·æuù T‹è¥N)mÔš s[çrõÙ\}!V˜çÔ6N§ÂÁÊÆÊéÅåËØÍC4\nž¢’‚Xa¸Œ,—(:!KÙ|~œ$Cൽ€l•ãë4›·ß 6fÁFC­Ü|.y‘Ã'Eµó[o,<ó¡—_zý[óGáO6c™©Îàp¥±:ÖÛ™›9¬i9-PTUÅ_Uµ6Iåí6exÈ8bÉ4‚Bi9¼Åx‡årY̘ÍB˜ ¶z£;sK'mNT j̧KZ5]XÊ–VÕ`“ õ^o­\÷)ýA€"5^1Ïeú¥Â„i1`çC5‹…v:¡§TŽK‡ÂM( ãñ •’ý¥Xz êMA*òb »×]ŒïØl\CÇ€IÝNÁ‡(4ö¡þX¼ÅGñ`(hž° ýzKQJÈ¥ëgÎÜðÈ õ|q·PÞ …º©Ô –%™,ˆpEÈsÐVCÃî›g¤Dilnñ®ÙÕë²Ú4™H° Àì·o¿m¿qˆ†àp†H2† g¢(¡¹=⎂+d…90}àµãù¥HjŽá ©ì¤žhy)¿m”»[ñc‡nœ¾ðÄíןÙ9~'fx! 2EÁu-VrxØc6¡n *K3)§‘“Õx\…pB•´t«·|üÌÁÂ!/ü+c~±Ü< ¨«jµp´#©u§G¡¸AG4ÎpEQªUÛÍ.XõŽÕ&àÀ,, z…¢ónOÐêP­Nõæ2AF U].úÅã±æÂê©ÕíóåæÂÂÊñã‘2'$‰Q-ÒZ\;ÝÂÉ(ê“ôòò‰lvþ8h'h‹”g„=Â=ZÌ>ÑX?™žL¤’œ^߸½Õݘˆ¬•{G[§“…E-Ôš[A')&KÒiQ©EÓÕÎÉÞÜ%=5É ©Fs3__ F;ŠÖ!m³ùÆ@ÜÇþ!×þ®a3Iñ5^%˜Â͘>™c³™Â<ÍFAO¦2£‡^xì}Ï;s=]&¼TZݺ¼¸y»*ùÈ@(Òë –« ºÞÈf{²œ€éçK3iÐ3v‡qƨqzŽG3Òp0†¡j¹¬"µ`áÊ™ŽDªK+Ç’é6ÍG"éþäê¹µ#wtgN–{ÇäP×åVò©ñSçïǙņ»ÅÉ`ó=»…óy4¿›žØYÛ8à€ëÀ~|?`0:€!È`W¥<³²~¼0ê Ñ,´sœaâ„O Õãã<–ä¬ÓÁ8ÆÊ«™€_ñzdÔ«˜Fœ>Täù8¸!¨´Bi|~íÄôâ^<7WkmRñBfnå,ÃdœNÙÈÿ·q›€ aÑß`Øô”Ù„BÝ"™"Â$ú‡€5  ƒy.¾Ÿuÿ>ó¾[ÌCìPÕÀÑ~1ËQz­:“ã`'U%ëAüœ˜“‚M=J{±5Ø«w6ç«_øÒwwŽ]Ϩj©Ât457®…'(>ãAdž‰--ÞêÃÃ#ËÙétà; HªÔ¬$§D9ƒQ^,ãÝzw¥7±]®L]»zÏÅëê‰&-ä“ÙåDj¡Ö:´¸ucrþÜØÔ‰`¸›Œu¾ “n ¬eÅÒÀSªÖ“ü²;E0eàP,ÅbF€EŸMÌê±I0k‡vo[W´¢žÍVÖê½cS‹vÝ{æú3µþN£½tüÖ;©ÉP¤¥ju–Ë€/U x¨úÛD±ÙŽCP]‘»š6ßç‹ØmF&3Ïæ¬VD&Š&üL$`¼óÁH““Ó ‡±B°˜¢5ç–Î &BmTj太¹ŒIô»ÝA§Cñ85ÕË ½îæÐ͇Hæ=€‘qV®°rZ¯?¶51¹+J9A¢¬h¡ª¬X6®d$ŠŒV +ã0v;a³âPQ$ {ݲÍL¦Eôr*iìǘHo|}÷ÄåÝ“wë©YŠ+¡XbyùÔç>ÿµB¦ÒncX&%‹5Yn‹rÃíQ@f¨þÂèäÑH´é°“PN6á²3>¯Œ#~MÉÐt€g³³‘²;4n‚ÇÍm—|Þ P<Ö½~÷ãNKÒVÊÊ¡f83™./f‹“ 3Û=õ±Þ`ˆ¾ÑÙZŒ¥§ ´X È $ÕÊïyðY¯îÛ72Iƒp•¤R,ÚÀ f¢å\<71>bëèå­£×ÇWÏ⌹ã³'E­FB§°Y‚J1\ŽçÓ Ïëà÷ï³8­4âÖ\¸MÎíâQ/_É7¶ŽœeýIŒåf‘6|scòP¦µÉù˲œ9µwemë,(+ Ü(Dã““Ó'o''%¥Y{ÿžo¼å»ÕFºI|Ñhl¬ÑÚÕÂc^DÝغNtŒx-6Ú ,C™ur OÊå©ÕÕcÓ‹Ç" i0¤P´. •æâá½;O]~œ•ôçòõ5Š/ X§4ìFŒ÷Ú™ü\¶8çEåá”aRaÝðŒw»C#&Öd¦½ˆ2lv;Ý Nè¡è ^X*4¶ŠÍ-p͹Tÿ‘GŸ?~ö>—[ÖÂõXv §Z¤¸ú4¯Wö+•NïÇ—ÌfÚx^m<䇆KƒÝñ±«×á„"(I5Ô’´B¤AgfËkË»w†b­™Ùƒ—®=ÚÝr¹Ucy$1‚÷ñ(EïûÀ:i§ËˆÈ1Qv§âõEƒ‘Érm#‘ì Æ7W^:rþ#çïß:q-ï¹Ñ/fÊõåöà €ª•Àí’T'  ¶[y§]tÚX€©bfJS«ûo±šF[pï‹y·”¡Âq¹õ .·ÿ_þÅa2Q “µŠ `¾öï÷ºÜŠ©>B¥¹˜¢WÊÝÍé í©Ób¨/«±ìd©½APq]ï%2s±ÌL2·¨F:¶Ø@T—Côº$»•Tö@%ø0 ÅC.ÄïðþPYUI!’(ŒO,Ÿ-6׊õåæèNµfªúÙgl`)ྩ8EÇ9!%)ÙN{þÜmwéÑÖÐ'IF´PSRÊ(¹™Ú'èX*;ÎJi›$SDVËP½ KùÎÆÆ‘ÞøŠWóÕ¥¹+;ÇïßÖ?1±pk¡±ÁŠ%YÉõÆ·2ÅÅFù™™µÛNÞþÈÖ‰{’¥9-Z'YM¢ó‹{j(‡Óš –±hÀ&ŸbÈh©06A7ºT|ãpL/¢Ç“ƒružŒ] $ Š½®h¿V*7f×Îd*‹ÙZ:òà{߉”(*Ò=ÞêŸ(U×ñ)‡ñ|†‹wáü=íΪÉ8dÖÈPUC½ta¹Ñ?Vnïplüêå{ÏÞvÕf'¡×r•µ©•‹g¯=}üâSñŠÕIB{îùOnmv¸•ž0¢é±ÔË•L& E”no£X_µXi¯7àÃŒõ¢¿MNéñ$e.^}ðî÷| 뢾 ì¯Fã…ÊÒêöm·]²?u’« “UüM—qx´gß>+ܦÍʺRtÁå +ØïB½r&5vÒbûÀ£¾ТÓà˜,è:=UoVZÞaF¬ªb»°;y(ãÄÞ•{~¦5X§û{çºrßóǘ_¹üÀ#Ÿš[»µK¹™Ý#wFÓ]»Kp{5Pk"GÑiœF¤&#õþè¦(¦ÝnÁ‡%µœ«¯Vú»3«çÆ—Ncõ¥“£³GsÍÕlcMOOKÁ«åp3W[ÖÓ„ÒI!탻Óû©ê&TÞÎä­ËÎP|VÐ*¼Ö¤øŠ W¾Èp†½u{dh=š’l +~a뎅;ú³·Öz»ÙÊL}<ÑZ?z9š$ò“sÛ×r­m56êÕÀ±.¯ìá¤êtq™Â¢åù\0ÔôùÂ.—È0Q=Üä…âþýžãÝœ"HébuUÓÛ^oÐi磑ŽÃß%<¶ÖZ¼týÑËw<²°~&›› †ª^/O`~IÌ‚Û2gs ›(×Ëå¹d²ïp0CCnp=>Ÿ‘aBÑaAÌPL„¡‚Õò ¤gÍf/hû™µ³›{7ÆN$ó³[D]àã=úäìÜ!‡Ûo±²F°Œq<„ñäI„ªµY-XÙw‹|(M¥ý†¢µ•`×x«©ßsßÃ×î|D=S3·µÆNäÊ †‘ø†ÅmÆ¡ÝÙ¡©˜É„XLj›¥É¨ÕðºôXwéCù¬ÕŒCÕÙ8PªÖ‰Å§±žÀ„Æ'×8‹áëb°O‘J¥±ÐÛíNì6G×Sù‰ ^«7—W]\Ú9ÕXÏgâ@’6xÞH¸Ñl«ZÕXÊ"äx.ÍÒa(-#‘áŸ>épPN Ê0ëÎ,Ÿ;qáñµC×úÓ‡綾ö•o]½ëa-Þ §'ËC©âr±±µ¸yåôÅGçÖÏ7{7|&ë»}áhv¦Ü=XïŸÚÞ{tûô{'Woït6^þÜ·žùØëµ»Ô›gä©ö‡Ç’Ù…zcñÒÿOÒ{?IvW‚ÿÀhSUé3ßËç½÷&½÷®²²¼·]]ÝÕ¶ºíÐ@h¢a€‚ hA‰f$Q¤8´"9¢HI«‘VncµÚˆ™ýmo¶"**ÊdU¾{ïùÎwÎ{÷~ß“Ïïž{¬·tavójé|¶¾<³raiãêå/<ñÂ'óÕ•fwûν·Ÿõó‡×îO/]ñróœTá„š¤öbàF„9Œ”¥†auX¾ÈÉ8d bA•H CÇ¢®­˜]I®ã¸Ò“ª•æ–ÎkV-“k·Ú …ʲáÎ3Bƒ¦K4•Îë?»HH$“Nø±˜49 ¬4G‘i±@º§iŸf|†MÉZE3Ú@•BD`ß`ÞeEË»~w8nyó†n6IÚNbã3wÜÐxc•Í²9Ãé#¨ Ñ0˜6"a¾1jÝå­ký¹C7³@0¹H”ו²çöpÜ0Ãñ°{†Þbètà“òÿó”WOOž8?q<¾ÅQÄÆOÐ(Ê;þH$aCArÜq~ø††)AÈ” "%]XÌ”ÖEÞ*”f«­µîè ÒÙ·ý¡,sÌWçÅáDM³Š’ZÊ–Ö‹=àõbã ®¦ª4d¥òðŒ-1>˜I‹Gy0Ø©Ia’´IÊ‘´²_XhtvV.nmÞ~âÙ•Ísá©3W^Øüø'¿è—üÂ’™Z(Ö÷–6¿òا6°bMò£ùs ˆâOÈíóhø‹ÃÅ›^vˆºé™uY.éf×ÉΨNˆIIku‡çÎ_{YP²–S²½¯6º3g–o;™ +TÑpGŠÙÞMSs ·&âF$ªŒŸ)„8†ÍWÛ‚T‚’Ð ë·;³g5·'“¨•L¤8%T8ÉÑŒÉKA.‰jI³ê¼Tˆ'8AÉo¾Ym,í'*u$©ƒôCº$5’° +‘€´ De„¬îÊÍ3’Öe¹¼È¥D~l-5½‹J)ŠaR†ÕâÅ*à7 #!`1N$#aè 6®`¨Ñ@WwFEšôÀ·¡ bg*ÈÄ  j\FÈS\ÚòÚ•Ö:Š{Y¯’Í÷9㦺–7£[CË™Îå3…9^´ÅÑíÅ8†Ý³Ò ŠÕiˆe‹ž3J§gÂ!*ã1Dƒa IøÉ èaM!MšÀ÷a˜É‹9N*vú{§Ÿ¸Yi­ýl™ƒLjÁq§­ 㚤9s‘ –o8éåzç`ëì3û—î­ìÝö²³Šàì¹úë¿Þ¿ð8-VrõÝrÿâÜÞý'^øÂÁ…§eÇ)¼õ©wÏ\|2)ÀÜiÎ\¾qº?wõèöÛùòrÆë¼øâ§î<ÿv(*{’H‚TßþØ}@ ÇŽ…Ž=úèGÂÇŽ%g¹+(b.­žÌì[ª€÷Já#x&’k—&‹$ ˪ ˆœ_3)Ýä*ýÑ™ÓÙÙ׊Å7=÷<…T ƒ!v¼=’vT)ƒ@l<‚r´bÑ(…Q)œÉ;CR9œÊÄ!A×+@µçκüÜÚÁ“ý•©Òv$Æ¢IQ×kId|ëï¡Ó硸Âs…|y…á‹ "Ò©ipIPR³ŒÀ-ŽË÷!¦*–¢ãý$b¾´ä®*•X*'Õùd³}†³¢Q”¦m@8š].žÝ=ûØòæ‘ív2™®›ê¤-ð¾ªæ9Æ#P•# †ÂNpà­X:BžÀ5Ñã1Qæ3åЄ,9pžËÁLÃy,ë+j1ã5û•f{dpñ3‹—ý½t®§h9YöMÝwt_•³ãg÷Ašg³2¸`6…ãF“ ¤'?=-êÝhLMå–²å5ÓîÍ.ž_Ý»^ëm“¤UÍ·ÏÞ(–æHÜÏäæS¹YÓíÈZQ7ËÀ•'+É%‚ô¦6§ZÑvfýô²ªµ8Ö×%·QGÛãSŠÕ­Ty«9:j/äÊ‹^nŽaÓ*lo]Ø9}C’‹@ +f—¤€úò© Q‘ a«åî¿ùò«o/3î¯"KòÕ\e;[\µ´ü{_üêƒWÞŠ„èÇ¡HXÄF¡~f¸õD,&Æ#´À‚ul¸H¤$0ù@ûõGû@Ñ`öxomål½±”€”$lËp909ÌÆÂh8! Læ¤$#Îñ©J÷ÀðæcšÊc-Ìlœ¹ÊÏ(FÍ˳¼Š‘…DBd]R‰Å8³)Ü㙜m÷/CPŸ&ÒšXR…|·±¼¼z¡H+nA % +h?B‰ŒU,ÎDÂl`·`P(b€9á¸4Ëyžß–”,ŠKŽß®¶¶S¹eÞîýô,Šê½Îz½¾”ˆ+“$`ÕýhÌEÑ’$6Á%Å"ˆ©¤,£¾).ÿç@2Ç'ña#áus¡³œc·iÊÇE ƒÆÇP=¥r¼#‘ÄuZ ÕR "(\‘ñé쓈2i±tš+8™ŽÇÙ|i”.“I`Q-E+òBZ•óŽQ/¥$ÞÏå:H„Ià*€·ª‚ ΃áD"L,Ê“¤C†8fYB!Qámž¶¡HÂJ½¿«èušNÑLC- —.£«y +Óbbj±Iâæɉɓp4„18'2jÚ®U‹ NOž„§&Éd2E²e‚Jã¸MÓ + LK½ï:•“'“ãsaîlöÒâöÙµ«ÀbN„‰¡"Šãì€*`\¢œs½–ãµò5É7Ô4C`!xÒ N®GB8HÄIZáe +#VfhÝ˶9¥€â‚(¦œ>µyxtå Ý"-•Î.´»üÌ*AØ(ÌAQ2&„ˆ£‹(,Q„EÓInñLƒUKÎ]Ú¿zïÁ'\OÀ†éI@\IÂÀ‡á–Â2Ü 'õ‡E’y6í¸-š±IB-WŠÕåTnÞIL{š”ˆèŽÕpœx1X?5“Ímd EŠñ˜š‚QTmIðŽËÈ$€ "GSe OA –Ÿr|uAÿs0Ä8.2Ã1Þ9€Ž«"L(.Kb&É¡l©å\jCt’QX§ tâJå¡—jD"8C™¢˜b‡g\ +W E1ŽÒóÙj"GâI¹Æ¡i¼]$LONÀ¡¤ï‰ãÑàŠÂj<Â&Áz¡*–ì`& fö4%ÇY†öpÌ%p DXÇà$˜ˆEƒ…jq… +ØC1]«l ºsxÒ<~<Rá‰c-ýð, ’`‰¼IàR(ˆ·ÈqyUkØvËÏôU­ “‰8ȧÉÇp Ã1°@ÏšõêL.×3Œ2Ž©P‚ ‡áx”¡ˆÇ±™ñsê0 Å9°FÇ F¦ðH ‹L‡Éi«bè–|ªtáÜ 2A²KD8À*p\LÆ3üBSˆkµ=g…T䈸œD}4 +€uQÀ;ž8¤ MàüX„Ž…ÁáÀ¾'a–E:E"ã8Ê“ÅÆÄdâøñбc0dWuÈoÕÕÜ‹¯ÚN9¡qà šÉ°|™¤Ò‘bJÎÑÙ›oé{ñ¤üÑLœ<IÆ™su5å:9…7._¸¶½F„Àüð¡üø¹ÞŸùð·S/†#øÄD¸i(&1„‡@R$Œ¡—ñsYÛ“h)A"aEeÛm•j+Qñ®¨Ù^÷SƒqWèIÀ bœ}E¬˜€”õZ…t;™ ¥‹ŒF¡…É &Âq,Àÿ¿|tDb|àd<4 Ÿ<ž<‹‡éq™GÆzø XB 3#à(šŠ&"Pvµ–q…”©èÕz_R¼`x¨ØÔx‰ ’¡(?y"vü‘Àñb!Fä +›IÆ8žÔ}3Ÿ¶‹ºZˆ†p$!àIkÄ –cÁ‰ã‘Ð$”íãI)€ÂÃA€|–DñâaâDlâxX2“'c‡ í2¤e)5â!.p…£ ²¨©“‰Pƒc€<ùháiN IU «i«ßo±¼€ƒd¦«å–ïeYNNÂI"™ti¬tS™Æ‰Ñ©‰c Ñ÷T_¦KdÛ…Ôúú²Ÿ-Äx(ŒÁÈ¡š(h)×*dÝbÆÞY>÷ÌÝnw!H¦bS“Ž 4ED J:ŠXð-™ˆ +&cLæ<©^°.Ÿ^¼p~cq{Xm‚&é20M1®D5ÛPtU² —£,M*2¤dOd +æI±œ¯6ÚÓš–*äÚ,kâ(O £&O&Ž ïeãr1`êâa¨ßvm°¸°¨K +š "!GU  +\§Ä E[ÕêŒa4­ ©h„L&X€šNãiK + eólŽg…•Uš*zº« +/Z²,˜@F#Ãvzm¹'r€)â‘CÀ‰h ‘x¡Â„88Eb‘d4j +b7g/×½ƒ¹Ò­ÃÞõ33¯¾xóÌÞBÆ4hRF`ä>3ÀùÈäÉãÑpÙ1.H’ JÀOVmI1ÁCNšüHs!ÊŒk©E8ÁNžŒdòı€HŽ“ÀuNRÇÁÇŽÅOž€"€?F8šõ $Â’0mŠšŸbpOdýh=y" ¢Ð0q<‰DÜSVŽ[è8k •VÃ-å•Aݾ²Õ¼{ue»Û­Z²›v<]qpL8yl*<ÅâˆÉòOjD4¯"›ƒT«f[kê‚m™2Ïdl¡YRÖûæKOì¾ôì™{7—Ÿ½³Q¯dSÑÀdƒ`õt^´ÊåQO@F}s˜š©Ê–¤Ós™—žÜzéîö‡Ÿ¹ò›}âç¿|ÿóŸbwµ˜uEähÚG…m‰6‹žÙ«šsÔ¨™ñ®àÚ+&¢P2–°E±S͇õíå—^}µÙ (‹¢à&N¾bU­KÓ¹ñ­¹c'XÍYV«X(g<™ÀH2ŽHœÜ­®]˜ômËÞÞ^Êç3JA)IÇy@¹1€—’€XðQ°½Z¶aÉÊ:v°\¼|j4ßJw³òþ(óüí?sêÝ×.½þìÁÝë»+£zαHAb8!iÔ”…ÄB1(à pAHÎ¥Ñùll½š¼º¬ß<]<ÚÍ_ÙÉ?vغw¹ýêã£O<5üüýù¿þ³—þîןþÎçÎß=È”M,ŽDB0K*)Q0ª ñ•<×c®Ì ÎçÞaåSOßz²óùs?ÿðÎ?üæÓ?ÿÖõ_~ûÊÿøé‹ÿó?~ög߸ûÆS+î7J)—L‚hå\É(Úr'˯·µs³æb]®ƒ,¹Þ³·†þÎн¹_û샽ßÿöÛ¿üÕ׿øÞÓîîîÎh" …¡(Ž$¥ÉÉ؉cÉPÐç᜘,©ˆÏ…}>:,HË-k­oΙo=·ûÖƒs/ÝÝûÊÛWüƒw^{ñf«b/Ï—–6NÝÕŒ +‹Ø ’ОŸŸQï_j>sX¾0#¾tµöóïÝÿÙ^úܳ+_xnôÛ¾ð¯÷åþý»?þÒ…úå ñk—V]‡Ðè¸&!HT‘hš‹-‰§öRßýܹŸ}ÿ¹oîò§Ÿéýãó?üÒ…ßÿŃ¿øàÊÞ?ø§_¿ø7?¼ùî3ÕgÎÎ,æ‹®VòA®L[ZN¦¹Œ˜xÈf…½³é¿ñØì‹—*.þè½Ë¿þÑëÿü÷ßùÝÏßùåwŸø÷¿yëÿûÿú¿zïÁQý[oúÅž}çþnÞRbA$Y`cyJÅâq¤|(dQ‹,©ëkéG7ò‡³Æ•û…k½?þÊSï¿rðþë¾ñ±›×C`0°‚“U™ÏàûMêÉ5õ½':ß}û܇oþä«wþþǯÿÏû³ßýì“?úÒ…¿þ¯Oýóo?óõO]9=ŸÏÉH®îK$iÑHÇÄ׊Èå!ugY}å0õ×Öòõ;ß÷â7ÞØþó/\øû?ÿØ¿ÿÕgÿå7oýúûw~û½ë¿þ£[¯ÞZ¨»ã$DH<ã Ì—ôš®¬fè—Nio_K}îvñÃ×óÍKÿçï?ñ·?{ñO¿pøëï\ù‡ŸÞûÛ>ñ£÷ö~òþÎ/¿yî¿~îÔíSùvÞƒ£(š ˜Øœ®ìô½Í¦|{Ýøòýá¾pö[¯-}ãõÕßýø¥_~ïé?þÌ™|jç?þö½ÿõ?ü‡¿|ýwß½õüáï½a`!˜œJDÀí6Ë-„•èëáë3ôs§ì§OÙ/_-½ÿ`áûŸ;õÍ7Vòÿöw_þ퟾ðû½ø¯ó…¿øæãÖª‹£a±ÔÇP5o{ G¦¨ýþè ýù»í_|íè7ß¹ñÝwv¾óÉíŸ|íú¿üöí_|çÖ÷ÞÙùo\úßõ꯿~õ›ÏU?'waZ¬"Ó|h2vò‘),N³±ùt©ÏÝ^·\.ö™ùŸ~û‰üË×þ·ŸÜÿßûÞÿÙG?ûâ™?ýäügn]P¦SdFÆÇåD9ƒ%Mß, íÍAf>Ï,gÑk#úsOuþøS?üâ…?ýÂÁÏ?¼öûŸ<ÿ7?}ð‹o_ÿÅ÷þæþÓ/ŸýÝn|ëãƒO]ó_¸Piet$ÁŠ|c\]P;y³å’Ó>~q¤>µ­¾p`¾y-fã¯þä‰_~xíg_?ú¿þñ«ÿ÷¿üÑwÞÜùðÓ—<¾Íã s)IÎd^€.¶^"®ÌÈ/¯|óÕ­ïúÜ?éß~ý©ÿõï?þÛÝÿÑ{gß{níôR1£1|êûŸ»ø7÷¾ðüÆëW{¯ž«=¹Ùî«íœ`I œ`$¶è ™+¶VÒèªJ¬”Å{§ËßxeåÏß;ý—^ÿÍ÷ïþþÏ>ö¿|ë§_»ö³/ù§Ÿ>ÿ¯¿xéW_Þû΃â ç2Ë‘Eâ‰(jk•‚ß7xÛfˆ¶Iö´äŠ{lÿøQþëÕ¯>Xù·ß½ýO¿}ãw?|úüòåýÃç~òÍÛ_}ó³Ï/­O§lÕàh §Qè˜<Ÿ‘¨Ž;J¡Ëiè\‡~f'ýú£ý.¶žÚÍ¿ûøàWߺõ“nëÕ­/=;û棃k ©•2È©¨D +4¦%8 ±#!qŸŠM;ÄnÇ>7W83¹±VüØùÚ7¦ßzlñÇ/ŒK}íÂÀZ©8)AR)N$y ùe>%²i]Ê¢WOgª–RѸͺ{i6w4c¿ñh뛯.ýå7ÏÿãÏ_ø‹/}õþÜWïõ_Ù·Ÿ[Õìå·«’MÄÙ$¦ˆYËìS„ l S<œð(¨¥ãÛUþbŸ~vÇ|å\æ‹÷¿ÿógÿŸûà~õòo¾wïƒWÎ_[©Î–¶jøúö¿üÕgÿñ·Ÿúo߸ýÝw.½zkþæ^e­ço¬ÊYÛîÒ”ËЖäÖèåëy™­èTËá+ +Ý4„¹¼=JkKöêBúîþôåùâÀfëš”eâi„E¸à=q(@\RJr$#hNÓª¾Ûðý–k6'Ð%…oØ¢G'LóR»Ø“X¸ (yDÊçú$n&¢@l“X‚Ri¥ê•Öf6W:£¶%¯—´ÇÖK§êÒ£K…ó£ìNEÙ­ª«m9o64²` +B •cÊhØÀpš¡‰(OlAÚ¶T–¹ »Y®/ØoÞšùÔãK÷ÏõÏ«Y–ÚR ~n±3ºÂR¾&¥9Raq0!š!j*+™¢Ú.k)³ìˆeGðÆ’yCVYF Xõ@M&UIÎѬŽÒ0$‰ŒcJvÞ+”3U‚R<ÓòíZpš¥P‚LñÀP$ã4pRPœ ‡È`D±T:·š-®Ž·)yŽ6”7%ŸL‚4Mœ5ÓX\è­ j£”æhŒ`ž=¶0äɉP$J'±Ã5$©®+5–4áÐdøzCtÅw«hé휹ÚñV‹ûûÒbþÊj{«•ÍéÃŒ]·-$– àáqA˜^¹}ÆõgLkº7<í¤ê.R´£Íbe3S\¦‹À%]ò¦û‹¡(:1™E8^nî¬nÍðãÊZYIÈG§e³Š«9>”“é¤ãˆÉàz,ŒMœŒÆ‰y¢P£é ©$bA.ò9 KÂ!·: _7ê¶ÓÒµrÊo ã-ãmfƒ_ñbU’kŠV3®a7%1%+%”H%’F1!ØÄÃÜx\ÂPalU-HRFU«©Ô´ëµM½Ì`‚ÈHXX1 &âQE EéÙ™MŒÎ…#ôÄ|âd# +ŠÞH S¡…ã.KzÌ¡sz9xÉ@P'îa­<<‘‚²\)”79±O؉„’Dt×úéÙP€ŽGÁôº’\Rvõbq †MQ¨ B5ƒ–¢J¥ê®aeµƒé@ ‡SX_SÀ£±BÅÉ.¦+kÕqGÚ¹‡ÝÆešr:½Sü¸z¹aÙÃTf%WÜòrëÁ¨vb’<9‰'F8È<òÑÀÔ$*«Ýte7WÙ6ì@ïÉã“"!á‘Gâ““Ae5sÆÏlÖ(Yá¨:95~,ÅÑ.óÄø.Ypò$ ÓfêrEáS¡)(BȤD¢*–;.,ÅóIç‘­ôÉçy1½³u¥7»1)F*LVTËŠ^·ì^oö0ŽÊ‰¤Ìð93ÕÃÙŒùI<-éýV÷ðèö'J­‰ ƒO,¹¹=Q‘LNêÑ8¶ UÞÌE‰¬¤Mî<`DEmˆb1–Р¤•Ä,š+köÀËÎÊz'SŽ;(U7D©¤é F(‰F/×8ªì¸¹eÃRq0UTš0¢Éz‰Šš3à”Æ ¶hºÃîðÜÆ©Çp:5¢b …áËã ~t–âÇGxl£Þì«fG1[¬ÒÆè +É6EeKÚñðxO`$F'“²,—%uHÑ•xTHÄE®ñO4HZ;[ÙÈUwh¡E Í$ž‚‹J“K&u/$`#Uq*͈œ)cúÄ$MÑ~âƒÁq!Yóx±ÁpeŽ¯àd–fK¼XÓ­A8"ÁIÁs]Fð ÍUp*;9ELMšÖæÅR4ÎÅ!™ʤP%¹ŠjõEe¼-ŌʇbZ¶ªàä7gÞήY©Õ“T0ȱ\I”ËPÒDPû©ärƉ ™M2yÛÙÎLqƽGã:#6¥oè –,‹§ˆX˜IÄ%óããó¿&DÙá)ÐEئ3­»³Š=#Y3S:ygå+ÕS™Ñ…KÏ5ú›n`L¥|;5c§çÇÃŒ7Þl3ëf¦ã¨ŒóQÈd„f£¹1z´Ø>C‰EÕy¹¡9óš»Hpu„ʃù7a*·¤»Ó€^â.ë}?¿o¥6x¥GÐ9óÁˆjÁ-Vy¹P‘«l•§ +Õm?»”É.ìžyRд\+vg7_ÙjaûñRç 9}QU[¹ôôúþ­fbt +@Kó–²ÕSÍáQ}p9[ÝÂ(Ÿ“J²ÞæÄÉ>³/j­¹¹ »‡ÏIZc"HÄËË­•Ûs• 4ß…±,„z™z¸N†“r`Ü…Y×þÅ=’.À¨o¹#7³€3B:`Y¥/ÛãËfj`,‘Ц‡gL»ÆŒp€)¾F mɱRAu ½®™]@Åp «Ó^v-]ØÈä×ÂYR:²6äx¯ê…æD‡ÏM/Slq\ßžðX©&™Ñ²R#iØš3ƒ‚¬1®„ÖÄÙ’™ZâÕ®æαj/x²1íçVCQK@‹¤*¢Ü3œ0¢$â%W³¦A" Öd­.¬3Bk\³%Hƒ«Š%,Àl'Ž…Ž‹Ÿ ãHZÖú†3âÄz$ÄÅ¢¢(V8¨ >ÆÅ3ñ”ª÷y¹W®*Õ· ·O°)N®XéÊø¼\µ¡¨µS¹ùFÿ”æt¢°"-œÎ£D†â‹q<›¤YþÏ=üñ¤™Ä}Ùš6S‹ÍᕵÓúK·’dE‚?\[;Jànvâ°SUÕšË5rí3²Õ7V+̳JM6Û‚ÚÔ¦döRÅ5/7O‹y+Õ?}å…óO6Gg²µÍ[˜é´·7ö3&ªµrë Ú;jÏ?ZéÊÎ BÝÌÜÒÖRc'7R™¥µÝ;³«×úóW·ŸÓýy@b?‚RgÅBX“[Xrnõéæè±Te'réÉzY4[A.•wiÆ¢á®x¹Í\e%uÙ¨ûÅM+½ø¡9s4³z+WÝ6Ü9 ´³c¶¨V%£ox#$s. +»ÙÎ`aù +Ídb °ÊŽaOç`æs–äѸQ©n{þ(•“x.{Y0ý5¯¸'™ó $ÍÍ»øTb\Ù™ +‰€¸x@¡µ½ó¯ðbóÚ£÷¿ôµ”kk“A!’0EcÐX¼6»÷t{á†á/Ä #W^¡ +Ë“$Jeaðj«X?ë¤×#aJh¢T1 ျ&‚B(®qB©õbûÂ#Çá©)ADÒN@À$‚¥c BÓ†·˜.mŽŠ‰±>IãTÞ/lcD–‹+2Q¬Q£wyvë V)ºéé|}£ÚÞiô÷2¥%ÍnƒÉ”ŒFcxVmÜ6WnØ©•Jûb¥{ÑòÁ0#°ŠÒ> )ai¡*è ²æ)¾­;s½ÙËí™ÓèxïñHw‡²9`¥–âÌš™Ål.¯^Ú;÷”áõ±qUùM rãììòUK© (Z6‡’Ùoj¥Ë@³mïߺù̼RÅȬ›^q3À©E± F8±Ùœ¾àeW'¦øhÌ0¼¯°œ«mW{€—"AàÒçg€ž˜¢@®7üMÉ*öˆä8]› ð™Ôàöí—L³ñÑS8NeìÔzoáÖ™k¯UZ§¢1õÆc¯»©™8lĺ—I œÐ‹“ÙlMß?óé×ýÂ%ý\yÓL¯Øù­úÌå³×_[Þ}ÒO-œ»7·yÓk^y]õWYmh¦×³Õ3é#QïÊJáæãœ@”Ì|›œÚbøR¹ºÓììïìÍ­^¢„¯ö!'0¡R†7˜]¿9¦MÆË–‹íLe­Ö;ð‹ëQÀ¨\¡¹›.¯Ã˜Ë«µLm»Ô9_ê^êÎß)wÎëÎH*×n=8 ^Pi¡Vh€?Ieæu½5®Fê™Ü<†gB!ibŠ91Ñ1<›/îÕš—D¹Uª¬JHÒŽÇ õa MRû^vÃs²Ùõˆ;4_“[’9ÒEópÚ—ÔJV¥’­®ûù'µTï^®M_a´fѼ‚‘Å’:Á€M〛«ïêæ4x'UQ̬wöêƒÓéòŠæ9½²iœ+¤‹«ùÚ6 àÐ%­)«­l~¾X]v23‘„Ìr)7ÝÇC|ÕhΰÔÖr8#Š/AI[Ö‚ÖŽÁ‚¤Rå¥æô™¹õÇK×£·â—ûsgI¡¬Ó¸0¸Ð¨÷Nµ†{ÍÁ>ÇY¶¨èÀyS! +DŸ[ÜØ{h ÛŸEÆÅ ©@˜>šbÓ¡xÃôz¥ò\«µ²úF®0!®n/˜îŠnD½,à7Û›-\\Ù|!<K;¹Rÿš_>¥»3†?Oòã‚ÿë[7«U`–!Ô'Ùr¹qzu÷ééùKõ6H‹æê›o~q8:¯´•oŸÉ5O•{gÀ„cDj~fÿkô“ÇŸˆUà=%cÆÏo—Û‡ÙʦéNëFëÔÞísGh¡ ˆcKœÜ6œYAíL ų©Ô`fñâ YL…hŠDU^,•ëóëW0ÒḂ¬4v´tunñ"Å–ÂQ%d5µ¹¸t•a‹'O’Ï‹­öôå|yWPzVpÁkŸx÷ÜùÇOœ€/ˆ%³]OgÖ²ÙUÃèsL Ÿ +î ¨©Ymš+sjc«@fgŠ»~vÓË-ƒ9ÊÓNψã‚ü œ)`t‘™âúhí–îMÂ4¸^iÒb9SY£Ù#ýq©·Ú¯TMYþlª²Yé,?¶wñ…æÌ9”Jñrq §˜”LÚÀYÐ\£Š@vˆ"¤å¸ à³¢T(˜l€·0¼Éœ¡„2+ä¶OÝõÍå@œSÎrùby}yïqxÜb/#«M–+ñ–.Î;ÙŒZ ;×ÜŽÆN*¹~·ÓÛ°ÜÎT€p‘¸ŽÑyÓ„ÅІfÖòµ¥Ùå‹Ã•£Le Bt RT£ÿ°:âHåᵕ½çdg)ù èyÓnf6¢ÀËGã&AWuwÑ̬€¨I"Foæ,ˆÈønp*‰º€‹åÍzû°P9Hú0šöòë@t=¼«`Àˆ%ÆUàöŸêŽHÚÕÌn©±Ûš>tsKI" ´"ÐcÝÞ~©¼’DMÙhšé%‰3+73•Ýì…Ã’cw{3§ :MÑ%Qëªö,#´¼ôB«ègæ1Ì^Y:?èm2´ Á +Jz†7®\[¿…“y¶bqÄ3–ŽDd2"1ðšqÇ+ÝldÒ]ŠôC!A1™Ò~2#!68EÀq™£\F¨Ó| £ +€¢ÝÌŒjôòÕS¸‘ÍtsúØ1Í™‰A*©,—+¢;^í(æ¨4ÃÜÕö袠·!šÊ•F¨4o¶1&›y–+¦ó‹…ÆÍçd­Zï8¹E3=keG©ÊHdZ‚Z.&WY¾,ª<>©ÑDˆ,<íõæ0§0á“|BR@Ê0ª=04Š/ƒ+,^I Çç[ýÓÅúš9He— +õ-àЩ$+5@ìê‰ZG¶擸ÓN9¶Ý±œv$F…£d0ÂLNÑ0šžËÊ,ÑL–#͹ÁæÜÂY3@èÑR•à˼\—Õ'T£1QVŠ©ÜŒá´ÝT_±z0^G+wËÕmÓŸÇXÕ0ÌÆtš©€éÂÆ%–Íîž~ ÅÝ“'‘XLIbžjt‡ó×ó7kñÄ$Š*`9Bþa ÅŽÍkjÛÏ,ÉFW”ŠéÜf]”ÐA˜`T^ÖºnjN·‡ÀNÂI-_\(Ö·ÀjŠFŸQ:¡˜ iQl—!ˆ-p…ÖôéúôYŒÌ-„“9`ë1ymù|¿»Æ±®¤äýÌ ÔXí/œ +-U'&©PXbÈGNǃAª€Kë½3ºÕ‡ =`QÌOå–ukpü<91®.XÓZº=[lœ·2»fz•r¦±Bšá² $9µIñ€=Šq4Æ ¦4‘S¹…taÓÏly2 L¤bI8V‚t“¨²[µ{ؘ¾¨;s¢Ò1½N®ðR¾ÖØhöÒIv’t€[Ü9|æüõW¦Wo·ž€5`B§%‰T8*'’)À]–;»{ú‰þhßòƒùó$SŒA Ð!¬ØÐpÙíù›8•çØTµ¶h»’â  Úb„šªus@1ÙÉId-5$àòÌÈòá„Œ`N©¼RÉÄDbb"Š0À€ÃX¡ 0‘ËJâ¶ïôµŒp‚ÚU¬Y`œìJ÷ @«ÑXIçPRI3 +™YtR@Ô̓e F„@ˆ±ìÍä&§˜HLCˆ"'õsÅÝZól®´ÒŽ{õæ¦étÆ•Àãr,¡lYÒ‡$_#Øb4Êú§Ê•(iÃ#.À@0Äs|Éq¡qF×Ê`ÈT:8Áè¸ÑŸžõÓs HïÏ]Ü;z1SÛE1%€Ò@€$qòêóñ¸JP^ê¸é%^,ÏÄÅy–õg²Ù.C›¼\H #4Üô"/4<;5®ÂdssµÖ&`ãHD ˜“' IÙÞ¼éÌ°p –6&ípˆ¡-i5f¬LÖI:”?œ´“IG‘nds¬HI¾õ•Ô¡¸dAd®¦ÚÀÀî*Ö0ªá…À³T1?î'·€C´Ó‹À ¶f.3R3—8!¨¬ÜÜ^Þº¾¶w3UZ¢Är­·7X92³ S–¢‹~fSTÚš5õ¦¤U·ß9#v8ÂîL¶v¶Ô:#éZh DFmjܧ)‡ 2ŠZ¢ÒuÓ+ƒ¹+ÍÞ!° ´!–f+À|Ñ|©Þ?h®ô$ë=@nI4‰Ê0b&’Z,.[Þ|mp¡:8Û^NUö“dX+ÛƒCÓŠàµ#6e}úaOøV6Ó¿pô ø:‘pºDqUàƒœÔŠ—ÝÕ+(–VµË7X¡¡Y³àS!æĉqÓ®J}“ò0ØBW«‹DDVFó§s¥Ù8¬(F'WÝuÒ‹Š6M1õ@H8q"99… |ab!)ßÏ-´†/?ùîüö†; xIðÖ¦å1ò׸Ø]ÒX d0/¤ÆyÆõÆõ@P8q †yð[’ôD!E’(z¼˜‰/×ô>v,þÈ#‘P%ñq?¬Xœ GHœô"Q-³eཀྵIŠ"lŠ´BAtê$:5IS È¡ãóª(êŠrÏt–±@Ü8d2|§sêÊ䎟YK—vgI¨''2Qøå ÁŽ+ù8™yAm´á‰(†aŠ(—€¯¬ŒŸÑ<Ö™¿97qBÑ”Œ¦&Ú¬ LwkpþÔÑKõ¹ó´ÖâAVë‚”O"+Ök³çŽ^?sé­™[ãBa Ù´:’ÞÅ©,À/wY©_¨ØÞ‚y‰8§ª€¬ÚœXI,5"q•SÛ•öYËŸgÅb¥µédf!Ô̆àÅ檧½ü˜(EɯlßnÏ^D™,%ÕysHI-NivGçJµ ’NÙv»ÒÙÔžjÎ Úª²Ö(–WzÓÔød_6•[É×¼ì<˜ ”Ì%< I"«Hµh”~- XÏšîÍTe¥Ë õHLwý9Qª‡Ãœt¦¬:ó~q+_Ý#™,àRpa­Á”ç¸òa95Áˆâ Ã\†ö§&QÈ{~WÕ«nj˜ßqCŠ) 9]­1™H耺y±A3Å$,€òþÔ¡¨ †­LM± ¸€ü ™qß1óÃa*€L³ê§G‘˜ú_Ƶþ¨h0›ˆ1€´79…拳ӳ‡ Ý;Ž‚­Eà9õcüóãÇãш陚˜H>|l*ƒä‹ÓU’«‰NpuQߊ ¬PµÝQ³}Øž¹®¥ç#°Œª8YŒ%ÆÅ] Ê-׶7ÎÜoÎ\çÕV(ŒOEL¦e£e¤æ$dÆ.×(Ú$ ÇDŠqEµ&ªõTnF55+8Cɨf› gjÀ,ûù¹•Ë[멵xÂ" a³0¢ l{ ª1#ë#7·)(ƒ8ü¯¨Êã~^Á +Á2Ë× › s†?k¸ãšÏ,—.Õ–H& ¼0ˆAn—[gs3¢1 Ö]’r…êªl4¢"ƒÖèÒÂÖ〾j½CN¬S)»M¬Ð)ÖϬlÝÞ=ûÌh톗_†!ÕsZ+ëW ¥¥8$ÛÒE%K)Z›¥ $æ„C¸e5›ÝÓ¬X#h@`Þ š­aDŒ¬)-åòfµµ/j=àï02w à&_ml¢˜É"À› O£Ô˜¨ÈWËŸÂÊᇦíl~A1{(‘È° *''°X\‡`3Èu¡NÒeôa5BE©'?xÿJ(ŠAxS‚ÎÐlÊõgoLéG‰…Â2˜ùÉ)6’c°O×PFÉ0» «Æ£*‚ø‰¸ >Çí<¨qHÚŠÖ +×9 Íæg +›[§ïoùøôò]ÝGE’ÉH@2‰eNé²Ú´hÌfÊg›ƒã~C°¤ê%ŨÙéyBìL%ÜÉ lª½ÿŸ½7on#ËòÅ>€»$q±&ö5¼¹'À W $%R»TEQ $±‹‹š"UUÝ1=cϼx3ï=GØáðáð?öŸþ*þHö9ç&H U4Ud‚JTux‘Ë]Îò;Ë=·yÿp¾þ*žT²y+WZfÚîh™å7áX)JÞd:r<¢HºRY^ßz·ùâ¢l>N–c‰ ðR"­›æsö±¹øætb( «&æ (p²…ÕhLÉÕ…V­þAdO³ùÅé@êÞxXH¨bek&ˆÕnó…eXb<¯ÄÜÖõf:;'Äu rX\iU”Í.µ—ïŸTÔ(j""HûýÖ?™¥ådn1’˜%çsÅ•…Àû°|XÁï/›;ïÖ›eu3’¬–0ŒGË׊z:¨È-™näJkîg&§rºÖÜxð6&ÈXÓ ¦ŠRs÷ùOO^þÏt@Ìå>ü#@§™üJ¾xߨ½4ç^Ê衪Í|8ßxÏTïMåBQ#™](–73)³1U¶üâû3ÕÚ ÅÌ{“ÅTn9š˜Ruk~AÑdJWî¯,·¨Ûû—íg[Ùú À XУ<ŸÈ˜’ºcÌ°ÿ^µÞ­ßÿ´¹}fTŸ†ce¸ ,ƒñ8›BÓ¬‘H×dmëû·ÿòþãÿ:%€g5–KåŠتÒeöUª°¶´~|çs^|¦z³¹7;¿M˜a0{£ØæùüúÚý“•æY¶°H &°’¸‚ m´¨‹›zç—öžîý£˜O%gKâ@ýLal(À¹ÂJIÄ€`˜ ÌÍã½Ãÿ˜-=˜˜.‚¥\aÎ0 P>Æ6íÞ‡ÿüªõ/<['Hre}oeý€¾Õ¹WŠõººôÐf&¿ ;1™ÆóSäæôt~r2‹W™†l¼šoóD£@ ‹UÊå: –xBN¤,ð¥âýR© ,€™*q³æpÂJ$«À_@!3a=—›­ÍïˆÒ2€+±Ø˜›{µ¸|*>ž˜br:¡J•:c ɤ$–Âê/—ߊl;™]¾7ž› d3I5›¶@€Äf:³(+ýq"9 úñΡT¬¯®}ŸËU'&3 ãfÂFž=®­}ZÛù‹ªoEBùùêæƒí÷`-Žý)61Uœ©ÉÜFY{mV÷ÂAÀ~1&­>{vqïnâOß…''‹™üº>ûRˆÀÅÉ´•Í/0õ¾ªm€Z–æSx4K&MÓ|<¿ôÓ6³ù9¦>°æwóbÆ3™L!;‹òƒta¾Ìššõ¼¢>­h/mrz.“´‡æÜ ‚-›sÏD «­¿,)[Óe:XNgæÍÚã +»?;÷zuë,/.Þ2 3Àf¦´’Ê/MA)oU”§€ +Ré%˜0»Jmź˜™ÉGãjT0då‰XyTfÛ©ÜJ0¤dsu!9;’Sù5PôLО23*Að¦só¹òVAÚ®hO¬ú^ \¹‡g –Á¨‰§ÀÒ_ÙºXY_o~˜_zSQšé” æx°Ë‚}2 F¢ˆGIy +öþädz&› ‰‘˜‘/5eýåôŒŽªñ¤•FÂbp&”À,”Xª<ƒÀ-ˆ”xr,0—¦²ËL}²¼ñæ°ãUzþøxiñI".‡CÉ„ž¢g¦¹¤¸Ó|õ¿ý¯ÿ—TYœ –g‚R(j–$ ¡ù¸€e(B¡¬fl‰âr0X†ÞÌ*¢r9<;8“/“])”7 •íDzuj*‡õÓfråÒ|¡Xÿîn|:PÖ¬Ìz>»´/iÏ&§ÙŸ¾‹f+ÐC ŠVuWÑŸÔ GÐìnÊågÅòŠU{’“6ªSå•RICb÷5c·:÷ ¤MYZ-ËKñ”:ƒÇçs¹#­çŠs€¸JxDïFEÛM$°O¥©×^ì¼þÛÓ7ÿl.ìÁÒË XDH.iFãµXªž/=ЭgÕ…çLi殬?ÇT~YQ,6ù³^Îd’+¬DLêÃȦML˜c˜úµ4~/˜J•D@Î,—߈'—¦g ‡Z2½M,À-%¶“·ŠÒ£`L¿3‘¾;™š • +…¥D\M'UàÍŠöX±žåGñl=.‡cJ riô°j<›]zW›ß{þúï³ ¯ïUŠ À† úð”UP.ùuköûGO~.ËO#Qkj*‰°PXš¢´ä‚ØÌ7ã¹bÀ¯òÄD:*§2µdf6ªÄ’50uÁÀ””Çfí5˜¢ãSXC>™ZÈä™ +Æòói<Ò´RÊÖçžæ³,wh¦ˆÕ›ƒ¥é©ÜôT1.kÒRc~÷þú‹™ÂÂó5Òó`2ÃtMN‚t +Åb¬:ÿVsr"Iσd6“]ŒF{÷âwi³P\Gõ™)p"ÄB`<â™n:âÄD¾o¬ß?A +WàÏñ‰’ŸËæVa-&& + ó;ÿé¿üŸ³³ïÜIܽ[JeëB\ GJX…&…»!Ò©*Pu06£™ÉÔÒ™jQ\dʺXYÍææ5<°ò%@2t¹`#‘2£‚‰V’I=Å\‚hLOgj²º=¿¼ßØhͯ|/ÊéÌÿ\("ÍE0‡³Ù¥Tf%W8½ ä‘ÊÎá™eQô"66NÍ…ÆÜ{ÅÚÏ•àÆùdÒÊäæA‰Ã—êì[ÕÜ+K;ð/Øò¡(›O +&•3‰í¨Úë\aä›j>Wô—¡Z*.O ‰š\È–€Ø©Üšn¾Ðç Æ”þìÙŸ bàGNÜΔðäzÕÜ.UVcq°ò²åʺY}ÇÓσa°ƒÒ ×Ri=*¤3&(»T†³4<1%NX*ÝÐôgÀw€²‚A)‘œƒiIe‰(8qrZLçVçíêü«Lvöôüß¾oýC:¿–HÕÓ…Õp¼:DÛ6•Y¢Ü«ÇåŠM@ñ¨:=•¿sW¸w/S,¬€,Âõ̲®ìjÊÃl¶>…•úÒ3xâž81›šHT‰§¡{ -…Òz(¬Ý»—zðàøÔ%˜x“ÅpPʦ,U^ƒ'üé»ØwwⱘRqj²4~/3„baƒI@kO$§§s€¦•ÖÇk¡*ó³·¶Úñxur²’/=BCO°BQ=š¨ýÞtnf#T)ÖÌÚÓ2Cã SÏ‚Ég2(¯ùÆsöm&¿šË/§³‹`åîxb|2Žh‰Ô˜É0ñ¤Œ•…2³Ùâj:æír¾´Œ)ðp0|’‰ª S’)#'b¯Õ'x,(S=~/,‘P +å%flo=¹PLP«yq5•²ri½T¨æ  È0v3»ø½a=‹ F4ÊJÅF!?Ž&'C€NÑ +,ÊòÆ!ˆ‚P„»åp3Î|8T4’JÕÊlËœ£T_€pEXh ­ˆ g +õxzqŽg—iá̾6jõ=½ö40@©¢¸ ¶[$Š&/–ÌÕße‹+©ÜBAz0dßÝEÃR©Ô éôôT +Þ[,­-4Zºõ”ŽcÖç—ž•Ê€TµÈ¥Ôèz O~øåõ»ÿ®ºT·ºóø/À;@äõQ¶¸ìœJÕÁœGÊ` KËåÊ}@q@'€âb‚™H-&Ó €‚îÜ OL¤@qLN—¦gÊѸŽìÓÁ0g_'“³×{œÎ¬Æqq•™™â½»¡{÷¢á KÆ@ü&³‹³ƒí½ÿä§åæ€-ù»ï@-âÖ0ý"a¹P\VõÇKËïÀÀí ²ÇÏ.4}70ÃÂB­d¼n>ûéÓ?þÏÿøŸþ—£ÓF!nœ»¦PÚ!DE§‹6 åTô› HÓxxÜ,˜ÃÀ\Ðg0ßâéYœùíC¨ +g&3Ù:@£ˆ ÆUÐY±qÉ7‚5]˜ —ƒP”õtf=“ÛÞO¤—bØl#ÚH¶dv¥¾ö¡¾ñ8Æ¥Š‹ÄÈ™¨ …£  ¥òÃ’ØévÜÔT2“®&ðÄ[˜ÉFì‚ê÷ó£tz!Ê}<‘D½i 5•›K¹òƒ’ô0_ÚÇX`&‹çFiVš?.Þ?Ì×…Ô<::br*[Mf0« ÌI°#–6>66> +ÉÚøDbzºHÖ„„ •9Äóù2äB:«¬Ü½žJ‡qÃB7²å@Œ4àƼبÈkBR+ˆõÙŶj~¯˜OD¶ +P,DÀž`AFbz (Á¿ ï29¬ñ+ÄÕpDŒÅ+1b"Ü/–™R{L9@¶Ë«~õî¿®=ùà+` œDîKåj…ÊÚÂúÚü~QÞJdAÌÎ̘)Ä€â0œH,Å'eöZ1^ÇS(üÇ'ã™ìÂBý :·_¬< ǪBj¬`ËØ)ë€ñÀ,]l¼™[~/¤–‚=–¨Ì®ÍÏ”üàW±rÿÑ“‹Wûÿ”¯¬‡%“Š0K€n‚Ñ¥2u­ºgηEö¸u|"˜Éú!<¯ƒ™Ì•¶’ÙU{bq äL2YÕŒíæ·ùÕVº°æ§"˜uùBÎ#Q±"5—ï­nž¬6cÉ9 ƒ™¤.¢é)1ÒK•5!¡@Á'±äc²Ç2}±‰‰ìÔt¥Xº¿°Ú +Æ´ñÉÌät„v4¶R®G·ÕÝT„˜Ôkýçs¹Â2Ù#Úô E¬xª®W_ÂHïgÀl¬ÍíUç[<öB|;1•šÆs:fCÒ;±`P®Í¿|ÙúiaíU<»jᨉšLy„§úÆ­¢´½°òáþÖOÑ8/Dz5žZDý(NNÃœÔöš.¾ø§…µ“é <>YÀŽEôˆµd-žY*VËÆ Å|–/­ƒlD`0Uœ Í8_®<¨FÕõ=N +t¤‰–u"³”HÏ1Ö4«xØ=¨ZI~R›S‘6Á +•|qQ­î¦J«éÒš6÷ý£×ÿl.´0*7•Åõ£’X\Wµç`J*[ÅÊv¡t¿\y°Æx`¦4Aµçey“îõxrQ,7ÁLÅÌH|._|ÐØ8©¯ýˆÎT[ÖÍÍÅÕ7Eys~µ½±ó—‹¼¸L KcU_,,¿KåîGãõl~%›‡QÔ¢q<Ö'&Àêo6î?oýkÙx #œˆ'¬äŠ ¹Ò¬V{X’'Óè¶æšœ;ýX]^«([eö P.¿–Ë®LO—Ç'ÒÁ`%5ñÿ „±|?›[ †Nw¾ ² )Tˆ:08 ÙúÕ6´™`&-æ¦a>þîN „¿°5–u]»T3»,VIò.¼7›-P ”Ri¬ì0ÍîÅáJ˜«H|ÔßLP›œ,Þ»—ˆG”|nƒ©¹\åáÊöÅî«¿×@€OVÞ¯oÿ¨š» ô§@ÄjùÒòò„O TJH$ªÕêîÂÂó…¥70·“Ór ¨ìÙ2>•™‰HBzAÒ^X‹o$óqº¸–„ñF-‚ñ™µTr3žZ‰ÄjÓxÎ¥laI­>Sª¯´Úë|q5™ªNˆ +¸ +€ñ&ˆ#Â…âR&7ŠI r¾øüêÏÿYTwzÇ'2ôà-d³³aôc”@×0íˆârekr í4˜äáK¦\±4iô£‚‘¸ ++ 63…la½"o ©°¶ +åGÅò°²yü ªµ»°¶ÿüÍߟ¾ùsñM4QF À®åòòD­+;ÖìkIÛ‰gÁæBÙ¥1ùPM߉çVb©ÅL~MVᥛ±$XI‹«›­¼x?Rg‚j ¤¦së`œ¢ Žª““ !.›ÕGšñ¸¢€rY†À Sc1KbÛŒ=œAƒÚbÊNIÚNæ‘Hu|¢4>‘F”bv)’ð¸°éjÏoý1€ç™°ÈäæRãTÙ •Ô-}ò2[X …ä»w™²ª=)×"9ÖIAä‚~,?*‰›  +‚`ꘉ”c)`Ïz,ª'¢Zl‡ÌBIÚ²÷×?¨úÃl¶‘BUbÖÃû›‘°Œ‘H¼–*¬ÍDÉ@9ÕCQ#›© q%žT@SgsÍdêA4º02!yb:OÏ%([/œÐ“ùekñ`óŬ­ýPè +Tp¥¢>]Z9•1Ašã€T§#æ×òåmXnÀr(™S³3Ár X²Leëæ,n¾ETàî•öÒÆë’\OææAh+Æ÷ ŒI=›­Í„J`¡TªÃ½ è§Ñ±ÌЛ-˜–õ$™«ŹÍ'Ç’—•H/âNóiq&ÄDö [”¢…cø"Û–ç½¢À F]*7$¥^*/ÄÓ5Púý¢UßÀ¢ÓQGb¡¼žÌÎ…5וêî“×?m?ý¤ê›ù\ ЈX¾__ŸÌ!CÃ&˜9…òfcãƒ^9 `GM Îœ¸•*¬ÏD`Â)e3Ù9Em‚ù“-Ü©X,ï4ý̔ǀ‰Ù©i@Y‹ùüZ<æv5«¥3÷ÓÙfIÜ…”;wcÓB6טž©€%¤ês«oÍƇ¹ÆŸ³ùõ»÷Rwï&aæÁøJç–BBžl%)OEPéE0 +îM¤„ÄhÕtf)ÖJìq™5 « 3Ó%Bãõ©)qr¢0<ƒqÉt5‘ï'Á~ÌåÖŠ¥u ÄAÒ²ªõT˜g-ÑÂB¸8•ÙPÔçሒÎÌ瀲õéåÞ„€J­IÊŽR}–ÈÎG“n(nÔW>l¿ø«¾°xóXb:®Z܈¬ær¥ÇÅÊ‹¼¸ÎÀPÉ» ê/=™° `ؼàp0ÉÆ$@òFí`qùDÒF1 ¬ɉô|*¿´©@6UËòN^ÜH¦kwîÅ1ã(€g¨ÆÕ†¡ &0¸¤?I–ïMæcB ø.0£Ä³`‚‚Kf—õÚ˜êãÓÂLÝQŒW€7$¥)V±¸\.Õu}ýâúTP¾7Yšš‘@ÔdòKÁhy*XTŒíÍÝ??ó3åo—&§ˆ²²¸Q}‹›`ÑÈÊ®n¾Ô¬—eù!ÐÏwß‚A1“V fAzbÌÖ×?ÊMŒ[…Ù½ñD(\%K! +’ÆK§@Ì–ÊÍ¢¸ŠÈ áks/Á¾»;ž› ÈÁhõîd–­ÄV0;å9ÈaAÆæ&f´ñi%‘ZŸo¼·fŸ‚}Ê §=û¼÷þßj ?€-vo"wo¢Y ]ÑX›.g kï?ýïOþš.nŒO–&Æó¹üêìÜ@¹ÿá¿™úÓw±xbaû‡}øòo¶ ýó-,aOÏÈ™­êâÑŸÿEÿ>'ÞŸ‰AgL-á8˜*€»ÖS¹ÀLÙÌ—æƒá<¬øt@‰EæKŇ+?æ¤épYÓ·ž¼ú%šœKdã¹ù`a`ði:·ˆ§B :`Ú…Æ_–7~R­Ww 1­6¬ºU–á!ú½i@È åò‹jíϥʓ‰IŸ`­þN­¾2 SaiŠrBp¶'“ã©XLWôWæ| z•ïM¤ÑÐŽ¨A—fJ÷Í…·;/ÿeíÑO%åq^1žO%¦¦Ê÷îaô¦4Ÿ•Ôg{þû•æ_‚`%–¬ù×FíM©² æáäLir¦œÍ-3<ˆYó½aéºQ}eÔ`EÑ# Heç…”‰ÃŸU!¹OΧÒsh +MÃQ°§Vä‡" +ü9(ÆbZ.×(–V0ñ¸Ð(+Oªõwzí5hÉqt‰z¯ò‡±Àõ‰ñtL0Ëe0Õ·Àú›œøÄTmÀùøx6—o6Ÿý™/ò…­tzæD®¬Öwb±Ò»‘xz5/>Õjï–×/ +å­©™âÝ»qMÝ|±÷s¦¦DñOwãÓåRå e`¤¬’q_Õ®(=˜ €#ñz:»¾¼vòèÙߣBõ»?¡wl™Ta`É;I0€lÒy˜½ç` Þ×[0«k[Ÿ˜ñrbZýÿnÉçÍMwà÷úøñÚLj×>þ@¼öñâµ?¯}üxíãÄk ^ûøñÚLj×>þ@¼öñâµ?¯}üxíãÄk ^ûøñÚLj×>þ@¼öñâµ?¯}üxíãÄk ^ûøñÚLj×>þ@¼öñâµ?¯}üxíãÄk ^ûøñÚLj×>þ@¼öñâµ?¯}üxíãÄk ^ûøñÚLj×>þ@¼öñâµ?¯}üxíãÄk ^ûøñÚLj×>þ@¼öyóÿÞ’Ï–pK>ÿ!^99XÞ?ß{¾>–®oh{ð÷Îþ§óöÙØÖXz¯R?;_>lžžìŸý"T¡I*˪PÙiï 9~¥ Ûg‡ïO q·µÔÎ %¸´ÿ“&HôÏó_ÆDô”²"«Ì4eø,–l•5MR4EÒ$YŽá"KRËŠ)벩ª’©»/:‹°Mµ,Ó4T]W…Î]–Åà«aÐEî× t‘ëuÆžŒ=³„\^xþlìI×7˜7çméìâÓ‡‡ûç0%'—“¹·uzòðìðäüðä½(òæ¥6LU÷c[ñ&ñŸvŸ®­áT.¿ÂÜWžo6·NÚøµgQ~õ‡šûùøè~¡[g‡o/ÎÛŸpm`]ÏöW´>œµOðwY¨lœœ_ý†ÿwþËGZד¤t^¨<99lAó.<÷ä}寧÷.øµ?œøí‹OöéZèŠ}uÉË#úÐ>|ÿá|à!u.¿ö1 >¢ŸÌÏ70ŽÓ·n·Î—N/N kK§_èíÕ°ÞßÀ¥çŸ`Ï=×>ÔúÆ^ýèã‡ý=6èàÊ/Œ ¯ñ0õý2ðâüÒ¡Âßî®WÄäùÅÙÛ‹£öI«=èTð[œÎ{®yT'§»ç‡ç­/Èô«1}¢«µçž{®}„ò C;¹8ÞnïbdÝ·\?O–%mб½ÝÿÔ^=kÿåèwpuÜuí#D–t„gíOGƒëñÎåƒH _é:û®÷—â]ʬýx@qrÕçߘþk^—ÓAWåôcûlÿüôlàu¹ºáÚ©m÷ôâ¬Õ^;Ûÿøá°5°ÆþÂTt+î³ÐáÉdeÏ`ädžÆéñÇÓO‡çCðÎÑB—ƒv¡²Ü~'Ô|Ð{#òM@ßü£M@Õ7û dÄLÀwgû€ö¶N?ùFàH³ßè;—|Ð14ßôm@ßtŽÅ·‡êÇí±Õ[g1¢Q±Eù¶X`-µ?·v?ìœþt bdÃ,Í­5‘ڟΖ۟÷±CCÝ7Ý: ƒþ¶`ƒ·G_Ð^£ ¯×ö/>}:Ü?Yúâ½°‡Y¯SÙÀRá`pupJkð .án¬>}÷îSûüËœ1ºÜ¿M#=¾}úØn]íŸ5NO>ïŸ ¾4îo <3ì(W~þxzÒþŠQ^Ýèiåêu>pªÉ§‹³wû­¶7<èbõÜtíƒ;Bk3z[§G§gÕŸ>|Ñ­Ð df üêk!rÃöŸçZ„½W䬨IÒÀRÈÛ¦´È¤!Æ2¤íyýVôcùëÀcùë B‘‡§‡'çÍaLŒ¯²½këĦ-ïFÝΰÃÒÙëXá«ü$CǼ½F£f.}E8Å+2aÿìðüÃqû|ðˆÝ(Ɇ[’ØÈýQx x©×¥‚÷ÅÜà+3øH~¼‰ Œ!ü»ÂnÄ8=¸ø%ÏÇï y<»@_ðºv/zKTèèØÑÃ{’‡VN7´ž›í³÷mœÉуDÃÊŒ[¼$\?üÄ£ßq0?ñh´‡ämgé·µû¤qzz´tÖnÿuàx†wó«†àª[›_upx´?xljôü·*¹jð >›`=V¸ŠÂÙþÁáÅà²s¹w×fÔ¹›§g?œ¾XzÇl¹½ÒíÖÈ´Áw’ø2ͳkãË4.Š×9_¼5ɯo‡Ûlâa!6øHFåG5}ׯ`FG®FÀRÁã’úíÀÈÆëòmà¬ãÑ«Û0ðf݆ÁipÔ4Ó(Wm¨ì@m|Ø?9ií¶Ú­all÷×Nz;*¾vî}mõõ#ùBŠ×èh«!ô®çóÀ^”OÃmô¹¡>ƒÙ¨©£åÃOö[íãöÉùæþÇÑÓIÇû𨣰£`+ !Ѽ.›‡«[èaÙ, ×WÖóuÐÓ·ÁÍÎå^ÃQ} Ü­¹9€øð¢Ø|Ÿ÷VJBnx]ì‚ðº|$ßÀîßwCåD½;<:&çëè–w`yòîìôxðÁÐÅ׿­f`™w5®Ë×oQ÷ ã®kéY›ÐûÀƒ<88?qæ7œ)7š83„Üðº¼5‰3ƒdÔäÀï"ôŸ!ˆsX6»¡¥áb…C¤Øù‹1º…JFg-þ¸~ÜlnMÉÈúÆÞ2• +ÚÎ6º-v{Ë%ÝÊ¢÷ƒ{Ò¾¶ÞÐM‰Ø¯(ÏãË·ä›îË7_¾ˆ|˜V}ùæË·•3hø¶á[§À—n#"Ý|ôæK·!¥Û7 Þ|é6JÒÍÇn¾tXºu‡ö†Kt¸eBnàÁÿ.±è‘ŠúL4ß2 ¯Ë‰] ?~!m§k xéh`9¯‹»ÁWgð‘üxØGýã†Ü=vÃ2à¯}èÙUúB¸¾{•Ô[¢JG'üñU4êïBüŠ~øñg?þ<ÜP{âÏÕÉô¢‹Æ?÷›?þ::ýiÐñ¾ÿp¿‹-,z;ð·ywmÂmœžÜ>\°»îó:Ë}Çû.¸QsÁqaT{ÖnŸÔ@Ù·k0âÃ÷§µÏ‡§GíóÚYû vz¶ò¥¨Ëèù憬¾ƒÎ»:ÿ˜æ/ÆwÐù:ßA7â:fÛÿëáñÅùNíì^–Îõ×NoúÀcjÁCù»î¸1ïÏò!Y'M7œ;³ÌÍ•¦{F¦•OÛ-2gC•îoÐ ;Ê•Ÿ?‚ÔþŠQ^Ýèi¯×ýŠC¬Ø:Á¼í¾ª?xc{‹WÄ­ïÌ5gŽíºáÎÛ³C>ß™ã;s|gŽïÌñ9¾3Çwæx\}Ù!0BÁzß3å{¦þ]Ùµí¯ÑuMÝÎÒ_a{ÝWs+7¬{Ëñ‡ˆ¿<‡GeÄ­ùe9hnKY_…Þ y]{ÞšêV_eÿx]ƒúÕ­¼ªAýÊVß’ +D€¡éÓ¯jõý¸Ù>øU­F²ªÕî‡ýƒÓŸþˆ#•FG< \ÏË/\à óÀßì?0FððÊxÊ>Úôà ¢;ègOdà#‚éÒkÈé»wŸÚçÈg탡$Ú¨Imé7e#|ýâÞbcÁ+‹s=1ºÑY߈ó¸ÇT)=(þtx0D>™}õõ{]•ÁGô¡=LNÖåå×>&‘iipuë›tŒ~ìapppüËh¹?tßýñïÃ-6²GÍðñÝ^¡2ó¶¸?ˆïþðˆðݾûÃKrÝwøî‘r|cæèùþ‰·1‚ýîl¿u¾´uz8xª>¿yÀ5î¼éÚ÷ïžž·¾àë¶PñêLJGC”œè¹çÚGØúãr¢®{$ùƒÉìF8íðäâxïóäÖ}ËõçS–®4õvÿS{õ¬ý—‹öIkpÃÈq—‡‰Ð¯¿äVý~ý¥ÚÍÖ_‚?ß¾\tñõ{*—!~M¥/Œïæj*ݦ’J~ "Ò’#T‚H*|®ØùéàöÌéX3~5¥Ókð$=¾8{{q:g]·³Ì¶¡Ç­Üë)ÿrC®à¯Øæ»aÓ‘pë²Ð†Ѩd¡ >"?Í;Nÿ+%¿÷…"#‡68 ÞÚ,´óA›ÀðVcàôšÑó•K·ÜYŽ,çw¹o~6à0Ôæ[¾è[¾èIî[ž´k¾è]+ÐOdU;pà*£g<4ß t Í7}3Ð7}3Ð7ñhº[g1¢Q1Eæ‚£h>;==x¶?¸Îô¬8 ÞZ;p`È=º5)nÙ‰7CÕ>ðø ¿Â†ÙyE.ܦ +~ÑßÈÍUظ-R̯âui6ÔYó^'·wGÁERõíÑ~ëÇšÀ›N?î·Ï©áHýtþËÑà>}ûêëÏjfùF§VqíF¥n§Ót8AáqÜó‰ªG6n“ìû÷Toòúq_ߌáó o“]4p"ǧ‹³wû­önk°ÐsÓµnØót=.ø†(}àTí#øc¨èG×7µ–I4‡ +ÿAÕ–¹|hÚ¢xô°ßÀ2¼sñÐBÜ}ã ¤œ;Ê•Ÿ?žž´¿b”W7z:ðäÃø„ñß8üŠÓË¿ôäƒ'<ùàé]{×£‹žngÀà+D·×ñÄõ$[{|¯úõU‹<;<ÿpÜ¢¸ü(Ɉ[™†8°êÿñ Uƒº‚—zÝmé}Q7øÊ >’ob û[~ü•Ýa70£Ãó‡û‡_òüšÇ³”ö…„¤îR}ê«Ð/y]{.Ú<®=¿Êþñº|u<®Aоõ5¨×4è踪ýC%=ŒŒþpì0:KòÇõcôȯ€d#¸‘«€t š¿½'áÝú⾃V>ÝÀÂ(×v:Þ‡G \‘cäûðôæyá'Hö?ý¾]¶ :\ú6¸tì\~íÃ^ƒ[?}9ktåí<Û€½(8¾Â(· +A} ûæF»¤Èµ¸G®»†Ô­©-" Ó½^\dû›ÙG;ªå8ng*àÐxÎëÂíëÉû!>ŒSàÈßâšÌ#œÍÀ?Ÿ}ñ÷×PŸ×¥E÷˜Þó:j,5ÚüÖi(¤¹çïÚg«‡g^ð¢xeÏ÷߾ƣàó”…ã#4ö§Ã¹{î¹¹B`'­Ñ*·ŽØʆ ß¹­ùävóäƾá¶tÉ*daÁÇgû'ŸÞ ~Ú…w¨ÿvzN¾Æyš~妯Qð›ð¡ysûž“Þ¢l¼úÑ‘–Æ+Sòu4ë§~E?n¶_s„Uº¾Á¤½•“ƒË£¬°IÖ½­Ó“‡ðª #òæ¥öûÓîƶ>Ò3TþÓî/ÇoOÆrkí³· Oóc’P‡ÿ=ÿ ¿´Ç.Æ®R[žÿ܇/†¦ŸUØ^}/ xùΘ(ËeËdª +eÉb¦p<†ßLݺli^¶ˆð…©¦ +M—÷õk»ºóäª?ÛcRYb– Kf²Æ$ͤ²aª.«²lªðÍ„ɺ¥©|Ãh³dMµàf]2LU‘•£§ [4ÝÔeCÕ$Ë”Kx¾?&2­l0ø.êeh6 (KeY3LA4ʺ¬YðEfeY•d~³4á]¥+º!ˆZYµ ¾0«¬&|QˆdJ Z̲¦I&¶H¦aZBÞ¨—ap‚¨”-]3á™L)+’j`‹®øVV5&cƒb)šFwÁÄ1¤( +v‰©eUžàëMCÜ#iŒ½»ZVf†nè¸xRYUqYôV1eCÃ? &üétРQìšô2†Oá-ŠÄ Z¤2ÓUœfZ ^=Ôí&–ÏÕ AfÎμ‡þ+ã"ó[`Â0`¼.ˆ¬–eYÕñ=’®Áš¹ºcB"1áAš.)†Ó¯Ô,x£jh0†l!ÙhH2Šnj²®j¦Á‰Deðè„fš²¢ÑU¬‹(œ…]QC1Ê’Ê`ñáj\CsMšªãktK‚~ÂßöØ K±T  EV¡Á´€|tÜ yÁ^h>¹ -* îb@åøS25Þ{M7™efY2Þ¤\=ƤY…®*Èp“¦«*F5tMǧ(01x…Õ,ºÉ1„¦=×ÊlHhør(À`² bÁ`Ì;|‘q¥‘ €Þa|@iü"q~±˜ŒSªK’N¤¯š0ËÀ ’,/Èšl)HÄ2ŸnºMΊU5…^n²N œË岩©*Nй*3‹_£ÀT›,®…`YWÿ‘Í2tØN• Y!ꀇ K0ôÙƒ—)2S¸H‘€·9$`xÌ>œYÄ–¸.*’:L,µÀdœ +è™$†¬ÁzÁ=22‡ KݧÊÈ&ØDƒƒ+MUã2Å€€žâ `4jR€ðEÇaAƒ„›kP6½Èø¥ª’¦!1’¢è@–’nD^L“t‰)À 2¬:§–¾#ʵ®øŽÈ‡øñò:’̸^ð§Lr•Á¤ÁÌ;Á¥(ta¤¦*™ôx™O +¬8)vKÕ%KÅ©EÀ™ìº ++«¨x@èKá°-˜"úIá³+k:È)…/7ðƒŒó /e(|a©k0'¬Òðª$“UmBƒqé*Ê9¸Ì4@2Pp¸Ðgp/n‚#;dCQU#³T¤^lÓhH0ÇL—ˆ‡à1Di:ÐW^̦VP\0C›ª›¤I`vt”´˜¤‘Q±Å²€.x‹®>DeIœ·™HÐ\hòiF£Ð6Èñð:EÒ þ:G×o€F¡qtÝPqòtÒyŒš $%Ò†“‡ÒÞfu‹D +° 2»zÞ€~6q„i + d“kd\ÅfUCÁùÇY`öÓAÛÉ|f:´„«àŒ‚ýÈ—T6qm]3Úë;ïîµq¬ ܬ¨£˜CêV™RÔd€ ͉_PÓɦEÔŽ"­S§u¦¦SÇñ6¿ÒÜ—PˆsKëê€cÊo†m`œëQ}áʃp–Iž¾ÓMê3Â%hƉ$qd =¡‰@mÉ:ýoÒ8jÔQ1œmè0•„œ$©i‘²‚û §‘%“I§hí@Ø ÀL¤z‰ }“1 {À$„‚‹ ´DhÓ5¾à-iФñ :…9FbÁ.B› ÀT¥¹RTŽøx^‘³m‘ÒˆaŽud*¸Ê0MÉ ‡K„,-Rª4jõõÁ©EŠfOûhîÂï.„ï4ZÔIz4êê‘ s­ü6N-ˆ…¸FlIRØÇæ>"þh[±ÁÜ›&{ï¼Ýf ]ѯºô`sG^ÐÆ-ä -„b¡EU ™·¥u1™©Ð}°<2_À{qárQª¡Ñ½ÁRi¶œ}¸ÔÛw*\Ým’‰gÊ>W²ˆ@X+Ø€ðšÚwqû‘€‹L¤„ô§tiY#0+ʈ¢-º‹ÃMŠFKÎ44Ö9‚ˆKabÀŠŠ,3-.sÍ ãG³G"_Þ&ƒpÜs‚DJy-j„úÇv +4q" +ïÑP³XZwƒbX¦iËíÀ"¶‘Œ +ï×À¢%y sÈKŒjÑ=2Za`;¨s‰u¤2ÐGË2vž…:ì+û¥2̶‰óDˆÑ)N¿ªÐTÀ|™x…¬¢B‚¯0ˆ ^tRéРÑä7hútŸÐ.{i8ØWE§5uLRãFDsO§¹dv Ì1rÇÜ 2N&Œ¬[œ>”á SÉÞA!‹‚H[`HÇŠnÏ9‘6R”F–HmDûˆˆÐ†æ“®+ Rñ9`Ú‘d¨-‚Z¿Y¿ÁøýEÄ/@cÇÄËŠ° i1-±bhô®¨dµ)$2hÖ4¹£€€üx“ŠŠÐjÃ…¤…Âí2CRv0·$\ZXüMBô#™²L‰_yrd‹ãI˜ê0(¾/„+šýnd|¥)ñb)2ZuÓ¦p…ÓÎ$RPùƒÀ°c$5¹?“-’“æ±(ª6Ä À¢ð$ÙB1„jÉþ–€§ðwE"óìVEA"69±¶‰²=¡Oá™L6$Q†² ¸†¡QÖ +“Ñ-ÌeÀu„8 +wÐb2 4™£=ü›4Ÿc”ׯ-œä'˜ +ôg2nõ3´œÑ÷ ªÛ†ÅY14´NÈY§òy"áãü Žb(ÄQÙËô;S,rš!D„ÅÞ!¯0 Q‚0œaEÂw‚R“ îÆÔušyfªÔ;ô3 ¯¡Õ¡èµI¾ç8nÊ;LÞì&"ŽÑ›IĆò™•H0òS>%'MC¹ŠS@°e M¿ŒHbS#Q… +ÅyJÁ6GŸª,Ó$¢]#8{qÆ“Ëë.eGd Oì 7¼Ð€ƒÂè ¹QP‚Ièè–È«ÀaJäŽDÉtÎÄ܈f6ô¼ú›; 0έc ãK$±hÍ‚ (Õ‚Å+@Éô7éPP•`úZÜ{ÏdùJ5yÀ þæŽ/$2á[Æá¡Á]ØÇ¿´„dÔhÉ-N­%\J”Y(Xa…[ñ•²ÌáJâ™î /!ÔAo–¦â0TupĪ>¹¢Y®p—;$fÙ®`‰D éƒô‚D]…)ïày7æŠLS“ªRèxÏŽ^ ØÀò„¼ŸKô“A.5½ã“’lW,‡B!ÞnÐ1CJÔy*œ +ȹ‹MäÇ.¢ø4p…˜\a(G Ê5ÖÖ˜k>\3æšÕÖXŸh¤;bÙÓluˆ¡¢2÷ÿ\2¾‰BýE„M’Ds,©öC{â?ŸÇ"WüÈcââDU … CÓ +:KÒ5T¥¤øQ,È ô˜Üf‘ä iÒ%V®Êz¤‡½]z +Å à5’ÿ£I>FULºÃ&P +º©QÓcôÐ vE¨€{¸£R¡p‡  & !¢I‚w¹ˆ²1æ"ÝfòÏcîž+Äç Òºs{(VAQ'£èfÜÁyLj¶‘I^\wŒ–r/…l¹cs$ñ;g„Ï$a)“qŒ1{twé0äFY†Ãt­ÕMèXhƒ¼4¨@7[_‚quµÙ/lè +.6û {ƒ”ŸóØK 749wrÁ{™N +üÒ%F‚ŒË4Ã3›‘ä-îøq™‰Ì0òÙ`°ƒ$b±1ª6Ù€fâïBzÂ|ׄ\?Ô”ÑÙoòÙV ÇøÌ5IäÍ€Þqy¥Ú~×`Q¶;¦¤‰˜•\2èE™&ú­š?ÅÅÖ§‰rÖГ–Ä”ÄPx ‡dó¢ €þoœ5ŒŒruëÃM·;<Œae‘L*BÙ;É.m^`OAípö…Z0up·–±‰Ð ®&(X…· äCLø,T@,¬ ¹‰1Â,À9úÒx A&äK÷(§@kÈàÊE³Å/ˆF€ñd~ˆUœo =™ì¡¨¦€¡Å»¬’¿U¶Ý42zM;1ZÇüÈö³Ó Sª¨ tRÜHô"è3B1…ßÃì0 ã÷¸‚çÀÓλ3ïŽÒ7ú,WóT¨;ÌjÇÉÁXgÀÖÖm‘Ëó‰Ñ ÂdñÐjK‰¼¥6˯ÁŽýišDiP[ˆù´eN|6jrP(Ο“›}ÉÝ9ËŸÇúeV8³/úä1ôËvp¥D|#W Z¯ØÆåè+A4GadŤyÑ)¦€'ADëR8©:ÊŽ\„Ïc}3ÜY Ž‚_gšá%F÷U +"­OȽu6tÙ釤W‰ ÑX#zP(Ü‚Ø!#Õ¢¤?™Çl1Có©âB)BƒÃL<ŠÛ±SW¶Eü9 î¼G ¾Ñ?˜ßñÿŒNK‰¼9”„ òеóE]&.±.cAˆ3l·¥Åƒ%˜–‰O·}pÖehˆ<Å~Ëo„›\«6|ÃËùO +uŸEM·we°âÈhE7!³Å<·²] B-øUE£J$O·Fé¥Ð&+vF›Ì“4@¶†©ð'ÆbPÊ“±U°Zæ¦åpPT[µÓ±W䙼LÓ ¾Û3ƒµ3é ñÔQÆî1S6ˆsfܳçšã. MsDš-íX5ùÔ‘³m}N†Èƒ<¾Ù$4gܬ'U¥R¬•í5V8v¡f¿ÊäÁë2e…!qY<ƒ^ë(?ת܄Y†„­Ù‰—l m.­Û… ³A±‘t& çåÛhèHE)§Ù*ÄOË"×Ý"©ˆ ¹Ûš§£€Øꨴx85óüfÍÎ A˜¯ò•Ar¥L‰-ÉÛâJÍ=¡­±>Óî^çúµ(v«Ê6ù€Pæ9/˜_dËi;cš¨Eã)vè ÙDCƒ‡3ÙæóXŸ”wÚŽ+ù…ˆÚì :[´šH1ªz’k=o$ñ•ØrŒ‚—;å(mF‘zðlƒD,º‰(X¬Ë#:ˆDxB†LjÂ>¶JüÂQN"ëCŠ.jí%éFºwM&©‹Ò}QEã[78&Ö8¢qe3µÆúä<¹²¢œ™S- +ÅÚ³"q0uÂ&ÃUÓx¦ÇyìÆÔ‹EÂÉѳNâÝ•˜ÿy¬Oö¾+¿ß™iÔs§#¹3–úä5½s-0ÑD7¸)Äõ ÖXŸ4ª>©V΄¬Fß´-gËç±¾é.®”gÞ ŸG2;a¨_Z‘ih“M ºC‹Œ0˜Z ŽO,ôY^6ˆ1ÐœÇ&Ûd31)¢i!g“Ež÷ˤƒü­”ù‹ž.>çÜ·Œ^Kþ„>Œx)­ É.“3HE¥M °zºN‡<ùßAa +ZlSi© ù¤4¡ÅN5l$ñ¥°Q"8æ +‘#[(`…ù‘œ¹ ;x¹tt7~uñH‚8ØM.JiõMSs¦²¹2š¸.s¤=¹3£éS\ð`”ZÀ@1gw4¨Ð¤æ—Pâ Îl—ü”1wÞ€úӖȪB·¶jû\žÂtjä–QL.ØÐUO±rÛ6j”/Nt£[ä PO!à •1îî쥗›Ê6$“ óT,“çnXdIÄskIá¬BÁgŒ— ]©øUé,aG” KœbÉ¿ƒ ÍâŒLÞNhR)Ç”Š‰ÊLÚÉ ÝnøX,!~ÑÂû‡/"…›\d q…ÒÍ:!nž M©@·u6é('ëX.. +{WÔµæNºà™¨ˆgL(#}…™©üo;ké©V/S¤ˆ§‚š§n8긊ë͹s%å9÷xÿ;¡<+jÔyœìõ®´­Ýx¬¡ó ÂÑ¥ ª˜[­‘dµHe=pmØÙ€tiÍ8ÓÀ£5DÊã^ˆñFr‘—rN’qU/á5ú§cT¨šp±ÖIúCÁ(éÇEœY€\Út§ º²9o\Ò8òâ\™sŽìºe×ivâ‚Ñd•)ΊÈ]2ìtgƒçèQÞTƒt;õ3¨LrùɘE„É@žrp#QvÏ>5í¤@M´×ááÎN<…`#çg‚ %Ø•ËlQ'i܈¡×/ÏÏ•çÈ%û<æÌ6se£9ó°ÈæBðMùM|Óœn;O {ct›M®ƒù$JäÂCqb;˜5òîœßnSèUï8Ѥ³PIê6zÕíýÀë(’°A! ÆÃèÜ  ½ +g¤ÕuÊjAÇ|(Ù½¾dv9hÀI$2â\@£°Þälfœ¤í[ ”<Ï‘déJÃt,áh9ÀØäa2lYvL[vÈn2®?&Eñ1BO3Öoñz—×µþN!ÂÒÈ–6m«Š( ½<—f‚3•d£#ÝЕèÈYäËÇe‡É7ˆ#§ÚÀä`¾6_`Š=0És*G-D ð#D>Fƒe¹þ—"ÐbDš8S”JƒÊ„¢(Ú‡i^æÐŒ£KÈãEl¹+`’á!çšBRlùŽ¾L‰ãtf¨”HÇw6“¡K^ÓL÷ÛÉçè¡k Îqr÷yÃió¨ÊY†‚ ²\æH4áqÌ›±lë›Gp7.Ó\)äOwdEºò&û¦VÚ²§cÚsg!ò Ù9M×oí`j!{@ý¤Ô0ˆHCÆKnR#ñò¿m—Çìb-ËÎœ¡ˆÓTÙÂçØù(¤e‹_E€¹Oê¦+»Ó•ÿéÌm]ùý‘,žýÀ£~²±†å8~áA‰t‹ÄyÆ œKÌ-41“Nâ~•+m2­: £‚k®nBº[ì4ôwdî]áéËðâ²0Tœwo|6¸óF“aqôåhk¬ßd8§«wF1ÆËý”³eìˆ9Å4…ƒHì1î‘´hO¤ZæéVCEnvdå~sgíö$õöχ½V¬ãΈµl¹†€Õ$ñ@ñ-2Ƀ˜|bÉב4TJÚ¦dÍÆ«d1È¡Ú@ý2¥Jµƒv oÈ ©Ø¾KT!²Ñ/³Ø‘zìÌLvæ.·`rgæ Úy‹†éc˜™éÊÚmõËëuæývg7\¹Ãιü|ü†‰<4çÜÙ}|™ä¡ufŽû]uªÒoqœËç\^'`R ÏQdä%¡-D”ïÇpc®üåÖ˜3Ãٙݛ ݬ=“˜× 4vžû'Q’‘¢ð:9hk1…')çD…+«˜Ò{óŽyÉŽÌe"2˜M[)"ØÇÿ"éÙÉ…‡ŒJÆäÜ­¡,ññì ‚r˜7€“¨Úé çÂ]ÿþ]gâ/’Ž‰9!hKˆá1§]¸ÆDÐITmG^c¬«Åâ´£R¼©3Lç°1îkV3æœÒ%ñ!e™ÌaÙδ—Ñ]\"œ¤±QT£gG·=#ŽÔäÏc®ÜåÞÌfGæsÃ5I7’xB2*4ÛqŒ¹F<Åšìtž¡‡‘Ô¢}R¹œÙ^®t0WÊX „ƒÿÈÈr´NÚd˜B9Ü<·¢Q4A³É…Ãe#… ¥#ÍÉ™Õ'UJæù.d»’ì‚1S’3†’(&ãš(Ò°X½ªp1Æ„eL¬± ˜]†Èt*O¢ÃX*Y‡‡ìÆ”Z°ŽMÕur‡+–¿¶7€3²T»[œÂš9ûW )&9¼q“¯i |}‰,jÓtç·ÆÜIâ}òÈi½x—#õוìJ naª)w¨+¶£Yµ£MØ`ç0:r/ñ&W~¦+ƒÓ‘øH™p½É‘®ôIM#M8ÉÞÅ’À{tr•QN/BSh m1áÊíÃ{zÓÿ\ùý’û¥ºÓa­±>ycîÜ2gþ¥­Ù±4»‰ì äuzs‹ègú‘;EÉ™6ÃMNIšW&ó“bÈå_k}2]È^væøsf\™5<›‰|cXˆÃâY0L²#ÔÜ›âÊ‹ »ÜÉî G„œçE8âèýbí½q@r¦¸¢…}cŠ½‘GÛCs‡@‘BN†MvN#TâÃÙá;w°ÎÐs‡ý\±AWô°7bÄ_Fó,ÛnZê#™(8ì +ð[œ!gŒ¥7 C÷À@ J”FÒ¥kÈR:»ÖQZ/Gä Ol¡×ÉL7qù¨ÙŒ:…v—h6 +v:Hé‡Õéduxòˆàξ>îÀ^÷q—E>rÃÞJ®)”íÓÜ~;/²Çwãtî8Ü?èÉso¾íÝëÚ¹Ús:IŽÆú:RΗGe£Ì'6¡Tº4Ø»zh±÷úœ¾‡}bÛµ!Õ±aµ×ðD-Ôkš:MW§ý„©×Âr`œß"àäÎHM褫vxÒ‰²[cnîÄé½ •BÏ&?ç&À~Û  {v"ÒV@|‹XWƒbô)°H·¸Š0:«4öâ#LÜ-<é eBý#|GÆ ,±Š[Š“Éà …PÓùJ˜.ã ©™ÎsTÐ(*&ÀvUIP^Üh s"r†8ü +ÝqÛ‰;¨˜­GpÿEIËH‚2m¬AW7åXñÅ \ĉw'à¶î¡Õpƒ+å}+v¶­N±', endstream endobj 120 0 obj [/ICCBased 123 0 R] endobj 116 0 obj <>stream +H‰tWËŽ7 ¼÷WôŒV"õâ5› '#0rÈ ’øà àì)Ÿ*ª»¥Þ8ðz¤’4$EIÍË/¯û˧׸ÿðãë¾½¼þ÷çûƒàkŸVÚ¾¿?ÿÚ^~ÆæŸï[Üã^bÜSLûß¿oliç??ó îc!ÊÞd¾ùù·ía¾rxäŒIêËD &ñ¿@äç-Ißñg;¹–oÛPIÕC÷oûMei!jÏ»–Pó¢:…^ ¦Ìýe’ØþܘRÐJc¨6a­”YåÝB¬ý%´\ äØ +«3¼6¬ŠS¼ÔUÚsa)Š»ÓF¤^Ïr€çV|<`±ë. ÑäPpþ¹FBqÝlOF‹q™žÓæUmÜ툻X•=Õ ¸ÆÛ‚3‡ðÔ»‹Ár£žž&‚»Ý'¶P¢QDIuWÁ• @CB(úEÝ]U#Õkƒ\¬Ð Ûà’ìD0‚h3´“ ç£1ÌÀz³ " ×f’#œP‚Ak*¡HÍBÎ}Ø[àz(z9†RÁÎà Y‰'Ï=œ„OŸ” ‹ŸNÞ…“0¬êäbO ƒì²L¸¡ùÌS®„˜2¥ _(‹`VáÇÆXNŒ»Â!ˆæÝlSÉ'x’éHyBiø6(n½)|Žø=7Äœgnï yµwO-¤þÛ Õ™‚ëÀ`CkôVk…ÙB…à3“óç²ᆓ+bįó¨†hÈqÈÄììLB¥er;¶NâGØ~ Ш Aëµ›§")ÿÙÎ…‡”éÂ;h£6ônc[Š/3ß ù >ÐOÌê ’‰ûK±…ÆVÌAE¨U?²¤ºü& ¬8£¤’@ž¡¨ hgÆò“íÔ ºqË”÷[,>rRéÅ‹?ð'^ô‰+{Nè‰Ò»Lò ×Ɋ\8ÉÃùdѤ.ô±{ìN[¹ãªNî,Üñ½‹;-ÉÂTë;)]Ü)!³Ê_ܱ( w`þ²›†K&u_dù8?ycòÞÔ…7jx“¿Çé q²­Ä‘“8Ù)weŠåq%ŽYYˆc oìÿiƒpão–²:JYÝ»—ªñ™êX;ÇáˆçW:ÚþœÄÑÿ}üXî”LewE»”ã0nÉ¢ ·¬Ö¢P+åuGϘúñ%.¨/€`†Š^ÑŠQbI‹’ÕH!ì!­ú»Ñ¾‡¦Knûˆàý,ÅC1Ê'%¥C­\N®±ñЂp{ì ³¹Õna*Ž»Ì.Nv¥çu»Ë»Í/Ûãœ~tvNéölƒŸíèWçè¯6Y'6:Ö9~/ˆ‚NŸj©ŽÔõ]è -$¢öQ/µŒ;3éq9ô`õçA ɘ H)$%O +Itb†\oŒ¾ÅODAy,}ꀔ—vÿzZY{Ëp-_¬(5»ã;žÑ*¼ša¡01±“w…­HøÚ*n’KV¸(÷ñÕ†ò˜ò„^r +m;÷‹¯GFˆyî€j¸aÝm, 3ñ\ ›‰Ûm…üɤ}ï¬K,ˆQ—êýý?¡¤'†¹OL•5öa?òuÙÚ…Fu³ óI{ºÆß¹U¿‰w‰e`”³>\Mg¬Ròˆˆ?˜™06lJÅßtš’G¸· …ÍRÆ»Î̉âb>hî qùS1¹¸›½ÕGÿàMrù0]1“ÏÓÑÒÁåè Ü¡<‚¯àS½_ø« 9g[Ë·üʉé¶ÒCc ÙÈwMž%ê¥#ŠïöhÍt§h„u.p˜%á§Oø=øyûW€¯)¯ endstream endobj 117 0 obj <> endobj 137 0 obj [/ICCBased 123 0 R] endobj 112 0 obj <>stream +H‰tWËŽ$5¼×WøÚãôÛWz ± 4H§v…fÁODf¹Ê=3h4]¶+§]ß_ÝÃûkp_¼»ºíáúÜí³ >⿵„ßQ’sŸoŸ¶‡¯Ñùáó\p%Øÿß¿m¿oëòè>9ÿÚÎQ—½õ'÷iƒÃ8è6g¶:ÿˉ£cq)ŸcNzv·gîy»ÄÊVØO‡Cñ½w´¤êK‹h¨'±òàërâæsM®#Ó®1€$ðƒ¦ði‹¥ýã·_=÷îOô‰ãß‹Ðc/ !äûÐ%kÔx >bf +Í÷ÁÙóÑf;ݤâRJ‹‡æ.Á‡Ô趄ìGj>‚ÁäMˆ‡“è;<¨}ÛÀ¿™Of–"ѨìH¾¥|À”|’qÀ,¾ ¸êÃWz϶xA +n[Ý­'Z¥í)¾ÌJrwpp®hµÅÄIù‰‹¡Âþ4OR«Kâð3vºïM2ºÀo†tÎIÄǹÁF”ÅðÊ5_ ¾€· “§¤ UŸBÂïèe·32eú +¨åä@Ý(‡ˆvç2üÀVzž8br2ë“ŠØ“;ì8°½ƒ&®C&,¾ÐK‡ØóÕƒŽÛ¶£ìA.æ…+Ïh‘H[;:C‰{f7ˆ™‚0ž8¸‰ht_ 1ÊI§eLаw +<D¨1U}?6£Y¸¥˜.C($ª€¨˜}ÁÈÙSÈÑ$º#D+Á˜Ês]ö†Kák ¸ÇÉÓ¡î¥$?À^,Ø*ë°pkÑýÔzr‚A@XŠÐ'à{:Ò`ó­f7ùà:Q w·—Û—e°œ´¢Õw13èi°¢ÙU%_ß*µ"ˆV’[*"ÚfAT“5E¹ÚÑh¬¸‘’@‘%™65–7-o@Õ=N;{‰¢#_L`rŠ»¢'êv‚RŸOX+lD(Y‰ªC€ÿ>TШà’Q²ÛP‡êe`-›6ŪӢzL؈ÚÃhK)½Mñ œ¡~ÍÞ®lHrÿn»}‘v’vŠÕ:šÑ–¾ÂÔ¡üKUaöœÝ»:E¥(pQ1_)XyLÎÄ+è¾ ÿªº¡ÕTKxô™ûv£)¾‹j5qÍ:6 +ÉGÅep©K¨Œrß°-ä¿àÀ*DäðB.h›r¡9å2Ñ” 4pÈ¥÷E.HúK+§\`/ráÂrÉ‹\RË«\v8å¢ðK“E.‹\§\8â ÷ó"—>¦\ ÌrÊ¥ŒU.ˆ•rïʆÉÅìC!¯Á!—·ôÒV½È½^êÿèEV½”E/±MÁ¤z'˜¬çñ!˜Ê)åt +f¡ÿ¥`\åõÆ"vcAtZ“ìWÄÚŽ§2ÑŽ'2ÚOïÃhvŠ·7jZbî‘—åN€±8Êpâu§éæåÍB$a:Áó¨9 Ö»@éÅH±³» Ddº+µ±‘Cì`©¸ò¡4;Wú}‰rx/HyLÔ¼±0ø„|°M.ºV•ÚmzìR˜ç›äýI#\«2/8™_ÓêLÑí¡ZZG õΞQ‡ÃzÅp w.[í ÚvÛ*‹Qí$šÏ·/§,í8X+ͱÞç|,0=+•’:T ( +º³b6Np°æ¦ã„k{E +¢¥ܦìÙ‚KGÏΟøĽ^ôTšÈùõóp} îúèöïÎÇëw[vÿ¸ìÞþÿoÜÏð/QïHxüܯnÉŠÄnBáŠë÷‘~Ûvø¨‹Z溎|ÃàgÌÒÖÎT¡˜G³E?&Ð^.êîà•óe’=’Ùæ˶¦·Gòåû«Ãã?‘0_ endstream endobj 113 0 obj <> endobj 115 0 obj <>/ExtGState<>/ProcSet[/PDF/ImageC/ImageI]/XObject<>>>/Subtype/Form>>stream +q +/GS0 gs +52.0799988 0 0 236.1599947 266.1087341 168.8636869 cm +/Im0 Do +Q + endstream endobj 139 0 obj <> endobj 142 0 obj <>stream +H‰ì—‰vÛ:D3Š-‘@JŠ<~ÏÎÿçtUwƒà&Û1µdŽà}I¯kéÆó8ó8ó8ó8ó8ó8ó8ó8s•óûÖ°òù=9·~¢ïŸ)ÓÿÝ9¨¿î3PÛ¨þ&¶3Ïÿ£}î©ÿ:´ÙÇÝÌœÙ_¾ñÃ/ŸOBpÚ—¨2ÜÝ“ýÕ,Û­9Fgôlƒ'›9gÐn28‹TsP3pwŠ¶„uŽjÌvdåÍP½¿¿C%ßxŸaûqodsX=ÔRep÷I6çÂÕËäd¸e´;⚥šB áFhwC6‘˱JªaKà«’í}A´;á*å*©úGîxúßëÙÞçE»¬ß?æ±ôa»™S°õh÷B6‹õ–±ø©qüSž’ÍÑÞK´“-ËE,£Rù"èÁÏ3þUF›!»-× ЩÂìq8G’ÝR²%¹z,§š«zÂ9ÚÛíÆd3\=–Šµqªj|þu¸Œ¶Hv[.—K³¥bm +ªãè8\FÑd·‘lÊUÊ•-èP¯ÛÁy5¸ME3²ÛI¶Äõfr©X=Ôxˆ)[FÑî€lR‡.—gË°^_êåå¹?ò3gs4MÉÆf¼®W†a)ÔósÔóë×/ûìYÙÍD3²³«K6ñaoCs¡c‰R +ôôôdóëéIùȦh&Ú€¬4ã­¸,^L×f€¥Tä9ôtd+Ñ0±sÎÞo"Ù Wi× ,P¥æé:ý¨p`#Ú˜ìF’ã2¹2Ö°$çtB÷Ÿøy]¿€h­ª6³dW”ì —ÚðxT, T JýQ<èF´ç)Hmc9S3Žúãj`#®s©\ŠåT)ÉÈÚí¬w»ãt`#šŠÖ“ÍJv-®ß³\Y.1!°ŒJö8[ÉÕŸà ¢)»ÑÍxeÉ–¹D®M–KL(X™*„rëá8Gƒh°£’mÔŒúß_¬ ˜s½9l¹¤2`BÁÕTMÓG¬iŽ€s4Š¦dÒ…‡ëÇõ¹ —ÇËä:ü4,¡R(ñ¥E, +à­’?ÉàF™˜ñÊ’çB¼^X‚UK´*0!Yºw0buíh;ˆfdh}1ãX²Ëƒ¸Þ +®—ÌÅÒÈX òˆáxdĪJ؈¶…h°£’!f½d^ŒW;ÃEÖÝ)iBÁ­PZ9ܦäc».T{ m!ÚÑ5cÌ%»4W.Dî‡àú‡\¯àz¢ Á¥XÐJ ¬V>ˣŷ­’½Ž%»‚ç¸Þz®Ž\l¸?uGbuÇÐ +ÔžÍÁªG{ìSshV’¹«§’]l°ëP¸²\Š­ª«ƒº>k +P"Ú>:™Æ¬ìZ^\àê2—Æ‹­A¹~+¡…© +Á†˜„J舦d’Ië ™6c–läÅkp½/se¹ˆÕ +±ò)&U(t@C¶ÁÉvBö²(ÙC¶È†\B¹PŠÕe.!“˜u†&d]E2™g§lF“ì^,ŠÃ‹~ŽKâ%e8© Ê…d5b¨[#šè +;2gÛx„KÉ®áÅI!.qmiÃ.¤2ˆÕ!cÊ«å­%š@Õé djFJf³L½xY°³\¯Î%uÈxIºQŠ%ï +%¥™1¡K@kÒdÈYhÆR²¡/6Sˆovÿâ¾Qp¥6L¢YeXR±7šbBÖ‡)ˆh²c@̶Q%ã,›xñí1[ˆÆUqR®½r‰ c×&+‰Vm„DrºN½˜"Ð$€R*2Ô$gjÆR2Ô‡Îè zq¾Ç\;Ôaxí%]¨BÅQ>”M +^”/‰Zdˆ™˜Ñ$Ë^Ì…!°a!–l£\O™+VˆË;ÞÓs-¸)D¢5†&úÉN"9‹é f4É0ËÔ‹› ‡l±8Æ\ ¹R Êž]µÁçIïbbÖ ‹Ä•‘Oňx3ÉNc/zÈVû èëH.©CÄ+I?He´Ñ°¯ :œ‰˜®' +™tc 3ªdGzÑêc²•Á&…8á +œ_™+ìI¨ÁÐÒuÁ[‘ïßâž²P*™tˆ¬ËÙ‹Ó]Žk3`Î%ù +;pau°[ –È"Âäñ oêh“ÌÉ%x4cO’VÑ‹£­ÞçŠÞóOru™Kâ%Ò45 Y4#â¾Ò—l0bU¯¦qÉ°~ {ñRíq¦è}ás!^‘šbQ²¨6ćÀâT£r R–¬ÛîèÅ2d—hóE¯‹Ô)‘«êŒ«®)™j–0ÁRd'ê;|éT#Ú+¤zqÐ+‚}TôƵ•}£ç +h<ªÔ 4“ç’•"€Ð&ÕJ†CÓ©dRŒ•{ñ¿âEk"d«}XˆÊµ/¹”­5;Šnˆ™RpQÄÀM&¶Aý‰W“,{QC6iµÀÎb`¸É¥\™­S4bu:¯DB|/0ž`¾¹dًíÞ÷s…¸é Q˜,#®èÜš!v‘Êè˜Æêô€2 µø^´]l¹É……ãPpÉ3£ø!bãÍ"Y4b,Ekš>Œ;jê^dÈ.¶Pˆ£Vr5ÆÅG懎»Gêç3š‘r1[ÔN$ƒ‚æEÙSY‹«‚/Ä~€ËlWK‚6%ŸÏü.qt›Â`ãos0èû·ÛCkÑÀÞVûhóEÑû`2º´3Œ«aÌpÓùœl<«Y‰›ì.™ìÁø2iÙƒ_û¾_m}Xˆý`^äü’Çn}ûã+¥S+²QXŠÚVþ,Jþ/š38i­Å÷ýZ`K…8)zy¢#3Ö\6³ZÛx™*ëŽhk¢í’u-ǶÜt:ì”l©Å¹¾_ ìƒBÜÙ`&Wk\nd™DÖ‚®˜§³%Ž­æ+Ћòzoí±T‹ß›/Äróµ¢×ÆWÍ»\<£Y1ª“|Ès º©dúKÜOêFÄÚ²/v¶óFß=éèÀ6r¥P”do*hi>®¥Ú&d‚›T´jqm°e.,z!¢èÕsº0Eæ+©¹0¥~ƒ2 q]1è”±èE‰kÃöP°—õÁ>¹ùZÑë8J—ܯ´Ó(œ.²¼wèt¶nlñ1Ћ YSi{Èë©[gBfó=Y!JÈÈFM‚s ¬èÛ?±ý*X´ð®sCJ{°'öýÀ†…8Ù|3sbÄüÍ¡œTÈ”;‘ßolþŠü]ZaªuA®Y‹ûcµ:Ø'7_nôèŽã&t.|•FVÄ| +5ÓCi›Hbõ‹¹%`Ý^ÙÊ` ›oQˆåæ« eQrµj=:1ZœL£ÔÿH¿l¤Lp­iAÇZÔ¾· ].‹ß;¿ùvý曋^$R¥ŒfpC÷ñÓ`2Z#¶ügºv‰¹eaßç ]mÖû¨Qô§QÑw˜²Î“­hN e)êEÌê1Eãa¹t‚ÕXßû {ZìK›o“XDàyQÔÛ¢¯^Š.˜Ý0£j¢ßaÛƒzI'MÁd­v¦£BÄëB4l[æmQÔñ¬»•¯Ãò "&bu¨ü3ŸÐ;®ö…Í«´èƒªÕ¿³»—½#\òâ7==fKx™/k—Àþø¦¹\ˆ3›o.zua«OÝšd¥‰ÀkKR#jô(ô +‰íb¬mB¯ v¾'›ï è[´ÙŠE)ú-3èhó¹M'¸2بkÐ÷bÄ ö“;Õ÷Á>Sˆ¶ùŠ^X²æÖ}7—¢•‡ +¤7š>nª—þÔþëø]«Vû\!‹¾³÷ÅÞŠ¡X€MÏè3Ìô"]ÐÆÇ„®C0]ï7›ÿü!Ø× +e¯EïƒÙ‡—f(¥=FLXðÕJʨ©R@£›ÅÜ­ÖÁ¼¿ 6_3…X=}dÑJ!ùæÞÏgµa±K½„¨ÅʈQvಘºz °åâ˜/IJèU2/ »Ÿ°ãcÉôC¡RÞ­šÂv0[=t ƽåû`‹Å±XˆuQôx±ú3®<…õFæNÔæ>ªÍŠMÔ#°ç ØæOÀ‹#b¿ù+ÄdLfE-¥¼Ɖ³Ø_i\/½ Öò².ØLqœ/Ä6å¢ï0À¯ßmûLVö¶Zåo§ÛÕ^¶[ ì|qL Eßh!Bª82£]¦eïËbÞ="õÂ8}ë`aXl!`ç Q7ú@¤Ì”/**­k—¼Fr±øý…¤FÁ¨Y»>Ø|qL ±ß|ƒË”RŽ˜W„®özUI«˜×©è•¨¢Em}Ý‚±¿8دçî`Ó€•Å1*DymúBä(Ë·Å{+7ËB0[Œm@X¾K˜4ˆ­÷ë€ÍÌ7/Ž¾Û¾+úÖ‰3,[D´Ðû¬™^¨÷àZ +Xj‚U«VqPRˆ'/Äô?îËE9nc¢*Å–Db@®d«œ›üÿÞÁr•TyÜÈ.Y^ÉæœíF£'¢Ãpïå<:R£ŠìQ ´PÊ&ÐÛ Õ{›ÖÓëo‚°»¸J icÛÙõñÎèJ‰°’ _ËÇŒöòò›`[#*×gŽužÞ6($ºÀ²%#@[Fî‰à5Kv´`‰^`º™%8 ÝRT »NzØ« ½ÇjCÔP´í|5°sF @G4)³bj&X2¨N˜í€ØvØ|)°½äHF”Š˜Œëb Vž¤uX—J=7aùd™Á•õ%€|-ƒË‚¹¥"úã8´ÆaÁ!ž+71(ÇÏaQÞaN{£PºÇ +ëo‚ ‚IrÈjv#~¤ fÖüÖ%ZÙù Ò_]W¶³êeÍ |%°½äè«9‘NÏLû†6Žæp9Á"Âü§”ˆ)b’§/ V #þO.—nD©ˆ Îr%\Ú¨–5¤HTÝl“õì‹ùZ`U°?ÿŒäp#žÖ·E¤ó‹Šž?õú$Q9¿¥a„JîS3j» +XŒ“#Œ¸È-tÀd3Sù•¨Ãs‘[.¿}ŒKÐl–ü»`c$FÔKrÐjæD$ÿõP\íZ[9Ðb[ˆ·ÒÁÀÀ€5ƒK‚mã¨çäàË¥$"½›”ô)ÒQá䶂éßR.ZìÐ/ëš-ó…ÀÎ +&ã-­f®šôºÁ’&µÖ«[# HÓ= +‰{Aƒ‹‚åæ‚Iç°Ž8ÑI’M)¹”¨Š`G¶žn¢¤äÐlô Áve°­`Ò9,9V^Í\9úaf‰ Œ$°™ÑÂsEZ5t»²¸2g—ËNä–¸,’ÃÑjoó ÄkV(ZªÃI=4»±],ë`²ÃŠ`š+íQˆz(z±6á+'PT›üô(ÚõÀ¸%òK‚irpGäÕ,Fd…+:¤Ü}íÓxgI`p1°êĈŽ—A°)’ÌRL2-è)Ÿ:Gù:`­_lO°ï{‚-º­L.:¿‡%¦¬o©øʧÚDn‚Å#ÁèvÙ[x` ’¥¥mRÁšFË⮶u"g}¯õ;‚‘djBÀd1`˜v¶ys…J`É­—(Y¿#زv4l¡”¼ßbÎf]Ãœ–ó>½ÊàW°Û€•è°V£î[%óÀ€8xöœ¿§PZÊuÁŠ#:ú=¬D"¨`mQ¦,™Ÿ¯NT)ÚOÄ—¢0ËXûm°3NìLŽÞß'ÄA0ÐØv#jÊA2¡­pyWäU¸ ˜:‘ZÇâDi‰Ò~×悼ç`ÆŠi*6L/hSÌ`>x—ÛÉDr¢DG¯õ+ÈMEÃÐ&‹t«[Ä”úcnXȳg¥ê¢`Ô«_Ù‰3Hå`/.!“ÎøÛ&ÆƉ7;7bʼn|¿¤ë +hõpÁ¬a9­9K½Q»-Þ¯ ¦=qljsŸ.°ùRg) B* Ãn]ôCT†{o–·³9Q¢£?l*‰k,õ)²|+‘ûhöâ-À¶#Û™HÑ1YtÈŒñY ¼Nph`”îɉ…îº`uļ'RZ¨i¾84K¯в`óžßÙ›Xµô¼XÙb6bÚ»y’fòᢒ‰X‹V;t;çÃCú>Ì’Àðr`Û{†g +ûýŠùúBž‡áÌwmÀ#fXæ·Mt K Ž«‹xe°ÝãžØ·3rÒ¯Ú:ì•¢Ñ{"VMŠ”5Z³ðÚ`»Ù¡#¦aoejA¡0ÙÔ‹I0¬ŸÒ‡¿xk0ÏßböÄ$UJ¾xQÏ!؈Ô⧠nv.;^_^úˆu°Yz¢ûЦÀn.ò÷*˜ÿd̤¯o¶Éßb>bŒÆý;;1ÝYlgÙˆv,kûª`C(FŽì-ÖK]˜â@R*€Œ+ï†`ç²c¢Ý¼¢%‡Ý{ÁV™·t¥³Å½ƒTóy0Ð;ëuÀJv¨`ìIÄt>–ÌWÖ¸ï ¶I{.TÒ€=;¨þƈ‰hVw™6»Úi8f,¦V*GE1ÔÏ-:G±åëkŒÒþ…À4¹wœ<;,s.bd¢ùsƒ’¿s3°§£5–ÓÞBqå2ÙáGô®8 nên`}½˜* E2?‚¹1®™ôÉ8|lGï6`T<6kŒ~¿—Pì£ãù©!B‘Ïm±›ƒý]Óþ“¢ž/c õß•o­ÙóÀ8Vz¹|]€îö“×؇¤½\1—lC7%`9>d'î|`x°IÀè–Ù‹À`ÖZè¹8È-2Ñr¤VýÛ€}µŸ;Øû›¯1ŽEðé*[ +²©hƒÛ·±‚áÝÁø6&—›ÒK†Ã˜GÏ¿ÕÕ Éà`V<(öûÐQ°ù]Ó·ñ^Êk °ðè}Á¨x¬ FDK R‡nµÂB}‹ù 9Xùg7ûk[­x°çE„B0?Ú‘ ¡¥*‚&@yÍÁ¢‡ÝìWÅ·WÁd;ÏcFAñ7ÅôÊ¡ÀjUì,ܨš×Ž4A¼Æ¼ëï±j¥QŒ®,ë’šÃmk¥ðÈŠºcöÍÁ&ƒÖ¼YÚIE‡ãƒ`CéKX¨Nl¹v ¬y¹oÍ΂RC¾k&ÇиËj§Ü[92d0oÁ|Œ Œc‚Qf0+PÖ*X:¹ ÷P`jD)ÄÖä½^9ýÁF+Æ=3ùpÁ#ƒµƒ–ÁbìüârH°¶gاækn Ç+qÿßËÍ#¥âžÿ`PRñ``OÿØî·`yÊÀ1àÑÀN_€ÁvAŸKÅû‚} +ØÇúýÇûôöºƒh÷R‚­+FóÀƒƒƒM3Š`é>†ÔÜìEÁúÿÍ‚A<Ôö´Ú¯¥| °§6W0;TK×–Ý|@0œlæ_jÆs`vúÀý½ Æz탵æ^¼uWüìô!`r!°ìOƒÄ ¢Ø©ÎݼÝ|oìã´¾¿0 + +†‡“!3°Ïö“ÀNla0-†5œ9^0ÚÐ ZȇlÒêv†ÐLv4ú™ l±Nå`®™– +†[Ÿ!áé×S£0”øð¢h7M+‹åã(`©ÞØ3ƒ}*ØÜ–¶@ÓÚ +Öï-¶v°™ÀflÖ|Р6¨Ã¨³xw°ç Ǫ̈t4 ÿ8aƒƒ‚­íÛ¶è ²f­œÐÀ wÄ}:-f£§(X­Šúg¤ +(ËÁ(ï3Ø{›Éšù¡³b +þ—ã€ýÁPÁP>øèvÒzFLjA{°•ÁúÓÔÉ‚ðš¡Ï–ƒÏŠ6÷í5­¤—ƒaƒ0îƒÝyƞ΀ýP0è`òP«T¼Ñ±Å@ÒÚc€õº8[W´ãk v0ÿŽ)y40kÁë÷/Á’f0 ¬yd°ém T44ëŠáI,`x80˜Þ^ažŒ +_3ÁSƒ3Dï,y¯G?ØÓ°ëÿ9Š£y &¾Ž½Gû{ W“ M`³™q––ö€±^ ×±YÀR[,`~ú ;}Xs0ÔÔHâHð `ã…ì®`]Ȧ·ÓúþVÀô +†¡™úX»;˜¤GûI`'#½8Í`8ôcMºÈК ú¡í‹Ç[lC;˜kºËŽö O¸ž:Ø‚øMNfe1wª–N +qW°Ô‚×õžìSÁ涴… VÓ%† +VŠFƒ]0¸?Øs€u*úÝÁf›9@<5tÐü*SÀZ¶" Œê}£º(Ït4 ÿ8bá±À»òÀÖöm[Й4kåˆåÞr°O£ÅL`ô«JÿŒTÑËæÁ(ï3Ø{›ÉšÉÙQiYQÀðP`¿F0 {@ù(G×|<°iY¬?nA,h©-zW„Ç›ûöš€ÀVÒËÁ0Å^ô©u°§3`? :˜<Õ*ogô§˜Ò(ðöêë°·qp`t[[%'mPàúÿÿç‰IQŠÓÅ~©™`æ6Û[Œù -òUt+q1HVäò%Ãð†gÂÌMó7˜é™ÍŠ\¯wضŽ0ÊŠõ±Ò³Z³0zëp +YgÂ.0ØÖ[ƒQ ª×LЩQgßРÏ{©Ý7ìaåOÇö&öäZ~㌈¼ÙN‡ýÃ0L®ch\ϯ0ð«ý¾ŽÚehÓâë/`ô +»WØ~k°¨0ä©aš¹l¯°vÈF²m½íùº0¾‚™žÅ‚'º†}lõ«Æ©gǼ4ÃÐ5lã REïðµe†éÏ\Ã’D…iÏxG¿lÃý†y/°Ä§¬og~¼ÍTq€Åóa&ç¼ÀRaw†…˜bã%† ¢¡~3?ñ[:¬¨èW‚…:@tjðAÓ«ÌSòuÌ Œâ½Q\þëgÿ^£€À/,Ç·–w’íYjŒz'³0ŽÊ`w…Ñb&=‡aš‚͈}ªŒ0ô£yoaW µL0uÇÈ‹ 8hp×|¾g2 Ûg|Ù€«Œ/ÛR®°ò¼„|² š´¨Y^ÊöÚ€`™ú¥0ì3zÉЙØå ì“aP`í±©êvF}¼À¢ŽÄ™áVâb¬Èå÷ž=À"<0<Àô¦ùϯ0Ó3›¹`ï°ma”ës¥gµä¬Ø[‡’Ed¶œ»À`[? l Fª^3Û áôE&Åû†½3¬üñØÞÄž–ãÛ K-Î=‹C‘å‹œ¸g0<vW-f‚у¦)ØÔ¦càFóÞ®êUƺÛ"k×–½Á¾g2 Û§Ÿ"9WxØ1ß°-å ++L\B4iQ³"t:‡…²½6 X¦~) û  µÎ†çÁ.O`Ÿ ƒkÏ•HUkC}>ôêyÖã‹ÀJ\ ’¹üÞ³X„9Í»€éMóŸ_a¦g6+rŲ²½Â¶u„QV¬–žÕ³¢iößgÃ.0ØÖ[ƒQ ª×LÅ6Cø†}‘¯°w†•?ۛؓ‡Iòýa{9ýÈU&>´[K WôÚ0êWÝÔ ´ËЦņ3ÈŒî-¶ßfX;Yºë >ƒÙÖk‡l€Ýö|]_ÁLÏb Á r û"Ø.0êWŒSÏà¥aoh”:zÏ€¯-=5ò_–$z(L{Æ;zn”?X^ÀÀp¿aÞ ,ñ)ëÛ™ °™Ê||ÀL +&ØRaw†…˜bã%† Ãü?G°x&lQ¥àËêÑ©ÁM¯2/£¸Ø«4þ½JõΛÚÂúêûCXŽoFOJ-Î=‹Ã_ùògž»+Œó =Û>˜Ž[Í{ »°zUé=kl=Cÿ°ï† ÃöÇðËh;†/ÛR®°òÄÄË!š´ˆ\[ó0@ÝÂBÙ^,S¿†}†˜$ų~œ“°ø7°ËØ'àÀÚƒ%RÕ¿uÔþ+,º•¸$+rù½g0]T¾`’‚ó?¿ÂLÏzVT¡wض~ 0ÊŠõÉÒ³ZrVZ÷ôó×°Ë +ì=l VXk?™KC¾¡/²ƒù†•´E9y@¿‰p½2ï=Â~a•%°0„ªç°g/¥7XÝÔ VvNi¤8S·WÝ[ +lÏÛ:ÂÚÉ‚aäFã9~+Ï€µC6Àn{¾Ž0¾‚™žEh°¹Qža_«£#n5z„„í4Ùžý›ÞI‡°¶¡Q +é=ãUV-fÞ;ì؆ –$z(L{&0+°¼Àba7Œ{%>eQ·3W8¨8;™Üaw†…˜bMø +ëG ÌoW°Ea”‚ ,X X¨D§¿z•yß4 Œ#Œ´(°~ï”ßf×=ŽÍ³a´¿FJ-Î0)ÕÀÀ1ìþf£b¯aoà™0Zdßv`õª2]"{öz°‘a| :È{ †/Û€`™ú•GUí)°) OŸ¿„]žÀ>+,”íµA{2ð?ë“ç×$e[æßã<ö=Á Ã’.­r•ÈÌöÊ,Ç· Æ' tjÄ„ù«¼£/£ýE0zVjý•~ÑŽ™Qïv_-ìjaíãBÛ"k§Í1ŒÙ÷ ãaO™ +9xŒ“P^ÊñÿñËVž™Ú%¬.±´C6uË%,”!¿Á2õK`úÔª[A°ËØ'àÀÚ£%Rñv– × qªß7¬¤ª Y‘˧ž=‡Mœƒÿ{˜¹iþã„-+Ê;xt¸<¶õ&‡ …&Y&ØÑ…Ì ¶õÂÖ`eÅzÍìSkZl“x‘Øå ìaåØÞÄžYMZDkeû‡…²½6 X¦~)Œº'§ª¿z£õdØå ì“aP`íÙ©êvF­á ÌŽF§°ƒdE®Pbð³}²ñ~¾Æœ37Íß`¦g=+Âo°A}2l[GeÅúpéY¥!gE8‚ņ»À`[? l Fª^3A§F!¨w–ZŸ}Ýâôq{gXy¶7±'Ôšô{¯Üì熙`r D“«ËKÃj¿€¯cvÚ´xsö*ZؽÂö[ƒE…!O ;½A£‡KX;d £ Ù¶Þö|]_ÁLÏ6k<þ¶ ŒúUãÔ3àto4‡7MŸ°74J-½gñ…aI¢‡Â´g0ÞS$ˆ8„-``¸ß0ï–ø”õíÌEG ¦šSa&ç¼ÀRaw†…˜bã%††ì¡[`K‡ý*°@°PˆN >hz•yÅ{£¸Ø­4” +£¾£%]Ãr|›a k虎à Öà vW-f‚ÑÓ¦)8•ÊµeüûƒÑ¼·°«……zUé=3çêÿÔ×ín;`cÐ&Q”ÆNŒ›û¿ÏÅQc;é¯cNPœvÛ†8C¾mü–_ûÚÃP`È?û\Ú¨ÿ°µÔkO-(_V?8]ÍsÚÐ°Ô¶× +«Ô/ƒá˜!0¦ Ì×ÂNO`ƒã‡k¤êÛ­Ã’} kq1iV”bGÏŽ³Kóï0×3°Úá(°õ<Ã(+ö§kÏz!(!xߺ°Ó¬çwH+Ã(Põ3Sa¼fQ.4]ËbÃÞÖ‚ü&ŽäVÔ®Ôý÷özØ÷c±ÚľZÑlÿ ,…Q¿ú¦&X¢]†>-þ +ƒP0º[l»îaüeÙvæÒ-zà°<èØÔ¼ÿÆÙ»nõrž`r‚¹ž)ÌWöI°MaÔ¯ÂÉ}êYÿG©ÛÁÆo¡a«lhÔbFÏôËCw¬°°¢ÑÃ`Ö3ÙѦ»-¬.à`¸]±n Vä+ÛYªœ±`.lé°›ÀR.¹€ƒÉC›×qHØb0JÁ V,,õbSC>4;eGƒQ\ägM†/ÏîÎà°šÿx=®pœŸ{fsÞþ²ŽÎx°›Áh1O°4R°«¶A_JÜK2„€Ñ¼÷°Ëë§Êè™ÖÍåy@LØ׆Cþ¸ñ8Wñ^Å;ØZj‡µÇ¹'±œ¾è£ÁRÛ^+¬R¿ †c†À(:ìôö!0h0~ºFª¾Ñªp0/|ÞÀ0°“fE«Z{#ö††i +®„YÏdö÷Y¾úh¯¢‡­ç÷ FY±?^{Ö+ATXŸ)Á`§0h°·´2¬-0n˜<>óVF»Ð\­¿ýD‚µ§ð"Ë’<Àê{ +›Â"¼öýÖY +KS¨zƒÃÀú¦fXÛe¸K‹ FwKƒmu=Ï0þ²l;sÕ=BÂø#›`×­^f˜œ`®gÆ5Ã`†}¬Ž¼öè‘ +rU¾g C­Ü +G€ñ†Öéîz&«Ì‚Âp0dXÑèa0ëÙa`uÅ+ò•i¢ÊóžÀeæñ²¾ æRð€Ý–rÉ ,álÄ_+9l1¥à« ––ú±©!2vž9X“KÓÁ$RÁLË÷0° Fû‹`ô¼Âq~‚9¯g‹%üˆ°Ûs˜Š#i ÓöõƒÑ"ûr°Ëë§Ê”¨tâa5£À䃻-5Ãd‚@lØ +«Ô¯‚22¨ŒìßÈ;Øð¼vzûè°Ô¶× +üxßûÓ"² ùõ; ¬èlÏ<¸ €{XŽ +£KÓ`-.&ÍŠÚî™ëÚܺx°Ûo°þqu˜ÐÀ^;K,6l=¿CZ¬ 4v€d{~¡™‚ÀN`Ð`o«mñ›84ç)½Ð|9¬f ‹={È¢Ò¨øo0xìû!¬³@®–tªÁÐ9b¶+òÁèÄ䶳V|dë¹]š—óC”;l‚E’¯¤•0l¯ƒñGæaŸÛ –)RqY8^Æ yÚЭæ#ÀV‰2}Ï@Îg8¬è†ÖrÐNYeOa¶€ƒ!Á¶+¨Ÿ{–-*Òj/&@$˜ ‹µ.°xØ5å’ ¡ªƒqZ´ <ÃQa·¦¢_ –&äñ>Jô/ãƒ-£ìa‰2­¼Ï}Í8¼ûýRXÍv0ùÂÀ¦Fæ ,©ÝÙÃ0ŒöÁè…û5'*ù]`¾[ýË•v;{ØÅÃú%¦¡¹g>Ž Áh‘}ía2ì)S¡ð„é3r] «Ö\ø³wl¼‘Gƒ¥6äW X¥~) !ÛûcØc$Øé ìC`Ð`ü|T²µŽ08¬¥ª¤YQ*¦žÝÁÀÃän s—æO0Iø’4ú,ÛζžÀôãB¥iV7=bÃ`=¿CZÖXîgæ˜ØÓ"ß,ð¸ø×ÃNO`okÏA~Gò@«kW­ƒeý¿¾öý†•`zŽ%¢q‹~‚e‡ƒÂz¿@®–Ä0—õ˺ƒåÈ°íÊ°l0”©áS ëÜÃàÕ°ÿ dëùºÕËy‚É †{˜VÆÓÃÃ> ¶)ŒúÕã®g éÞŽÁVYd¨õŒžAFësð@°¢Ú`Ö3£ê¦2lÃíŠuk°‚:ð{Eœ{=öŠl~!í_s)¸Ö–» ,å’ ¡ªÀd‰¡ƒž=øS Ø2`ME¿,,õbSC>4=e`®?ãØÐÑ`ïŒâ"?Þ 2ü'X«ùÏVYSϤ^œÎ– ÃÀn£ÅL0z¢ÀæD%¿÷·tÌ £yïaKôþáÓä! "Á¾ö0ö€ü0øƒÂÖR;¬=¹ |Y]ZÄýÀý7(,µíµÁ*õË`Ô=«ÿ&™ +^ +;=} Œ ÐHÕ·3Z!–¡ö0Œkq1iV_˜{ý¬ÂÜ¥ùÌz&³¿Ï’1P‚ÃÖó £¬Ø+Оu¢Â¦vzƒõüieª~f‚M>CìBsåö&°ö ä7q$´ÂÂþðLϱD4=]î`àN±è°Þ/s,Ñ.Ã]Zû“…- »uØveX6ÊÔðW +Œ ­½ŒãL`t­çëV/ç &'˜ëYƒñ6ƒø°O‚m +£~õÁ¸ëìi¶ØŽ[eCëtw=“U6\#Š@|XÑèa0ëÙ ³Ôñ` 8nW¬[ƒùÊÆv–JµCQ`.׺ÀÒa7¥\r“%†6pcÈG¶ XSѯKK}€ØÔMO™y ˜{5£À(Þ;ÅE~¾ÑdøLÏ–È°šÿìa³*£gŸ¦³%,ìf0ZÌ£G +ÌRð¨–YxÍ{»xXê§Êè™9PÇøûˆ°¯= †üàG¼Áp‚õÓMf~Îak©Ö]P¾,°V Ç„…¥¶½V X¥~ Ç  °Ó؇À Á¸T};£Ubq~ÌûƒÀZ\Lš¥ÊÑ3Ó4ïÂìÒüû#Ìz6Ò<¸é¶žgeÅ^‚ö¬WƒhMtc„ñý߭ɯ€À`=¿CZFªŸ™ +ã„v¡y>éMö&°ö$ä7q$´Ê ¬98`hÚÁ¾ÈÕ&>ðÕ’ˆ¦§ËÏ°Fýꛚ`‰vîÒ"ØŸæÅFwKƒm×=Œ¿,ÛÎ\¿ËŒœ,Œ?² vÝêå<Áäs=³r‡ÅÆ{TØ'Á6…Q¿ú`Üõ̕˘<ÁrlØ*Z§»ë™¬2ý_Ár`XÑèa0ëÙa`uÃíŠuk°"_ÙØÎR +àŒï.Ì¥`‚-vXÊ%p0Ybè`&Ž [ F)¸Ájƒ%‚¥>@ljȇ¦§ ¸³E Fq‘ 0š ÿѱLÚ +Vó£gÌz¨ŒžI‰½™÷0ÄX°›Áh1O°4RðX½ã陋¡`4ï=ì2Áú©2zf³bºÇâ¾ö0òËMaû?„„­¥vX{vAù²¦¿wø…–ÚöZ`•úe03 ÁNO`ƒã4RõíŒVŠÁìõ< +¬ÅŤYQ£gÜ·n%E„i +®„YÏdöÃ4=¢ÃÖóû£¬ØkОñ%‰æúvzƒ{K+ÃÚã†EÛ>CìB0½4ñ°ö(^dY’f†å{¾öýÖY +KS¨šaüóüñ`}S3¬í2wŽ YtªØv0ˆ£»¥Á¶ºžgY¶ä?'_s dìºÕË “ÌŸZï`Ÿë£#¯=z¤‚\šïü[Ç^÷ýã ­ÓÝõLVÙô3X‘` 82¬hô0˜öŒ*BÿÅYÛ¢Áꋇ]1o Vä+˶¥°ÊwZ˜KÁvXÊ%p0°„oážÿá,-£Ü`µÁÁR 65ø}Ìÿ§¾nwÛÖa0ÆÖÚ¢h9iƒ§÷ŸG?D9N÷¯¡‹ílk>D¾Do$†„ɦé`©`¤eML†ña4¿Fºrœ`Z#º†ÝŸÃ|T´ÚaP†…Ñ ûr°ëk« +Œ¯é–O+&K ¢·yÿ¶Á +׊Ò2ÚFùÐÝ­ßïT`ùWa—'°Kuz-À5€üÙ†˜V"ƒY¶°G„…A‡­:´2ÈgƒBÃhÓ4X‹I³¢UÝÎ f¹¢a÷Á¤òÌ-„¾$ âS˜äÅ8°e~‡´tX1hìàMw°]_|ìrƒ +{X©ŒobÐ7tCsUž V²„Å–=r¯²Ã:"ìûÖX [KzUØ_œ¶Ý– F“›ÎT3îa´-sÝ4¯óCä=ì†qaüÈ<ì“`›Á2E*® ûò’a<±®;l‘è!MПµü=ìÀ¶ê„Öšú™5üÀà«a8l«°µáó™eŠ=¨,8¼‰yÌ…ÅR&˜<ì–òšWBã´h0ùÁƒ °{Uѯ +KL×Év5ñ‡‡M£ìa‰—2έïköÀ¾–uSHXÉv0yaÐ;=J±šÝãÒm¢Âh~Œ>uåó•¦ûÁ`÷Ùî–б–l|eA`4Ⱦö0iö”©xÅ|Ø&;ÌßÉà°Ò`õÓW^ÂÚƒ±ð,mñ`!‹KµÉ/@°Bç¥0„l÷Ñú¡Àà ,+ç—`—'°A…q©d:Ã=؇p&XMUI³¢\¹žµ±[[ +s›æO0Iø óú\°e>€éãB¥!zØÍÃw—Â`™ß!- «,·5³w äP¥U£I$Øå ìM`õÃobOhÅ £k4Å€}ðL×±D4¾{Zœ:ná^ ÖÎ dkI Ó"avé*l»1, ¥k¸DÕ`ƒ óC,y)ì¿£…l™o[¹ÎLV0ìg–A`x {ýUäîáaŸÛFçÕãîÌ ããUôß9Ø]âÀdÚÝÝ™É(9fA,"lÕ m0=3ª %WÙ>6ƒávòUØŠÚðµB©P^•ßÑ¢À\ +.e‚©ÁîKyÍ+¡ŠÀÀþ™`S‡Uýª°D°Ôˆu yhZ¶ƒapÅ{£¸È5›¿/Óeˆ +ù϶bÖE¥Ÿ™+X`{K ØÝ`4˜ F+°‡DŇÃÕ††Q¿÷°«‡¥¶ªô33˜ým„Á˯†}íaÒìù | t>€a9lYKƒÕ_Q^–ö°ñû‘a©N¯Vè¼ †½‡W + +³Ó`ù×a—'°A…q©ÚtF«Ôá^ÐËAa5.&ÍŠýpë#-$Ìmš?ÁìÌ€#Õ†6¡C–y„QVle虵ŠPogHØåËüiaª¶f*Lã†nhF±úCÃÞV? ù&öäVݾøñ`ßÇ0,Óu,ÍN‚/Ý0ºNk粎%še»)Œgvo°íÆ°l°6Ѧ³ƒuÆ‚ñ#-dË|ÛÊu`(-ÃYûá`â!,ì“`›Âè¼ZcÜd4˜Û.O[dBkwwg¦,W ¶jô0˜ž%[›Y4Ø†Û ËVa«¼²>¥à¬Ñaú‘¿æRp)L vXÊk^ÁÁ@þ tªµ¿@$ØÔaUE¿*,,µb]Cš®2¼¶œFñÞÁ(.rFãæŸ57 +LßX +ù϶rœÏÌê`üíx°»Áh0Œ>W`–‚{Ñ®‚ƒeð”×èß{ØÕÃÝ?ìgæaÐŽ ;,ǃ}ía(0ä/†V÷aÆÁ–µ4Xýüåe_V0kô@ÍWáa©N¯Vè¼ †½‡€>(O2 ¼ vyûT—¡‘ªMg´rúaå0¼¿°“fE÷–~†A0˜mš„Ù™GªXîaøvØ20ÊŠ­kÍ…®Þp°Ë –ùÒÂ0 +TmÍT˜æ(ÝÐö°!‘ă½ ¬~òMìÉ­¼•ã„€}ÈU;>ðÖ’ˆ&«‹Ô øØO£ój“š`‰f ÍÎ`øø²¢Áho©°í¶‡µéŒ6 Æe‡„ñ#`·­\ç†Ò2Ü™A‡e]2ƒÃ> ¶)ŒÎ«5ÆÝ™Akü ’?2ÚáE‡-2¡µ»»°”%‚hê7D‡­= †š¨€'t|X™ÀÁp»aÙ*l•WÖ§³Ôãa æR0Á¦» ,å5¯à`ྫྷ+Zh‡a4Ød0JÁV*,,µb]ƒïcF˽§œFq‘«ð4­SêGÝ7å.ƃ•üÇÃèƒWŽóÌm¡ÿ0|ìn0Ì,õl÷­O´Âò+aÔï=ì:ÀÛÓÂâà‹ ûÚÃP`È_:° ¦íѾsز–«¬(-£/œ*:„aXXªÓk‚:/ƒéxn§‚cð »<} *ŒëÐHeÓ²á~„APX‹I³b6jçGýV~€æ('¦)¸üýÖÎŒi ‡h¥Kä‚°°e~`”³v é!€øØþëwa—TØ[ZV˜¢ïÇ643ÉUlé?>¬~²,ÉCN…ëëÐq‘`߇°ÆRXzUèžžÖ&5Ãê,Ãã hõLJÑÞRa[Y憼‡ i¬[:X>€¡¦ä_…ñ#`·­\GJËpg™£GƒÁUa`Ÿk­#/-z¤¹<fÀ™ +~€õaÆZ»»†ÅÌ…¡‹ 6ƒ!ÃVCŠ=@§²âÁÊ“‡Ý0o¶Ê+ÓD••®ÒªAƒ¡õŽ×Á\ +î°»ÀR^ó +šð‰¦‰¿'íro£À&ƒQ +®°Ra‰`©5ëÈ¥›C[_Ž “MÓÁ$RÁHóéÝu÷ð0š_£O^‘Y6ˆFX»?‡í£¢í2~8 ²/»0lM#ƒ? .ðÆ)9,¬d· „=Ì]LûnxØ+t^«ÔFg¦O ÚxÖšãÀ.O` –êôZ€ ù“§¯$x§²ßaaÐa«›ÂøþZFƒÑ¦i°“fEk(‡¦‘Š)vÿ 8ÎgTê­{Ã`°e~‡´tX1˜ö +D[d‚Â.0¨°7•:Àø&öV ˜à„°’%,¶ì¡ _`‚Á-d`߇°ÆÙZÒ.T1Çš +ìû~TØvcX6X{Yɦóé`´-sÝ4¯óC”vØa@Åêã2Æñ#ó°O‚mË©¸>ìË‹ÂdRƒ‰ü±Å…-=¤»û3nŠ Í1Ÿ ¶ê„Ö$–¨$zðÚbù#"lC‚m¶¢6|>³¬4p¥†ƒ¹°XÊ“‡ÝR^óJ¨²ÚcBNø¶`Ú av¯*úUai³ûh%:XŸÐ‘`“Á({X⥬7Ä–ÝÃ3ÀJþ³ƒÉ ó0.ÓŽ +í&öDFó‹`ôÑ+Ÿ—OTxôG`Ø}ö°«‡%ôCÌ‹ÐÁƯ(0d_{˜4{h+XëôC¯x„otµ + VKX¥8Ð…³AÐ_¿“ÀRmò ¬Ðy)Ll=#>™Í¯„]žÀ>Æ•h¤BI‹pvXMUI³bVËz¤Šs›æO0;30X>l™`Ú5ä,2òà0XæwH ÃêËmÍìíQ+ìM‘G÷~~ãë`—'°7ÕOD¾‰=y UvEùGýÇA`ßÇ0,Óu,ÍΈ[Fo*ýÄZDÖÿ©/m`í¼@¶–Ä0K‹y„¹å`Ùy‚À¶òÁÚtîi±y ïi.=>Àìzþ:ì¿£…l™o[¹ÎŒW0I‹ +Ãã`ð*wû$ئ0:¯•Oa83i Ð{þÿÔ×ín#·`c°›xDR;14÷ŸÅQ;ésb»Àn³E£'”È—C•" åÎ[uÙØ’šA€yºÿº·Dïl°lÚadQÑ;ž—pVØFÛ•ÊVa™¬áëÝÒšÍ )¸”–»),aÆ̨’½KxÂ÷3†8¢`ØÒaUÅ¿*,1,µâ]ƒdTÅqÇûã¸(‰´¡ößhZXÁ?{X&ÔM¥Ãüì¡-Æ9ìæ0Ì ãï­°˜¨âåóÆ8-Œû}„]",ñâV³ÞýBžö±‡i³’´ÜÑa»ÏÄ°5—«gÈÑ©/œ{–êôZa…ëå0Ï:±$ƒmØéìMaPar‹T„û‘ìK*;¬ÆÅdYÑï›þĹðå¡M ›æw°–¨„FžQw•¾qÒœ°õ<Â8+¢u }jd ³ÀNw`°ž_!­ã@•©ŸÅŸZ;_¯äQ`/ +«ß’ä&jò€`³¼1}Þ‡Qa˜­ciUröcÂZ½@ױijŒz¶–a}C'éž vk°í*0ti§ï0˜&La¼­çëV.ç&»åP3ðä;îeÃÞ¶ŒëÕã®fàƒ,n1°‡Ñœ°U'4ÙîÕÃâ –-z8 F‡-`´]©l–õ•Y¢B½ŽÐI{˜Íñ'ÂB +.e¥Án +K˜1C€ùt&[S"ŒÜ<°¥ÃªŠUXbXj Ä»†DÅÞñ ­ŸG€q¼0Ž‹r’@G€ü³‡eB]Áö°~‡…l>ØÍa<˜Æß¼Áƨ¸‡É_Í +ã~a—&&†óóá æ„}ìa¤0’ÏX‡ÙU„fÄÙak. V‘%*¶è +‡õ/Í Kuz­À°ÂõrXTûvØø Ÿ;=€½) *LÎb‘J¦³ ¼¶SÆ25¬ÆÅdYíÞµ‡Ö>žïÂp˜oš¿…!j‘ ŒþõCÀÖó㬈Ö5ô©I©x2Øé Öó+¤U`¨Úš©‡ñ§vv÷3ìEaõ{’ÜDMžð›ˆl™öyƬÚñA¶–1Ta„A Æõj“ša‰gõ Ün`{ižE&‡Ýl»îa¤>ÀÀ.å~Óœ&La¼­çëV.ç&}p¨H›§Nº=¦‚½3l3׫5Æ]Íú„SÆfÏp.تšt÷ +a1À ¯*ZºéaÙ¢‡ÃÐ`={´ÌCÅh&ØFÛ•ÊVaY_™%*Ôëá‚=¸i`!—²ÀÒ`7…%̘!À|:3Ãœ¶tXUñ¯ +K K­x×h=„F f†q¼0Ž‹r”@ ÏÒÕ†“Á +þÙÃ2¡®`_aÖ2(Âà?À8¡ýìæ0Ì ãC4Xê)xìå# g„q¿°Ë“ ³GCÉTnˆÃyFØÇF +#ù@„aÅd_ù †ÀÖ\¬^Á,QQf1Ú?£­œSÃR^+0¬p½FàÍC0˜¦€ÀÞ&‡±H%ÓÙ$øã‚®8¬ÆÅdYÑßiÑ †ƒb>˜oš¿…¡Äf‘ŽåÁÖó㬈Ú5ô©éƒ’\õ ž;ÝÁz~…´ +ŒU[35ùSS˜û 'ƒ½(¬~S’›Ø“Ç{[Œ[Ì,°Ïû0fÕŽ²µX¨ +ŠiBµa¾Í +ãzµIͰijŒzZD‰T + ›&Àœ0Þ[*l»îa¤>ÂpkŽa5{*LÙ»når`²[5Óì 5Wööò|Ø;Ã6ƒq½Zck&´•ïH°U'4i/´š1™¬]Xù<ðNË=Ö.žW{£6HM+ mW*[…e}e}Zµ…¼XSÂB +fØÒ`7…%̘!ÀÀb‡´’³<2ÂÀ`ôDØâ0NÁV*,1,µâ]Ca½X½… ÆqQ’b +ø'Âø™ Âðp°›Ãx0°ÔSpwCx³Mà¹0î÷v`ü°Z§z¸qBØÇF +#ùØå²ã÷µQ¾:/lÍ¥ÁêÌÔ§sж¶–êôZa…ë•mõ"ë"Ð=ý‘M;=€½) *L8©ÈÓ"hVì0€pòÙa5.&ËŠ^yiÐ2•åªƒé`–‚Ëߟ`òÔZøÍG­ç×ÆYµk(LŸÉS#7=vºƒ +{I«Àê“‚IªBjÒJ +«ßUöäÑ£¯Ãdo™öyÖXKªúвsKà?¬MjÕYFCZ§¥Ð_¦„ñÞRa[YÏ#ŒZYbÍ€ìJvX+Ù,0yd캕Ë#yO¡fí&z•Ì77ìa­uàÚ¢GÊdOÉÆDÚÁ´¦ÓÃdBûÙZÂÂbÜÂæ„-`$°lÑÃa¨×‘ìöŠÉßM+ ,v%Ü*,ë+s…ÜÇŸaÔgùïÃB +î°›ÂfÌ`à Ÿ,ïC[e†FsÀ‡q +®°Ra‰a©50ÂìˆCÜÁpJ˜nš¦‘ +:í. ¾Àü¿ Æó‹a|ŒL +Ó¹±­d½§Cêšv{ K=ÛÉ=Rµ&o½pB²» 0îrìï`=Ì +H +£>wz„é(‡©a+0¬ðA2õ鼃IØ`¡hO€ÀÞ,ÕéµJ¬^}:{V„# Ã4RZÂ×9 šHê]¤Éa¼i:¬ÆÅdYÑŽöh0 #“Ân?Á´kèS“cjEåبIç…­çWHk‡•ëÑãïO„îÀ Â^Vê“›Ø4ùÙÿ §…԰ز†\2¡qŒãž û¼ k,Э%y¨aè°»¾é`ÛU`è0òäá‡öŒ/dë¹nš—ó#QØË@ÃÓ]L“Gaï Û†©l\i¢ +q—¼Y~…Ñ´°U£‡Îk§ø‹`õ£ãÀ²Mh;œá† +£Ya 1l«°LÖð¥<„‘ú-œÂb) ,vM˜13ª( ü¤D Ž»Uÿª°´‡aLI`áµÍ[Æ)8Â’,e½ÓS?·dFÐx…à +þÙÁô…˜žì¸n!R”ÏãùÅ0>G–z¥æ0½‹sÃnç»DX¢6ÄXv@÷ÑPIœ ƃìcÓf$н †,åå: ¬4X½‚™l:; te±j…K:3,Õ&¿à +FÖEš‹záv0xìôö¦0¨0é©ô˜ ÚMåÁjªJ–ý5in±x€…à1,lšßÁ,ë‹)*þY`vM‡æ™°õ|¦]ãLÕ1QíaqúÁÓ`°ž_!­« Ûš)á£ß//`‡…ÏCø}ØéìEaõû’ÜÄ;ÉÃ#¼ošèñxØç}†Ù:–”ÖHŸ¾ÂpfX«èÖ’x–ÑP3»|D=5öóGMk›æùu» + Ö¦3ÅëhÅ¡V‘)aÿìa×­\ÎŒ¤JZÔ»çÝîŒ~‚¥ÿ?LºG„½3¬µ\ÛJ­1útö ¬Õ#Ø»æ‡ed8U0$dγý+›¶UX¶°ú°¸jdéÑS䘌ðÞpž«›f€Ñv%TX‘†¯«—ÜH=þ=˜~îTì×`!3li°›ÂfÌ0Âüä½2ÖAbT”KçÿúTØâ0NÁV*,1,µ‹89yø³Íëp†åß„é¦i°ú¾4yÈg÷ŽüŽOL`½¬,=ÆóK`©ÚÏYkzFêl¼Ÿ²H› þéõú]Øm€]",‘|t}i£[wÔý.îad? ñÈøM÷û=ŒF:Ä$VÕ°ñ^Ž°^äkÿ…ñê÷akÍöõw®WöÝRh}Çlòýp+u‚£uU­Wûùü:ì­ÁRmò+èZ>®tˆÙ Â°¬DN/E˜Õ‹ÿ'YŸßÿvúÖ6ͤ‘Ê/X8˜\{>„yšÎõ2®¿»ìï˜vpnø—ørÝR#É°Û@¥R™ÛÏô¼ÿ{®B—¼ÕóÃ^Nß»=ÃG„B!nmx"æVŠÛGk˜è"¦6dOd&¦ú'Àî lQ°Šÿmá6ùCÿ €‰Lì8ö:4Iõ/½a:þ캜ÿ˜\šXö l“µ´oösŒ‘(Èä§Î`áa!h¡;,VW€åŸç-Ø·ßû¶&—æå,`Š—¦æbd¢…}(ˆaÊp–ÈÍðå¦Z•ìV×ûÀþÙ»êAFš÷)†>Çì÷áÉíÍÖÁ&F â\ÅüPÁV€}¼ì¡`kí`Ðk,La0š+}îÓ¶¹aæKóÿ¦Ù—¦µK3ž?ÿÁ¡‰F_,=Ç&whÄN¤>À*æìK°Óé?¯ƒ}nÀì “çeY¿[,;¦FåãÔZbËü®¸æp&°ÍYÉWùƒ•ì1€}¾ +fé1€ —&²±{€ŒÆœæg| [,74¯÷jÆ°Trz+ØçØ|·´ %¨"@üóæmª¢|ù?ˆäa7£¼h`u£Su°Óïƒ JþktÅÝBviöz½2ƒ?®1Î9RrüŠÙ’…‡»¥¿2œ ,w°ÌÕÀNGƒ=_š^ïM¯>Zø¸EbÔã)6[?nèír±-¶ZA[À¾¿ìqm`¨÷ÈDGRÙ¸4;æ<šñ>NW@{…9²­æsf`ºÆëí]`{õ¾²•EâA’VfsK†í¨ŠÞóµ"&+`žŒµä[€ýÈõ`O-X«û°Åé‘eÃEÚSÉ´éAɽjQkÍ`Õ¢¨n`ZÊØéó8°©Þ[ ª‡cáA(KÊãhQ3i+^Ãb{oÒìЫHÀ$BØõu°­÷­,¢z$ÍvÕ̉1Fd=·-h⾚c#CÙ·´žl£WÑú°çzeQ:Õ¸¡í(3ÕB–é™ÖX|ˆtäˆEO½ZàÀJ‹€-ö_€=ŽÛ+‹¼^tC×Lž÷¥¸c‹ú u¤*,™O±Ã22y²Çñå-˜BBOK4_|ÖýŒ¼âÎ\Σö8l,‹ÛEÖbQÑ<ì{ëð¬¯0nŒïÍ•WL3,íÀW¹Zìqئ,¢S ‹lŒE8ц,–õ\··h|Š„qX D¶5fû9]´_§r$˜uª_=ï±ÈÖ\(Ò£ØÉcŸ²˜››Ç@¨†µ_« šbÕ5†FÕ;ðìÛë`Ã"ó¼_5ï#=àDscoKq“–ýk…Ñj‡Ë jýÅÏëX<Å£ýó»çØW`CÞWQM^ÔêGY ùÀDÔSn3—™¢ÅûîΞ“±ÅÚˆA3äÈÂÓ~>ìiCGÞk,Zz$Ÿ†HC¢Þà[ ¤n@!Š-N¶Øl¼Š}Vƒ·´oûUñ/ïÀG€íå=bQÓÂYG%ÞɤâP ï&u/²[1´„¦èG‹§½îg+õµâ±]dOyô°î êQ¢‘'ì7 +EÏÃ'$-(cû'.Ö;";Š_íçWÁZÞ?î‹HïUÙ¨øXÑP‡õû°è÷ž16‚!¢föbÙaiÔëéñ¹½È<=ÚÁ‹(†Lv¬(–û9Ç9cÅ·mmVšW¶XŒXdÇqkì˼ôèC¦^,vaåâ`™œÄ§D_p÷e‹L=ÒÈ7#¼-#Ö³ãí`ˆÅqÈj´]g¡—b<ý¹6ç ÅÀ"øŽH(oYFL •‡âûù_b±Ùmi^lϽé‹«ïgŸ'ŽªO±ï ΢óåN”c,FL–ûiÿ9¯±—Á$OÏCæ^ô¬PÝ+®2í6¦{v’£Ç8RV'b‹ÅˆIvØ5æiÿØs,> ™{±j»“ñR,ŽùŠjoºðGí$‹€ 4ü¡èo™¨[¬Øœö¿½Ÿ¿íÔàí]/hU²iŠ-jy+^zƒýb  +9É„ɶ‰m‹aÄËŽ/ÓƬyqÍ •Á<™(‚ƒ£†øTÅhøàŠ£™` ÛY—ûˆídÇk`_ ÙàE‹ŒZu²7o¼.ST*_]‘øVÃÀ”²_­Ø#«9ÑÃ^F짎ØÙ1C^ü¸K.–u!—LžT£¬E֮Ŋ[ýК¯™•í×Êc M^$,á¥@&FØ÷-ö°/N’UÓ.ËQ1T’Ü—š/:në[á +˜ž Ñ¡Ûylj¯‡âþý}¼¨ñ’ų{ +d‚¹Ó8f.çö­)ŠSĮ̂TŒO˜W¸ðrxÿû ›À†! /^FÉl¬J"Ê‘lÉ×R=³õy?¿¬Lö«À„#ª¾VÁ܉öÓˆ½ +¶3dîÅI2™1yZäÚ@.²SbÌÝ9†,Ú %UMÕÒµŒ‚mœ8^™¿öÔÕ,—¥jJ‰&ØèÄyÄ^Ûóâ ™ì2ÍéÂI +–µu¯@k‚qÏ~¤tZ‘—C±Ú› fÑ™xˆŸÀàÅ£dËr•Òm¨:D©`šg̹ÌîFåBÙHjÄ.X‹ŽîÄcÀž¼8Iv¿)™>{ÇSE +(£ÀhÔÁHÍ*IãŠGãÒ/¥#ÃÅòìÄ—Àö¼xÚHæf´gdtµè¤ÔXÎÖGtÍP.9JJöß“1¢î0ì‚ N|iÄö¼8KÆYͨ­‘lY«(ZËÄ3Vr2ùq±àI¡—ŠÑî‰ÁŽpâìÅgɾW5#äÈÔm"š" TŠgb›1»¹ŒKQ­ÈKj\òŒ¸Þ-M0‹Žƒœè`_Höã¦f¤¤cæd‹â”>\YdW—qÆôFI–ø˜4ÈešK‚£®‹&ÇÇâ‘ÁZO<À‰Û=I&õÃÍ(cdºhU4[Óšˆb²<ÍXBpbKÿ +¿_œ«h~xrx$î:ñU°Á‹“dnÆse %£TQaE« +›™b„9ÏXh&¿Ò?¹ä=9×ÕÌ’£ 6DÇ‹NÜóbHfĘ™6GÄyÂI%òÙK¶¯x¨ÐŒeóÙ_‹@”«xQæK¹dÀ4Ñ÷{Ù‰³ɺ+;™$çE¯*ùV´0 \YŠh"4Ù5[ðJàPÍZ¢$7—&âV°):^ë^´)û+$Û^@œjëKõ*Ö­âQum'dË"¿U¬*6\2ßóå\ß;×épÁ/Ž’vÈnyØQ®C«Æ†ïÄsLõ’¯ *±c ï‚x‘<®Ì×ú~W3âÁ‚m$ó`3Z2Ù‡’Iê_«Øq©¦P¨T"Š¼wÁt‡¥"ǹd¼(ßä¡—r逵ұŽCÀ&É,?N šIêKôÓ½È'C«Î– Vî{L¿MÕ©¤ž rÉxÝ’À\“]°#œ¸'Y3£H'“;’£!Ê«Î>ÔjɈ9>ùC`]äŠï2c×hăûB27c'»‚ v\;š±Ix”µ…½æ=Z‰@Ë"_‘5«`]Hä’õµæ»æ¸tÀžx`6K¦É¨ÒÉÔŽÍÑVaƒnŒà¨5·GÂ7°b•„EQ¬EäúXu/w®ÓlÄ#ÛJ6šÑÈ|Î>ÔŽí¦l€S½j­fD @- VU¬TM.ìåàòÛì00•l2£‘E‚„h6è¶@®$ñ@2ŠfËÊé&bDZ.wþоáó5q.ؾd[2/Ž¶› +'£¾öXÖ•%ZA,™-År¹¬o8}Åu ØWdšú?›h†&Ù¶+žºªu»E*¦ÛMeÃo„FÜxïXK¹î:_t2.3âç¡FÈL›Uiêÿª!Z A¶¤—ˆÀ©÷j½ßå‹;¾ìP¢•L™Ð°`Cãz¸Ow ö$Ù†ìd‚I ´{V'J\œ¹píµ#r#©jØ\KäB?ü#\{d'CêcÐT´@ 6…;ƒ›=ôëdPg„XÖù—××±FÈNã˜9Yر£5¶ àÎîÄñwB¹ ´ºÖ –Ú°åá£ÛäpÁfÉœÌÝhvTÑΆÖÙî2û°™Q”(£úûõº› DØ´¡1±º/ïÿœÛîÎì4)‹1œ?ÊÂ|9,ZË⺚¸ª2_šsOûÐ6Àîû' Þ}F« KêÊ\ÿ#–dü‘Òh§ nHeêgHïƒ/drˆbU¢º®a±k‰ÂŒ·™–ÅF4®m€CÝѹ/$4ý"ŠU‘µu]K»’ÊHv3¥ jcàPwòÿbYÃ9‘ ¾´¼*²T] \S2Mƒ'¤ï-èØCo}€ PAu‰,[—u-+ÈRì5mû$ðÈDü+"…Bï-feu-ê +çVO’Zlˆ#ÆÐ{ƒ zçTY «…+“•hRÚׇGü0°fï(T(+°øäm\¹,£ImÔáà—d-Σ°+U±Šu-Ó—P²@óµEœð8|ŒÜ)U‘ÕÄUå4îqc×ík!£‚j-Ö,+‰8á‚ì:õr”#:£2{«¥«$“a´ÍÉpéïzYê¢êVe-ïÚ™«¥4m :ŽÒø%qó)U\Ò²®”¶ÛéA•Í<'®Iôg‚òª"«•Ë––Ñ"ÎòÒ„u¥ú]…•Ðâ ©l +7•Ø”QÙÓ·ÍÝ^[ «oº:O“4Ê–Õœ•Ñ¬ÍêfbÖå§]#÷IÛÃ6ó endstream endobj 140 0 obj [/Indexed 108 0 R 28 144 0 R] endobj 143 0 obj <>/Filter/FlateDecode/Height 984/Intent/RelativeColorimetric/Length 30581/Name/X/Subtype/Image/Type/XObject/Width 217>>stream +H‰ì×÷[Tgð¸f×5‰Ù°Ùĵ'ÆiAŠô.}`†2‚ô&¤7E±¶DÿÚýžó¾ïmsï ˜iî3çydæG?Ï÷œï½óÅñ‰O|âŸøÄ'>ñ‰O|âŸøÄ'>ñ‰Èœˆö ÄsÂo¢ý?úëãoú?ÐB}¶¸£ >?Û1TŸ“íجςöIªØ§Ùþÿf3Ÿ툨¸h ìçX*\´ 6ó *[[´– ¤:i3hѦ˜ÆQe‡²ÁÅ(͉HeµÅ¢Ìž¥ýç¿´[ÌÉìXQV\lÊìⲨþî7V› -†\¶*”g¦ÅŒÌÏebIÂ?üÆds-F\ƸŒ*sŠÇŠó§Å€Ì>.Ë(2Á¦ÓbEf¿…ˈú§qŒ6[Z”eÎq)–‰tZŒIg¢ÙÈ¢ë²aU§mGáÍ,‹fdN.¥T_ÙŒÂÙТ,³qé,–R}í7 +§ÑeÑu©¸Äméa)Õ7–Q8 -dþ.c\ZX +uÆ2g ™dу9¹Ôm‰°tÔ·–6C‹™Ýy¶Pc)Ô¿,£lŠ&C2ë2ƆKÝ–`IÔwbä7e“4šUñÈìöP».K xþ-†¿+› ÉÐL²hDfu©ó’×ed±Š=ßë#tlÓi¶²ÈFfã2®¡‰E*²ü‡ç‡ħÂIšU¥È¹d\f0?Šá4ÍIÁÈ‚º³tyÎê#x ¡ñ:j2^FKDæàq –R=û_šsbè+ë`cšM—ÙF]—–XJuîÜyž .ð'ó`´„“L-c„#sv‰5”qa ‰¥T.\4 û`“4 +ÖQÈä2F:2ã™_r ).ÚB,!±”êÒ¥ËÚ\ºt‰pŠÆ¡ Ä°ŒæbŒ¼‹òÒÎKÄE[È,¨êÊ•+?ÉÁWÂ)šMn£¶ŒŽ,°‹ÎKÆE·²‚ŠL?c®òà áM†Æ²3gÔ2š" ?Ìâ:ip}¥¹d\’E*"ý‚¹FƒOÂÁÆ4š’Ñ™9E~X—dg²ºJ¤_1×iðI:²&C3Èœ#‹ˆËPÊuÆì,Êê‘~ÃÜ Á't°i4?™)²ìb×·ºKgQV׉t“HƒOèÈšQ¦Á¾ŽpdöE¯»Djq euƒHIII·xð:'iJfY`®SšË°†³XE¦ää1ÉÉÉÐ1M†Æ2±Œªed–]Œ²K‹‹Y‰„JIIMM““šš + !4%ã3sŒ,ŒGæè:mva U\‚•L¨ôôßµIO‡NÒh…ŒÎ̸ŒY$vѦèí\b m¡d¥•q“‰ÁGFp‚†ÐX†;ÙÑ2#‹Ä.úbÖð—k´…ÌbUffVV¶˜¬,Òe0 ¡a…L,#G&ŸeÚ.†v4jƒÏ‹® [(XP•s“››‹¿99Ðe ¡‘ŒîìÊe^Fcdæ] ̦8Ôï/~ß0¸._¡5üí¶P²²¡ÊÍÍËË“—^ÑÖQÈè̸YävѶ¥K&\祋®ëVrj³ ‚© STD +òó˜v;ë(2ËhL{F‡fó`¶¸P‡t^t]—`å—ˆ)...*´¬ÌŒß…ŒÎ Ë(#Óaa>²à0Í…ÚÀy%&q\™Y9wòòIURZZVVV^^Ž¿e¥%’–“M2ÜÙMÈU-2ÔGdŽÌ±8ì]8/¬azÆí¬lJ«****åT@WJ4Mv+ñ&-£ŒÌº‹êÈB ^ˆº uHç•’–ž-ÌÍ“¬ŠÊ»UUÕ×—A]ÔY³HU[W_ß §ºÐ˲nó2j‘É]´YÈÛ#PÑ«3».\XC\WaqiYEeU5T .WccO£ËE¶êªÊ +¬£é‘Ñë‡eÃÔŠ> ‹â*+gVƒ«±Éíöxši<7l õXÈ»äñ™i‘]Ø:ï·{ÛZ< u5XFYZŠ¾‹8²0Âœ ÑXôFWºtá¼h [Ú˜EªÁ¡¡až¡ÁAк»Z[³»±¡¶š"£b”»¨ŽÌT‹!….DýF/×®›]8/¬¡·YP ?¥y[Bëð¶6»]õ2²ìL±‹êÈ µ(a'C öæËE/Ìøý•(úP¹\MXÃŽNfA5:6>>mp¡u¶{[=M*2ÚEô¢:2´‡ªEc߇àA´õ3»nñó ®²Šªšz—»kØÕÃ,¨&&§¦¦¦ñorrb|läBëíºßÞÖ¢"Ë»(ŽŒÛCÔ¢¥ïÿ:Ì©ýŠ^¹RŒ.:/¬ao?³ šöùfx|ÓS“c£­¯§«ã^k³ˆ¬»ˆ^¤#“íZ Kß±ŃÙì¢:Äya †˜5í›™›{H37;;㛚DhÃ}´Œ"²rÞE<£oÈöW-³èñ»ï‡|_äBmttb ‡G˜5;÷p~aa³°0›o¡=èí¾/"«»H…Ïí¡j1ô°€…hSôø]‰÷^Í…ÚèêÁŽŽONÏÌBµ¸´¼¼¼‚KK‹ !´‰Ñƒý=hFDV§v1=ÅÐT‹¡†yóýN"=?ÀàÊÆ{T)ß—§µÑÛ5œ˜òÕÊêêÏêÊòÒ¨ë¹=Tß«YaÇ{óÕ`Êåí.œ×ê:âÚëÕþÁákžÃÃÐHöhc‘MOð.âÈ í‘h;*˜s!~o)Dz€ñƒ¹–]]ʵ¼ºñqíuøúÍÛ·ï0oß¾y}¸ÿ +²ÇÛ›k+‹s¾É±á>2n»j€}Ø1Þ|å/ñƒ«¡‰\½Êµ¶±µƒ¸^ëÝ»÷ð¼÷ö B{ñlwg‹"ã]¤#s»¨= +rìW'Ø'ÿÒt.D›7_­è¥«¹ ®åÚÜ~Lq€õþ??|øøñ㇂öæpÿåógOÙòÂvG†'µ`Ùê ZØÿx/ÓÞ¨Î3 Ký‰ú¡U?´ªÔôSÕVm6ÊÒPÒ%Ј••Š”a P‹©6xÁÆûxl÷}ï6^ÆËØƶƒmhÙÚ@ózßÏûž3çÌbC<Ã+péyžë¾ÏÊB h¾6уk'¸ö™\/q\ÀÊÌÊÎÉ•—“ 4!»uöôÉc‡àÈh-ØløÞ&jí`Ï!D›èU€íع \L®Ë W±róòŽü|‡#hB†eÄȸ‹8²=»ah‘¾×`¯HY4ê}¸ÀžIˆvÑK0ïÚ ®C&Wâ5Œ+ƒXŽ|gŸÓ™Ÿ— ²´ÔdŒ,6:êÌ©ã82±Ç6ñýÆWuõ°©zÿõÁžOˆl¾>Ñ3˜wï×QáŠWR +Æ,Pñä;@v# #»s^Øõ¾êTÒ‚Õ™ûæË/­leqø ñGv!Rô °c'NŸ%W¢ær•`\µu  jiq»Ý--ÍMB†‘åçòÈ®|¯z«¦~ȶZã° ñÇv!Rô °§ÎFÅÄ¡oW¡‹kX[,·»µµ­­­Õí&Ymu%FæÌ“#‹ÿZ” {1`â° +ñ§v!Rô °Sg¢¢ã.Y¸ªjê€ÕÚÖÞÞÑÑÑÞ´–¦†zŽÌUàÀ‘Ñâ{&´{=œ`Ï"Ž Bܪ„¨ E*îRBRªp—â¼0®`utvvuuuvv´·‘¬#+.täd¤%'R‹ 2V{ëuõC°PfÇw±ˆBT^Xt,¹Ò .¬a³›X]Ýòº„¬¹#+/)‘Ñq 2$´.‹oGÌ?™íâ° q‹!D=‹TµÔôLr•Uà¼8.bõôòõôtwu´·bdµÕ¥EÎܬt‚EŸGB£z€ýàûß[#Ø*æ/‹ÿ¬…(¢gḖ’ž™ãP\ àjïìêé½y³ïf/É8²ºšÊ2Wíqí +ƒ Nv°Õ,@Bѳp¤¤«ÀUZQ m¸1®îž›}ýýxýý@#YKS=ÀŠa‚]ŒABÛÀ6þj}¸ÁB˜Ÿ86¾ö¦]ˆ½ +æ´ “ çÕqõõ z𠀬§»³ÝÝÜP‹#£= EÁ>F 3XÅñŠŸ8,B„è`àʶpɸ=ž!>gpd]­-uÕ°‡€Åuæä±È…>°oùÌ"³!ŠEô(Ùy&W{g7Æ5èÁò ö÷õvw¶¹±‹°µ˜l‚}ˆÿ–°‚1Ôù‰Ã_ˆýõÙyÎ"ÅÕ*\ƒCÃ#£££^|#B†‘aqd¥.'ÁQ=XöÂ"ú˜U¾†!âO¢g0ƒ«¤>$WÏÍþÏÐȨ×;ÆçõŽŽ yúz±‹<2Ñ"ÚÛ °à‹h=0Ì"ŽMÇ6‡"þT z fpU W¸0®QïØøøÞøø˜wtx#Ã.âȪʋ–žB°³ÿøôÐ~‚mXÀÀl‹hM0Ìf“Ú±óo‡"D/Á¬¸Üškdt T·äM€ld#ëar”*&4ËbÄÀB-¢ÿ­ÿ¥Ñ8Ì&¥…Ñgæ°p€«Iqa 1®‰[““SSS““$Ã2bÛah±A)°`æ°,¢ªˆ–û5L‡!Ÿ`Åe•5õŠkÀƒ5$ÖÔ´< MŒc=ØE´(`©W/Çþÿ-ûëŽíïìðùÌjzUͳ4- +1Q„XàÒ\=}ä'ÖÌÌÌììÌ ÐnMŒlG{ˆï}`‡÷$`ïünÓ_]ÿó5‚ù L™CE³¹ˆÖ3ì=‡ˆ Q F®¶N5¯1ŒkP·ùÀ6=ykÜ;2Ä#kki¨­X:ê}¤À‚›Ãºˆ¬ˆF‚ɯŠj"4D"Dklñqq\³·çämfj’#ã‘A‹ +,CÀÎ…,p`¶h6QUÄujdþpß'üµŒbCDóÑ+®nryÉE¬ùù………ùùù¹Û³XÆq/Ž ö X™+Â`¶YÍa."Mÿ‹ \D90Iæ}˯¥jˆüS¡è[Ú:ºáÃaï8×X _ðmŽ#Ã.Â]ô=Ú‰²ˆÿ€XsøÑ0½>0Ìü“&Åæ+¢on5¹¦¦1.`Ý‘´yŒ »ˆ#ƒÝM–+`Ñá =0eÍjQ¥Œ3Œ¿`ñ ×(4_‘\½ýƒÃ£ŠkX‹‹KKK‹‹@“‘Ý…=àû°{?`~S‘ѬŒÈETÑw`Lfi‡b{—Á53‹5¬ååeAÃÈf¦{ô¬Õ-øz’ öA¸ÀBLwK4Ë"jÓëÓ¦‡"¹ú‡FÇƪ»x@[”‘a½CùÀ.FŸ;10ûÀt©7Ìñ“Ÿ1šÍEDEÔ &ɬšDopá¼¾¸C¬{|@[R#ìÑÛÙ&` ˜.õÚ*š¥r¨Eüø Q ɌơÄ!6426¡¸0.`ý‹hËKÙmÙ˜,-ü`-1èÀ´9L#rÅôæ±qhq ÀÀ59=;‡óZ"Ö¿åíî2F67K°!ÀjøßQ0³%˜6£y3¢Ù\Ä“Ÿ©ê«’¹¢šâ€=#^ƒ ãÖ}y ãÈ6-Zdõ@YT` £ÏGLZ¢ÿÀ´9¤#J4«E<ªþ-U‚ªÆA!2À¬\÷ï?²{w—±‹Ó“CB¬Äv$l`!Õá70)õª#2šµeYõ)qPô&±ÊSdË›A÷xQ`þ{9ØÀT„I4‹(¦g‚UÖ°qP 0Í…që‘<’Œ»83ߣz`Y‘ó Ì—a˜2Ç[ÊF4ŸÕ‹Ó«£8 DŠ>Ô\=æ#Fv×4À +–f°ÀMu˜*õ4Çß­‹xC-¢q`ÇÌíypñ¼0®Çÿô‡¶¼H-`>°˜ˆ€ª#ÈÀ6½ýÇ­Vs0š-‹¨Œâ.Ìë`ý—d22ÁÆP=ºQïk_ ˜MF†ÙFs]DI°!-ä—âÖ—|@“‘‰=àû±€uD̶‰>uà?Ì®D=0›9R #‹Èƒ8|\€zòä‰"“]\ºßûÀ*ÁÞ[3ت›¨J‡¡Ä€éh6‘ &®{×ý¾äÈàẼzÿ¢Àô&¾äÛDÕUû…msèh#2Áô!¿>⸞ݯptpÖ£tÐ Ó/LˆšëÝ®ÌM0Svè_ŒÃž¦³ò±`b_At ëi]¡ö+"Q\˜xˆx‡‚%dô‘¥ ++&;ðÅ&z¢œÎœ‰ô±¯Èè@KDéàH4.Œ"±žãLÝB½/-˜Sv¨SLùb˜Î”‰úKä6EÑáxaì*`Ëð9=JVlï0²CL1`ùÅ|üx:S&j/‘£ƒZ"Ï0qa”ø`ì*,”²|†ýÛ}0ÇìÀk+¿÷DšÎœ‰ÊKäè ö«^½ÃB:öDä} 0ßÞofÊêS]eíCa??˜¦³x‰b‡3Et\ÍEé@I¤ ±PÈJæ”öz(*ÙÑ0ã‹Í]‡él~‰2:ô ãûzñ€QÞ£z`!sŒCÑ);Äã°çbïðsÅKäHä‡H,:á-º &ǧ½ EîFvp³§)Æ_ aÏÓYÏDz‰2:Ä…i®òÊ`9ÙÇKÆcLI{-©«ÙÁSLÿb<Í/‘f?DB½d™{acå ˜S(òxæì £)†,¾ØñìÓJ&ÒKÔ/ì%ñ9ïKFÅÃiŒUÌ!½)Åx¦f)f|±‹øb´ˆÑK¤è &]î„91#íõBE¡H XŽg-;ô/&¦3g¢éÂXf˜c2í[´–…ŠC‘v±EK¢h<‹ì )¦1šÎÚKÔ].`W/»†-Ó0ÙE¡2B+ ²#Cd6ùÅD&>°"×°‹oVò|ÖƘlŠœö(T2D(jÙÁX~1ý Øs–g˜1Æ´´G¡ÒCñàÏ—¯ˆ)f|1íÂXFé¡À®»¦Ìç¶ã1†eL¤=*Qí=q2GÍý‹½t‚=¡…Ì0*´´Èù,ÇØœùXÆDÚo¥P<ª…¢’¦ Ó>™„Ý+eX9çªh.4Ÿ1Ʀϡ +LiŸ¨¤=íb7ó´ì(p +àzï.˜¨Š•>¬â“K w{cŒQS”i¯„¢|‰EÖ‚9UEnTr£¥ó™º=¶LcZSÔ`Zv0ìÕ+–Y†ª¨7*lcSXŠã¦Hi¯„"Á^½b¥‡åa3çÒ6¦šÏÙ £1&ÒžB±ÐF°A€5Ãx>3泞öœEöÊš0£ÜË,«¢Ö¨ ˜œÏFÚÛ +6A…i*ÇL{‰6‚-\$;°3•šö–„aÏ4Á<`TŠG.5ªûm ›*`+£r¿ÿw`Yç³%aŽOÑØ3i“0YîÏÛæýßÁ4Ë, ëoìcÀZìsÏAÞ#ýÆöåÂÅK–¯üzÃ7vüdŽaõ7°þ€ù6SmSa?äÝ!˜ÓBæn˜Ö‚ß«ð³°)€-Z²|`ßnÙ¶kÿ#v‚U¬äö…÷ß±ãûŠa붰ìœs6Q ®R­†€5¬C6°(†¥¨°\À~´¬l1°Ê +¬m‡.=2ÂwŒ€ED­X½~“ûþò ûÉ°:õÖ’`½ 6° +,`Çv °[wx!³Œ6Íúš +X?› XhDT¬ +;]¬ÈÂ06pÈðÑc‚[»zݦÍ)i;÷fv„a!{¦î-n…ý€ÑBF°ª5j9Û󺰗n‡É ],¬MûÎÝóbØtÀÂ#cW­Û¸9YÀ²NŸ%Ø[·mkØ´ÁzlT@Ð$ÀBÞ*X_,†a©ËìÂ¥+׬ {ç]VÝ6Àkب€@À懄/‹YµvcbrêŽ=‡2³N½€…ÌÂ0º2 ™GÃ& +Ì°Ù&Xº»yû®„(°"÷ÃÊ°÷? oškש`ƒ6 °°e1qkã“\Á ˜>È,£z¯ÀZÖ“`>þ 6ÃNœ:c‚) ™8É…ÌÖÇ‹fØVGؽ-«R½&Ã4i®Á†úøl^pØÒè¸5ñ I[·vT…Ý·,¬|±0OÀü›¥Âv§$ØyÀ®ß̳¬±6°ÅK£W®Ùð`û;i?X] ëØ°ACGú›ØBg6MÛÀªÕ¬M“aŸvìú™¶œa[vÜr°2%À>ìcÀZìsÏAÞ#ýÆöåÂÅK–¯üzÃ7:,‡a?äÝq ƒËŠ°ú› XÀ|›©À¶vÄfÚ4­S6ÍŸƒMlÑ’å+ûv˶]ûØ +V±’ ØÞ#|ÇŽì+†­gØ>À²sι€é27Áʺ€Q ®R­†€5¬C6°(†¥¨°\À~¼ÿð'«Ã*+°¶ºôlÈß1µbõúM +Œ6M‚Q½·¬N=‚µ$Xo‚l†K#رìÓvKƒ=µ:Œ6Íúš +X?› XhDTlñ°Çö€yè°C†؂ЈÈØÕë6mNIÛ¹7ã°…ar oš€U­QËØœ·Ö¦}çî€y1l:`ᑱ«ÖmÜœ,`Y§ÏìÆ­Û¶‚5lÚ‚`½6* h`!%Á +žÚÖ׋aX*Á2»péÊ5+ÃÞyWUw€ ð6* °ù!áËbV­Ý˜˜œºcOơ̬Sg/`!Saj§²Œ®ÌæéÑ°‰ól¶ –nÀnÞ¾ ˜^ï5™ûaå Øû¬6`Ÿ¬]§n€ fØ4À–ÅÄ­OL²Œê½k XO‚ùøN,Ø ;qꌻ÷à¡uar!s„õ1Á¢¶Õ vßú°*Õk2¬A“æl¨ÿ8Àæ‡-Ž[Ÿ´u;`Gí+_,Ì0?Àf©°Ýé vþ?Ô××SYÇq}XKתÙÇ©† ¼¸µU&¢‚s%+ñ’1ç,™K¸äœQɘ &P2ëš•`XAk§Ìó¼¿sºoÓ}¹À< §û?øÔéîóûö²·_^0)ì`áÑñÉ9…«¬¥£ëá“g²‚ÍâaVÖ€Ù»¸)üwvN ì±Ó 2æ`º†(M +[je½~v0…•QØ}æ`Æ€Íl6`–¶ÙÖÞÙMáÇÁ”ªäôœÖNa=ýoä›gbÎÁlóìˆVØ]Öa¢Ò ¶°0¥* ° eUW«oÊ +6mº˜³«—_`gÔqIéÙ¬¹ýÁì#`$ÈÈ +þc{ ùÓ0ò°Û*%PX5Öýèés&îf`“§ˆ`z°íŽ;=|;“š™WTRqùzÝ톦ÖÎn”&`o…‘#“ÀPšsLE0oÀŽI`µC°^Va“†`?ÿB`†€Í!°e+×æ@a‹ˆIHÉÌ-*ûïà¦adÞ‹`‹Û@`îÞ{ –Â[;ØÃ0>È4a[$°x ++—#LGÏ€Âæ›.PÃ\ܽý;Ÿ’‘[X\~ °zö²·ŸeØÔa¶€);*†]«½E`]"_š‚ŒY˜‰v°ðèø䌜‹€ÕÖÒÑõðÉ3YÁfñ0+kÀì]Üþ»;§öX>0]C”&…-µ²^?; ˜ŠÂÊ(ì>s° cÀf60KÛlkïì¦ðã`JUrzNk§°žþ7r‚Í31ç`6€yvD«ì.ë0QiŽÛX˜R•Ø…²ª«Õ75`ûÌ,lÚt-0;gW/¿ ÀΆ)ã’Ò³Xsûön`‡}wØD-0²‚utõ9˜1`+V‹`'X©ö‚À´k°_E°%+V¯ÌÉÕË—ƒEÅ%¥eç‹`¤4{úäCfA`›Ì°Ã"X%Ýkn“Œ–¦±ÛÆÁö—(?˜º4‡Áv8íòô ìLhTlbZVþùÒÊ+7êîŒSËÆÆ_dRØoú3†Ã|;® kjë$°W}¯å[¼|ÕZÀ)ì`‘±‰©YyçKd 32[H` ÌÃ'p/`!Ã`ÝC0uɶUK ° +k °ÿ<}Î0 2LO¶Ýq§‡O`§C"cR3óŠJ*._¯»ÝÐÔ +Ø{Ë.ìïJs®‘©æ Ø1 ¬vÖK`´À¾}ûúyi¾~ùüé÷q‡ñA¦†Í7]@a[$°x ++דÿ‰1ÓÑ3Âl\ܽý;Ÿ’‘[X\~ °zÀº{ÙÛÏ2lê¨0`GÅ°kµ·ê[ä 3‘Ÿœ‘Sx°öðÉ3)Œ¬àìÂfñ0+kÀì]Üþ»;§öX ûÌ4L×À¥IaK­¬×ÁN¦¢°2 +»ßÒNa=ýoÔ°¡wQ x÷×À&Œ› ØlÀ, l³­½³›Âƒ)UÉé9ZaG½g 6ÏÄœƒÙæج +°»š°¡yÿ®ñ‡©WðOÿ¶°0¥* ° eUW«oØön@Ò-ôa +†±8fçìêåØÙ0e\Rz¶k¦°öžØD-0º‚uõ9˜±¹å’«×q0_ÀN°RöïÇO_ôôÉ fA`›lìœ(ì0`QqIiÙù<ì=’Œ™Û˜§oÐ>ÀBÕ°JÖ&GØ\c3m°DÀΗV^©®»#˜Pšú3¤°N»<};›˜–Ea7†`¯ú^˜(ÈÆÆ_dæØqVÂÁšÚ:å32³X¼|ÕZÀ)ì`‘±‰©Yy²‡-$°æḰ5¬‚Àë~ôô¹&Ș€Mž"‚éIa[%°1¬µ³AØÛ÷ƒX„‘#“Âþ)‚mwÜéáØéȘ„Ô̼¢’ŠË×ko °Þ×´[~烌eJs®‘©æ ر1`ÿc6I€‘ ˜!`slÙÊ5€9PØAÀ"bR2s‹Šåã»E[Øs÷ØXpDL¼ÖØÚ¡ûüõ+»0= +›oº€Â¶°S–X¹ö²·_€}‘ÌÖÁÅÝÛŸƒEXaqù%Àêëb6uT˜°£–ÌÁ®Õܪoléèzøä™ì`&j˜=…,œÀr +/Š`å›õ/ +[je½žÀÜþ»;­Ò +{˜Æ¼‡ë¯‡M¦k`HJ0KÛLa~€¤°tÀÊ(ì~K;…õH`¼ŒIØL ˜3…LI`˪d#¥)†Í31ç`6€yùíÞX˜R•ÄÁ®Öܼ+‚½dö·±`vήbXvÁÀªkn †½g†±¨£«¯ ØÙ0eÜpØ‹ž>¦`µÀè +VÃŒÍ-—¬X½0'W/_ÀNPX`¥Œ”&“v Ó0 ÛD`ž€,ŠÀòyؽæ6¹ÁHiÎ36ã`Û8Ø>ÀB£â)¬RÆ°¹l‡Ó.Oß@ÀÎPXVþùÒÊ+ÕuwÔ°W}¯™† ¥©?cdX¬vƒi‘ [¾j-`Ž»<};Na©€•p°¦¶N9ÂŒÌ,¶‘À<;X$åi…}ì“L` )l+Û XHdl…UX`Ýž>ì­ûÊlòLO¶Ýq§‡O`§),3¯¨¤âòºÛ M­Ý(ÍW½¯¥Ýò92 A6×ÈTv °5ìzíH°oLÂ~þ…ÀhiJ`Þ{“Xñ˜°ïLÀ& 0²‚Å°e+×æ°Ó] ËUÃ[;´ÃèÃŒ2l`xØÀ‚#bâ)¬\Ž0= +›oº€Â¶lwpq÷öìTpDt|JFn!«ça/{ûY†Mf ˜°£"Ø¥kµ·ê[:ºä3‘Ÿ ØEÀj8ØÃ'Ïx˜(Èd³²ÌÞÅMá¿°s–#=–L×ÀAFaK­¬×Ka* ++£°û<¬§ÿ #° cÀhifI`›míÝ~€<®T%§ç°v5ìÝÀ l`óLÌ9˜ `^€Áª»+†½×„Á5Þ0QiŽÛX˜R•Ø…²ª«57 ìÁ0˜ZÆlÚt-0;gW/¿ ÀÎRX6…UÖüêëó)ª,ã¸ÖÖZ:Ví¾™P%”ãÎV)HT0‚‚9¢%w ˜sVrºé&ç¨dÌ*HA bÀ™QÀùö9çÞ¾œÛw_qîý>unÕóûbXÿàð»É £†V°¡1³˜ƒ;09†•q°®ž^Ú`3õÀæ°UN›æá(e`2yRZv> {‚`Ý‚ýü ‚Ù!Ø6 ØIVÅÀZ5`ctÃPiš[Ú0°] ìÀ"dr{¨6.˜Ûëá Ø¥Y‚*-+¿¸¬êæÝz60Avò9Ø3]0üdM#l¦ZÁ†Æ Ì`NìÀäVÆÁºzzµaèûJl[åà´ `>R&“'¥eç³°'Ö-,ØÏ¿ ˜‚mC°€$`U ¬Uh0Tšæ–6 l;°™\ÅÁªaÃ##æ=Ý03¶×Ã;@ +°K²UZV~qYÕÍ»õ4ÃØCÆÀpil¾ñm˜`g5aM­…­\»~#ÀÜ1ìÀbT©YyÅ¥š°÷£Ÿ„³°YŽ`[Ì_z`áZ°ݽ}öQ€°<˜Ã*ìqSKÇ (Í!za³ç0# Ø÷ýþ’€] ‰W¦fæ•VÞ¸Sÿ@69ïé¡'ãÁ 4Í,¬ ˜`gx°:Ý0µŒ +جIØ?!˜)À– Øšuæ†aǯLÉÌ-* Í{¶`[ÌOr`a|XcK;‚½zK7Œ 2MØ,Ã*tþŒS 302Á°¥ÖËÔ0/?q0À.„EÇ%¦dä–T\XÀ:ù°1½°Þž®i‚ÍÕ s˜`§IØíÚû Íí¿¾zÍÀ~û¬›˜v `Qq‰É9…×X‚½û¨9ïi…-baŽÎsõòØÝ°Á·ÚÝB#ÌÐÄJÃV;:ož„˜ÃÊ1ìise°߀-Øb€Ù#ØvWO_Q‹U$§çLcdà¢fneËÀv,`§X5ÀÑ#Js*ØQ€EÆ*’vµ¼úVÍ={°þÁaúaßÿ¨¶ÏÓ'0èÀ.GÆÊ“Ò³9Ø3*a3uÀÐ +604f`–sp"`ç8Xëêéeal·Ð ›GÀV98m˜‡O ”ÉäIiÙù,ì ‚u A0;Û†`;IÀªX+† †KÓÒ†íb`G!“«8ØC}°¯à¢ ¦.M-Ø^ïi(À.EÈTiYùÅeU7ïÖ“°÷£ŸØW5ìÏ?~Ÿ{Èø°ùÆ ´a€Õ„5µv¨a…[¹výF€¹cØ €Å$¨R³òŠKIXƒÒÌÂf9‚mE0Ièa€…kÁ^t¿ê!‚lB0°<˜Ã*ìqSKÇ‹—TÃ@FÀŒ4`{Ü÷ûKBv1<&^™š™WTZyãNýaÀ¾ãÁ 4Í,¬ ˜`gx°:Àfq0´‚f +°%¶fÝ€¹aØq€EÇ+S2s‹Jx°7Co…[°-æ'9°0>¬±¥]06ÈÔ°¥ÖË0l–ˆaÚ0bÞS +302áÃ\ܼüÄÁ»—˜’‘[XRq` ë|ùê5ÀÞ}åÃÀE lî”0ÀN“°Ûµ÷›Û;!Èìƒ`V|Ø1€EÅ%&gä^ãÃ[ÄÂæêå+ +>°+†š˜BibØjGçÍ“°óS`X9†=mn£ 6ã°…[ 0{Ûîâêé+ +b`±Šäôœ0fÞ³2šaæV¶ l7ÀvŠ€Uߪ½÷ˆ…õÓ S¯àüsJØQ€EÆ*’Ò³ ®¬`ÏÚž cQ¶ÏÓ'0èÀ.GÆÊ5`]=½´Áfê€álhÌÀ,míW98mb`R€ã`e“°nöyll66ö™Z˜‚mÛ½ÏÃNL&OJËÎgaOXØÀð ûB¾PCAÆÁv,@zàÀ"Ô°*Öª†½ý$˜™¥.˜ +`ÅeU7kê’0yOŒ+Mã|Ø^ïi(À.EÈTiYv—j{Èþ˜`g9X)kjíXŸÐ`6v+×®ß0w ;°˜UjVž&lˆ€12ÊaËl+‚ùKB,\ «D°ÇC¥I3löfćíäÁ”$¬…vz2>ì_lû~IÀ.†ÇÄ+S3óŠJ+oÜ©{À‡±ó`ìð ¥ifaMÀÄ;£öfè-6A lC+`¦[‚`kÖm˜†Xt¼2%3·¨„5¶´ Æv [°-æ'9°°èøD°wG釙`ØRëe¶ƒƒ]À° €U XÀ:_¾z`„sqóò3°8+,©¸~»î~Ccs;*Í7ƒTÃæN ì4†%³°ZmØŸY©a®v `Q–SxM —¦ZF-lÑ¿1lµ£ófóØ•¨8ÅT°Éqš`3¦„š˜¢Ò˜=‚mÇ° €Ç°t€•cØÓæ6ÁjÀ<1ìÀb¬àZy5릆J“„™[Ù2°Ý :x`‘±Š$v«öÞ#€=§ö÷oÁöyú°ì‚««س¶ç]=½‚€ÁX404Ö;°Ë‘±rMX7‚|%æý4Ãfê€á¬†YÚÚ¯rpÚ0Ÿ@)ÀÎaXÀÊx°a~·Ð³C°m°““!X> {ò¬ujØ~ÿD •¦¹¥ ÛÅÀŽ,B&WaX•€afl¯‡w€4`—0,+¿¸¬êfMýC¡À¸Ò4^ – †ÝXSkÀú†&a¬lºaì!Ó[»~#Àܽ$ÿ¥¾¾š¢ÊÖ0Žk*KUçܪD‚r1Î\(HR1ƒ‚9‚’%u ©˜s Ó¤ä, f‚ $ÑQÉ:£¢Î|„ó®µwï^»ƒÌ¹bíþ¿z»özþ;a+Ócæ½`Vvök¶Áv +`ñVHÀPi +¶ +Ãö2°p€EÅ'+1¬Áž·´€‹ØÌYÌD æêá Øe Ë),)«¼[ýè©60ìÀbi» °ZaÃææí'9° Ë*ÌØÌ‚ ÃÖ;:oçÃäv ÚÚ:¬h„Ø´I`¸4¶Áv»¸yù‰ƒv1"6Až–•_¤¦™÷´Ã,mV0°ýì » °z€uÓ #Jóg°ã‹I§ìÆ­Û÷k×7µvvÿÞû`>~¢6gžØA/_Qða€]Å°<ì †SC+ØÈØ”YÌÁ‰€]X +†•ó`ƒtÁ¦€- `뜶ÌÓWÄÀd)©™y×XXck‡à`¿ü†`ö¶ Ávš€UéÂp©e´ÂPiZZÛ1°} ìÀ¢e)*v¯æÑ3˜æd4Ã,8ØÏCAa»-KVeæ^»°j {°¾Áam¸¦ö/ —&Àš.Ò…Iv^ÖB-Œ}¡ ÂÖnܼ`v +`ñɪŒÜÂëeìÕ›·ÿ ÖÑÚH ÌÊn‚íD°iX8À¢x°çÖ#\Ø^L‰a• ¬Ã†GÇ?ñV0=°™³˜‰ÌÕÃ'@ +°ËQñIÊŒœÂ’²Ê»ëž0­y>Šß'(€¡“ñ`dV¶L°sÿìÛÄ×ÏS ›¡Í`¸4læ-sÇ°“‹KR¦ç””2°æö.m#£†æ=[°æ/ = +°H}°÷C”ÃØ Ó†íáÁV` {ÙÓ+˜‘‰†-·]©†yûKBv)2.Q‘ž]P\ZqÃÚº^¾VØ °¿ÀEl¶A˜ ÀÄ;KÂÔ>1û‹ùÚÓ ³áÃN,6Q‘–_|S¸°%,ÌÑ`nÞ~â#‹àÚÚ:¬h„M|ÿN5ÌØÌJÃÖ;:oçÃävK†Js‚;ÙTÁ¦M[ °¥[`»]ܼüÄÁ»› OËÊ/b`õ‹‚YÚ¬``û&Øvû~ícë~ÝûŽ…}¦F”æÏ`Ç“ OÍÊ+º°€µvvCõ +6gžØA/_Qða€]lºZÁFƦ Ì`NìÀR0¬\ˆ°lƒÓ6€yúŠ‚˜,%53ï klíì—ßÌÁv!X ÀN°*Ö78,*MKk;¶X´,E°ëåU÷j=Ø ¦YÁ´Ã,8ØÏCAa»-KVeæbX5ÀZ¨…±Ã¥ °…¦‹taR€ç`eìÕ›·líÆÍ[æa§Ÿ¬ÊÈ-$a=Fõ0+»U¶Á¤aá‹RÃ*ìyK;† h`¬L°½<˜RX°™³˜‰ÌÕÃ'@ +°ËQñIÊŒœÂ’²Ê»ëžòa(ȾÑC'ãÁ 4-¬l ˜`çta]<Øm°ØÜùf°e¶aÓ€¹cØI€Å%)Ós +JJX3†½Ò‚‹6š÷l Àv ˜¿$ô(À"u`/{z釱A¦ ÛÃ)0¬Áìµp`F&f¶Üv¥æí/ إȸDEzvAqiÅuOšÛ„›mæ01ÀÎò`µ¬hdì#¹‚i‡Ùða'›¨HËÎ/¾© ãæ=’ý``_>ÿA!l st˜›·Ÿ8äÀ"ø°¦¶N=°ÔÂŒÍÌ¡41l½£óv ì"Àäv‹RØ´I`‹¶`«l·‹›—Ÿ8˜%ÈÓ²ò‹X=Àº_÷¾ëÌÒfÛ0ÀΰÛ÷k×7µvvCQ #Jóg°ã‹I§fåÝX°`sæéôòØÕ˜„C0nÞO9lºZÁFƦ Ì`Nì+Ç°ÆÖŽIaÃ}´À°uNÛæé+ +b`²”Ô̼k|Xßà°p`d³G°]°Ó¬ +`Ï´a(È¾Ó Ã¥imÇÀö1°c‹–¥¨v½¼ê^Í#{ÁÀFÇ?"Ø0uiêÀx + +Ø•hY²*3êÖÒñâÕ›·6FŒ}Èø°…¦‹taR€ç`eXÏÛ¾aͼlíÆÍ[æa§Ÿ¬ÊÈ-œ ®o_é…YÙ­B° X”V‰`Ï[Ú Â&Û˃)3Ñ‚¹zøHCv9*>I™‘SXRVy÷aÝSö~`ˆfØ¿y0(M +[&Ø9mXs{Ý° ­`€™l‚mØ´`îv`qIÊôœ‚’RÖËÀÈL?l Àv ˜¿$ô(À"u`¨4 #£ Æ™¶Üv%†íáÁV` Ím,ldl\0#3>ÌÅÝÛ_°K‘q‰Šôì‚âÒŠ;ꞨaýC\Ñ›ýS˜`gy°ZáÂlø°‹MT¤eçßÔ û2¾ßÁE1l st˜›·Ÿ8äÀ"ø°¦¶N L½‚Ñï0c3s(M [ïè¼]»09†Ý"`ïú©M›¶`K¶Áv»¸yù‰ƒX‚<-+¿ˆÕ •& û&˜¥Í +¶`"€!`·ï×>®oj¥¦^ÁÿùïOaÇ“ OÍÊ+º°aÁ`,êÂzùŠ‚ìjLBŠ.¬op˜*Øt=0¼‚M˜õŠÕ뜶1° €]à`åÖØÚÁÂFÇÙ,˜=‚íÚÐÃNL–’š™wM6& +2¶`A‡,Z «Ø3€½øýÍ[°?ÿø8>J#ÌÂÚNL°ëåU÷ª=klé@¥Ù7`6FŒ+MÓE|ØÏCAa»-KVeæ +Æ>dÿ&ØyV&h˜•ýÚ›·ÌÃN,>Y•‘[Èž·´k`ܼl‚íD°iX8À¢Ô°J¥©†±2Š`3g0>l/¦XIYåÝ꺧Ú0î¿H Œû•€¹zøHCv9*>I™‘ƒa1¬Kh0(M +[&Ø9VÊÀšÛ»^öôldlœ€‹Ø †V0À̶ Á6lÚ0w ; °¸$ezN {a¼±HŒí¶`;Ì_ú?îëó)ª,ã¸ÖÖZ:Ví¾1T‰åÅX³UHT1‚‚9¢•ÔMsŽdh2‚’“’1T$£Îª˜0!*#âþûœsnwßÛÝà¾ÏÝþ>õ«Ûçùî,*>9Âj ¬M€½‘ ÌÈÄŒÂØ.¤°-Ø +ËÕÂzä su÷ö e°$+«¬½~»©Y&°©ã”€§°¬ñ`Döîa6j˜…,ŽÀ +Ë*¬£ç!`¯Þ¼ÃÈïûè觰yÿ¢°åN.ë ÌWXd\RÚ065°o#_‡l¸0c3sRš€9Øf + ì4…åVC`­€‘ÒÔƒ}ç6WæEaÇSXiE͵[M÷Z;ºØ®a¤4Å0K{Û˜"$â `±ª´ ¬Qx§é¾`ÿl——VPZn62:Ê/ cÑÈØÔl/`çcU©"X{wŸ¦>ÙO†M4£+X ³¶wXæè¼0OE0`§(ì`Õú°a9ÁØ& ì(`‰VR^}°À?}þrà­|`¤4-­ílƒ,&15“Án6Þmiïê#¥)7˜…¶ÓsO@p8`ç(,¿ä +` òiJÓtÎØ°yÀ„‡llØÊÕkóØØÉs1 )™ó‹¯TQ؃®^CiÊ fe·x)` Ì°#"X6øI¼‚ù‡-¢°­ ¶°è„” ì¾6Ä+lòÌD¶Ãc·P`g),¯ørUÝú;öèIÿ žaäd‚ÌÂÊVv°d1¬³W§4™ŒKØô™FKS Û°øäŒì¼¢Ë•2MÒÀÈ +ÃV¬Z˜ûn?C°61ŒÎ{NaB‰`KÛ ÀöŸœNaµ Ö#Ñì;\œÂŒLÌ(líB +Û²ÃÝÛ/0°3QñIéÙ¹Ee•µ×o75 0”¦F\\Á¦Ž sL Øq}ØCYÂl¤°C€Å%¥gå–U0X‡lT60'Àܼ}•¡€EêÁþxö°C¦âflfŽ £°åN.륰4 +«!°V{JaÇ€½xù—Â&üFK0Ûìêæå« ìtdœ*-+§°´¢æ…uSØ€Ì`–6ö ¶0`ÇÄ°[÷¸‡‰Js<ØAÀbUir +JËå›6Ãl——"d/`祰öî>¹ÀÈ +626e0kÀE°S€¥RXµörà-_°‰cÀf‰`Ë×æé£f°ÄÔ — +J¬°ÇOûL³‚9‡ýú-&°MØQìêÍÆ»öd ؟ßy„‘Ò´´¶c°m v°˜ÄÔLÀ®ÖX—{ÿ‘uË7YÀ,4°ž{‚Ã;“˜’y)_öú- 2ÍGÆìoZ-MÀf›ÎчvR«×O‡ /ô˜°¥+W¯̃Ž–’y1¿X€=èêÕ¾ˆa#_y†YÙ-"°æ¾°h5¬îÿ¶UËìrU݆;÷{ô¤ÿÅë7Ã&OÁLt`;ÙÀ¦Í0Ûåå£Ù ØùXUª.¬ŸÂ†8‚M4#+ØÈØ”Á¬stÁNQØ%ÀªÕ0dÚ ã6K[æè¼0OE0ƒ%X ƒµ´wÉöëo¶˜À6X`G),“®Þl¸«†½–Œ”¦¥µƒmc°€ÅX~ÉYÃ,4°ž{‚Ã;“˜"˜ð1-MÀf›ÎчvR«¢°]½R“ɶtåêµ€yPØÀR2/æK`/^¿y/”¦L`Vv‹l#ù…ï,Z «»Ñpç>`¤4e Û*ev°zÀ:%0õGÆlòÌD¶Ãc·P`g£’3.æéÁÞ ~Tþ?0r2 ¥iae+‚vB«Ã^½a¥É`ßx‚MÒ¦Ï$0sÀ~'°«ÖæNa‡‹OÎÈÎ+`m=Z‹#ÜÂȼÁ–¶ÀüÃö¥†ÕÊ +&™.l‹–Î`×뛚å321£°¶ Õ0o¿ÀPÀÎDÅ'¥gç•v°Žž‡ÿ~öüÕß°©cÂ\SvÜ ¥)?˜v°¸¤ô¬Ü² +ùÂæ 0'Àܼ}•¡€EJ`­"˜f,ò 363GiRØr'—õZØiÀÒ(¬†Áº ¥©ûúuø'Á&ü6°ù€9ØfW7/_eƒ©Ò²r +K+j®Ýj¼§…‰æ=;Øð—OüÂ,mìl;` +ÀŽéÃú$°¯œÁD¥9ì `±ª´ 9¥å ÖN`ýj˜ú߃OØ´`»¼|!{;«J•Â4¥ù‰ØD0²‚ŒMÌ0Ggì…]¬šÀZd›%‚-st^˜§"˜Á ¬¤¼ú*…uɆ l1m"°ÀŽRX&ƒÝl¸+G-Mk;ÛÆ`‹!°ü’+bJ“s˜º4õ`;=÷‡v.&1E{ÐÕË+LxȤ°Ù¦sôaA€¤°‹€UiaÏ{7(‹²€-]¹z-`v°+f°û€‘ {­ 2"áfe·ˆÀ6˜Pø~À¢R2(¬îFÃû:{¥¥ qɶU–W|°zYÀ ÁLt`;9Âjk졦>0!ÈÔ°¶ )l‹,·¨¬²öz}Ss[G)MÙÀŒL̤0Wwo¿ÀPÀÎDÅ'©a·ÿgXW{ËO…M¦ì8…eV!†¡4? Ê +f#…,ŽÀ +XkG·SEÀæ 0'Àܼ}•¡€EÆ%¥QX,aÆfæ(M +[îä²^ ;Ma9쇰 ?€Íl>`¶ÙÕÍËWÂ`*+­¨¹v«‘Àúþx*.M ìó§üÂ,mìl;` +ÀŽQØ-¬½›”¦ .^`êüŽ ;X,”–ëÁ覢2Na‹ú°]^>Š½€U¥ja-cÁ†¿üTØD0º‚MÌÚÞa™£ó: ì¿Ü×çSTYÇq­­µ´|k¨’!(/Æ­A’ŠÌ”œ¡»‰ÌJN ÝM”œ%£¨D%guDÇ)]GLÇ>Ï9Ý·Ïm˜Wë¹{ÿƒO=4ç÷½I`Åk¡° „AiêaøI戰c§ÏzØ€e"¬¦¡¥­½»W#óžüÈx‡a °S QD_Xjfv> {*E˜•­ƒqXyM=… ìþaBiš¯ÃÎxû‡(¢–š©ð4 ŒŒÅïÜÀ´Ù߀ÉvƒÀŠÖŒ°-ì­ö{˜ƒãνûÌ‹À.L‰°êúæ{6¾ìãÌôŸox…mCØQ„Ë£Î,E©É£°‡]}à¶|3ÃNÀʪë$Ó‰aÿb`î^~ÁòH€Å§(Õ lxü À^¿}76Ë+ JÓÊÆžÉvÀ +Ö$†½ÿHW0w°e W0À,¶ a{ö˜']Xªêšî¬`¿½|…°¾aÚna`;vaA²ÈsKÎPçR؃®GýÃcOÄ¥É9ÌÄÌ‚À6Ûo%°,ŽÀJ«î¬Óöå•Iææé$‹ 0Õ<0º©¸„­\°kqÉéªÜÛ¥•w lhlRš0;̃ÀbÄҔlã¿ l·³ëa„†EÄ,)]•C`­ëØ3Î`K„™ZXbil;ÂŽX8Àn%¥gåÜ.©¬ml½ßÑÓ74:‰¥É¾ƒ‹gؘ]6=C§ÊÀÅ K“…YÛm¡°Ó ¹°´¬œ‚’ŠÚ¦2Þ`ÿ\ vÖ'€ÂE°ÁÑ éÀ`,š˜šƒESX6µð [jFV°f»eû.'—CóUìfbZfvAqEMCK[{O¯„aŽ;†°€]Áºötêw&È$ÃÒ´¶u °Sv`©™ÙùÅå5õ62!”&®à¯Y °3Þþ!Š(€%,ÓŒ?˜Pšæëç‡i¬aôÙü°½ûÌË?D° ©JM~Qyµ6Ž0(Í3,ìë×Ï|Ãlwì(‚v™Ý{ØõX{ÏÀð`Ÿg?ñ ÛF`')ì<ÀR”š¼¢²ê:ì‰û‹SØò ÌÌæîå,X|ŠRÍÀ†öŠkžLƒ ³²±g`2€]`M:˜¸4y†­^‹0Rš†°KËPç–UQX?ÿ°e W0 Û³ïÀ<ý‚d‘ç–¬ƒÝ}Ðõ¨xL"0m1°;"†åìÀ:E0²©Pöc˜‰™m¶ßJ`'Ü=}ƒd‹KÎPå–ŠaPšzØ7a+ç…¹, `×X# MRYÁäo]üÃìÄ°X€¥«ro—V²°ßç…½}óÇ0gW€yø†EÄ,)]•C`­ë™t`¦–d¶ÛÙõ°!¬¤²¶±õ~GOßÐè¤PšdS}ýá°%‹ÀHil;ÂŽ»yø†…ìVRzÖÿÌÚn …X(À®XÀ¤cJs!ØE€¥!¬B lÕ#°³>¡áÑKLËÊ&°=Œ)MŽa¸‚MLÍ)Ì`N. ì&WÔ4´´ut÷ì©F7'°¥óÀÖ1°]N.‡æª °L¬`#Xšo„n‘ìç_戰c ØËXý"°¿>Í|xÇ% KÓÚÖÂNQØ€¥"¬\ {möž_˜•;ãí¢ˆXBj¦†Àš602ÎÀf¿P {9õ`½=mÿ{Ø?ô0RšûÉ|ý\˜`7¬¨¼z.Œnª¯ÄÅÀžÿ(˜ö…ž¶sïþƒó"°ËSja÷v=žöy–… öv·ó³q؆°£ –GXŠR“Çž<)”&Âð`¯y‡4€•U×QØð8–&ß°å+˜™ÌÝË/X °ø¥zØþ`x2 ‚ÌÊÆžÉvÀ +Ö„°~ +ƒ {O7•ö‘Ø2=lõZ„‘ÒDØž}æI`—–°ªº¦»ºõiaÓ ì Ÿ0œ÷ lÀŽ ,Hy`Éê\-¬SB0mÂN°8+­º£ƒMJ +fbfA`›í·ê`¾A² +SX# M>{Á§°•óÂÜ°kqÉéªÜÛ¥• lJŠ0;1,–µ¬á +þ, ØF-ÌÙ`¾a1KJWåPØýΞ¾¡Q¦=Ï0S K(MÛíìzX»E`%•µëÐÁ Èø-Y¶`¿l;ÂŽ»yø†…ÇÄ^X–1íÉÀ¬í¶PØi€…RXZVNAIEm ŽN°<˜Ò\vÑìéÔK‰ÀV­1;ë °Ä´¬lkiëèîE˜(È8-5ÃlbjNa¶srÑ»™˜–™]P\Q°v€¾€‹_Ø:¶ËÉåÀ¼ ìÊ"0”‹oØÏ¿ ÌaÇ¢ˆ¾°ÔÌìüâòšzÉ°4­m(ì”KÁFÆFJ“l*©À¬ØoÿE…i¬™w˜ö!£0RšûÉ|ý\˜`7R•šü¢òêúæ{»ìÉó#+˜þ÷ +lçÞýæE`— aÃãXšzØg‰Àl¶!ì(‚åQç–¢Ôä•U×±0Rš3R„`ñ6;ûéãn`ËW003˜»—_°<’ÂÔÖ„°þá±¹0<G0<™¥iecÏÀd»Ÿ’¡Î+,«ªkº+ Ø2=lõZ„YlÂöì;0O»ÄÂt>Øäo/˜Òä†óžíØ„É"Ï,9C[XZu‡Â†Æ0È$Ó™!ì„‹3{;­ßT<ÃLÌ,l³ýV +sóô ’EP˜ŠÀ˜>È8…­\°kqÉéªÜÛ¥•Ö74*‚™$`vbX,k½ßÙ#†‘~œÃ6jaήó𠋈XRº*`µëÁ>Hfja ¥I`»]ëa·¬Dx6EƒL›%°éwÿyýêÀ–,Û°_¶aÇÝ<|ÃÂcb¯,‹Àt0]iÎýÉ1ÌÚn …X(…¥eå”TÌ›ÕÁf81¥¹ì"kXïàˆ„`«Öõ  XbZV6ÀjZÚÚ»µ0²wÓ\Á–á +615§0[€9¹ha +€ÝLLËÌ.(žÓn*ÞaëØ.'—Có&°+¬žÀFÆ¥ƒ ˜#ÂŽ!,D}`©™ÙùÅå,ì…´`¤4m(ì”KÐÁšö`¢ “쌷ˆ"ŠÂ4v¯½‹k˜ö!£0RšûÉ|ý\˜`7R•šü¢òj€=Ø°ÃLeíÜ»ÿ À¼ìò‚°OÆ`ã#Âl¶!ì(‚åQç–¢Ôä•U×10(M.éÀN +°x¬xŒÂtÝ2«Š<Á–¯``f0w/¿`y$…© ¬I€MQøñÓ‰`PšV6ö L°ëñ)ê¼Â²ªº¦»: ƒŒgØ2=lõZ„YlÂöü—ûú|ª"Kã8®µ5ÖÌXµûfv¶j‚òbª¨`s$g¸—$H—,9çlDrFEQ—QQ‚8ó§ìsžÓÝ·o ¼Ù¹§çüŸêîÓ¿ï‰ÓsEXœ:ljN¥4ÿ`Fæ½v`ç ÌO°¬¼â²êú–Ž-`kŒÁ¸ S‡]`©*°±©YMØÛ€ø¸ë¦g`„°ý–(ÌÑÕÓO—°"„õH ¶{SX…)ŠÊªê›;zî=¢0,MÜTÒY¨ÂbU`Oì¹Æ]‹›Âr€íã`ösñô +X¦¢¨´ª®¹Â&gIi¾£Ý½‹LÃôŒ¡4vÔÞ᜖’©(d¶c Ø^€ý0[»äèâá{a•ë&°Q +ÃÒ\“ÌÔš®,Âr ¬‰‡Í0•æf°»°»û¥ûî{-°ë>!Ë °Ú¦6ölcØûßÞ¾ž× l§YÁzú†f0»S,`·2r D°‰™gó¯E¥©[` öƒvÄîÔY€¹#,aë` RƒĂÀ.X@pD Àr¬‘ÂFxØÒ2n*"ûƒu–¦¹…]`é9%»ó ÿéÈÄ4 A0âbÆ—¦ÌÙÝ; 8œ‡Õ4¶¬O †ï"…}^[Ñ9Œû‘©Â~4Ü£ “,9='{°OK*°.æ`‡Ÿ<07„Å °N„OÏÍ/¼Anªß¥3³:H`Ì_ °ìü’òš%Œ2ì˺d`WXëØ°` Á Ô`Nn^þò°èø$€¬¥³÷~ßÀðø”$`ߪÀ 4MÌ,E0…å—W#ì±öáÓ²û]€-²Û%ÀÈ +˜1À~%°c'NÌaq¬C£A¶&1Ø!€'0?YXÀ²òŠËªë9ØØÔ¬vØ*k0.ÈxØ~Ë»,ÀR³òŠÖ#I˜ž‘*ÌÑÕÓO—ˆ°*6°ç¯^³Û½),ˆÂÖÜÑsïÑ“¡±ÉYei~þ‚2iÀ,Ta±+Õ£›J°}ÌÞ`.ž¾A¡‘Ë$°ºæö `ä° Ó72†ÒDØQ{‡s°”LE¡6:90,Mf`;¶€íØ/³%°KŽ.»‰°J€u«Àøy. ÀL-¬)ìÀC"o,—ÀšÚ»ï>ìس— F¦Çæ`ü +þû?¶‚eäÞVÂ&fHIcQvÝÃ'0$‚‡Õ6µ‰a‹ÌÁvjá +Ö7¤0skÛ#v§ÎRX0Àneäü5`6vñÚuw„% ¬`]621-= 2v`Á1Ë!°Æ¶®;úŸJfbn¥KÏ)(á`} K“ŒÅuvaBiîQ…9»{‡Ç$$#¬¦±•‡Í)aÜ#cÆýȶ“SX>Â:6>MJs‘Î{)Á̬l?y`n‹ONÏÎ/)¯iØ®õ5%lzb„MØA»@`þòðh¬`ÃãSs|i®(aŸ×V—‚}ýf  +»"ÀÒ²ó‹)ì~߀&ŒÆ`ä‘©Â~ÁœÜ¼üåaÑñI«nhØc‰Â 4MÌ,E0…å‰`cS³/^)ƒlAØ.FV0ÀŒö+;q`®‹KJËÊ+.«®oéàaâÒDØ:“0®[D°C;O`~²°(¬`C<ìýGœ*°w‹o؃é!l¿å„]FX(ÀR³òŠ(ìÞã'Cc“lIöñƒ4`Ž®žKLÍR•UÕ7ìã‚Œ»=X„íÞ»l]20 æâéKa™Š¢Òªºæv„NÎð°e1l…iؾŸvÔÞá‹ŒMLQ‡={I»…ØŽMaúFƤ4fK`—Ba…ëØ ÍK ¶W æá°›)™¹…¥•uMíÝwöŽNHFJS 3µ°¦°kvCr°¯¶‚]÷ð ‰XFnáíÊÚ¦6Œ”¦0=ÖÙ…ÁXÔÓ7Üv+#·@ ™˜¦0º©@F\ Àvjá +æaæÖ¶GìN˜»O`pÄ„U¬K€½Úöj~Ž]˜ ]$° +Ë!°Æ¶®;Pš#ÝBaø‘ᛸŠ°ÿ¾yõ‚E)MSs+ +»Ja1+QÂƧù û$)˜‰sv÷X:Õ4¶j…}f&”¦áí°äôœ|%lx|Jö™À>1ã~dÃŽŸ<07ïyxL<ÂÊÖ©„aiJ ffes`̟² ¬¡µ³÷~߀ãæ½”`v…¢ã“Ó²ó‹9Øc›}Á•æ2³°¯¿Á Ô`Nn^þò0VÝÐBacS$È؆‘G¦ƒ 31³ÁdKJËÎÓ€½•ìŸÿ"0,MuXÂÊÖA`C€í`d‹aÇNœ˜«—Ÿ,, +`YVßÒу°I1 eŒÂ¸ Áì¼–š•WDaPš"ÝTÌÃô Œ¶ßòÂ.;¹zúÉB£âVUßÌÃfž¿Ä ã`ä0Û½!Ì`A¦@X;ÂF'iiò+]’€Y¨ÂbS3E¥Uu ˜½À\<}ƒB#E°n€ Rv ™kìÃôŒ!ÈvÔÞ᜖’©(¤°»úG'´Â–?-é¶c –&Àl ì’£‹‡oPHdìÍ”ÌÜÂÒʺ&€=Ü öþ7¦a¦Öv `Ú`ÓŒÃD¥¹ìÆÍ”ŒÜÂÛ•µMm™˜ž›WÙwÛSØkyŠ°ÆÚ +þû^ 캇O`H„6-M2=V7‚ÝÁbt#+XOßÂÌfwŠƒìVFnºî<ì{ÊÃpSÑG¶¦ë{ðçÃvnûA;bwê,ÀÜ–p+#§àvEm#Àl|Z(MéÀþý³!°‹³MØG–a¤4MÍ­(ìªKÏ)(©¨ilEØðøÃé‡I_šÌD€9»{‡Ç$$§çä«Àf_ˆæ=c°¿iÂ~4Ü£ “ó°r€ul€ÀDÝ‚²ÕmÁ®þÿaÜZ;ÌÌÊæðñ“g憰øäôlkhíì…Òãa$;H`Ì_Ÿœ–_¬£ÓcE‚°+În^þò0VÝЂ0(ÍY,M[Þ–® ÈD0€ý$‚9L°¤´ì<„uhƒ­Š`o_¿|175>Ìì[™‰™¥*,.)-+¯¸¬º¾¥£ç>”æ˜dK \$Çö|–‡µ¬D7°]Œ¬`€aiر§æêå' ‹BX…AiªÁÈṨ«Ñ1Œë¶ßòà!€§°P€¥XU}³FÇ"\‹+Û…ë¦g`ÄÁ 첓«'ÂS³k'0ZšŒ{d+d*Ø ¬“‡%3sXPhTlbj¦¢¨´ª®¹]Ô-dS}Ø–ÏüÿtØn ˜sñô +ŒMLÉT–VÖ5i…­  .E1ìñý^ ˜3³27ÑlßÏ#¥Ia!ËE–&÷ôMn<ð‰-½·øfaþùì$k¨)GX|L¸\§0}#cd³%°KŽ.ÿ#¾ÌŸ¢¼ï8®í¤ÓiÒš¦ÓétšÆônÚ´ãQ›ÚÄšzŸ1˜âŠ" (r,,˲Ë}.÷±Ü‚¨¨€€ (€Æ+&NßïÏ÷yž}wÓ©,úÌìþþšÏûóú¼¿!–L0í¥)ï£zÈ’`¾ØÔäøè Ìá¶aÝ€-ú`ꥹrµ XDô©øä´ÌÓƒLµ`^h±ɾùFΘ7Xóó`[6¬ûø%€½¦ƒ-ñŸlÓÀønÑÊ"™¦E î Ø4ÁF†®(0Wy‘Ó‘žš§íx¹`o`KØŠÕkønQ`Q±ñž—¦Ö‚Õ…¦=Fw°**°‹½]m^`GïŸö«¥o¿ 0t*˜z Š5dZ½W +ZTKF²¯•;HT`u®²¢xÿ½ß¿d°9õ^•E½z¨C¦ì­FöøÉ“§Ož<–qÅ EuŸ[j*J +rΦ%'œR`ŸìŸ­ú`¿ñ—öÀ€ìu¾[ÞR/MO½7Ê"«/´2jQjð fQ däÂÀÔŠQŠ°=«bEI~NfZrü©ècGîÛ£ÀþîûùÏ~ªÀ~h02UïMJ]h9dJ‹°–ŒÂÇÈ>ÚãGàÂÀÄÉñë× E)¨ŠùÙ™6K|ltÄ‘ƒ{÷ìÚ¶éß[iûÉ‚ù¨÷(‹Fõà!£ïE‹ni‹CZgîƒ h‚ëþÌô]\1å±½4*>Çb£"BCöl­öî;¿x‰`F VÕZ2ú¾”µd*‹÷¦gA´‡_‚kvúÞ$qŒî ›j«¤x°ÜG…‡†+°5sÀ~üæì¹,Õƒ‡Œ¾-²ß·Ë’]åÈ„ìþ°=×Ì= IFS„;ÜÚc£’r,ï̵kV¯üð¯þãïžû^Á¼ê½jÁÞÕƒ‡Œ¾‡Ñïi,™d#»uûî½é á›ee`jÅ(ÅÊuƤË;s㧟lÁ~ýî/ °×çö­õÞ(‹¬ú!ƒï5-•UÕaÉÅ˃2²)!›™%Öô]qc{:é%Ež16* ì«W,Ø·–Eï MßC‹¨Á°Gi¥–Å~Žl|òæÔMƒmzúÞÝ;¢ØEžgº£Ø )Âö8cz£úϱeùÀ–¾0_Úð=µ{ TáD3‹ð⎠aœº 4~w1¯[ÚÀú%‰Ê"lÏ3ÆûìygzÀ–,4˜÷…V¾ç‹Œ5ö%sIedããŠìλøÝV\œ(Id¡ÊRRŒ8²WÝg£ÜŒÅƒ`o,˜V=x¡5ßkOMh‘öà’9´,¶QW®!Œ7&oÞššº}ûöÔÔ­[“ãc£ÃƒX·–Äüq¤¨ÛžÊ»Ü{À^ ˜¹,Î=d&-4–L²ˆò!#CI64~7o*®!lÕÑÒÀ$bÅÐùƒíõû¬Õ‚™Ê";•éykq¯¶d¼dùÅ(22ˆñ*ÉÆnLLLò›˜¸1~\W.q`­Mpbi!ϳ…M1L—¢ç>û(÷3]hå{uÈ–{ìÁ%ã%Ó²X]ßÄ-ë»$d£×ÇÆoð»>B®~(k¬Õ’hMb¡¢;(EÚ^΋‡§Ï[<0¾÷ØC–,Ze#+W#;×{AȆ‰ÆïúõÑ‘kCWÄ.lÕQÈ$ÊyÆŠ)wˆ—™‹Ç[,¾ÀþO.?`^¾×íaZ2Ébf¶“#«kr·wž;O²! ŒŽŽŽŒ  r^}½Ý²a(WÌX1¾Æ”½îsàÀüúÞÐâ +,Ù:.™žÅx õÁ‘Õ44·¶w Ù•«ƒCC×äÖÕË—Ô¡’èY1q‡a{¯ªø}­L÷=µ¨– ÝKfÊ¢U¬ÂU ²õ]ìÚÀÀ ¾«W¯ô_×¹ÎvwSCMæÈ°Á‰'cSÔÜ¡IÑtŸçWîù?d†ûÕ=¸dÌ¢x7:YFVT†06¶¬·ïÂÅ~°ÉwXÎ÷tƒ«A¬Ð¦'qÖ;twhR Ø}~þy|¯ÙCë\2#‹úÈy%#ÉÚ;»{ˆvñÒ¥þþK ºp¾Wq5ÖUW–çËÀp£"$‰²bè†;{Æžóø^³‡gÉô,Š>ÔÈÎæ8 IV߈=ëì:×Ó{¾¯ï¾¾óÄêêh®ªò’‚¼ìL»G,Fœˆ$òŠé+¦»#pgÌ¿ï5{x–LË"o4ô‘%¦Ø2ÆÒ +άÙÝ´îs==½øzzÎuwu¶·b¿„«Ð™C%b`Tœ(IäcŒ+æqÇ‚ƒQ‹ÞK†,Ò‹ÛvAjdñ«=Ó¡“54µ´¶µwtvuuãëêêìhos·h\E bšlu|¾“EQK"{‡î¶A0ßö0–Ì“Å[wì–‘aËâFûÙì<•WU×Ö76µ¸ÁÖÞÑÑÑÞÞÞÖ +¬ÆúÚêJÅ•iOµ@‰˜¨ƒNÔ“èY1‘¢nû€ƒùX2-‹¸Ñ›·ï +âÈÂÇœbÓ…¬¤¼ÒUS´æ–·»Õív·´475Ô×Õ¸WöÙôÔäÄ3±1‘ÕÚÁ>…$òŠé+6×öóó©Eï%ódúغ#;p8ìØd•UT¹jjë›äklh¨«­qUU”• +—-AÀædÑ<²å«F®"d‡ÃÂÇ“DK´$§XSm¶4ùl¶TkJ²%XWTdx˜Ì‹âÀ‚1ˆ«–ˆ©ÍMb`Á|eÑkdH±fÉ‚÷‡:r4"RÐââ“þËn?5uFaµÓmtÐiE¢,"DöÍ H€°£¢bÅJÿú¾ç|û½ß Zo’†óSÃ3ï{Nòùôô_žÓÓÏÿ|:ù(X‡{;[›ÜÃÌ,ŒŠø¤'Ñ +¬Dÿ,¼d¦‹Vd[ZE†q@¤l5¿QDh ½{üáï''ŸxN€úpüþÝXûˆk£°º"\8Ã\D|†É“(³›ÌÛE;²F*cGW÷3ÈÆ £=Ë.çh{‡¯ß½îøÏ1PoÞ¼~uâʯ.gÒììÃEDñ¥C&NG¬M ÁL‘5ÿõ¨Ö¬o2ìY*=¿H¡­o·wöÛ+àŽÞòõaíIÖÊÒâ|ûÅ.,."ÑfN‡nb|°P­ÈXÖÊkF2ìÙäËÔ\†Bm£¸…Øö÷_ñìCµ³UÜXϯåWf.…»¡\t[œÀÌ鈫‰Þ.#“e¤5“²ñ‰Éé™Y„Æ´bÛÚÞÞÙÝÝãÙÝÝÙÙÞ*nnò«¹eŽkfzw.:|îóg˜ì7˜ib¼°Pd·þ0el2ÜÆñ$-5Ç´•Ül››ÅâO±¸¹¹±^ȯ­®,gç9®ÉñQ•LQÄp`ßÜD·‹áÈnÔpC²,Úä4Ó—`[]Ëç …užB!Tney)»0ŸžKq\c#C}¶‹ŠÈ]W‰ÓS%,"2|ý 2ª5²îDo?Õ1É´Ù¹ lYàVr¹Už\n…P‹ ó™ôlêåô¤ˆËqaÁørÈÏ0ÏéøVXà|8‘áë‡,#ÖLÉ:» ãЈ6õr¶4á³Ù%žlv(¨³(.¬W¢»KºÄ‚©Ë!O¢·‰1Á‘‰2bÍp@X†ÛÈuDh =ŸxØ`.ÉÌód2éôÜÜ,©¦&'’ãc2.|~µ—¸ˆ|9~ÿt|ç뢗‘ÖLÉpE±i Ž?OÂ6ÜL*O*5C¨) +k|ldÛÕ›@ ñùÕj\â"êËìÛaQ‘™2bÍ„ mlju|ÚC}âØ’ÀMNMM«!Ó‹ R¢„ý½jˆÏ/Þ/éâ‹ Ì9q®"seM\ÇŽ'‚Ö϶Qàž'ÁÓ“dÔ(…Õß'X\Ö¦®˜³ºhGæ•ÕÕ74RµIÚ3eçÁ$Ô «’E5lj¤;O.ÄËÅEŒ70d(£-»É2\}Z4„¦hÝÒ608844¬gh(¥zªXˆ«±¡¾wžó2.]Ä``±ÀœÈD™áêß­£:Ò¦1­SÚžõööõõ÷Hƒý}@)U‡`Q\¨á½Zºó–Ë)¢ ,Ž&ú"Óe Èð„ê¨h¥ ¸žD>=‰DOO·Tµ?~¤Xõ´^ø\¶\vc,"2YF#£Ï3QGC6à {Ú­OººžpVmK¬—¹¼`á"ÆX¦ËÈkfd²ŽšÖ å\ñôtvvv * „ê¡fÝ!×ÍšK1ÎÀü²ôš¹²ÛmŒ{L<=mŠQ¤ +²n9.µ`žÀâ…9e2ÕÆ l”[s tÄÓÓÚJ¦–fdE*›e¹~ ºb,ªŒ®L†¦iÒÆÁ5Ÿ˜%³CÓ4›Á)žg®i”RyYqydšS<ÏÈŸÿ`«ªÅ:“Æ6 §y¾‘ïøÞ£R¬ +º|2I³m§yþ‘ï¹jTѬò»™Ÿ&mZçí—Ôû®Ø*ͪh\Ñ´€MãB@ d¡”Ê˪”Ë•…hçò‚cÞu9¤ª+šfl®ô\>CUaW@fÛ,\ižý>ë׫ËòÐl›«;c.E«ªâòÐ\ÛÙ¼àÛC¯:,/-d "£~þKUdEØJè¾UmïÿúR]ÄïV›¤'âÿ+á+ñÕƦÄú5Sm†Î%J͹D™9‡$gΟèb.æb.æb.æb¾fþ`<E endstream endobj 144 0 obj <>stream +ÿÿÿªªª€€€yyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkjjjiiihhhfffcccbbb```]]]UUU@@@ endstream endobj 141 0 obj <> endobj 145 0 obj <> endobj 146 0 obj [0.0 0.0 0.0] endobj 147 0 obj <>/ProcSet[/PDF/ImageB]/XObject<>>>/Subtype/Form>>stream +q +/GS0 gs +52.0799988 0 0 236.1599947 266.1087341 168.8636869 cm +/Im0 Do +Q + endstream endobj 148 0 obj <> endobj 150 0 obj <>/Filter/FlateDecode/Height 984/Intent/RelativeColorimetric/Length 30581/Name/X/Subtype/Image/Type/XObject/Width 217>>stream +H‰ì×÷[Tgð¸f×5‰Ù°Ùĵ'ÆiAŠô.}`†2‚ô&¤7E±¶DÿÚýžó¾ïmsï ˜iî3çydæG?Ï÷œï½óÅñ‰O|âŸøÄ'>ñ‰O|âŸøÄ'>ñ‰Èœˆö ÄsÂo¢ý?úëãoú?ÐB}¶¸£ >?Û1TŸ“íجςöIªØ§Ùþÿf3Ÿ툨¸h ìçX*\´ 6ó *[[´– ¤:i3hѦ˜ÆQe‡²ÁÅ(͉HeµÅ¢Ìž¥ýç¿´[ÌÉìXQV\lÊìⲨþî7V› -†\¶*”g¦ÅŒÌÏebIÂ?üÆds-F\ƸŒ*sŠÇŠó§Å€Ì>.Ë(2Á¦ÓbEf¿…ˈú§qŒ6[Z”eÎq)–‰tZŒIg¢ÙÈ¢ë²aU§mGáÍ,‹fdN.¥T_ÙŒÂÙТ,³qé,–R}í7 +§ÑeÑu©¸Äméa)Õ7–Q8 -dþ.c\ZX +uÆ2g ™dу9¹Ôm‰°tÔ·–6C‹™Ýy¶Pc)Ô¿,£lŠ&C2ë2ƆKÝ–`IÔwbä7e“4šUñÈìöP».K xþ-†¿+› ÉÐL²hDfu©ó’×ed±Š=ßë#tlÓi¶²ÈFfã2®¡‰E*²ü‡ç‡ħÂIšU¥È¹d\f0?Šá4ÍIÁÈ‚º³tyÎê#x ¡ñ:j2^FKDæàq –R=û_šsbè+ë`cšM—ÙF]—–XJuîÜyž .ð'ó`´„“L-c„#sv‰5”qa ‰¥T.\4 û`“4 +ÖQÈä2F:2ã™_r ).ÚB,!±”êÒ¥ËÚ\ºt‰pŠÆ¡ Ä°ŒæbŒ¼‹òÒÎKÄE[È,¨êÊ•+?ÉÁWÂ)šMn£¶ŒŽ,°‹ÎKÆE·²‚ŠL?c®òà áM†Æ²3gÔ2š" ?Ìâ:ip}¥¹d\’E*"ý‚¹FƒOÂÁÆ4š’Ñ™9E~X—dg²ºJ¤_1×iðI:²&C3Èœ#‹ˆËPÊuÆì,Êê‘~ÃÜ Á't°i4?™)²ìb×·ºKgQV׉t“HƒOèÈšQ¦Á¾ŽpdöE¯»Djq euƒHIII·xð:'iJfY`®SšË°†³XE¦ää1ÉÉÉÐ1M†Æ2±Œªed–]Œ²K‹‹Y‰„JIIMM““šš + !4%ã3sŒ,ŒGæè:mva U\‚•L¨ôôßµIO‡NÒh…ŒÎ̸ŒY$vѦèí\b m¡d¥•q“‰ÁGFp‚†ÐX†;ÙÑ2#‹Ä.úbÖð—k´…ÌbUffVV¶˜¬,Òe0 ¡a…L,#G&ŸeÚ.†v4jƒÏ‹® [(XP•s“››‹¿99Ðe ¡‘ŒîìÊe^Fcdæ] ̦8Ôï/~ß0¸._¡5üí¶P²²¡ÊÍÍËË“—^ÑÖQÈè̸YävѶ¥K&\祋®ëVrj³ ‚© STD +òó˜v;ë(2ËhL{F‡fó`¶¸P‡t^t]—`å—ˆ)...*´¬ÌŒß…ŒÎ Ë(#Óaa>²à0Í…ÚÀy%&q\™Y9wòòIURZZVVV^^Ž¿e¥%’–“M2ÜÙMÈU-2ÔGdŽÌ±8ì]8/¬azÆí¬lJ«****åT@WJ4Mv+ñ&-£ŒÌº‹êÈB ^ˆº uHç•’–ž-ÌÍ“¬ŠÊ»UUÕ×—A]ÔY³HU[W_ß §ºÐ˲nó2j‘É]´YÈÛ#PÑ«3».\XC\WaqiYEeU5T .WccO£ËE¶êªÊ +¬£é‘Ñë‡eÃÔŠ> ‹â*+gVƒ«±Éíöxši<7l õXÈ»äñ™i‘]Ø:ï·{ÛZ< u5XFYZŠ¾‹8²0Âœ ÑXôFWºtá¼h [Ú˜EªÁ¡¡až¡ÁAк»Z[³»±¡¶š"£b”»¨ŽÌT‹!….DýF/×®›]8/¬¡·YP ?¥y[Bëð¶6»]õ2²ìL±‹êÈ µ(a'C öæËE/Ìøý•(úP¹\MXÃŽNfA5:6>>mp¡u¶{[=M*2ÚEô¢:2´‡ªEc߇àA´õ3»nñó ®²Šªšz—»kØÕÃ,¨&&§¦¦¦ñorrb|läBëíºßÞÖ¢"Ë»(ŽŒÛCÔ¢¥ïÿ:Ì©ýŠ^¹RŒ.:/¬ao?³ šöùfx|ÓS“c£­¯§«ã^k³ˆ¬»ˆ^¤#“íZ Kß±ŃÙì¢:Äya †˜5í›™›{H37;;㛚DhÃ}´Œ"²rÞE<£oÈöW-³èñ»ï‡|_äBmttb ‡G˜5;÷p~aa³°0›o¡=èí¾/"«»H…Ïí¡j1ô°€…hSôø]‰÷^Í…ÚèêÁŽŽONÏÌBµ¸´¼¼¼‚KK‹ !´‰Ñƒý=hFDV§v1=ÅÐT‹¡†yóýN"=?ÀàÊÆ{T)ß—§µÑÛ5œ˜òÕÊêêÏêÊòÒ¨ë¹=Tß«YaÇ{óÕ`Êåí.œ×ê:âÚëÕþÁákžÃÃÐHöhc‘MOð.âÈ í‘h;*˜s!~o)Dz€ñƒ¹–]]ʵ¼ºñqíuøúÍÛ·ï0oß¾y}¸ÿ +²ÇÛ›k+‹s¾É±á>2n»j€}Ø1Þ|å/ñƒ«¡‰\½Êµ¶±µƒ¸^ëÝ»÷ð¼÷ö B{ñlwg‹"ã]¤#s»¨= +rìW'Ø'ÿÒt.D›7_­è¥«¹ ®åÚÜ~Lq€õþ??|øøñ㇂öæpÿåógOÙòÂvG†'µ`Ùê ZØÿx/ÓÞ¨Î3 Ký‰ú¡U?´ªÔôSÕVm6ÊÒPÒ%Ј••Š”a P‹©6xÁÆûxl÷}ï6^ÆËØƶƒmhÙÚ@ózßÏûž3çÌbC<Ã+péyžë¾ÏÊB h¾6уk'¸ö™\/q\ÀÊÌÊÎÉ•—“ 4!»uöôÉc‡àÈh-ØløÞ&jí`Ï!D›èU€íع \L®Ë W±róòŽü|‡#hB†eÄȸ‹8²=»ah‘¾×`¯HY4ê}¸ÀžIˆvÑK0ïÚ ®C&Wâ5Œ+ƒXŽ|gŸÓ™Ÿ— ²´ÔdŒ,6:êÌ©ã82±Ç6ñýÆWuõ°©zÿõÁžOˆl¾>Ñ3˜wï×QáŠWR +Æ,Pñä;@v# #»s^Øõ¾êTÒ‚Õ™ûæË/­leqø ñGv!Rô °c'NŸ%W¢ær•`\µu  jiq»Ý--ÍMB†‘åçòÈ®|¯z«¦~ȶZã° ñÇv!Rô °§ÎFÅÄ¡oW¡‹kX[,·»µµ­­­Õí&Ymu%FæÌ“#‹ÿZ” {1`â° +ñ§v!Rô °Sg¢¢ã.Y¸ªjê€ÕÚÖÞÞÑÑÑÞ´–¦†zŽÌUàÀ‘Ñâ{&´{=œ`Ï"Ž Bܪ„¨ E*îRBRªp—â¼0®`utvvuuuvv´·‘¬#+.täd¤%'R‹ 2V{ëuõC°PfÇw±ˆBT^Xt,¹Ò .¬a³›X]Ýòº„¬¹#+/)‘Ñq 2$´.‹oGÌ?™íâ° q‹!D=‹TµÔôLr•Uà¼8.bõôòõôtwu´·bdµÕ¥EÎܬt‚EŸGB£z€ýàûß[#Ø*æ/‹ÿ¬…(¢gḖ’ž™ãP\ àjïìêé½y³ïf/É8²ºšÊ2Wíqí +ƒ Nv°Õ,@Bѳp¤¤«ÀUZQ m¸1®îž›}ýýxýý@#YKS=ÀŠa‚]ŒABÛÀ6þj}¸ÁB˜Ÿ86¾ö¦]ˆ½ +æ´ “ çÕqõõ z𠀬§»³ÝÝÜP‹#£= EÁ>F 3XÅñŠŸ8,B„è`àʶpɸ=ž!>gpd]­-uÕ°‡€Åuæä±È…>°oùÌ"³!ŠEô(Ùy&W{g7Æ5èÁò ö÷õvw¶¹±‹°µ˜l‚}ˆÿ–°‚1Ôù‰Ã_ˆýõÙyÎ"ÅÕ*\ƒCÃ#£££^|#B†‘aqd¥.'ÁQ=XöÂ"ú˜U¾†!âO¢g0ƒ«¤>$WÏÍþÏÐȨ×;ÆçõŽŽ yúz±‹<2Ñ"ÚÛ °à‹h=0Ì"ŽMÇ6‡"þT z fpU W¸0®QïØøøÞøø˜wtx#Ã.âȪʋ–žB°³ÿøôÐ~‚mXÀÀl‹hM0Ìf“Ú±óo‡"D/Á¬¸Üškdt T·äM€ld#ëar”*&4ËbÄÀB-¢ÿ­ÿ¥Ñ8Ì&¥…Ñgæ°p€«Iqa 1®‰[““SSS““$Ã2bÛah±A)°`æ°,¢ªˆ–û5L‡!Ÿ`Åe•5õŠkÀƒ5$ÖÔ´< MŒc=ØE´(`©W/Çþÿ-ûëŽíïìðùÌjzUͳ4- +1Q„XàÒ\=}ä'ÖÌÌÌììÌ ÐnMŒlG{ˆï}`‡÷$`ïünÓ_]ÿó5‚ù L™CE³¹ˆÖ3ì=‡ˆ Q F®¶N5¯1ŒkP·ùÀ6=ykÜ;2Ä#kki¨­X:ê}¤À‚›Ãºˆ¬ˆF‚ɯŠj"4D"Dklñqq\³·çämfj’#ã‘A‹ +,CÀÎ…,p`¶h6QUÄujdþpß'üµŒbCDóÑ+®nryÉE¬ùù………ùùù¹Û³XÆq/Ž ö X™+Â`¶YÍa."Mÿ‹ \D90Iæ}˯¥jˆüS¡è[Ú:ºáÃaï8×X _ðmŽ#Ã.Â]ô=Ú‰²ˆÿ€XsøÑ0½>0Ìü“&Åæ+¢on5¹¦¦1.`Ý‘´yŒ »ˆ#ƒÝM–+`Ñá =0eÍjQ¥Œ3Œ¿`ñ ×(4_‘\½ýƒÃ£ŠkX‹‹KKK‹‹@“‘Ý…=àû°{?`~S‘ѬŒÈETÑw`Lfi‡b{—Á53‹5¬ååeAÃÈf¦{ô¬Õ-øz’ öA¸ÀBLwK4Ë"jÓëÓ¦‡"¹ú‡FÇƪ»x@[”‘a½CùÀ.FŸ;10ûÀt©7Ìñ“Ÿ1šÍEDEÔ &ɬšDopá¼¾¸C¬{|@[R#ìÑÛÙ&` ˜.õÚ*š¥r¨Eüø Q ɌơÄ!6426¡¸0.`ý‹hËKÙmÙ˜,-ü`-1èÀ´9L#rÅôæ±qhq ÀÀ59=;‡óZ"Ö¿åíî2F67K°!ÀjøßQ0³%˜6£y3¢Ù\Ä“Ÿ©ê«’¹¢šâ€=#^ƒ ãÖ}y ãÈ6-Zdõ@YT` £ÏGLZ¢ÿÀ´9¤#J4«E<ªþ-U‚ªÆA!2À¬\÷ï?²{w—±‹Ó“CB¬Äv$l`!Õá70)õª#2šµeYõ)qPô&±ÊSdË›A÷xQ`þ{9ØÀT„I4‹(¦g‚UÖ°qP 0Í…që‘<’Œ»83ߣz`Y‘ó Ì—a˜2Ç[ÊF4ŸÕ‹Ó«£8 DŠ>Ô\=æ#Fv×4À +–f°ÀMu˜*õ4Çß­‹xC-¢q`ÇÌíypñ¼0®Çÿô‡¶¼H-`>°˜ˆ€ª#ÈÀ6½ýÇ­Vs0š-‹¨Œâ.Ìë`ý—d22ÁÆP=ºQïk_ ˜MF†ÙFs]DI°!-ä—âÖ—|@“‘‰=àû±€uD̶‰>uà?Ì®D=0›9R #‹Èƒ8|\€zòä‰"“]\ºßûÀ*ÁÞ[3ت›¨J‡¡Ä€éh6‘ &®{×ý¾äÈàẼzÿ¢Àô&¾äÛDÕUû…msèh#2Áô!¿>⸞ݯptpÖ£tÐ Ó/LˆšëÝ®ÌM0Svè_ŒÃž¦³ò±`b_At ëi]¡ö+"Q\˜xˆx‡‚%dô‘¥ ++&;ðÅ&z¢œÎœ‰ô±¯Èè@KDéàH4.Œ"±žãLÝB½/-˜Sv¨SLùb˜Î”‰úKä6EÑáxaì*`Ëð9=JVlï0²CL1`ùÅ|üx:S&j/‘£ƒZ"Ï0qa”ø`ì*,”²|†ýÛ}0ÇìÀk+¿÷DšÎœ‰ÊKäè ö«^½ÃB:öDä} 0ßÞofÊêS]eíCa??˜¦³x‰b‡3Et\ÍEé@I¤ ±PÈJæ”öz(*ÙÑ0ã‹Í]‡él~‰2:ô ãûzñ€QÞ£z`!sŒCÑ);Äã°çbïðsÅKäHä‡H,:á-º &ǧ½ EîFvp³§)Æ_ aÏÓYÏDz‰2:Ä…i®òÊ`9ÙÇKÆcLI{-©«ÙÁSLÿb<Í/‘f?DB½d™{acå ˜S(òxæì £)†,¾ØñìÓJ&ÒKÔ/ì%ñ9ïKFÅÃiŒUÌ!½)Åx¦f)f|±‹øb´ˆÑK¤è &]î„91#íõBE¡H XŽg-;ô/&¦3g¢éÂXf˜c2í[´–…ŠC‘v±EK¢h<‹ì )¦1šÎÚKÔ].`W/»†-Ó0ÙE¡2B+ ²#Cd6ùÅD&>°"×°‹oVò|ÖƘlŠœö(T2D(jÙÁX~1ý Øs–g˜1Æ´´G¡ÒCñàÏ—¯ˆ)f|1íÂXFé¡À®»¦Ìç¶ã1†eL¤=*Qí=q2GÍý‹½t‚=¡…Ì0*´´Èù,ÇØœùXÆDÚo¥P<ª…¢’¦ Ó>™„Ý+eX9çªh.4Ÿ1Ʀϡ +LiŸ¨¤=íb7ó´ì(p +àzï.˜¨Š•>¬â“K w{cŒQS”i¯„¢|‰EÖ‚9UEnTr£¥ó™º=¶LcZSÔ`Zv0ìÕ+–Y†ª¨7*lcSXŠã¦Hi¯„"Á^½b¥‡åa3çÒ6¦šÏÙ £1&ÒžB±ÐF°A€5Ãx>3泞öœEöÊš0£ÜË,«¢Ö¨ ˜œÏFÚÛ +6A…i*ÇL{‰6‚-\$;°3•šö–„aÏ4Á<`TŠG.5ªûm ›*`+£r¿ÿw`Yç³%aŽOÑØ3i“0YîÏÛæýßÁ4Ë, ëoìcÀZìsÏAÞ#ýÆöåÂÅK–¯üzÃ7vüdŽaõ7°þ€ù6SmSa?äÝ!˜ÓBæn˜Ö‚ß«ð³°)€-Z²|`ßnÙ¶kÿ#v‚U¬äö…÷ß±ãûŠa붰ìœs6Q ®R­†€5¬C6°(†¥¨°\À~´¬l1°Ê +¬m‡.=2ÂwŒ€ED­X½~“ûþò ûÉ°:õÖ’`½ 6° +,`Çv °[wx!³Œ6Íúš +X?› XhDT¬ +;]¬ÈÂ06pÈðÑc‚[»zݦÍ)i;÷fv„a!{¦î-n…ý€ÑBF°ª5j9Û󺰗n‡É ],¬MûÎÝóbØtÀÂ#cW­Û¸9YÀ²NŸ%Ø[·mkØ´ÁzlT@Ð$ÀBÞ*X_,†a©ËìÂ¥+׬ {ç]VÝ6Àkب€@À懄/‹YµvcbrêŽ=‡2³N½€…ÌÂ0º2 ™GÃ& +Ì°Ù&Xº»yû®„(°"÷ÃÊ°÷? oškש`ƒ6 °°e1qkã“\Á ˜>È,£z¯ÀZÖ“`>þ 6ÃNœ:c‚) ™8É…ÌÖÇ‹fØVGؽ-«R½&Ã4i®Á†úøl^pØÒè¸5ñ I[·vT…Ý·,¬|±0OÀü›¥Âv§$ØyÀ®ß̳¬±6°ÅK£W®Ùð`û;i?X] ëØ°ACGú›ØBg6MÛÀªÕ¬M“aŸvìú™¶œa[vÜr°2%À>ìcÀZìsÏAÞ#ýÆöåÂÅK–¯üzÃ7:,‡a?äÝq ƒËŠ°ú› XÀ|›©À¶vÄfÚ4­S6ÍŸƒMlÑ’å+ûv˶]ûØ +V±’ ØÞ#|ÇŽì+†­gØ>À²sι€é27Áʺ€Q ®R­†€5¬C6°(†¥¨°\À~¼ÿð'«Ã*+°¶ºôlÈß1µbõúM +Œ6M‚Q½·¬N=‚µ$Xo‚l†K#رìÓvKƒ=µ:Œ6Íúš +X?› XhDTlñ°Çö€yè°C†؂ЈÈØÕë6mNIÛ¹7ã°…ar oš€U­QËØœ·Ö¦}çî€y1l:`ᑱ«ÖmÜœ,`Y§ÏìÆ­Û¶‚5lÚ‚`½6* h`!%Á +žÚÖ׋aX*Á2»péÊ5+ÃÞyWUw€ ð6* °ù!áËbV­Ý˜˜œºcOơ̬Sg/`!Saj§²Œ®ÌæéÑ°‰ól¶ –nÀnÞ¾ ˜^ï5™ûaå Øû¬6`Ÿ¬]§n€ fØ4À–ÅÄ­OL²Œê½k XO‚ùøN,Ø ;qꌻ÷à¡uar!s„õ1Á¢¶Õ vßú°*Õk2¬A“æl¨ÿ8Àæ‡-Ž[Ÿ´u;`Gí+_,Ì0?Àf©°Ýé vþ?Ô××SYÇq}XKתÙÇ©† ¼¸µU&¢‚s%+ñ’1ç,™K¸äœQɘ &P2ëš•`XAk§Ìó¼¿sºoÓ}¹À< §û?øÔéîóûö²·_^0)ì`áÑñÉ9…«¬¥£ëá“g²‚ÍâaVÖ€Ù»¸)üwvN ì±Ó 2æ`º†(M +[je½~v0…•QØ}æ`Æ€Íl6`–¶ÙÖÞÙMáÇÁ”ªäôœÖNa=ýoä›gbÎÁlóìˆVØ]Öa¢Ò ¶°0¥* ° eUW«oÊ +6mº˜³«—_`gÔqIéÙ¬¹ýÁì#`$ÈÈ +þc{ ùÓ0ò°Û*%PX5Öýèés&îf`“§ˆ`z°íŽ;=|;“š™WTRqùzÝ톦ÖÎn”&`o…‘#“ÀPšsLE0oÀŽI`µC°^Va“†`?ÿB`†€Í!°e+×æ@a‹ˆIHÉÌ-*ûïà¦adÞ‹`‹Û@`îÞ{ –Â[;ØÃ0>È4a[$°x ++—#LGÏ€Âæ›.PÃ\ܽý;Ÿ’‘[X\~ °zö²·ŸeØÔa¶€);*†]«½E`]"_š‚ŒY˜‰v°ðèø䌜‹€ÕÖÒÑõðÉ3YÁfñ0+kÀì]Üþ»;§öX>0]C”&…-µ²^?; ˜ŠÂÊ(ì>s° cÀf60KÛlkïì¦ðã`JUrzNk§°žþ7r‚Í31ç`6€yvD«ì.ë0QiŽÛX˜R•Ø…²ª«Õ75`ûÌ,lÚt-0;gW/¿ ÀΆ)ã’Ò³Xsûön`‡}wØD-0²‚utõ9˜1`+V‹`'X©ö‚À´k°_E°%+V¯ÌÉÕË—ƒEÅ%¥eç‹`¤4{úäCfA`›Ì°Ã"X%Ýkn“Œ–¦±ÛÆÁö—(?˜º4‡Áv8íòô ìLhTlbZVþùÒÊ+7êîŒSËÆÆ_dRØoú3†Ã|;® kjë$°W}¯å[¼|ÕZÀ)ì`‘±‰©YyçKd 32[H` ÌÃ'p/`!Ã`ÝC0uɶUK ° +k °ÿ<}Î0 2LO¶Ýq§‡O`§C"cR3óŠJ*._¯»ÝÐÔ +Ø{Ë.ìïJs®‘©æ Ø1 ¬vÖK`´À¾}ûúyi¾~ùüé÷q‡ñA¦†Í7]@a[$°x ++דÿ‰1ÓÑ3Âl\ܽý;Ÿ’‘[X\~ °zÀº{ÙÛÏ2lê¨0`GÅ°kµ·ê[ä 3‘Ÿœ‘Sx°öðÉ3)Œ¬àìÂfñ0+kÀì]Üþ»;§öX ûÌ4L×À¥IaK­¬×ÁN¦¢°2 +»ßÒNa=ýoÔ°¡wQ x÷×À&Œ› ØlÀ, l³­½³›Âƒ)UÉé9ZaG½g 6ÏÄœƒÙæج +°»š°¡yÿ®ñ‡©WðOÿ¶°0¥* ° eUW«oØön@Ò-ôa +†±8fçìêåØÙ0e\Rz¶k¦°öžØD-0º‚uõ9˜±¹å’«×q0_ÀN°RöïÇO_ôôÉ fA`›lìœ(ì0`QqIiÙù<ì=’Œ™Û˜§oÐ>ÀBÕ°JÖ&GØ\c3m°DÀΗV^©®»#˜Pšú3¤°N»<};›˜–Ea7†`¯ú^˜(ÈÆÆ_dæØqVÂÁšÚ:å32³X¼|ÕZÀ)ì`‘±‰©Yy²‡-$°æḰ5¬‚Àë~ôô¹&Ș€Mž"‚éIa[%°1¬µ³AØÛ÷ƒX„‘#“Âþ)‚mwÜéáØéȘ„Ô̼¢’ŠË×ko °Þ×´[~烌eJs®‘©æ ر1`ÿc6I€‘ ˜!`slÙÊ5€9PØAÀ"bR2s‹Šåã»E[Øs÷ØXpDL¼ÖØÚ¡ûüõ+»0= +›oº€Â¶°S–X¹ö²·_€}‘ÌÖÁÅÝÛŸƒEXaqù%Àêëb6uT˜°£–ÌÁ®Õܪoléèzøä™ì`&j˜=…,œÀr +/Š`å›õ/ +[je½žÀÜþ»;­Ò +{˜Æ¼‡ë¯‡M¦k`HJ0KÛLa~€¤°tÀÊ(ì~K;…õH`¼ŒIØL ˜3…LI`˪d#¥)†Í31ç`6€yùíÞX˜R•ÄÁ®Öܼ+‚½dö·±`vήbXvÁÀªkn †½g†±¨£«¯ ØÙ0eÜpØ‹ž>¦`µÀè +VÃŒÍ-—¬X½0'W/_ÀNPX`¥Œ”&“v Ó0 ÛD`ž€,ŠÀòyؽæ6¹ÁHiÎ36ã`Û8Ø>ÀB£â)¬RÆ°¹l‡Ó.Oß@ÀÎPXVþùÒÊ+ÕuwÔ°W}¯™† ¥©?cdX¬vƒi‘ [¾j-`Ž»<};Na©€•p°¦¶N9ÂŒÌ,¶‘À<;X$åi…}ì“L` )l+Û XHdl…UX`Ýž>ì­ûÊlòLO¶Ýq§‡O`§),3¯¨¤âòºÛ M­Ý(ÍW½¯¥Ýò92 A6×ÈTv °5ìzíH°oLÂ~þ…ÀhiJ`Þ{“Xñ˜°ïLÀ& 0²‚Å°e+×æ°Ó] ËUÃ[;´ÃèÃŒ2l`xØÀ‚#bâ)¬\Ž0= +›oº€Â¶lwpq÷öìTpDt|JFn!«ça/{ûY†Mf ˜°£"Ø¥kµ·ê[:ºä3‘Ÿ ØEÀj8ØÃ'Ïx˜(Èd³²ÌÞÅMá¿°s–#=–L×ÀAFaK­¬×Ka* ++£°û<¬§ÿ #° cÀhifI`›míÝ~€<®T%§ç°v5ìÝÀ l`óLÌ9˜ `^€Áª»+†½×„Á5Þ0QiŽÛX˜R•Ø…²ª«57 ìÁ0˜ZÆlÚt-0;gW/¿ ÀÎRX6…UÖüêëó)ª,ã¸ÖÖZ:Ví¾™P%”ãÎV)HT0‚‚9¢%w ˜sVrºé&ç¨dÌ*HA bÀ™QÀùö9çÞ¾œÛw_qîý>unÕóûbXÿàð»É £†V°¡1³˜ƒ;09†•q°®ž^Ú`3õÀæ°UN›æá(e`2yRZv> {‚`Ý‚ýü ‚Ù!Ø6 ØIVÅÀZ5`ctÃPiš[Ú0°] ìÀ"dr{¨6.˜Ûëá Ø¥Y‚*-+¿¸¬êæÝz60Avò9Ø3]0üdM#l¦ZÁ†Æ Ì`NìÀäVÆÁºzzµaèûJl[åà´ `>R&“'¥eç³°'Ö-,ØÏ¿ ˜‚mC°€$`U ¬Uh0Tšæ–6 l;°™\ÅÁªaÃ##æ=Ý03¶×Ã;@ +°K²UZV~qYÕÍ»õ4ÃØCÆÀpil¾ñm˜`g5aM­…­\»~#ÀÜ1ìÀbT©YyÅ¥š°÷£Ÿ„³°YŽ`[Ì_z`áZ°ݽ}öQ€°<˜Ã*ìqSKÇ (Í!za³ç0# Ø÷ýþ’€] ‰W¦fæ•VÞ¸Sÿ@69ïé¡'ãÁ 4Í,¬ ˜`gx°:Ý0µŒ +جIØ?!˜)À– Øšuæ†aǯLÉÌ-* Í{¶`[ÌOr`a|XcK;‚½zK7Œ 2MØ,Ã*tþŒS 302Á°¥ÖËÔ0/?q0À.„EÇ%¦dä–T\XÀ:ù°1½°Þž®i‚ÍÕ s˜`§IØíÚû Íí¿¾zÍÀ~û¬›˜v `Qq‰É9…×X‚½û¨9ïi…-baŽÎsõòØÝ°Á·ÚÝB#ÌÐÄJÃV;:ož„˜ÃÊ1ìise°߀-Øb€Ù#ØvWO_Q‹U$§çLcdà¢fneËÀv,`§X5ÀÑ#Js*ØQ€EÆ*’vµ¼úVÍ={°þÁaúaßÿ¨¶ÏÓ'0èÀ.GÆÊ“Ò³9Ø3*a3uÀÐ +604f`–sp"`ç8Xëêéeal·Ð ›GÀV98m˜‡O ”ÉäIiÙù,ì ‚u A0;Û†`;IÀªX+† †KÓÒ†íb`G!“«8ØC}°¯à¢ ¦.M-Ø^ïi(À.EÈTiYùÅeU7ïÖ“°÷£ŸØW5ìÏ?~Ÿ{Èø°ùÆ ´a€Õ„5µv¨a…[¹výF€¹cØ €Å$¨R³òŠKIXƒÒÌÂf9‚mE0Ièa€…kÁ^t¿ê!‚lB0°<˜Ã*ìqSKÇ‹—TÃ@FÀŒ4`{Ü÷ûKBv1<&^™š™WTZyãNýaÀ¾ãÁ 4Í,¬ ˜`gx°:Àfq0´‚f +°%¶fÝ€¹aØq€EÇ+S2s‹Jx°7Co…[°-æ'9°0>¬±¥]06ÈÔ°¥ÖË0l–ˆaÚ0bÞS +302áÃ\ܼüÄÁ»—˜’‘[XRq` ë|ùê5ÀÞ}åÃÀE lî”0ÀN“°Ûµ÷›Û;!Èìƒ`V|Ø1€EÅ%&gä^ãÃ[ÄÂæêå+ +>°+†š˜BibØjGçÍ“°óS`X9†=mn£ 6ã°…[ 0{Ûîâêé+ +b`±Šäôœ0fÞ³2šaæV¶ l7ÀvŠ€Uߪ½÷ˆ…õÓ S¯àüsJØQ€EÆ*’Ò³ ®¬`ÏÚž cQ¶ÏÓ'0èÀ.GÆÊ5`]=½´Áfê€álhÌÀ,míW98mb`R€ã`e“°nöyll66ö™Z˜‚mÛ½ÏÃNL&OJËÎgaOXØÀð ûB¾PCAÆÁv,@zàÀ"Ô°*Öª†½ý$˜™¥.˜ +`ÅeU7kê’0yOŒ+Mã|Ø^ïi(À.EÈTiYv—j{Èþ˜`g9X)kjíXŸÐ`6v+×®ß0w ;°˜UjVž&lˆ€12ÊaËl+‚ùKB,\ «D°ÇC¥I3löfćíäÁ”$¬…vz2>ì_lû~IÀ.†ÇÄ+S3óŠJ+oÜ©{À‡±ó`ìð ¥ifaMÀÄ;£öfè-6A lC+`¦[‚`kÖm˜†Xt¼2%3·¨„5¶´ Æv [°-æ'9°°èøD°wG釙`ØRëe¶ƒƒ]À° €U XÀ:_¾z`„sqóò3°8+,©¸~»î~Ccs;*Í7ƒTÃæN ì4†%³°ZmØŸY©a®v `Q–SxM —¦ZF-lÑ¿1lµ£ófóØ•¨8ÅT°Éqš`3¦„š˜¢Ò˜=‚mÇ° €Ç°t€•cØÓæ6ÁjÀ<1ìÀb¬àZy5릆J“„™[Ù2°Ý :x`‘±Š$v«öÞ#€=§ö÷oÁöyú°ì‚««س¶ç]=½‚€ÁX404Ö;°Ë‘±rMX7‚|%æý4Ãfê€á¬†YÚÚ¯rpÚ0Ÿ@)ÀÎaXÀÊx°a~·Ð³C°m°““!X> {ò¬ujØ~ÿD •¦¹¥ ÛÅÀŽ,B&WaX•€afl¯‡w€4`—0,+¿¸¬êfMýC¡À¸Ò4^ – †ÝXSkÀú†&a¬lºaì!Ó[»~#Àܽ$ÿ¥¾¾š¢ÊÖ0Žk*KUçܪD‚r1Î\(HR1ƒ‚9‚’%u ©˜s Ó¤ä, f‚ $ÑQÉ:£¢Î|„ó®µwï^»ƒÌ¹bíþ¿z»özþ;a+Ócæ½`Vvök¶Áv +`ñVHÀPi +¶ +Ãö2°p€EÅ'+1¬Áž·´€‹ØÌYÌD æêá Øe Ë),)«¼[ýè©60ìÀbi» °ZaÃææí'9° Ë*ÌØÌ‚ ÃÖ;:oçÃäv ÚÚ:¬h„Ø´I`¸4¶Áv»¸yù‰ƒv1"6Až–•_¤¦™÷´Ã,mV0°ýì » °z€uÓ #Jóg°ã‹I§ìÆ­Û÷k×7µvvÿÞû`>~¢6gžØA/_Qða€]Å°<ì †SC+ØÈØ”YÌÁ‰€]X +†•ó`ƒtÁ¦€- `뜶ÌÓWÄÀd)©™y×XXck‡à`¿ü†`ö¶ Ávš€UéÂp©e´ÂPiZZÛ1°} ìÀ¢e)*v¯æÑ3˜æd4Ã,8ØÏCAa»-KVeæ^»°j {°¾Áam¸¦ö/ —&Àš.Ò…Iv^ÖB-Œ}¡ ÂÖnܼ`v +`ñɪŒÜÂëeìÕ›·ÿ ÖÑÚH ÌÊn‚íD°iX8À¢x°çÖ#\Ø^L‰a• ¬Ã†GÇ?ñV0=°™³˜‰ÌÕÃ'@ +°ËQñIÊŒœÂ’²Ê»ëž0­y>Šß'(€¡“ñ`dV¶L°sÿìÛÄ×ÏS ›¡Í`¸4læ-sÇ°“‹KR¦ç””2°æö.m#£†æ=[°æ/ = +°H}°÷C”ÃØ Ó†íáÁV` {ÙÓ+˜‘‰†-·]©†yûKBv)2.Q‘ž]P\ZqÃÚº^¾VØ °¿ÀEl¶A˜ ÀÄ;KÂÔ>1û‹ùÚÓ ³áÃN,6Q‘–_|S¸°%,ÌÑ`nÞ~â#‹àÚÚ:¬h„M|ÿN5ÌØÌJÃÖ;:oçÃävK†Js‚;ÙTÁ¦M[ °¥[`»]ܼüÄÁ»› OËÊ/b`õ‹‚YÚ¬``û&Øvû~ícë~ÝûŽ…}¦F”æÏ`Ç“ OÍÊ+º°€µvvCõ +6gžØA/_Qða€]lºZÁFƦ Ì`NìÀR0¬\ˆ°lƒÓ6€yúŠ‚˜,%53ï klíì—ßÌÁv!X ÀN°*Ö78,*MKk;¶X´,E°ëåU÷j=Ø ¦YÁ´Ã,8ØÏCAa»-KVeæbX5ÀZ¨…±Ã¥ °…¦‹taR€ç`eìÕ›·líÆÍ[æa§Ÿ¬ÊÈ-$a=Fõ0+»U¶Á¤aá‹RÃ*ìyK;† h`¬L°½<˜RX°™³˜‰ÌÕÃ'@ +°ËQñIÊŒœÂ’²Ê»ëžòa(ȾÑC'ãÁ 4-¬l ˜`çta]<Øm°ØÜùf°e¶aÓ€¹cØI€Å%)Ós +JJX3†½Ò‚‹6š÷l Àv ˜¿$ô(À"u`/{z釱A¦ ÛÃ)0¬Áìµp`F&f¶Üv¥æí/ إȸDEzvAqiÅuOšÛ„›mæ01ÀÎò`µ¬hdì#¹‚i‡Ùða'›¨HËÎ/¾© ãæ=’ý``_>ÿA!l st˜›·Ÿ8äÀ"ø°¦¶N=°ÔÂŒÍÌ¡41l½£óv ì"Àäv‹RØ´I`‹¶`«l·‹›—Ÿ8˜%ÈÓ²ò‹X=Àº_÷¾ëÌÒfÛ0ÀΰÛ÷k×7µvvCQ #Jóg°ã‹I§fåÝX°`sæéôòØÕ˜„C0nÞO9lºZÁFƦ Ì`Nì+Ç°ÆÖŽIaÃ}´À°uNÛæé+ +b`²”Ô̼k|Xßà°p`d³G°]°Ó¬ +`Ï´a(È¾Ó Ã¥imÇÀö1°c‹–¥¨v½¼ê^Í#{ÁÀFÇ?"Ø0uiêÀx + +Ø•hY²*3êÖÒñâÕ›·6FŒ}Èø°…¦‹taR€ç`eXÏÛ¾aͼlíÆÍ[æa§Ÿ¬ÊÈ-œ ®o_é…YÙ­B° X”V‰`Ï[Ú Â&Û˃)3Ñ‚¹zøHCv9*>I™‘SXRVy÷aÝSö~`ˆfØ¿y0(M +[&Ø9mXs{Ý° ­`€™l‚mØ´`îv`qIÊôœ‚’RÖËÀÈL?l Àv ˜¿$ô(À"u`¨4 #£ Æ™¶Üv%†íáÁV` Ím,ldl\0#3>ÌÅÝÛ_°K‘q‰Šôì‚âÒŠ;ꞨaýC\Ñ›ýS˜`gy°ZáÂlø°‹MT¤eçßÔ û2¾ßÁE1l st˜›·Ÿ8äÀ"ø°¦¶N L½‚Ñï0c3s(M [ïè¼]»09†Ý"`ïú©M›¶`K¶Áv»¸yù‰ƒX‚<-+¿ˆÕ •& û&˜¥Í +¶`"€!`·ï×>®oj¥¦^ÁÿùïOaÇ“ OÍÊ+º°aÁ`,êÂzùŠ‚ìjLBŠ.¬op˜*Øt=0¼‚M˜õŠÕ뜶1° €]à`åÖØÚÁÂFÇÙ,˜=‚íÚÐÃNL–’š™wM6& +2¶`A‡,Z «Ø3€½øýÍ[°?ÿø8>J#ÌÂÚNL°ëåU÷ª=klé@¥Ù7`6FŒ+MÓE|ØÏCAa»-KVeæ +Æ>dÿ&ØyV&h˜•ýÚ›·ÌÃN,>Y•‘[Èž·´k`ܼl‚íD°iX8À¢Ô°J¥©†±2Š`3g0>l/¦XIYåÝ꺧Ú0î¿H Œû•€¹zøHCv9*>I™‘ƒa1¬Kh0(M +[&Ø9VÊÀšÛ»^öôldlœ€‹Ø †V0À̶ Á6lÚ0w ; °¸$ezN {a¼±HŒí¶`;Ì_ú?îëó)ª,ã¸ÖÖZ:Ví¾1T‰åÅX³UHT1‚‚9¢•ÔMsŽdh2‚’“’1T$£Îª˜0!*#âþûœsnwßÛÝà¾ÏÝþ>õ«Ûçùî,*>9Âj ¬M€½‘ ÌÈÄŒÂØ.¤°-Ø +ËÕÂzä su÷ö e°$+«¬½~»©Y&°©ã”€§°¬ñ`Döîa6j˜…,ŽÀ +Ë*¬£ç!`¯Þ¼ÃÈïûè觰yÿ¢°åN.ë ÌWXd\RÚ065°o#_‡l¸0c3sRš€9Øf + ì4…åVC`­€‘ÒÔƒ}ç6WæEaÇSXiE͵[M÷Z;ºØ®a¤4Å0K{Û˜"$â `±ª´ ¬Qx§é¾`ÿl——VPZn62:Ê/ cÑÈØÔl/`çcU©"X{wŸ¦>ÙO†M4£+X ³¶wXæè¼0OE0`§(ì`Õú°a9ÁØ& ì(`‰VR^}°À?}þrà­|`¤4-­ílƒ,&15“Án6Þmiïê#¥)7˜…¶ÓsO@p8`ç(,¿ä +` òiJÓtÎØ°yÀ„‡llØÊÕkóØØÉs1 )™ó‹¯TQ؃®^CiÊ fe·x)` Ì°#"X6øI¼‚ù‡-¢°­ ¶°è„” ì¾6Ä+lòÌD¶Ãc·P`g),¯ørUÝú;öèIÿ žaäd‚ÌÂÊVv°d1¬³W§4™ŒKØô™FKS Û°øäŒì¼¢Ë•2MÒÀÈ +ÃV¬Z˜ûn?C°61ŒÎ{NaB‰`KÛ ÀöŸœNaµ Ö#Ñì;\œÂŒLÌ(líB +Û²ÃÝÛ/0°3QñIéÙ¹Ee•µ×o75 0”¦F\\Á¦Ž sL Øq}ØCYÂl¤°C€Å%¥gå–U0X‡lT60'Àܼ}•¡€EêÁþxö°C¦âflfŽ £°åN.륰4 +«!°V{JaÇ€½xù—Â&üFK0Ûìêæå« ìtdœ*-+§°´¢æ…uSØ€Ì`–6ö ¶0`ÇÄ°[÷¸‡‰Js<ØAÀbUir +JËå›6Ãl——"d/`祰öî>¹ÀÈ +626e0kÀE°S€¥RXµörà-_°‰cÀf‰`Ë×æé£f°ÄÔ — +J¬°ÇOûL³‚9‡ýú-&°MØQìêÍÆ»öd ؟ßy„‘Ò´´¶c°m v°˜ÄÔLÀ®ÖX—{ÿ‘uË7YÀ,4°ž{‚Ã;“˜’y)_öú- 2ÍGÆìoZ-MÀf›ÎчvR«×O‡ /ô˜°¥+W¯̃Ž–’y1¿X€=èêÕ¾ˆa#_y†YÙ-"°æ¾°h5¬îÿ¶UËìrU݆;÷{ô¤ÿÅë7Ã&OÁLt`;ÙÀ¦Í0Ûåå£Ù ØùXUª.¬ŸÂ†8‚M4#+ØÈØ”Á¬stÁNQØ%ÀªÕ0dÚ ã6K[æè¼0OE0ƒ%X ƒµ´wÉöëo¶˜À6X`G),“®Þl¸«†½–Œ”¦¥µƒmc°€ÅX~ÉYÃ,4°ž{‚Ã;“˜"˜ð1-MÀf›ÎчvR«¢°]½R“ɶtåêµ€yPØÀR2/æK`/^¿y/”¦L`Vv‹l#ù…ï,Z «»Ñpç>`¤4e Û*ev°zÀ:%0õGÆlòÌD¶Ãc·P`g£’3.æéÁÞ ~Tþ?0r2 ¥iae+‚vB«Ã^½a¥É`ßx‚MÒ¦Ï$0sÀ~'°«ÖæNa‡‹OÎÈÎ+`m=Z‹#ÜÂȼÁ–¶ÀüÃö¥†ÕÊ +&™.l‹–Î`×뛚å321£°¶ Õ0o¿ÀPÀÎDÅ'¥gç•v°Žž‡ÿ~öüÕß°©cÂ\SvÜ ¥)?˜v°¸¤ô¬Ü² +ùÂæ 0'Àܼ}•¡€EJ`­"˜f,ò 363GiRØr'—õZØiÀÒ(¬†Áº ¥©ûúuø'Á&ü6°ù€9ØfW7/_eƒ©Ò²r +K+j®Ýj¼§…‰æ=;Øð—OüÂ,mìl;` +ÀŽéÃú$°¯œÁD¥9ì `±ª´ 9¥å ÖN`ýj˜ú߃OØ´`»¼|!{;«J•Â4¥ù‰ØD0²‚ŒMÌ0Ggì…]¬šÀZd›%‚-st^˜§"˜Á ¬¤¼ú*…uɆ l1m"°ÀŽRX&ƒÝl¸+G-Mk;ÛÆ`‹!°ü’+bJ“s˜º4õ`;=÷‡v.&1E{ÐÕË+LxȤ°Ù¦sôaA€¤°‹€UiaÏ{7(‹²€-]¹z-`v°+f°û€‘ {­ 2"áfe·ˆÀ6˜Pø~À¢R2(¬îFÃû:{¥¥ qɶU–W|°zYÀ ÁLt`;9Âjk졦>0!ÈÔ°¶ )l‹,·¨¬²öz}Ss[G)MÙÀŒL̤0Wwo¿ÀPÀÎDÅ'©a·ÿgXW{ËO…M¦ì8…eV!†¡4? Ê +f#…,ŽÀ +XkG·SEÀæ 0'Àܼ}•¡€EÆ%¥QX,aÆfæ(M +[îä²^ ;Ma9쇰 ?€Íl>`¶ÙÕÍËWÂ`*+­¨¹v«‘Àúþx*.M ìó§üÂ,mìl;` +ÀŽQØ-¬½›”¦ .^`êüŽ ;X,”–ëÁ覢2Na‹ú°]^>Š½€U¥ja-cÁ†¿üTØD0º‚MÌÚÞa™£ó: ì¿Ü×çSTYÇq­­µ´|k¨’!(/Æ­A’ŠÌ”œ¡»‰ÌJN ÝM”œ%£¨D%guDÇ)]GLÇ>Ï9Ý·Ïm˜Wë¹{ÿƒO=4ç÷½I`Åk¡° „AiêaøI戰c§ÏzØ€e"¬¦¡¥­½»W#óžüÈx‡a °S QD_Xjfv> {*E˜•­ƒqXyM=… ìþaBiš¯ÃÎxû‡(¢–š©ð4 ŒŒÅïÜÀ´Ù߀ÉvƒÀŠÖŒ°-ì­ö{˜ƒãνûÌ‹À.L‰°êúæ{6¾ìãÌôŸox…mCØQ„Ë£Î,E©É£°‡]}à¶|3ÃNÀʪë$Ó‰aÿb`î^~ÁòH€Å§(Õ lxü À^¿}76Ë+ JÓÊÆžÉvÀ +Ö$†½ÿHW0w°e W0À,¶ a{ö˜']Xªêšî¬`¿½|…°¾aÚna`;vaA²ÈsKÎPçR؃®GýÃcOÄ¥É9ÌÄÌ‚À6Ûo%°,ŽÀJ«î¬Óöå•Iææé$‹ 0Õ<0º©¸„­\°kqÉéªÜÛ¥•w lhlRš0;̃ÀbÄҔlã¿ l·³ëa„†EÄ,)]•C`­ëØ3Î`K„™ZXbil;ÂŽX8Àn%¥gåÜ.©¬ml½ßÑÓ74:‰¥É¾ƒ‹gؘ]6=C§ÊÀÅ K“…YÛm¡°Ó ¹°´¬œ‚’ŠÚ¦2Þ`ÿ\ vÖ'€ÂE°ÁÑ éÀ`,š˜šƒESX6µð [jFV°f»eû.'—CóUìfbZfvAqEMCK[{O¯„aŽ;†°€]Áºötêw&È$ÃÒ´¶u °Sv`©™ÙùÅå5õ62!”&®à¯Y °3Þþ!Š(€%,ÓŒ?˜Pšæëç‡i¬aôÙü°½ûÌË?D° ©JM~Qyµ6Ž0(Í3,ìë×Ï|Ãlwì(‚v™Ý{ØõX{ÏÀð`Ÿg?ñ ÛF`')ì<ÀR”š¼¢²ê:ì‰û‹SØò ÌÌæîå,X|ŠRÍÀ†öŠkžLƒ ³²±g`2€]`M:˜¸4y†­^‹0Rš†°KËPç–UQX?ÿ°e W0 Û³ïÀ<ý‚d‘ç–¬ƒÝ}Ðõ¨xL"0m1°;"†åìÀ:E0²©Pöc˜‰™m¶ßJ`'Ü=}ƒd‹KÎPå–ŠaPšzØ7a+ç…¹, `×X# MRYÁäo]üÃìÄ°X€¥«ro—V²°ßç…½}óÇ0gW€yø†EÄ,)]•C`­ë™t`¦–d¶ÛÙõ°!¬¤²¶±õ~GOßÐè¤PšdS}ýá°%‹ÀHil;ÂŽ»yø†…ìVRzÖÿÌÚn …X(À®XÀ¤cJs!ØE€¥!¬B lÕ#°³>¡áÑKLËÊ&°=Œ)MŽa¸‚MLÍ)Ì`N. ì&WÔ4´´ut÷ì©F7'°¥óÀÖ1°]N.‡æª °L¬`#Xšo„n‘ìç_戰c ØËXý"°¿>Í|xÇ% KÓÚÖÂNQØ€¥"¬\ {möž_˜•;ãí¢ˆXBj¦†Àš602ÎÀf¿P {9õ`½=mÿ{Ø?ô0RšûÉ|ý\˜`7¬¨¼z.Œnª¯ÄÅÀžÿ(˜ö…ž¶sïþƒó"°ËSja÷v=žöy–… öv·ó³q؆°£ –GXŠR“Çž<)”&Âð`¯y‡4€•U×QØð8–&ß°å+˜™ÌÝË/X °ø¥zØþ`x2 ‚ÌÊÆžÉvÀ +Ö„°~ +ƒ {O7•ö‘Ø2=lõZ„‘ÒDØž}æI`—–°ªº¦»ºõiaÓ ì Ÿ0œ÷ lÀŽ ,Hy`Éê\-¬SB0mÂN°8+­º£ƒMJ +fbfA`›í·ê`¾A² +SX# M>{Á§°•óÂÜ°kqÉéªÜÛ¥• lJŠ0;1,–µ¬á +þ, ØF-ÌÙ`¾a1KJWåPØýΞ¾¡Q¦=Ï0S K(MÛíìzX»E`%•µëÐÁ Èø-Y¶`¿l;ÂŽ»yø†…ÇÄ^X–1íÉÀ¬í¶PØi€…RXZVNAIEm ŽN°<˜Ò\vÑìéÔK‰ÀV­1;ë °Ä´¬lkiëèîE˜(È8-5ÃlbjNa¶srÑ»™˜–™]P\Q°v€¾€‹_Ø:¶ËÉåÀ¼ ìÊ"0”‹oØÏ¿ ÌaÇ¢ˆ¾°ÔÌìüâòšzÉ°4­m(ì”KÁFÆFJ“l*©À¬ØoÿE…i¬™w˜ö!£0RšûÉ|ý\˜`7R•šü¢òêúæ{»ìÉó#+˜þ÷ +lçÞýæE`— aÃãXšzØg‰Àl¶!ì(‚åQç–¢Ôä•U×±0Rš3R„`ñ6;ûéãn`ËW003˜»—_°<’ÂÔÖ„°þá±¹0<G0<™¥iecÏÀd»Ÿ’¡Î+,«ªkº+ Ø2=lõZ„YlÂöì;0O»ÄÂt>Øäo/˜Òä†óžíØ„É"Ï,9C[XZu‡Â†Æ0È$Ó™!ì„‹3{;­ßT<ÃLÌ,l³ýV +sóô ’EP˜ŠÀ˜>È8…­\°kqÉéªÜÛ¥•Ö74*‚™$`vbX,k½ßÙ#†‘~œÃ6jaήó𠋈XRº*`µëÁ>Hfja ¥I`»]ëa·¬Dx6EƒL›%°éwÿyýêÀ–,Û°_¶aÇÝ<|ÃÂcb¯,‹Àt0]iÎýÉ1ÌÚn …X(…¥eå”TÌ›ÕÁf81¥¹ì"kXïàˆ„`«Öõ  XbZV6ÀjZÚÚ»µ0²wÓ\Á–á +615§0[€9¹ha +€ÝLLËÌ.(žÓn*ÞaëØ.'—Có&°+¬žÀFÆ¥ƒ ˜#ÂŽ!,D}`©™ÙùÅå,ì…´`¤4m(ì”KÐÁšö`¢ “쌷ˆ"ŠÂ4v¯½‹k˜ö!£0RšûÉ|ý\˜`7R•šü¢òj€=Ø°ÃLeíÜ»ÿ À¼ìò‚°OÆ`ã#Âl¶!ì(‚åQç–¢Ôä•U×10(M.éÀN +°x¬xŒÂtÝ2«Š<Á–¯``f0w/¿`y$…© ¬I€MQøñÓ‰`PšV6ö L°ëñ)ê¼Â²ªº¦»: ƒŒgØ2=lõZ„YlÂöü—ûú|ª"Kã8®µ5ÖÌXµûfv¶j‚òbª¨`s$g¸—$H—,9çlDrFEQ—QQ‚8ó§ìsžÓÝ·o ¼Ù¹§çüŸêîÓ¿ï‰ÓsEXœ:ljN¥4ÿ`Fæ½v`ç ÌO°¬¼â²êú–Ž-`kŒÁ¸ S‡]`©*°±©YMØÛ€ø¸ë¦g`„°ý–(ÌÑÕÓO—°"„õH ¶{SX…)ŠÊªê›;zî=¢0,MÜTÒY¨ÂbU`Oì¹Æ]‹›Âr€íã`ösñô +X¦¢¨´ª®¹Â&gIi¾£Ý½‹LÃôŒ¡4vÔÞ᜖’©(d¶c Ø^€ý0[»äèâá{a•ë&°Q +ÃÒ\“ÌÔš®,Âr ¬‰‡Í0•æf°»°»û¥ûî{-°ë>!Ë °Ú¦6ölcØûßÞ¾ž× l§YÁzú†f0»S,`·2r D°‰™gó¯E¥©[` öƒvÄîÔY€¹#,aë` RƒĂÀ.X@pD Àr¬‘ÂFxØÒ2n*"ûƒu–¦¹…]`é9%»ó ÿéÈÄ4 A0âbÆ—¦ÌÙÝ; 8œ‡Õ4¶¬O †ï"…}^[Ñ9Œû‘©Â~4Ü£ “,9='{°OK*°.æ`‡Ÿ<07„Å °N„OÏÍ/¼Anªß¥3³:H`Ì_ °ìü’òš%Œ2ì˺d`WXëØ°` Á Ô`Nn^þò°èø$€¬¥³÷~ßÀðø”$`ߪÀ 4MÌ,E0…å—W#ì±öáÓ²û]€-²Û%ÀÈ +˜1À~%°c'NÌaq¬C£A¶&1Ø!€'0?YXÀ²òŠËªë9ØØÔ¬vØ*k0.ÈxØ~Ë»,ÀR³òŠÖ#I˜ž‘*ÌÑÕÓO—ˆ°*6°ç¯^³Û½),ˆÂÖÜÑsïÑ“¡±ÉYei~þ‚2iÀ,Ta±+Õ£›J°}ÌÞ`.ž¾A¡‘Ë$°ºæö `ä° Ó72†ÒDØQ{‡s°”LE¡6:90,Mf`;¶€íØ/³%°KŽ.»‰°J€u«Àøy. ÀL-¬)ìÀC"o,—ÀšÚ»ï>ìس— F¦Çæ`ü +þû?¶‚eäÞVÂ&fHIcQvÝÃ'0$‚‡Õ6µ‰a‹ÌÁvjá +Ö7¤0skÛ#v§ÎRX0Àneäü5`6vñÚuw„% ¬`]621-= 2v`Á1Ë!°Æ¶®;úŸJfbn¥KÏ)(á`} K“ŒÅuvaBiîQ…9»{‡Ç$$#¬¦±•‡Í)aÜ#cÆýȶ“SX>Â:6>MJs‘Î{)Á̬l?y`n‹ONÏÎ/)¯iØ®õ5%lzb„MØA»@`þòðh¬`ÃãSs|i®(aŸ×V—‚}ýf  +»"ÀÒ²ó‹)ì~߀&ŒÆ`ä‘©Â~ÁœÜ¼üåaÑñI«nhØc‰Â 4MÌ,E0…å‰`cS³/^)ƒlAØ.FV0ÀŒö+;q`®‹KJËÊ+.«®oéàaâÒDØ:“0®[D°C;O`~²°(¬`C<ìýGœ*°w‹o؃é!l¿å„]FX(ÀR³òŠ(ìÞã'Cc“lIöñƒ4`Ž®žKLÍR•UÕ7ìã‚Œ»=X„íÞ»l]20 æâéKa™Š¢Òªºæv„NÎð°e1l…iؾŸvÔÞá‹ŒMLQ‡={I»…ØŽMaúFƤ4fK`—Ba…ëØ ÍK ¶W æá°›)™¹…¥•uMíÝwöŽNHFJS 3µ°¦°kvCr°¯¶‚]÷ð ‰XFnáíÊÚ¦6Œ”¦0=ÖÙ…ÁXÔÓ7Üv+#·@ ™˜¦0º©@F\ Àvjá +æaæÖ¶GìN˜»O`pÄ„U¬K€½Úöj~Ž]˜ ]$° +Ë!°Æ¶®;Pš#ÝBaø‘ᛸŠ°ÿ¾yõ‚E)MSs+ +»Ja1+QÂƧù û$)˜‰sv÷X:Õ4¶j…}f&”¦áí°äôœ|%lx|Jö™À>1ã~dÃŽŸ<07ïyxL<ÂÊÖ©„aiJ ffes`̟² ¬¡µ³÷~߀ãæ½”`v…¢ã“Ó²ó‹9Øc›}Á•æ2³°¯¿Á Ô`Nn^þò0VÝÐBacS$È؆‘G¦ƒ 31³ÁdKJËÎÓ€½•ìŸÿ"0,MuXÂÊÖA`C€í`d‹aÇNœ˜«—Ÿ,, +`YVßÒу°I1 eŒÂ¸ Áì¼–š•WDaPš"ÝTÌÃô Œ¶ßòÂ.;¹zúÉB£âVUßÌÃfž¿Ä ã`ä0Û½!Ì`A¦@X;ÂF'iiò+]’€Y¨ÂbS3E¥Uu ˜½À\<}ƒB#E°n€ Rv ™kìÃôŒ!ÈvÔÞ᜖’©(¤°»úG'´Â–?-é¶c –&Àl ì’£‹‡oPHdìÍ”ÌÜÂÒʺ&€=Ü öþ7¦a¦Öv `Ú`ÓŒÃD¥¹ìÆÍ”ŒÜÂÛ•µMm™˜ž›WÙwÛSØkyŠ°ÆÚ +þû^ 캇O`H„6-M2=V7‚ÝÁbt#+XOßÂÌfwŠƒìVFnºî<ì{ÊÃpSÑG¶¦ë{ðçÃvnûA;bwê,ÀÜ–p+#§àvEm#Àl|Z(MéÀþý³!°‹³MØG–a¤4MÍ­(ìªKÏ)(©¨ilEØðøÃé‡I_šÌD€9»{‡Ç$$§çä«Àf_ˆæ=c°¿iÂ~4Ü£ “ó°r€ul€ÀDÝ‚²ÕmÁ®þÿaÜZ;ÌÌÊæðñ“g憰øäôlkhíì…Òãa$;H`Ì_Ÿœ–_¬£ÓcE‚°+În^þò0VÝЂ0(ÍY,M[Þ–® ÈD0€ý$‚9L°¤´ì<„uhƒ­Š`o_¿|175>Ìì[™‰™¥*,.)-+¯¸¬º¾¥£ç>”æ˜dK \$Çö|–‡µ¬D7°]Œ¬`€aiر§æêå' ‹BX…AiªÁÈṨ«Ñ1Œë¶ßòà!€§°P€¥XU}³FÇ"\‹+Û…ë¦g`ÄÁ 첓«'ÂS³k'0ZšŒ{d+d*Ø ¬“‡%3sXPhTlbj¦¢¨´ª®¹]Ô-dS}Ø–ÏüÿtØn ˜sñô +ŒMLÉT–VÖ5i…­  .E1ìñý^ ˜3³27ÑlßÏ#¥Ia!ËE–&÷ôMn<ð‰-½·øfaþùì$k¨)GX|L¸\§0}#cd³%°KŽ.ÿ#¾ÌŸ¢¼ï8®í¤ÓiÒš¦ÓétšÆônÚ´ãQ›ÚÄšzŸ1˜âŠ" (r,,˲Ë}.÷±Ü‚¨¨€€ (€Æ+&NßïÏ÷yž}wÓ©,úÌìþþšÏûóú¼¿!–L0í¥)ï£zÈ’`¾ØÔäøè Ìá¶aÝ€-ú`ꥹrµ XDô©øä´ÌÓƒLµ`^h±ɾùFΘ7Xóó`[6¬ûø%€½¦ƒ-ñŸlÓÀønÑÊ"™¦E î Ø4ÁF†®(0Wy‘Ó‘žš§íx¹`o`KØŠÕkønQ`Q±ñž—¦Ö‚Õ…¦=Fw°**°‹½]m^`GïŸö«¥o¿ 0t*˜z Š5dZ½W +ZTKF²¯•;HT`u®²¢xÿ½ß¿d°9õ^•E½z¨C¦ì­FöøÉ“§Ož<–qÅ EuŸ[j*J +rΦ%'œR`ŸìŸ­ú`¿ñ—öÀ€ìu¾[ÞR/MO½7Ê"«/´2jQjð fQ däÂÀÔŠQŠ°=«bEI~NfZrü©ècGîÛ£ÀþîûùÏ~ªÀ~h02UïMJ]h9dJ‹°–ŒÂÇÈ>ÚãGàÂÀÄÉñë× E)¨ŠùÙ™6K|ltÄ‘ƒ{÷ìÚ¶éß[iûÉ‚ù¨÷(‹Fõà!£ïE‹ni‹CZgîƒ h‚ëþÌô]\1å±½4*>Çb£"BCöl­öî;¿x‰`F VÕZ2ú¾”µd*‹÷¦gA´‡_‚kvúÞ$qŒî ›j«¤x°ÜG…‡†+°5sÀ~üæì¹,Õƒ‡Œ¾-²ß·Ë’]åÈ„ìþ°=×Ì= IFS„;ÜÚc£’r,ï̵kV¯üð¯þãïžû^Á¼ê½jÁÞÕƒ‡Œ¾‡Ñïi,™d#»uûî½é á›ee`jÅ(ÅÊuƤË;s㧟lÁ~ýî/ °×çö­õÞ(‹¬ú!ƒï5-•UÕaÉÅ˃2²)!›™%Öô]qc{:é%Ež16* ì«W,Ø·–Eï MßC‹¨Á°Gi¥–Å~Žl|òæÔMƒmzúÞÝ;¢ØEžgº£Ø )Âö8cz£úϱeùÀ–¾0_Úð=µ{ TáD3‹ð⎠aœº 4~w1¯[ÚÀú%‰Ê"lÏ3ÆûìygzÀ–,4˜÷…V¾ç‹Œ5ö%sIedããŠìλøÝV\œ(Id¡ÊRRŒ8²WÝg£ÜŒÅƒ`o,˜V=x¡5ßkOMh‘öà’9´,¶QW®!Œ7&oÞššº}ûöÔÔ­[“ãc£ÃƒX·–Äüq¤¨ÛžÊ»Ü{À^ ˜¹,Î=d&-4–L²ˆò!#CI64~7o*®!lÕÑÒÀ$bÅÐùƒíõû¬Õ‚™Ê";•éykq¯¶d¼dùÅ(22ˆñ*ÉÆnLLLò›˜¸1~\W.q`­Mpbi!ϳ…M1L—¢ç>û(÷3]hå{uÈ–{ìÁ%ã%Ó²X]ßÄ-ë»$d£×ÇÆoð»>B®~(k¬Õ’hMb¡¢;(EÚ^΋‡§Ï[<0¾÷ØC–,Ze#+W#;×{AȆ‰ÆïúõÑ‘kCWÄ.lÕQÈ$ÊyÆŠ)wˆ—™‹Ç[,¾ÀþO.?`^¾×íaZ2Ébf¶“#«kr·wž;O²! ŒŽŽŽŒ  r^}½Ý²a(WÌX1¾Æ”½îsàÀüúÞÐâ +,Ù:.™žÅx õÁ‘Õ44·¶w Ù•«ƒCC×äÖÕË—Ô¡’èY1q‡a{¯ªø}­L÷=µ¨– ÝKfÊ¢U¬ÂU ²õ]ìÚÀÀ ¾«W¯ô_×¹ÎvwSCMæÈ°Á‰'cSÔÜ¡IÑtŸçWîù?d†ûÕ=¸dÌ¢x7:YFVT†06¶¬·ïÂÅ~°ÉwXÎ÷tƒ«A¬Ð¦'qÖ;twhR Ø}~þy|¯ÙCë\2#‹úÈy%#ÉÚ;»{ˆvñÒ¥þþK ºp¾Wq5ÖUW–çËÀp£"$‰²bè†;{Æžóø^³‡gÉô,Š>ÔÈÎæ8 IV߈=ëì:×Ó{¾¯ï¾¾óÄêêh®ªò’‚¼ìL»G,Fœˆ$òŠé+¦»#pgÌ¿ï5{x–LË"o4ô‘%¦Ø2ÆÒ +άÙÝ´îs==½øzzÎuwu¶·b¿„«Ð™C%b`Tœ(IäcŒ+æqÇ‚ƒQ‹ÞK†,Ò‹ÛvAjdñ«=Ó¡“54µ´¶µwtvuuãëêêìhos·h\E bšlu|¾“EQK"{‡î¶A0ßö0–Ì“Å[wì–‘aËâFûÙì<•WU×Ö76µ¸ÁÖÞÑÑÑÞÞÞÖ +¬ÆúÚêJÅ•iOµ@‰˜¨ƒNÔ“èY1‘¢nû€ƒùX2-‹¸Ñ›·ï +âÈÂÇœbÓ…¬¤¼ÒUS´æ–·»Õív·´475Ô×Õ¸WöÙôÔäÄ3±1‘ÕÚÁ>…$òŠé+6×öóó©Eï%ódúغ#;p8ìØd•UT¹jjë›äklh¨«­qUU”• +—-AÀædÑ<²å«F®"d‡ÃÂÇ“DK´$§XSm¶4ùl¶TkJ²%XWTdx˜Ì‹âÀ‚1ˆ«–ˆ©ÍMb`Á|eÑkdH±fÉ‚÷‡:r4"RÐââ“þËn?5uFaµÓmtÐiE¢,"DöÍ H€°£¢bÅJÿú¾ç|û½ß Zo’†óSÃ3ï{Nòùôô_žÓÓÏÿ|:ù(X‡{;[›ÜÃÌ,ŒŠø¤'Ñ +¬Dÿ,¼d¦‹Vd[ZE†q@¤l5¿QDh ½{üáï''ŸxN€úpüþÝXûˆk£°º"\8Ã\D|†É“(³›ÌÛE;²F*cGW÷3ÈÆ £=Ë.çh{‡¯ß½îøÏ1PoÞ¼~uâʯ.gÒììÃEDñ¥C&NG¬M ÁL‘5ÿõ¨Ö¬o2ìY*=¿H¡­o·wöÛ+àŽÞòõaíIÖÊÒâ|ûÅ.,."ÑfN‡nb|°P­ÈXÖÊkF2ìÙäËÔ\†Bm£¸…Øö÷_ñìCµ³UÜXϯåWf.…»¡\t[œÀÌ鈫‰Þ.#“e¤5“²ñ‰Éé™Y„Æ´bÛÚÞÞÙÝÝãÙÝÝÙÙÞ*nnò«¹eŽkfzw.:|îóg˜ì7˜ib¼°Pd·þ0el2ÜÆñ$-5Ç´•Ül››ÅâO±¸¹¹±^ȯ­®,gç9®ÉñQ•LQÄp`ßÜD·‹áÈnÔpC²,Úä4Ó—`[]Ëç …užB!Tney)»0ŸžKq\c#C}¶‹ŠÈ]W‰ÓS%,"2|ý 2ª5²îDo?Õ1É´Ù¹ lYàVr¹Už\n…P‹ ó™ôlêåô¤ˆËqaÁørÈÏ0ÏéøVXà|8‘áë‡,#ÖLÉ:» ãЈ6õr¶4á³Ù%žlv(¨³(.¬W¢»KºÄ‚©Ë!O¢·‰1Á‘‰2bÍp@X†ÛÈuDh =ŸxØ`.ÉÌód2éôÜÜ,©¦&'’ãc2.|~µ—¸ˆ|9~ÿt|ç뢗‘ÖLÉpE±i Ž?OÂ6ÜL*O*5C¨) +k|ldÛÕ›@ ñùÕj\â"êËìÛaQ‘™2bÍ„ mlju|ÚC}âØ’ÀMNMM«!Ó‹ R¢„ý½jˆÏ/Þ/éâ‹ Ì9q®"seM\ÇŽ'‚Ö϶Qàž'ÁÓ“dÔ(…Õß'X\Ö¦®˜³ºhGæ•ÕÕ74RµIÚ3eçÁ$Ô «’E5lj¤;O.ÄËÅEŒ70d(£-»É2\}Z4„¦hÝÒ608844¬gh(¥zªXˆ«±¡¾wžó2.]Ä``±ÀœÈD™áêß­£:Ò¦1­SÚžõööõõ÷Hƒý}@)U‡`Q\¨á½Zºó–Ë)¢ ,Ž&ú"Óe Èð„ê¨h¥ ¸žD>=‰DOO·Tµ?~¤Xõ´^ø\¶\vc,"2YF#£Ï3QGC6à {Ú­OººžpVmK¬—¹¼`á"ÆX¦ËÈkfd²ŽšÖ å\ñôtvvv * „ê¡fÝ!×ÍšK1ÎÀü²ôš¹²ÛmŒ{L<=mŠQ¤ +²n9.µ`žÀâ…9e2ÕÆ l”[s tÄÓÓÚJ¦–fdE*›e¹~ ºb,ªŒ®L†¦iÒÆÁ5Ÿ˜%³CÓ4›Á)žg®i”RyYqydšS<ÏÈŸÿ`«ªÅ:“Æ6 §y¾‘ïøÞ£R¬ +º|2I³m§yþ‘ï¹jTѬò»™Ÿ&mZçí—Ôû®Ø*ͪh\Ñ´€MãB@ d¡”Ê˪”Ë•…hçò‚cÞu9¤ª+šfl®ô\>CUaW@fÛ,\ižý>ë׫ËòÐl›«;c.E«ªâòÐ\ÛÙ¼àÛC¯:,/-d "£~þKUdEØJè¾UmïÿúR]ÄïV›¤'âÿ+á+ñÕƦÄú5Sm†Î%J͹D™9‡$gΟèb.æb.æb.æb¾fþ`<E endstream endobj 149 0 obj <> endobj 114 0 obj <> endobj 138 0 obj [/ICCBased 123 0 R] endobj 110 0 obj <>stream +H‰tWËŽ$5¼÷WøÚãôÛW„„´ 4ˆSóX¡Ù•–= þžˆÌ²Ë½3«QOeT¹ìt8òQO?ÝÜÓ»[pß|{s—§Ûsp÷Ï.øˆ_kÿGiÎ}¾¼<}‡}¾|râþÄI ®&wÿp!þp¹b¼{áåšhHÜŒ˜a„ãúþòçåç‹ÔîRrÕaÐ?àÖ' (Á~WþÃÝ_ÜÇ}ÉÞ|“ŒWº¹Çmqñ± Ç0¢l†½»ûå€ ;Šô2ø‚Å'L>†z êS€[~ôrØÙ,u1NbrɧQÔ«pN.ÖèáˆÅÁ†ø;äArGàŽ…ë ‹/œ¥ûÞóÕ׊qÊ>w®`Gõ©I&:]‰ÇÎÞ_šØ‰€ 0àÛ áG G,ÐxéºÌ(c‚æK+˜Ù \©êû±¹}ÌâºÜ.ƒ+$ª€¨˜}ÁØ!w)qðv`£‚·Œ©<Ïå¸q-<`Þˆ8yNc¨{iÉp„K<öX‡¹[!^¬Øzr’TÊ8ŠÐ'à{:Ò ¤U³›|𜨻»ÊöTcÄ&ñÞÒ`Wý÷Cätz¼Ñ—ª¡PW l3Ö'x­SÚ` Ú܇Ù<6J®4Z£Êâh¤$PdI¦M%‚P DÓ€ª{œvöEF$¾˜ÀäwÅ“¨á¥~8a­<°a®d%ªBó÷  ‚FŒ’Ý6¢ª—³lz+V]nÕcBÀ;h 9%ÀDO‚4ÆzÚ• Iî¿Ëa_AÂ"íËUÌŒ>à´abëPþµªˆ°zÎNQ) +e>Å$m8xÍntMô9P C«– öjÃElxd](HcY¡ºYÖÛIÃ*L¹œÏá­.Ö}Ž'Âùk~X7T0 Ž‚j;ÐÌ°n}O{2Ã`=geK¯1ˆ‰©lËǶa8‡ OÚðëFÓ|¯e!Meý|Z,7))•jœu[m(uf( w*y=3Qa²ò‘,z© Š¬õiI“m+¬Û˜UçQ»¡—|JÖžLqu™Þ°KìšrÁ[*jÝ-Ë•#Ý5TgËöµ;Q×¼<ÑÐœ£¹ì‰…HÔ=1këõ…Wôõ¢UyèFò[a!¯ˆéûWÈÊq¶ƒfÇ@fµ;†¼á?fàw¢þ-À×åÄÍgœ$šùÒ¿B,•¤â]D;ì´|‘´µ OÔ4!ÀC#Á¾*R2D—`æ‹™…¡¢IZ»¨Y¦¼`b«1D†j,Ã}h#'Z!‘kôõóª ³^ÌBZ©µ*í÷§¾ooÏü>ñô«À=ß~¼d÷¯Ëîø¿ܯ؄DíRqù-¸ßÝFròJ¾ØÄô‡Ô,!Xöƒ§Q«M×áoüšƒYÚþÙ_4q›hÞÑ/Ñ ô)cë˜àÕäÛ"‡'óN˜/›Þ_žÁÏwïn—ÿe”F endstream endobj 111 0 obj <> endobj 151 0 obj [/ICCBased 123 0 R] endobj 105 0 obj <>stream +H‰tWËn,5Ü÷WøÆñû±e@HH¡,X VÃ…%H—,OÕ9¶Ûs“«hÒ§ºÝöq¹Î£~ºš‡Ç«3ß|{5ÇÃõəۛq6àWkÁÿž«1o·¿‡ïñðÏ·Ãg²Óß?ŸŽ?oø'c>ÃàsÜÈΔhn¯2þõ¸`.óÂË%Òða3B‚áÆõSþ|øÒLŒ¦˜8Vù|œË^ÆÚ¿˜»%[µÕ'¼Ò¬K-l‹{j7\#òfXך¹Vì6ÐKg3Ÿ0ÚàÊ@ÅF·loyØÉ:,u(_!šhcÏâ•;'÷Ýöéâ€ÅÁ†·14Ÿ:‰ïe‚.ÝO˜mæ,Ͷ–&(¶Œ(ÙÔ¸¶ƒÄ[l¤D?ÑéJ;{>ª ؉A®Ã·ÂŽW°@å¥É2=÷ ªÍ5cf…p5Ä"ï‡jB°!yÓlçvá\!QD…d3–À¹{L‰s€·Þz§L¥y.ãÆ%ó€y#Üãh9¢f}ˆ¶ƒ#¼˜[籇ÒÕÝacÅÚ¢ñQdŽ£pm¾'#BZ%™Éωúظ»‰lO5lï- 6Ñ"§ÓÓà}ˆf\Š„BY°ÍXœ@P"´Niƒ¢s³Zl”\ Ôk¥ÊB¯¤ÄQdÑO›‹®dˆ*ÄU·0íd}ð"0"o³ +ÌŸâ.x$œ Ô×–Âë +áJ¢ +äà0›*¨Tð€d”ìÖL½tœe•[¡Èr=‹#‚ÞA{8 Íá(‘&‚x"¤Ñ×Ó&løhþ;†} ‹´{5¯f°§ [‡ò/ED„ÕS2Du B‘ã¡b½œ=è«Ll¾€NÏ—1¿¨®÷2H|0¦·Í‹V#Ϭ!PH~G ªºÊ +£Œ&£üwì ƒ°‡/ä‚{S.4§\&šr–\ZÛä‚M/¹Ô|Êö&Ì’KÚäkÚå2à”‹À%—ê7¹lr!œráˆ%Æó&—Ö§\ ¬rÊ%÷].ð™r<í†ÊEí¥÷`Éå#½Ô]/þ^/å+zñ»^ò¦—P§`b¹LBÞÜS]>#œNÁlô)˜è›Aõ\Z!ùRL–œ¤ÿåÞº +u]±£QÕ—Qµº×rZÌÈ’ jkþ\cQÊ\â!¹*Á‹" nKÍ‚’ï¥Ûc‹3RDât¹TÞä-,¥pS«Ö•vg_‚_³†/Hg•¨ZŸ½ºÁ+äƒ0¹ÈY±{jUÊ.ˆ•Qß|u¬G)GØ?\f#€ºÈýUÉÎÝpU·µ|(wöôÚ-ëÃÐüވܢ…h\´ Ë›Q´Í«û¨%ÏJ¹²ßè{ŸgSg‚¹H­JJ5 )Hd…¤œ °¦*ã<Ï}Et^úÚ7œÑMé󚎖ŒÎÀ‘ ‹<Î%ÀOÏÊ»+Ò`Ú†ÄⵓvLÀÜ‹ö)ñ) JÃÁ3¨z£I¢OÈ „>’0´jQa+:Ü{X2ÒX(næõv”°„ +cÊçsx+‹5›Â‰pþ’Ö ÌÔ‘ía’Ö 'ïIïÃ@Cæc¬ç¬lñ=1!æ cùP7 çäQ>d£i¾•¼¤²v>Íš›„”ÂFµLΚŒ-:”:3”GКŽt…‡Ç¼ž‹¨0I +y-—½ž¬öiQ’mͬÛ˜Uç^»BÏ锬*<ªâÊ2 ¼a—Ø$å‚·˜Åºi–Ë#ÝUTgÍúµ;Q“¼r|Û¿²@V +³T;82+Ý1ä ø1³¿Óõ¾îO\mÂI¢™Ïí+ÄRI"ÞUA¤ÃvQÊIsI +òDUòÜU²áô«"FµAtvj¾¨™*’¤¥‹reL F¶}Ad¨Ê2ܺ4r^*$r£|^å®Ö‹ZH+¥E¹Þñþp}ræúdƧîÓõÇ#™M2€á÷ƒù®û ½).¿9ó»Ù¨A&@CÁÀ[—v—½sšóà_Ódø¿á`æº?DŽÇwLØ&šwäûsyʈ¼›|[dx2ï¸ù²žûóñV¾{¼\þ`£- endstream endobj 106 0 obj <> endobj 12 0 obj <>stream +8;Yhs;6n(^#eZL2c!bX)Y4L)q6s5g%WF*u1SV`'%b9F61qnggjf>?='0Dn"8OC'F] +Ze]Hq-_<0T@[#Y25G_sin'="[ +hEl.mYZYrT4WVpPi*n&Q=AP7A@mtnHTCi+%!9\^QX8~> endstream endobj 13 0 obj [/Indexed/DeviceRGB 255 14 0 R] endobj 14 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 152 0 obj [/ICCBased 123 0 R] endobj 5 0 obj <> endobj 31 0 obj <> endobj 55 0 obj <> endobj 83 0 obj [/View/Design] endobj 84 0 obj <>>> endobj 39 0 obj [/View/Design] endobj 40 0 obj <>>> endobj 15 0 obj [/View/Design] endobj 16 0 obj <>>> endobj 102 0 obj [101 0 R] endobj 153 0 obj <> endobj xref 0 154 0000000004 65535 f +0000000016 00000 n +0000000190 00000 n +0000046127 00000 n +0000000006 00000 f +0000800220 00000 n +0000000008 00000 f +0000046208 00000 n +0000000009 00000 f +0000000010 00000 f +0000000011 00000 f +0000000017 00000 f +0000798975 00000 n +0000799622 00000 n +0000799670 00000 n +0000800692 00000 n +0000800723 00000 n +0000000018 00000 f +0000000019 00000 f +0000000020 00000 f +0000000021 00000 f +0000000022 00000 f +0000000023 00000 f +0000000024 00000 f +0000000025 00000 f +0000000026 00000 f +0000000027 00000 f +0000000028 00000 f +0000000029 00000 f +0000000030 00000 f +0000000032 00000 f +0000800290 00000 n +0000000034 00000 f +0000046578 00000 n +0000000035 00000 f +0000000036 00000 f +0000000037 00000 f +0000000038 00000 f +0000000041 00000 f +0000800576 00000 n +0000800607 00000 n +0000000042 00000 f +0000000043 00000 f +0000000044 00000 f +0000000045 00000 f +0000000046 00000 f +0000000047 00000 f +0000000048 00000 f +0000000049 00000 f +0000000050 00000 f +0000000051 00000 f +0000000052 00000 f +0000000053 00000 f +0000000054 00000 f +0000000000 00000 f +0000800375 00000 n +0000000000 00000 f +0000046945 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000800460 00000 n +0000800491 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000049588 00000 n +0000800808 00000 n +0000047339 00000 n +0000047698 00000 n +0000797248 00000 n +0000798911 00000 n +0000052594 00000 n +0000049908 00000 n +0000049794 00000 n +0000795482 00000 n +0000797147 00000 n +0000707772 00000 n +0000709490 00000 n +0000795320 00000 n +0000709554 00000 n +0000706202 00000 n +0000707671 00000 n +0000048061 00000 n +0000049524 00000 n +0000706165 00000 n +0000049676 00000 n +0000049708 00000 n +0000049945 00000 n +0000052670 00000 n +0000053058 00000 n +0000054294 00000 n +0000065078 00000 n +0000130667 00000 n +0000181453 00000 n +0000247042 00000 n +0000312631 00000 n +0000378220 00000 n +0000443809 00000 n +0000509398 00000 n +0000574987 00000 n +0000640576 00000 n +0000707735 00000 n +0000795445 00000 n +0000709894 00000 n +0000732763 00000 n +0000763780 00000 n +0000709958 00000 n +0000732810 00000 n +0000763643 00000 n +0000763896 00000 n +0000763962 00000 n +0000763993 00000 n +0000764299 00000 n +0000795207 00000 n +0000764374 00000 n +0000797211 00000 n +0000800183 00000 n +0000800835 00000 n +trailer <<8C96E18997454E31A040AC4BB426E500>]>> startxref 801024 %%EOF \ No newline at end of file diff --git a/frostwire-jlibtorrent/logo/jlibtorrent_logo_color.png b/frostwire-jlibtorrent/logo/jlibtorrent_logo_color.png new file mode 100644 index 0000000..b64efc0 Binary files /dev/null and b/frostwire-jlibtorrent/logo/jlibtorrent_logo_color.png differ diff --git a/frostwire-jlibtorrent/logo/jlibtorrent_logo_white.png b/frostwire-jlibtorrent/logo/jlibtorrent_logo_white.png new file mode 100644 index 0000000..a7a323b Binary files /dev/null and b/frostwire-jlibtorrent/logo/jlibtorrent_logo_white.png differ diff --git a/frostwire-jlibtorrent/logo/jlibtorrent_type_color.png b/frostwire-jlibtorrent/logo/jlibtorrent_type_color.png new file mode 100644 index 0000000..6a334fa Binary files /dev/null and b/frostwire-jlibtorrent/logo/jlibtorrent_type_color.png differ diff --git a/frostwire-jlibtorrent/logo/jlibtorrent_type_white.png b/frostwire-jlibtorrent/logo/jlibtorrent_type_white.png new file mode 100644 index 0000000..3945876 Binary files /dev/null and b/frostwire-jlibtorrent/logo/jlibtorrent_type_white.png differ diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/AddTorrentParams.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/AddTorrentParams.java new file mode 100644 index 0000000..a0b5b12 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/AddTorrentParams.java @@ -0,0 +1,542 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.add_torrent_params; +import com.frostwire.jlibtorrent.swig.error_code; +import com.frostwire.jlibtorrent.swig.int_vector; +import com.frostwire.jlibtorrent.swig.storage_mode_t; +import com.frostwire.jlibtorrent.swig.string_int_pair; +import com.frostwire.jlibtorrent.swig.string_int_pair_vector; +import com.frostwire.jlibtorrent.swig.string_vector; +import com.frostwire.jlibtorrent.swig.tcp_endpoint_vector; +import com.frostwire.jlibtorrent.swig.torrent_flags_t; +import com.frostwire.jlibtorrent.swig.torrent_info; + +import java.util.ArrayList; +import java.util.List; + +/** + * The {@link AddTorrentParams} is a parameter pack for adding torrents to a + * session. The key fields when adding a torrent are: + *

    + *
  • ti - when you have a .torrent file
  • + *
  • url - when you have a magnet link or http URL to the .torrent file
  • + *
  • info_hash - when all you have is an info-hash (this is similar to a magnet link)
  • + *
+ * One of those fields need to be set. Another mandatory field is + * {@link #savePath()}. The {@link AddTorrentParams} object is passed into one of the + * {@link SessionHandle#addTorrent(AddTorrentParams, ErrorCode)} overloads or + * {@link SessionHandle#asyncAddTorrent(AddTorrentParams)}. + *

+ * If you only specify the info-hash, the torrent file will be downloaded + * from peers, which requires them to support the metadata extension. It also + * takes an optional {@link #name()} argument. This may be left empty in case no + * name should be assigned to the torrent. In case it's not, the name is + * used for the torrent as long as it doesn't have metadata. + * + * @author gubatron + * @author aldenml + */ +public final class AddTorrentParams { + + private final add_torrent_params p; + + /** + * The native object + * + * @param p the native object + */ + public AddTorrentParams(add_torrent_params p) { + this.p = p; + } + + /** + * Creates an empty parameters object with the default storage. + */ + public AddTorrentParams() { + this(add_torrent_params.create_instance()); + } + + /** + * @return an instance with the default storage + */ + public static AddTorrentParams createInstance() { + return new AddTorrentParams(add_torrent_params.create_instance()); + } + + /** + * @return an instance with a disabled storage + */ + public static AddTorrentParams createInstanceDisabledStorage() { + return new AddTorrentParams(add_torrent_params.create_instance_disabled_storage()); + } + + /** + * @return an instance with a zero storage + */ + public static AddTorrentParams createInstanceZeroStorage() { + return new AddTorrentParams(add_torrent_params.create_instance_zero_storage()); + } + + /** + * Helper function to parse a magnet uri and fill the parameters. + * + * @param uri the magnet uri + * @return the params object filled with the data from the magnet + */ + public static AddTorrentParams parseMagnetUri(String uri) { + error_code ec = new error_code(); + add_torrent_params params = add_torrent_params.parse_magnet_uri(uri, ec); + if (ec.value() != 0) { + throw new IllegalArgumentException("Invalid magnet uri: " + ec.message()); + } + return new AddTorrentParams(params); + } + + /** + * @return the native object + */ + public add_torrent_params swig() { + return p; + } + + /** + * Filled in by the constructor. It is used for forward binary compatibility. + * + * @return the version + */ + public int version() { + return p.getVersion(); + } + + /** + * {@link TorrentInfo} object with the torrent to add. + * + * @return the torrent info or null if not set + */ + public TorrentInfo torrentInfo() { + torrent_info ti = p.ti_ptr(); + return ti != null && ti.is_valid() ? new TorrentInfo(ti) : null; + } + + /** + * {@link TorrentInfo} object with the torrent to add. + * + * @param ti the torrent info + */ + public void torrentInfo(TorrentInfo ti) { + p.set_ti(ti.swig()); + } + + /** + * If the torrent doesn't have a tracker, but relies on the DHT to find + * peers, the {@link #trackers(List)} can specify tracker URLs for the + * torrent. + * + * @return the list of trackers + */ + public ArrayList trackers() { + string_vector v = p.get_trackers(); + int size = (int) v.size(); + ArrayList l = new ArrayList<>(); + + for (int i = 0; i < size; i++) { + l.add(v.get(i)); + } + + return l; + } + + /** + * If the torrent doesn't have a tracker, but relies on the DHT to find + * peers, this method can specify tracker URLs for the torrent. + * + * @param value the list of trackers + */ + public void trackers(List value) { + string_vector v = new string_vector(); + + for (String s : value) { + v.push_back(s); + } + + p.set_trackers(v); + } + + /** + * The tiers the URLs in {@link #trackers()} belong to. Trackers belonging to + * different tiers may be treated differently, as defined by the multi + * tracker extension. This is optional, if not specified trackers are + * assumed to be part of tier 0, or whichever the last tier was as + * iterating over the trackers. + * + * @return the list of trackers tiers + */ + public ArrayList trackerTiers() { + int_vector v = p.get_tracker_tiers(); + int size = (int) v.size(); + ArrayList l = new ArrayList<>(); + + for (int i = 0; i < size; i++) { + l.add(v.get(i)); + } + + return l; + } + + /** + * The tiers the URLs in {@link #trackers()} belong to. Trackers belonging to + * different tiers may be treated differently, as defined by the multi + * tracker extension. This is optional, if not specified trackers are + * assumed to be part of tier 0, or whichever the last tier was as + * iterating over the trackers. + * + * @param value the list of trackers tiers + */ + public void trackerTiers(List value) { + int_vector v = new int_vector(); + + for (Integer t : value) { + v.push_back(t); + } + + p.set_tracker_tiers(v); + } + + /** + * A list of hostname and port pairs, representing DHT nodes to be added + * to the session (if DHT is enabled). The hostname may be an IP address. + * + * @return the list of DHT nodes + */ + public ArrayList> dhtNodes() { + string_int_pair_vector v = p.get_dht_nodes(); + int size = (int) v.size(); + ArrayList> l = new ArrayList<>(); + + for (int i = 0; i < size; i++) { + string_int_pair n = v.get(i); + l.add(new Pair<>(n.getFirst(), n.getSecond())); + } + + return l; + } + + /** + * A list of hostname and port pairs, representing DHT nodes to be added + * to the session (if DHT is enabled). The hostname may be an IP address. + * + * @param value the list of DHT nodes + */ + public void dhtNodes(List> value) { + string_int_pair_vector v = new string_int_pair_vector(); + + for (Pair p : value) { + v.push_back(p.to_string_int_pair()); + } + + p.set_dht_nodes(v); + } + + /** + * @return the name + */ + public String name() { + return p.getName(); + } + + /** + * @param value the name + */ + public void name(String value) { + p.setName(value); + } + + /** + * The path where the torrent is or will be stored. Note that this may + * also be stored in resume data. If you want the save path saved in + * the resume data to be used, you need to set the + * flag_use_resume_save_path flag. + *

+ * .. note:: + * On windows this path (and other paths) are interpreted as UNC + * paths. This means they must use backslashes as directory separators + * + * @return the save path + */ + public String savePath() { + return p.getSave_path(); + } + + /** + * The path where the torrent is or will be stored. Note that this may + * also be stored in resume data. If you want the save path saved in + * the resume data to be used, you need to set the + * flag_use_resume_save_path flag. + *

+ * .. note:: + * On windows this path (and other paths) are interpreted as UNC + * paths. This means they must use backslashes as directory separators + * + * @param value the save path + */ + public void savePath(String value) { + p.setSave_path(value); + } + + /** + * @return the storage mode + * @see StorageMode + */ + public StorageMode storageMode() { + return StorageMode.fromSwig(p.getStorage_mode().swigValue()); + } + + /** + * @param value the storage mode + * @see StorageMode + */ + public void storageMode(StorageMode value) { + p.setStorage_mode(storage_mode_t.swigToEnum(value.swig())); + } + + /** + * The default tracker id to be used when announcing to trackers. By + * default this is empty, and no tracker ID is used, since this is an + * optional argument. If a tracker returns a tracker ID, that ID is used + * instead of this. + * + * @return the trackerid url parameter + */ + public String trackerId() { + return p.getTrackerid(); + } + + /** + * The default tracker id to be used when announcing to trackers. By + * default this is empty, and no tracker ID is used, since this is an + * optional argument. If a tracker returns a tracker ID, that ID is used + * instead of this. + * + * @param value the trackerid url parameter + */ + public void trackerId(String value) { + p.setTrackerid(value); + } + + /** + * Set this to the info hash of the torrent to add in case the info-hash + * is the only known property of the torrent. i.e. you don't have a + * .torrent file nor a magnet link. + * + * @return the info-hash + */ + public Sha1Hash infoHash() { + return new Sha1Hash(p.getInfo_hash()); + } + + /** + * Set this to the info hash of the torrent to add in case the info-hash + * is the only known property of the torrent. i.e. you don't have a + * .torrent file nor a magnet link. + * + * @param value the info-hash + */ + public void infoHash(Sha1Hash value) { + p.setInfo_hash(value.swig()); + } + + /** + * @return max uploads limit + */ + public int maxUploads() { + return p.getMax_uploads(); + } + + /** + * @param value max uploads limit + */ + public void maxUploads(int value) { + p.setMax_uploads(value); + } + + /** + * @return max connections limit + */ + public int maxConnections() { + return p.getMax_connections(); + } + + /** + * @param value max connections limit + */ + public void maxConnections(int value) { + p.setMax_connections(value); + } + + /** + * @return upload limit + */ + public int uploadLimit() { + return p.getUpload_limit(); + } + + /** + * @param value upload limit + */ + public void uploadLimit(int value) { + p.setUpload_limit(value); + } + + /** + * @return download limit + */ + public int downloadLimit() { + return p.getDownload_limit(); + } + + /** + * @param value download limit + */ + public void downloadLimit(int value) { + p.setDownload_limit(value); + } + + /** + * Flags controlling aspects of this torrent and how it's added. + * + * @return the flags + */ + public torrent_flags_t flags() { + return p.getFlags(); + } + + /** + * Flags controlling aspects of this torrent and how it's added. + * + * @param flags the flags + */ + public void flags(torrent_flags_t flags) { + p.setFlags(flags); + } + + /** + * Url seeds to be added to the torrent (`BEP 17`_). + * + * @return the url seeds + */ + public ArrayList urlSeeds() { + string_vector v = p.get_url_seeds(); + int size = (int) v.size(); + ArrayList l = new ArrayList<>(); + + for (int i = 0; i < size; i++) { + l.add(v.get(i)); + } + + return l; + } + + /** + * Url seeds to be added to the torrent (`BEP 17`_). + * + * @param value the url seeds + */ + public void urlSeeds(List value) { + string_vector v = new string_vector(); + + for (String s : value) { + v.push_back(s); + } + + p.set_url_seeds(v); + } + + /** + * Can be set to control the initial file priorities when adding a + * torrent. The semantics are the same as for + * {@link TorrentHandle#prioritizeFiles(Priority[])}. + * + * @param priorities the priorities + */ + public void filePriorities(Priority[] priorities) { + p.set_file_priorities2(Priority.array2byte_vector(priorities)); + } + + /** + * This sets the priorities for each individual piece in the torrent. Each + * element in the vector represent the piece with the same index. If you + * set both file- and piece priorities, file priorities will take + * precedence. + * + * @param priorities the priorities + */ + public void piecePriorities(Priority[] priorities) { + p.set_piece_priorities2(Priority.array2byte_vector(priorities)); + } + + /** + * Peers to add to the torrent, to be tried to be connected to as + * bittorrent peers. + * + * @return the peers list + */ + public ArrayList peers() { + tcp_endpoint_vector v = p.get_peers(); + int size = (int) v.size(); + ArrayList l = new ArrayList<>(); + + for (int i = 0; i < size; i++) { + l.add(new TcpEndpoint(v.get(i))); + } + + return l; + } + + /** + * Peers to add to the torrent, to be tried to be connected to as + * bittorrent peers. + * + * @param value the peers list + */ + public void peers(List value) { + tcp_endpoint_vector v = new tcp_endpoint_vector(); + + for (TcpEndpoint endp : value) { + v.push_back(endp.swig()); + } + + p.set_peers(v); + } + + /** + * Peers banned from this torrent. The will not be connected to. + * + * @return the peers list + */ + public ArrayList bannedPeers() { + tcp_endpoint_vector v = p.get_banned_peers(); + int size = (int) v.size(); + ArrayList l = new ArrayList<>(); + + for (int i = 0; i < size; i++) { + l.add(new TcpEndpoint(v.get(i))); + } + + return l; + } + + /** + * Peers banned from this torrent. The will not be connected to. + * + * @param value the peers list + */ + public void bannedPeers(List value) { + tcp_endpoint_vector v = new tcp_endpoint_vector(); + + for (TcpEndpoint endp : value) { + v.push_back(endp.swig()); + } + + p.set_banned_peers(v); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Address.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Address.java new file mode 100644 index 0000000..142b655 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Address.java @@ -0,0 +1,128 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.address; +import com.frostwire.jlibtorrent.swig.error_code; + +/** + * @author gubatron + * @author aldenml + */ +public final class Address implements Comparable

, Cloneable { + + private final address addr; + + /** + * @param addr the native object + */ + public Address(address addr) { + this.addr = addr; + } + + /** + * Create an address from an IPv4 address string in dotted decimal form, + * or from an IPv6 address in hexadecimal notation. + * + * @param ip the ip string representation + */ + public Address(String ip) { + error_code ec = new error_code(); + this.addr = address.from_string(ip, ec); + if (ec.value() != 0) { + throw new IllegalArgumentException(ec.message()); + } + } + + /** + * + */ + public Address() { + this(new address()); + } + + static String toString(address a) { + error_code ec = new error_code(); + String s = a.to_string(ec); + if (ec.value() != 0) { + s = ""; + } + return s; + } + + /** + * @return native object + */ + public address swig() { + return addr; + } + + /** + * Get whether the address is an IP version 4 address. + * + * @return if it's an IPv4 address + */ + public boolean isV4() { + return addr.is_v4(); + } + + /** + * Get whether the address is an IP version 6 address. + * + * @return if it's an IPv6 address + */ + public boolean isV6() { + return addr.is_v6(); + } + + /** + * Determine whether the address is a loopback address. + * + * @return if it's a loopback address + */ + public boolean isLoopback() { + return addr.is_loopback(); + } + + /** + * Determine whether the address is unspecified. + * + * @return if it's an unspecified address + */ + public boolean isUnspecified() { + return addr.is_unspecified(); + } + + /** + * Determine whether the address is a multicast address. + * + * @return if it's an multicast address + */ + public boolean isMulticast() { + return addr.is_multicast(); + } + + /** + * Compare addresses for ordering. + * + * @param o the other address + * @return -1, 0 or 1 + */ + @Override + public int compareTo(Address o) { + return address.compare(this.addr, o.addr); + } + + /** + * Get the address as a string in dotted decimal format. + * + * @return string representation + */ + @Override + public String toString() { + return toString(addr); + } + + @Override + public Address clone() { + return new Address(new address(addr)); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/AlertListener.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/AlertListener.java new file mode 100644 index 0000000..004760f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/AlertListener.java @@ -0,0 +1,23 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.alerts.Alert; + +/** + * @author gubatron + * @author aldenml + */ +public interface AlertListener { + + /** + * List of alert types filtered by this listener. + * Return `null` if you intend to listen to all alerts. + * + * @return the types filter + */ + int[] types(); + + /** + * @param alert the alert + */ + void alert(Alert alert); +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/AlertMulticaster.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/AlertMulticaster.java new file mode 100644 index 0000000..bde48dd --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/AlertMulticaster.java @@ -0,0 +1,64 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.alerts.Alert; + +/** + * @author gubatron + * @author aldenml + */ +final class AlertMulticaster implements AlertListener { + + private final AlertListener a; + private final AlertListener b; + + public AlertMulticaster(AlertListener a, AlertListener b) { + this.a = a; + this.b = b; + } + + public static AlertListener add(AlertListener a, AlertListener b) { + return addInternal(a, b); + } + + public static AlertListener remove(AlertListener l, AlertListener oldl) { + return removeInternal(l, oldl); + } + + private static AlertListener addInternal(AlertListener a, AlertListener b) { + if (a == null) return b; + if (b == null) return a; + return new AlertMulticaster(a, b); + } + + private static AlertListener removeInternal(AlertListener l, AlertListener oldl) { + if (l == oldl || l == null) { + return null; + } else if (l instanceof AlertMulticaster) { + return ((AlertMulticaster) l).remove(oldl); + } else { + return l; // it's not here + } + } + + @Override + public int[] types() { + return null; + } + + @Override + public void alert(Alert alert) { + a.alert(alert); + b.alert(alert); + } + + private AlertListener remove(AlertListener oldl) { + if (oldl == a) return b; + if (oldl == b) return a; + AlertListener a2 = removeInternal(a, oldl); + AlertListener b2 = removeInternal(b, oldl); + if (a2 == a && b2 == b) { + return this; // it's not here + } + return addInternal(a2, b2); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/AnnounceEndpoint.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/AnnounceEndpoint.java new file mode 100644 index 0000000..be469c3 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/AnnounceEndpoint.java @@ -0,0 +1,166 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.announce_endpoint; + +/** + * Announces are sent to each tracker using every listen socket, this class + * holds information about one listen socket for one tracker. + *

+ * This class is a lightweight version of the native {@link announce_endpoint}, + * and only carries a subset of all the information. However, it's completely + * open for custom use or optimization to accommodate client necessities. + * + * @author gubatron + * @author aldenml + */ +public class AnnounceEndpoint { + + protected String message; + protected ErrorCode lastError; + protected String localEndpoint; + protected long nextAnnounce; + protected long minAnnounce; + protected int scrapeIncomplete; + protected int scrapeComplete; + protected int scrapeDownloaded; + protected int fails; + protected boolean updating; + protected boolean isWorking; + + /** + * @param e the native object + */ + public AnnounceEndpoint(announce_endpoint e) { + init(e); + } + + /** + * If this tracker has returned an error or warning message + * that message is stored here. + * + * @return the error or warning message + */ + public String message() { + return message; + } + + /** + * If this tracker failed the last time it was contacted + * this error code specifies what error occurred. + * + * @return the last error code + */ + public ErrorCode lastError() { + return lastError; + } + + /** + * The local endpoint of the listen interface associated with this endpoint. + * + * @return the local endpoint + */ + public String localEndpoint() { + return localEndpoint; + } + + /** + * The time of next tracker announce in milliseconds. + * + * @return the time of next tracker announce in milliseconds + */ + public long nextAnnounce() { + return nextAnnounce; + } + + /** + * No announces before this time. + */ + public long minAnnounce() { + return minAnnounce; + } + + /** + * This is either -1 or the scrape information this tracker last + * responded with. Incomplete is the current number of downloaders in + * the swarm. + *

+ * If this tracker has returned scrape data, these fields are filled in + * with valid numbers. Otherwise they are set to -1. + * + * @return the number of current downloaders + */ + public int scrapeIncomplete() { + return scrapeIncomplete; + } + + /** + * This is either -1 or the scrape information this tracker last + * responded with. Complete is the current number of seeds in the swarm. + *

+ * If this tracker has returned scrape data, these fields are filled in + * with valid numbers. Otherwise they are set to -1. + * + * @return the current number of seeds + */ + public int scrapeComplete() { + return scrapeComplete; + } + + /** + * This is either -1 or the scrape information this tracker last + * responded with. Downloaded is the cumulative number of completed + * downloads of this torrent, since the beginning of time + * (from this tracker's point of view). + *

+ * If this tracker has returned scrape data, these fields are filled in + * with valid numbers. Otherwise they are set to -1. + * + * @return the cumulative number of completed downloads + */ + public int scrapeDownloaded() { + return scrapeDownloaded; + } + + /** + * The number of times in a row we have failed to announce to this tracker. + * + * @return the number of fails + */ + public int fails() { + return fails; + } + + /** + * True while we're waiting for a response from the tracker. + */ + public boolean updating() { + return updating; + } + + /** + * Returns true if the last time we tried to announce to this + * tracker succeeded, or if we haven't tried yet. + */ + public boolean isWorking() { + return isWorking; + } + + /** + * NOTE: use this with care and only if necessary. + * + * @param e the native object + */ + protected void init(announce_endpoint e) { + message = Vectors.byte_vector2ascii(e.get_message()); + lastError = new ErrorCode(e.getLast_error()); + localEndpoint = new TcpEndpoint(e.getLocal_endpoint()).toString(); + nextAnnounce = e.get_next_announce(); + minAnnounce = e.get_min_announce(); + scrapeIncomplete = e.getScrape_incomplete(); + scrapeComplete = e.getScrape_complete(); + scrapeDownloaded = e.getScrape_downloaded(); + fails = e.getFails(); + updating = e.getUpdating(); + isWorking = e.is_working(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/AnnounceEntry.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/AnnounceEntry.java new file mode 100644 index 0000000..0ffe14f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/AnnounceEntry.java @@ -0,0 +1,128 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.announce_endpoint_vector; +import com.frostwire.jlibtorrent.swig.announce_entry; + +import java.util.ArrayList; +import java.util.List; + +/** + * This class holds information about one bittorrent tracker, as it + * relates to a specific torrent. + * + * @author gubatron + * @author aldenml + */ +public final class AnnounceEntry { + + private final announce_entry e; + + /** + * @param e the native object + */ + public AnnounceEntry(announce_entry e) { + this.e = e; + } + + /** + * Constructs a tracker announce entry with {@code u} as the URL. + * + * @param url the tracker url + */ + public AnnounceEntry(String url) { + this(new announce_entry(Vectors.ascii2byte_vector(url))); + } + + /** + * @return the native object + */ + public announce_entry swig() { + return e; + } + + public List endpoints() { + announce_endpoint_vector v = e.getEndpoints(); + int size = (int) v.size(); + ArrayList l = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + l.add(new AnnounceEndpoint(v.get(i))); + } + + return l; + } + + /** + * Tracker URL as it appeared in the torrent file. + * + * @return the tracker url + */ + public String url() { + return Vectors.byte_vector2ascii(e.get_url()); + } + + public void url(String value) { + e.set_url(Vectors.ascii2byte_vector(value)); + } + + /** + * The current {@code &trackerid=} argument passed to the tracker. + * this is optional and is normally empty (in which case no + * trackerid is sent). + * + * @return the trackerid url argument + */ + public String trackerId() { + return Vectors.byte_vector2ascii(e.get_trackerid()); + } + + public void trackerId(String value) { + e.set_trackerid(Vectors.ascii2byte_vector(value)); + } + + /** + * The tier this tracker belongs to. + * + * @return the tier number + */ + public int tier() { + return e.getTier(); + } + + public void tier(short value) { + e.setTier(value); + } + + /** + * The max number of failures to announce to this tracker in + * a row, before this tracker is not used anymore. 0 means unlimited. + * + * @return the max number of failures allowed + */ + public int failLimit() { + return e.getFail_limit(); + } + + public void failLimit(short value) { + e.setFail_limit(value); + } + + /** + * A bitmask specifying which sources we got this tracker from. + * + * @return the source bitmask + */ + public int source() { + return e.getSource(); + } + + /** + * Set to true the first time we receive a valid response + * from this tracker. + * + * @return if the tracker has received a valid response + */ + public boolean isVerified() { + return e.getVerified(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/BDecodeNode.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/BDecodeNode.java new file mode 100644 index 0000000..27e48ad --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/BDecodeNode.java @@ -0,0 +1,76 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.bdecode_node; +import com.frostwire.jlibtorrent.swig.byte_vector; +import com.frostwire.jlibtorrent.swig.error_code; + +/** + * @author gubatron + * @author aldenml + */ +public final class BDecodeNode { + + private final bdecode_node n; + private final byte_vector buffer; + + /** + * @param n the native object + */ + public BDecodeNode(bdecode_node n) { + this(n, null); + } + + /** + * Used to keep the buffer reference around. + * + * @param n the native object + * @param buffer the buffer backing up the native object + */ + public BDecodeNode(bdecode_node n, byte_vector buffer) { + this.n = n; + this.buffer = buffer; + } + + public static BDecodeNode bdecode(byte[] data) { + byte_vector buffer = Vectors.bytes2byte_vector(data); + bdecode_node n = new bdecode_node(); + error_code ec = new error_code(); + int ret = bdecode_node.bdecode(buffer, n, ec); + + if (ret == 0) { + return new BDecodeNode(n, buffer); + } else { + throw new IllegalArgumentException("Can't decode data: " + ec.message()); + } + } + + /** + * @return the native object + */ + public bdecode_node swig() { + return n; + } + + /** + * This methods returns the internal buffer or null + * if it was constructed without one. + *

+ * This also prevent premature garbage collection in case + * the node was created from a constructed buffer. + * + * @return the pinned buffer + */ + public byte_vector buffer() { + return buffer; + } + + /** + * A JSON style string representation + * + * @return the string representation + */ + @Override + public String toString() { + return bdecode_node.to_string(n, false, 2); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/BlockInfo.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/BlockInfo.java new file mode 100644 index 0000000..c9b346a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/BlockInfo.java @@ -0,0 +1,135 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.block_info; + +/** + * Holds the state of a block in a piece. Who we requested + * it from and how far along we are at downloading it. + * + * @author gubatron + * @author aldenml + */ +public final class BlockInfo { + + private final block_info b; + + /** + * @param b the native object + */ + public BlockInfo(block_info b) { + this.b = b; + } + + /** + * @return the native object + */ + public block_info swig() { + return b; + } + + /** + * The peer is the ip address of the peer this block was downloaded from. + * + * @return the peer tcp endpoint + */ + public TcpEndpoint peer() { + return new TcpEndpoint(b.peer()); + } + + /** + * The number of bytes that have been received for this block. + * + * @return the number of bytes received + */ + public int bytesProgress() { + return (int) b.getBytes_progress(); + } + + /** + * The total number of bytes in this block. + * + * @return otal number of bytes + */ + public int blockSize() { + return (int) b.getBlock_size(); + } + + /** + * The state this block is in. + * + * @return the block's state + */ + public BlockState state() { + return BlockState.fromSwig((int) b.getState()); + } + + /** + * The number of peers that is currently requesting this block. Typically + * this is 0 or 1, but at the end of the torrent blocks may be requested + * by more peers in parallel to speed things up. + * + * @return number of peers + */ + public int numPeers() { + return (int) b.getNum_peers(); + } + + /** + * This is the enum used for {@link #state()}. + */ + public enum BlockState { + + /** + * This block has not been downloaded or requested form any peer. + */ + NONE(block_info.block_state_t.none.swigValue()), + + /** + * The block has been requested, but not completely downloaded yet. + */ + REQUESTED(block_info.block_state_t.requested.swigValue()), + + /** + * The block has been downloaded and is currently queued for being + * written to disk. + */ + WRITING(block_info.block_state_t.writing.swigValue()), + + /** + * The block has been written to disk. + */ + FINISHED(block_info.block_state_t.finished.swigValue()), + + /** + * + */ + UNKNOWN(-1); + + private final int swigValue; + + BlockState(int swigValue) { + this.swigValue = swigValue; + } + + /** + * @param swigValue the native value + * @return the state + */ + public static BlockState fromSwig(int swigValue) { + BlockState[] enumValues = BlockState.class.getEnumConstants(); + for (BlockState ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + return UNKNOWN; + } + + /** + * @return the native value + */ + public int swig() { + return swigValue; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/DhtLookup.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/DhtLookup.java new file mode 100644 index 0000000..2440bc7 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/DhtLookup.java @@ -0,0 +1,130 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.dht_lookup; + +/** + * Holds statistics about a current dht_lookup operation. + * a DHT lookup is the traversal of nodes, looking up a + * set of target nodes in the DHT for retrieving and possibly + * storing information in the DHT + * + * @author gubatron + * @author aldenml + */ +public final class DhtLookup { + + private final dht_lookup l; + + /** + * internal use + * + * @param l + */ + public DhtLookup(dht_lookup l) { + this.l = l; + } + + /** + * The native object. + * + * @return the native object + */ + public dht_lookup swig() { + return l; + } + + /** + * string literal indicating which kind of lookup this is. + * + * @return + */ + public String type() { + return l.get_type(); + } + + /** + * the number of outstanding request to individual nodes + * this lookup has right now. + * + * @return + */ + public int outstandingRequests() { + return l.getOutstanding_requests(); + } + + /** + * the total number of requests that have timed out so far + * for this lookup. + * + * @return + */ + public int timeouts() { + return l.getTimeouts(); + } + + /** + * the total number of responses we have received for this + * lookup so far for this lookup. + * + * @return + */ + public int responses() { + return l.getResponses(); + } + + /** + * the branch factor for this lookup. This is the number of + * nodes we keep outstanding requests to in parallel by default. + * when nodes time out we may increase this. + * + * @return + */ + public int branchFactor() { + return l.getBranch_factor(); + } + + /** + * the number of nodes left that could be queries for this + * lookup. Many of these are likely to be part of the trail + * while performing the lookup and would never end up actually + * being queried. + * + * @return + */ + public int nodesLeft() { + return l.getNodes_left(); + } + + /** + * the number of seconds ago the + * last message was sent that's still + * outstanding. + * + * @return + */ + public int lastSent() { + return l.getLast_sent(); + } + + /** + * the number of outstanding requests + * that have exceeded the short timeout + * and are considered timed out in the + * sense that they increased the branch + * factor. + * + * @return + */ + public int firstTimeout() { + return l.getFirst_timeout(); + } + + /** + * The node-id or info-hash target for this lookup. + * + * @return the target + */ + public Sha1Hash target() { + return new Sha1Hash(l.getTarget()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/DhtRoutingBucket.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/DhtRoutingBucket.java new file mode 100644 index 0000000..66832a3 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/DhtRoutingBucket.java @@ -0,0 +1,49 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.dht_routing_bucket; + +/** + * Hold information about a single DHT routing table bucket + * + * @author gubatron + * @author aldenml + */ +public final class DhtRoutingBucket { + + private final dht_routing_bucket t; + + public DhtRoutingBucket(dht_routing_bucket t) { + this.t = t; + } + + public dht_routing_bucket swig() { + return t; + } + + /** + * The total number of nodes in the routing table. + * + * @return + */ + public int numNodes() { + return t.getNum_nodes(); + } + + /** + * The total number of replacement nodes in the routing table. + * + * @return + */ + public int numReplacements() { + return t.getNum_replacements(); + } + + /** + * Number of seconds since last activity. + * + * @return + */ + public int lastActive() { + return t.getLast_active(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/DhtSettings.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/DhtSettings.java new file mode 100644 index 0000000..99a4b4f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/DhtSettings.java @@ -0,0 +1,452 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.dht_settings; + +/** + * Structure used to hold configuration options for the DHT. + * + * @author gubatron + * @author aldenml + */ +public final class DhtSettings { + + private final dht_settings s; + + public DhtSettings(dht_settings s) { + this.s = s; + } + + public DhtSettings() { + this(new dht_settings()); + } + + public dht_settings swig() { + return s; + } + + /** + * the maximum number of peers to send in a reply to ``get_peers``. + * + * @return + */ + public int maxPeersReply() { + return s.getMax_peers_reply(); + } + + /** + * the maximum number of peers to send in a reply to ``get_peers``. + * + * @param value + */ + public void maxPeersReply(int value) { + s.setMax_peers_reply(value); + } + + /** + * the number of concurrent search request the node will send when + * announcing and refreshing the routing table. This parameter is called + * alpha in the kademlia paper. + * + * @return + */ + public int getSearchBranching() { + return s.getSearch_branching(); + } + + /** + * the number of concurrent search request the node will send when + * announcing and refreshing the routing table. This parameter is called + * alpha in the kademlia paper. + * + * @param value + */ + public void setSearchBranching(int value) { + s.setSearch_branching(value); + } + + /** + * the maximum number of failed tries to contact a node before it is + * removed from the routing table. If there are known working nodes that + * are ready to replace a failing node, it will be replaced immediately, + * this limit is only used to clear out nodes that don't have any node + * that can replace them. + * + * @return + */ + public int getMaxFailCount() { + return s.getMax_fail_count(); + } + + /** + * the maximum number of failed tries to contact a node before it is + * removed from the routing table. If there are known working nodes that + * are ready to replace a failing node, it will be replaced immediately, + * this limit is only used to clear out nodes that don't have any node + * that can replace them. + * + * @param value + */ + public void setMaxFailCount(int value) { + s.setMax_fail_count(value); + } + + /** + * the total number of torrents to track from the DHT. This is simply an + * upper limit to make sure malicious DHT nodes cannot make us allocate + * an unbounded amount of memory. + * + * @return + */ + public int maxTorrents() { + return s.getMax_torrents(); + } + + /** + * the total number of torrents to track from the DHT. This is simply an + * upper limit to make sure malicious DHT nodes cannot make us allocate + * an unbounded amount of memory. + * + * @param value + */ + public void maxTorrents(int value) { + s.setMax_torrents(value); + } + + /** + * max number of items the DHT will store. + * + * @return + */ + public int maxDhtItems() { + return s.getMax_dht_items(); + } + + /** + * max number of items the DHT will store. + * + * @param value + */ + public void maxDhtItems(int value) { + s.setMax_dht_items(value); + } + + /** + * The max number of peers to store per torrent (for the DHT). + * + * @return + */ + public int maxPeers() { + return s.getMax_peers(); + } + + /** + * The max number of peers to store per torrent (for the DHT). + * + * @param value + */ + public void maxPeers(int value) { + s.setMax_peers(value); + } + + /** + * the max number of torrents to return in a torrent search query to the + * DHT. + * + * @return + */ + public int getMaxTorrentSearchReply() { + return s.getMax_torrent_search_reply(); + } + + /** + * the max number of torrents to return in a torrent search query to the + * DHT. + * + * @param value + */ + public void setMaxTorrentSearchReply(int value) { + s.setMax_torrent_search_reply(value); + } + + /** + * determines if the routing table entries should restrict entries to one + * per IP. This defaults to true, which helps mitigate some attacks on + * the DHT. It prevents adding multiple nodes with IPs with a very close + * CIDR distance. + *

+ * when set, nodes whose IP address that's in the same /24 (or /64 for + * IPv6) range in the same routing table bucket. This is an attempt to + * mitigate node ID spoofing attacks also restrict any IP to only have a + * single entry in the whole routing table. + * + * @return + */ + public boolean isRestrictRoutingIPs() { + return s.getRestrict_routing_ips(); + } + + /** + * determines if the routing table entries should restrict entries to one + * per IP. This defaults to true, which helps mitigate some attacks on + * the DHT. It prevents adding multiple nodes with IPs with a very close + * CIDR distance. + *

+ * when set, nodes whose IP address that's in the same /24 (or /64 for + * IPv6) range in the same routing table bucket. This is an attempt to + * mitigate node ID spoofing attacks also restrict any IP to only have a + * single entry in the whole routing table. + * + * @param value + */ + public void setRestrictRoutingIPs(boolean value) { + s.setRestrict_routing_ips(value); + } + + /** + * determines if DHT searches should prevent adding nodes with IPs with + * very close CIDR distance. This also defaults to true and helps + * mitigate certain attacks on the DHT. + * + * @return + */ + public boolean isRestrictSearchIPs() { + return s.getRestrict_search_ips(); + } + + /** + * determines if DHT searches should prevent adding nodes with IPs with + * very close CIDR distance. This also defaults to true and helps + * mitigate certain attacks on the DHT. + * + * @param value + */ + public void setRestrictSearchIPs(boolean value) { + s.setRestrict_search_ips(value); + } + + /** + * makes the first buckets in the DHT routing table fit 128, 64, 32 and + * 16 nodes respectively, as opposed to the standard size of 8. All other + * buckets have size 8 still. + * + * @return + */ + public boolean isExtendedRoutingTable() { + return s.getExtended_routing_table(); + } + + /** + * makes the first buckets in the DHT routing table fit 128, 64, 32 and + * 16 nodes respectively, as opposed to the standard size of 8. All other + * buckets have size 8 still. + * + * @param value + */ + public void setExtendedRoutingTable(boolean value) { + s.setExtended_routing_table(value); + } + + /** + * slightly changes the lookup behavior in terms of how many outstanding + * requests we keep. Instead of having branch factor be a hard limit, we + * always keep *branch factor* outstanding requests to the closest nodes. + * i.e. every time we get results back with closer nodes, we query them + * right away. It lowers the lookup times at the cost of more outstanding + * queries. + * + * @return + */ + public boolean isAggressiveLookups() { + return s.getAggressive_lookups(); + } + + /** + * slightly changes the lookup behavior in terms of how many outstanding + * requests we keep. Instead of having branch factor be a hard limit, we + * always keep *branch factor* outstanding requests to the closest nodes. + * i.e. every time we get results back with closer nodes, we query them + * right away. It lowers the lookup times at the cost of more outstanding + * queries. + * + * @param value + */ + public void getAggressiveLookups(boolean value) { + s.setAggressive_lookups(value); + } + + /** + * when set, perform lookups in a way that is slightly more expensive, + * but which minimizes the amount of information leaked about you. + * + * @return + */ + public boolean isPrivacyLookups() { + return s.getPrivacy_lookups(); + } + + /** + * when set, perform lookups in a way that is slightly more expensive, + * but which minimizes the amount of information leaked about you. + * + * @param value + */ + public void setPrivacyLookups(boolean value) { + s.setPrivacy_lookups(value); + } + + /** + * when set, node's whose IDs that are not correctly generated based on + * its external IP are ignored. When a query arrives from such node, an + * error message is returned with a message saying "invalid node ID". + * + * @return + */ + public boolean isEnforceNodeId() { + return s.getEnforce_node_id(); + } + + /** + * when set, node's whose IDs that are not correctly generated based on + * its external IP are ignored. When a query arrives from such node, an + * error message is returned with a message saying "invalid node ID". + * + * @param value + */ + public void setEnforceNodeId(boolean value) { + s.setEnforce_node_id(value); + } + + /** + * ignore DHT messages from parts of the internet we wouldn't expect to + * see any traffic from + * + * @return + */ + public boolean isIgnoreDarkInternet() { + return s.getIgnore_dark_internet(); + } + + /** + * ignore DHT messages from parts of the internet we wouldn't expect to + * see any traffic from + * + * @param value + */ + public void setIgnoreDarkInternet(boolean value) { + s.setIgnore_dark_internet(value); + } + + /** + * The number of seconds a DHT node is banned if it exceeds the rate + * limit. The rate limit is averaged over 10 seconds to allow for bursts + * above the limit. + * + * @return + */ + public int blockTimeout() { + return s.getBlock_timeout(); + } + + /** + * The number of seconds a DHT node is banned if it exceeds the rate + * limit. The rate limit is averaged over 10 seconds to allow for bursts + * above the limit. + * + * @param value + */ + public void blockTimeout(int value) { + s.setBlock_timeout(value); + } + + /** + * The max number of packets per second a DHT node is allowed to send + * without getting banned. + * + * @return + */ + public int blockRatelimit() { + return s.getBlock_ratelimit(); + } + + /** + * The max number of packets per second a DHT node is allowed to send + * without getting banned. + * + * @param value + */ + public void blockRatelimit(int value) { + s.setBlock_ratelimit(value); + } + + /** + * When set, the other nodes won't keep this node in their routing + * tables, it's meant for low-power and/or ephemeral devices that + * cannot support the DHT, it is also useful for mobile devices which + * are sensitive to network traffic and battery life. + * this node no longer responds to 'query' messages, and will place a + * 'ro' key (value = 1) in the top-level message dictionary of outgoing + * query messages. + * + * @return + */ + public boolean readOnly() { + return s.getRead_only(); + } + + /** + * When set, the other nodes won't keep this node in their routing + * tables, it's meant for low-power and/or ephemeral devices that + * cannot support the DHT, it is also useful for mobile devices which + * are sensitive to network traffic and battery life. + * this node no longer responds to 'query' messages, and will place a + * 'ro' key (value = 1) in the top-level message dictionary of outgoing + * query messages. + * + * @param value + */ + public void readOnly(boolean value) { + s.setRead_only(value); + } + + /** + * The number of seconds a immutable/mutable item will be expired. + * default is 0, means never expires. + * + * @return + */ + public int itemLifetime() { + return s.getItem_lifetime(); + } + + /** + * The number of seconds a immutable/mutable item will be expired. + * default is 0, means never expires. + * + * @param value + */ + public void itemLifetime(int value) { + s.setItem_lifetime(value); + } + + /** + * The number of bytes per second (on average) the DHT is allowed to send. + * If the incoming requests causes to many bytes to be sent in responses, + * incoming requests will be dropped until the quota has been replenished. + * + * @return + */ + public int uploadRateLimit() { + return s.getUpload_rate_limit(); + } + + /** + * The number of bytes per second (on average) the DHT is allowed to send. + * If the incoming requests causes to many bytes to be sent in responses, + * incoming requests will be dropped until the quota has been replenished. + * + * @param value + */ + public void uploadRateLimit(int value) { + s.setUpload_rate_limit(value); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Ed25519.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Ed25519.java new file mode 100644 index 0000000..985870a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Ed25519.java @@ -0,0 +1,146 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.byte_vector; +import com.frostwire.jlibtorrent.swig.byte_vectors_pair; + +import static com.frostwire.jlibtorrent.swig.libtorrent.ed25519_add_scalar_public; +import static com.frostwire.jlibtorrent.swig.libtorrent.ed25519_add_scalar_secret; +import static com.frostwire.jlibtorrent.swig.libtorrent.ed25519_create_keypair; +import static com.frostwire.jlibtorrent.swig.libtorrent.ed25519_create_seed; +import static com.frostwire.jlibtorrent.swig.libtorrent.ed25519_key_exchange; +import static com.frostwire.jlibtorrent.swig.libtorrent.ed25519_sign; +import static com.frostwire.jlibtorrent.swig.libtorrent.ed25519_verify; + +/** + * @author gubatron + * @author aldenml + */ +public final class Ed25519 { + + public final static int SEED_SIZE = 32; + public final static int PUBLIC_KEY_SIZE = 32; + public final static int SECRET_KEY_SIZE = 64; + public final static int SIGNATURE_SIZE = 64; + public final static int SCALAR_SIZE = 32; + public final static int SHARED_SECRET_SIZE = 32; + + private Ed25519() { + } + + /** + * @return + */ + public static byte[] createSeed() { + byte_vector seed = ed25519_create_seed(); + + return Vectors.byte_vector2bytes(seed); + } + + /** + * @param seed + * @return + */ + public static Pair createKeypair(byte[] seed) { + if (seed == null || seed.length != SEED_SIZE) { + throw new IllegalArgumentException("seed must be not null and of size " + SEED_SIZE); + } + + byte_vectors_pair keypair = ed25519_create_keypair(Vectors.bytes2byte_vector(seed)); + + return new Pair<>(Vectors.byte_vector2bytes(keypair.getFirst()), + Vectors.byte_vector2bytes(keypair.getSecond())); + } + + /** + * @param message + * @param publicKey + * @param secretKey + * @return + */ + public static byte[] sign(byte[] message, byte[] publicKey, byte[] secretKey) { + if (publicKey == null || publicKey.length != PUBLIC_KEY_SIZE) { + throw new IllegalArgumentException("public key must be not null and of size " + PUBLIC_KEY_SIZE); + } + if (secretKey == null || secretKey.length != SECRET_KEY_SIZE) { + throw new IllegalArgumentException("secret key must be not null and of size " + SECRET_KEY_SIZE); + } + + byte_vector signature = ed25519_sign(Vectors.bytes2byte_vector(message), + Vectors.bytes2byte_vector(publicKey), + Vectors.bytes2byte_vector(secretKey)); + + return Vectors.byte_vector2bytes(signature); + } + + /** + * @param signature + * @param message + * @param publicKey + * @return + */ + public static boolean verify(byte[] signature, byte[] message, byte[] publicKey) { + if (signature == null || signature.length != SIGNATURE_SIZE) { + throw new IllegalArgumentException("signature must be not null and of size " + SIGNATURE_SIZE); + } + if (publicKey == null || publicKey.length != PUBLIC_KEY_SIZE) { + throw new IllegalArgumentException("public key must be not null and of size " + PUBLIC_KEY_SIZE); + } + return ed25519_verify(Vectors.bytes2byte_vector(signature), + Vectors.bytes2byte_vector(message), Vectors.bytes2byte_vector(publicKey)); + } + + /** + * @param publicKey + * @param scalar + * @return + */ + public static byte[] addScalarPublic(byte[] publicKey, byte[] scalar) { + if (publicKey == null || publicKey.length != PUBLIC_KEY_SIZE) { + throw new IllegalArgumentException("public key must be not null and of size " + PUBLIC_KEY_SIZE); + } + if (scalar == null || scalar.length != SCALAR_SIZE) { + throw new IllegalArgumentException("scalar must be not null and of size " + SCALAR_SIZE); + } + + byte_vector ret = ed25519_add_scalar_public(Vectors.bytes2byte_vector(publicKey), Vectors.bytes2byte_vector(scalar)); + + return Vectors.byte_vector2bytes(ret); + } + + /** + * @param secretKey + * @param scalar + * @return + */ + public static byte[] addScalarSecret(byte[] secretKey, byte[] scalar) { + if (secretKey == null || secretKey.length != SECRET_KEY_SIZE) { + throw new IllegalArgumentException("public key must be not null and of size " + SECRET_KEY_SIZE); + } + if (scalar == null || scalar.length != SCALAR_SIZE) { + throw new IllegalArgumentException("scalar must be not null and of size " + SCALAR_SIZE); + } + + byte_vector ret = ed25519_add_scalar_secret(Vectors.bytes2byte_vector(secretKey), Vectors.bytes2byte_vector(scalar)); + + return Vectors.byte_vector2bytes(ret); + } + + /** + * @param publicKey + * @param secretKey + * @return + */ + public byte[] keyExchange(byte[] publicKey, byte[] secretKey) { + if (publicKey == null || publicKey.length != PUBLIC_KEY_SIZE) { + throw new IllegalArgumentException("public key must be not null and of size " + PUBLIC_KEY_SIZE); + } + if (secretKey == null || secretKey.length != SECRET_KEY_SIZE) { + throw new IllegalArgumentException("private key must be not null and of size " + SECRET_KEY_SIZE); + } + + byte_vector secret = ed25519_key_exchange(Vectors.bytes2byte_vector(publicKey), + Vectors.bytes2byte_vector(secretKey)); + + return Vectors.byte_vector2bytes(secret); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Entry.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Entry.java new file mode 100644 index 0000000..ffa28d6 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Entry.java @@ -0,0 +1,226 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.entry; +import com.frostwire.jlibtorrent.swig.entry_vector; +import com.frostwire.jlibtorrent.swig.string_entry_map; +import com.frostwire.jlibtorrent.swig.string_vector; + +import java.io.File; +import java.io.IOException; +import java.util.AbstractList; +import java.util.AbstractMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * The Entry class represents one node in a bencoded hierarchy. It works as a + * variant type, it can be either a list, a dictionary, an integer + * or a string. + * + * @author gubatron + * @author aldenml + */ +public final class Entry { + + private final entry e; + + public Entry(entry e) { + this.e = e; + } + + public Entry(String s) { + this(new entry(s)); + } + + public Entry(long n) { + this(new entry(n)); + } + + public static Entry bdecode(byte[] data) { + return new Entry(entry.bdecode(Vectors.bytes2byte_vector(data))); + } + + public static Entry bdecode(File file) throws IOException { + byte[] data = Files.bytes(file); + return bdecode(data); + } + + public static Entry fromList(List list) { + entry e = new entry(entry.data_type.list_t); + + entry_vector d = e.list(); + for (Object v : list) { + if (v instanceof String) { + d.push_back(new entry((String) v)); + } else if (v instanceof Integer) { + d.push_back(new entry((Integer) v)); + } else if (v instanceof Entry) { + d.push_back(((Entry) v).swig()); + } else if (v instanceof entry) { + d.push_back((entry) v); + } else if (v instanceof List) { + d.push_back(fromList((List) v).swig()); + } else if (v instanceof Map) { + d.push_back(fromMap((Map) v).swig()); + } else { + d.push_back(new entry(v.toString())); + } + } + + return new Entry(e); + } + + public static Entry fromMap(Map map) { + entry e = new entry(entry.data_type.dictionary_t); + + string_entry_map d = e.dict(); + for (String k : map.keySet()) { + Object v = map.get(k); + + if (v instanceof String) { + d.set(k, new entry((String) v)); + } else if (v instanceof Integer) { + d.set(k, new entry((Integer) v)); + } else if (v instanceof Entry) { + d.set(k, ((Entry) v).swig()); + } else if (v instanceof entry) { + d.set(k, (entry) v); + } else if (v instanceof List) { + d.set(k, fromList((List) v).swig()); + } else if (v instanceof Map) { + d.set(k, fromMap((Map) v).swig()); + } else { + d.set(k, new entry(v.toString())); + } + } + + return new Entry(e); + } + + public entry swig() { + return e; + } + + public byte[] bencode() { + return Vectors.byte_vector2bytes(e.bencode()); + } + + public String string() { + return e.string(); + } + + public long integer() { + return e.integer(); + } + + public List list() { + return new EntryList(e.list()); + } + + public Map dictionary() { + return new EntryMap(e.dict()); + } + + @Override + public String toString() { + return e.to_string(); + } + + private static final class EntryList extends AbstractList { + + private final entry_vector v; + + public EntryList(entry_vector v) { + this.v = v; + } + + @Override + public Entry get(int index) { + return new Entry(v.get(index)); + } + + @Override + public boolean add(Entry entry) { + v.push_back(entry.swig()); + return true; + } + + @Override + public int size() { + return (int) v.size(); + } + + @Override + public void clear() { + v.clear(); + } + + @Override + public boolean isEmpty() { + return v.empty(); + } + } + + private static final class EntryMap extends AbstractMap { + + private final string_entry_map m; + + public EntryMap(string_entry_map m) { + this.m = m; + } + + @Override + public com.frostwire.jlibtorrent.Entry get(Object key) { + String k = key.toString(); + return m.has_key(k) ? new com.frostwire.jlibtorrent.Entry(m.get(key.toString())) : null; + } + + @Override + public com.frostwire.jlibtorrent.Entry put(String key, com.frostwire.jlibtorrent.Entry value) { + com.frostwire.jlibtorrent.Entry r = get(key); + m.set(key, value.swig()); + return r; + } + + @Override + public int size() { + return (int) m.size(); + } + + @Override + public void clear() { + m.clear(); + } + + @Override + public boolean containsKey(Object key) { + return m.has_key(key.toString()); + } + + @Override + public boolean isEmpty() { + return m.empty(); + } + + @Override + public Set keySet() { + HashSet s = new HashSet<>(); + + string_vector v = m.keys(); + int size = (int) v.size(); + + for (int i = 0; i < size; i++) { + s.add(v.get(i)); + } + + return s; + } + + @Override + public Set> entrySet() { + throw new UnsupportedOperationException(); + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/EnumNet.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/EnumNet.java new file mode 100644 index 0000000..27a630c --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/EnumNet.java @@ -0,0 +1,182 @@ +/* + * Created by Angel Leon (@gubatron), Alden Torres (aldenml) + * + * Licensed under the MIT License. + */ + +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.ip_interface; +import com.frostwire.jlibtorrent.swig.ip_interface_vector; +import com.frostwire.jlibtorrent.swig.ip_route; +import com.frostwire.jlibtorrent.swig.ip_route_vector; +import com.frostwire.jlibtorrent.swig.libtorrent; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * @author gubatron + * @author aldenml + */ +public final class EnumNet { + + private EnumNet() { + } + + public static List enumInterfaces(SessionManager session) { + if (session.swig() == null) { + return Collections.emptyList(); + } + + ip_interface_vector v = libtorrent.enum_net_interfaces(session.swig()); + int size = (int) v.size(); + ArrayList l = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + l.add(new IpInterface(v.get(i))); + } + + return l; + } + + public static List enumRoutes(SessionManager session) { + if (session.swig() == null) { + return Collections.emptyList(); + } + + ip_route_vector v = libtorrent.enum_routes(session.swig()); + int size = (int) v.size(); + ArrayList l = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + l.add(new IpRoute(v.get(i))); + } + + return l; + } + + public static Address getGateway(SessionManager session, IpInterface ipInterface, ip_route_vector routes) { + return new Address(libtorrent.get_gateway(ipInterface.swig(), routes)); + } + + public static final class IpInterface { + + private final Address interfaceAddress; + private final Address netmask; + private final String name; + private final String friendlyName; + private final String description; + private final boolean preferred; + private final ip_interface s; + + IpInterface(ip_interface iface) { + this.s = iface; + this.interfaceAddress = new Address(iface.getInterface_address()); + this.netmask = new Address(iface.getNetmask()); + this.name = Vectors.byte_vector2ascii(iface.getName()); + this.friendlyName = Vectors.byte_vector2ascii(iface.getFriendly_name()); + this.description = Vectors.byte_vector2ascii(iface.getDescription()); + this.preferred = iface.getPreferred(); + } + + public ip_interface swig() { + return s; + } + + public Address interfaceAddress() { + return interfaceAddress; + } + + public Address netmask() { + return netmask; + } + + public String name() { + return name; + } + + public String friendlyName() { + return friendlyName; + } + + public String description() { + return description; + } + + public boolean preferred() { + return preferred; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + + sb.append("address: ").append(interfaceAddress); + sb.append(", netmask: ").append(netmask); + sb.append(", name: ").append(name); + sb.append(", friendlyName: ").append(friendlyName); + sb.append(", description: ").append(description); + sb.append(", preferred: ").append(preferred); + + return sb.toString(); + } + } + + public static final class IpRoute { + + private final Address destination; + private final Address netmask; + private final Address gateway; + private final String name; + private final int mtu; + private final ip_route s; + + IpRoute(ip_route route) { + this.s = route; + this.destination = new Address(route.getDestination()); + this.netmask = new Address(route.getNetmask()); + this.gateway = new Address(route.getGateway()); + this.name = Vectors.byte_vector2ascii(route.getName()); + this.mtu = route.getMtu(); + } + + public ip_route swig() { + return this.s; + } + + public Address destination() { + return destination; + } + + public Address netmask() { + return netmask; + } + + public Address gateway() { + return gateway; + } + + public String name() { + return name; + } + + public int mtu() { + return mtu; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + + sb.append("destination: ").append(destination); + sb.append(", netmask: ").append(netmask); + sb.append(", gateway: ").append(gateway); + sb.append(", name: ").append(name); + sb.append(", mtu: ").append(mtu); + + return sb.toString(); + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/ErrorCode.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/ErrorCode.java new file mode 100644 index 0000000..2956f98 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/ErrorCode.java @@ -0,0 +1,50 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.error_code; + +/** + * @author gubatron + * @author aldenml + */ +public final class ErrorCode { + + private int value; + private String message; + private boolean isError; + + /** + * @param ec the native object + */ + public ErrorCode(error_code ec) { + assign(ec); + } + + /** + * @return the internal error code value + */ + public int value() { + return value; + } + + /** + * @return the error message + */ + public String message() { + return message; + } + + /** + * Returns if this error code actually represents an error. + * + * @return true if an actual error + */ + public boolean isError() { + return isError; + } + + void assign(error_code ec) { + value = ec.value(); + message = ec.message(); + isError = ec.op_bool(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/FileSlice.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/FileSlice.java new file mode 100644 index 0000000..9dbc772 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/FileSlice.java @@ -0,0 +1,66 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.file_slice; + +/** + * Represents a window of a file in a torrent. + *

+ * The {@link #fileIndex()} refers to the index of the file (in the {@link com.frostwire.jlibtorrent.TorrentInfo}). + * To get the path and filename, use {@link TorrentInfo#files()}. The {@link #offset()} is the byte offset in the + * file where the range starts, and {@link #size()} is the number of bytes this range is. The {@code size + offset} + * will never be greater than the file size. + *

+ * Implementation note: This class does not store internally a reference to the native swig + * {@link com.frostwire.jlibtorrent.swig.file_slice}. This is because we are dealing with only three integral + * values and we want to avoid keeping a reference to a memory in the native heap. + * + * @author gubatron + * @author aldenml + */ +public final class FileSlice { + + private final int fileIndex; + private final long offset; + private final long size; + + /** + * @param fs the native object + */ + public FileSlice(file_slice fs) { + this.fileIndex = fs.getFile_index(); + this.offset = fs.getOffset(); + this.size = fs.getSize(); + } + + /** + * The index of the file. + * + * @return the index + */ + public int fileIndex() { + return fileIndex; + } + + /** + * The offset from the start of the file, in bytes. + * + * @return the offset + */ + public long offset() { + return offset; + } + + /** + * The size of the window, in bytes. + * + * @return the size + */ + public long size() { + return size; + } + + @Override + public String toString() { + return String.format("FileSlice(fileIndex: %d, offset: %d, size: %d)", fileIndex, offset, size); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/FileStorage.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/FileStorage.java new file mode 100644 index 0000000..d1f66db --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/FileStorage.java @@ -0,0 +1,471 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.byte_vector; +import com.frostwire.jlibtorrent.swig.file_flags_t; +import com.frostwire.jlibtorrent.swig.file_slice_vector; +import com.frostwire.jlibtorrent.swig.file_storage; +import com.frostwire.jlibtorrent.swig.string_vector; +import com.frostwire.jlibtorrent.swig.torrent_info; + +import java.io.File; +import java.util.ArrayList; + +/** + * This class represents a file list and the piece + * size. Everything necessary to interpret a regular bittorrent storage + * file structure. + * + * @author gubatron + * @author aldenml + */ +public final class FileStorage { + + /** + * This file is a pad file. The creator of the + * torrent promises the file is entirely filled with + * zeroes and does not need to be downloaded. The + * purpose is just to align the next file to either + * a block or piece boundary. + */ + public static final file_flags_t FLAG_PAD_FILE = file_storage.flag_pad_file; + /** + * This file is hidden (sets the hidden attribute + * on windows). + */ + public static final file_flags_t FLAG_HIDDEN = file_storage.flag_hidden; + /** + * This file is executable (sets the executable bit + * on posix like systems). + */ + public static final file_flags_t FLAG_EXECUTABLE = file_storage.flag_executable; + /** + * This file is a symlink. The symlink target is + * specified in a separate field + */ + public static final file_flags_t FLAG_SYMLINK = file_storage.flag_symlink; + private final file_storage fs; + private final torrent_info ti; + + /** + * @param fs the native object + */ + public FileStorage(file_storage fs) { + this(fs, null); + } + + /** + * Used to keep the torrent info reference around. + * + * @param fs the native object + * @param ti the torrent info to pin + */ + FileStorage(file_storage fs, torrent_info ti) { + this.fs = fs; + this.ti = ti; + } + + static ArrayList mapBlock(file_slice_vector v) { + int size = (int) v.size(); + + ArrayList l = new ArrayList<>(size); + for (int i = 0; i < size; i++) { + l.add(new FileSlice(v.get(i))); + } + + return l; + } + + /** + * @return the native object + */ + public file_storage swig() { + return fs; + } + + /** + * This methods returns the internal torrent info or null + * if it was constructed without one. + *

+ * This also prevent premature garbage collection in case + * the storage was created from a torrent info. + * + * @return the pinned torrent info + */ + public torrent_info ti() { + return ti; + } + + /** + * Returns true if the piece length has been initialized + * on the file_storage. This is typically taken as a proxy + * of whether the file_storage as a whole is initialized or + * not. + * + * @return true if valid + */ + public boolean isValid() { + return fs.is_valid(); + } + + /** + * Allocates space for {@code numFiles} in the internal file list. This can + * be used to avoid reallocating the internal file list when the number + * of files to be added is known up-front. + * + * @param numFiles the number of files + */ + public void reserve(int numFiles) { + fs.reserve(numFiles); + } + + /** + * Adds a file to the file storage. The {@code flags} argument sets attributes on the file. + * The file attributes is an extension and may not work in all bittorrent clients. + *

+ * If more files than one are added, certain restrictions to their paths apply. + * In a multi-file file storage (torrent), all files must share the same root directory. + *

+ * That is, the first path element of all files must be the same. + * This shared path element is also set to the name of the torrent. It + * can be changed by calling {@link #name(String)}. + *

+ * The built in functions to traverse a directory to add files will + * make sure this requirement is fulfilled. + * + * @param path the path + * @param size the file size + * @param flags the file flags + * @param mtime the time + * @param symlink the symlink + */ + public void addFile(String path, long size, file_flags_t flags, int mtime, String symlink) { + fs.add_file(path, size, flags, mtime, symlink); + } + + /** + * Adds a file to the file storage. The {@code flags} argument sets attributes on the file. + * The file attributes is an extension and may not work in all bittorrent clients. + *

+ * If more files than one are added, certain restrictions to their paths apply. + * In a multi-file file storage (torrent), all files must share the same root directory. + *

+ * That is, the first path element of all files must be the same. + * This shared path element is also set to the name of the torrent. It + * can be changed by calling {@link #name(String)}. + *

+ * The built in functions to traverse a directory to add files will + * make sure this requirement is fulfilled. + * + * @param path the path + * @param size the file size + * @param flags the file flags + * @param mtime the time + */ + public void addFile(String path, long size, file_flags_t flags, int mtime) { + fs.add_file(path, size, flags, mtime); + } + + /** + * Adds a file to the file storage. The {@code flags} argument sets attributes on the file. + * The file attributes is an extension and may not work in all bittorrent clients. + *

+ * If more files than one are added, certain restrictions to their paths apply. + * In a multi-file file storage (torrent), all files must share the same root directory. + *

+ * That is, the first path element of all files must be the same. + * This shared path element is also set to the name of the torrent. It + * can be changed by calling {@link #name(String)}. + *

+ * The built in functions to traverse a directory to add files will + * make sure this requirement is fulfilled. + * + * @param path the path + * @param size the file size + * @param flags the file flags + */ + public void addFile(String path, long size, file_flags_t flags) { + fs.add_file(path, size, flags); + } + + /** + * Adds a file to the file storage. + *

+ * If more files than one are added, certain restrictions to their paths apply. + * In a multi-file file storage (torrent), all files must share the same root directory. + *

+ * That is, the first path element of all files must be the same. + * This shared path element is also set to the name of the torrent. It + * can be changed by calling {@link #name(String)}. + *

+ * The built in functions to traverse a directory to add files will + * make sure this requirement is fulfilled. + * + * @param p + * @param size + */ + public void addFile(String p, long size) { + fs.add_file(p, size); + } + + /** + * Renames the file at {@code index} to {@code newFilename}. Keep in mind + * that filenames are expected to be UTF-8 encoded. + * + * @param index + * @param newFilename + */ + public void renameFile(int index, String newFilename) { + fs.rename_file(index, newFilename); + } + + /** + * Returns a list of {@link com.frostwire.jlibtorrent.FileSlice} objects representing the portions of + * files the specified piece index, byte offset and size range overlaps. + *

+ * This is the inverse mapping of {@link #mapFile(int, long, int)}. + * + * @param piece + * @param offset + * @param size + * @return + */ + public ArrayList mapBlock(int piece, long offset, int size) { + return mapBlock(fs.map_block(piece, offset, size)); + } + + /** + * Returns a {@link com.frostwire.jlibtorrent.PeerRequest} representing the + * piece index, byte offset and size the specified file range overlaps. + * This is the inverse mapping of {@link #mapBlock(int, long, int)}. + *

+ * Note that the {@link PeerRequest} return type + * is meant to hold bittorrent block requests, which may not be larger + * than 16 kiB. Mapping a range larger than that may return an overflown + * integer. + * + * @param file + * @param offset + * @param size + * @return + */ + public PeerRequest mapFile(int file, long offset, int size) { + return new PeerRequest(fs.map_file(file, offset, size)); + } + + /** + * Returns the number of files in the file_storage. + * + * @return + */ + public int numFiles() { + return fs.num_files(); + } + + /** + * Returns the total number of bytes all the files in this torrent spans. + * + * @return + */ + public long totalSize() { + return fs.total_size(); + } + + /** + * Returns the number of pieces in the torrent. + * + * @return the number of pieces in the torrent + */ + public int numPieces() { + return fs.num_pieces(); + } + + /** + * Set the number of pieces in the torrent. + * + * @param n + */ + public void numPieces(int n) { + fs.set_num_pieces(n); + } + + /** + * Get the size of each piece in this torrent. This size is typically an even power + * of 2. It doesn't have to be though. It should be divisible by 16kiB however. + * + * @return + */ + public int pieceLength() { + return fs.piece_length(); + } + + /** + * Set the size of each piece in this torrent. This size is typically an even power + * of 2. It doesn't have to be though. It should be divisible by 16kiB however. + * + * @param l + */ + public void pieceLength(int l) { + fs.set_piece_length(l); + } + + /** + * Returns the piece size of {@code index}. This will be the same as {@link #pieceLength()}, + * except for the last piece, which may be shorter. + * + * @param index + * @return + */ + public int pieceSize(int index) { + return fs.piece_size(index); + } + + /** + * Get the name of this torrent. For multi-file torrents, this is also + * the name of the root directory all the files are stored in. + * + * @return + */ + public String name() { + return fs.name(); + } + + /** + * Set the name of this torrent. For multi-file torrents, this is also + * the name of the root directory all the files are stored in. + * + * @param name + */ + public void name(String name) { + fs.set_name(name); + } + + /** + * Is a sha-1 hash of the file, or 0 if none was + * provided in the torrent file. This can potentially be used to + * join a bittorrent network with other file sharing networks. + * + * @param index + * @return + */ + public Sha1Hash hash(int index) { + return new Sha1Hash(fs.hash(index)); + } + + /** + * returns the full path to a file. + * + * @param index + * @param savePath + * @return + */ + public String filePath(int index, String savePath) { + // not calling the corresponding swig function because internally, + // the use of the function GetStringUTFChars does not consider the case of + // a copy not made + return savePath + File.separator + fs.file_path(index); + } + + /** + * Returns the full path to a file. + * + * @param index the file index + * @return the full path + */ + public String filePath(int index) { + return fs.file_path(index); + } + + /** + * Returns only the name of the file, whereas + * {@link #filePath(int)} returns the path (inside the torrent file) with + * the filename appended. + * + * @param index the file index + * @return the file name + */ + public String fileName(int index) { + byte_vector v = fs.file_name(index).to_bytes(); + return Vectors.byte_vector2utf8(v); + } + + /** + * returns the size of a file. + * + * @param index + * @return + */ + public long fileSize(int index) { + return fs.file_size(index); + } + + /** + * returns true if the file at the given + * index is a pad-file. + * + * @param index + * @return + */ + public boolean padFileAt(int index) { + return fs.pad_file_at(index); + } + + /** + * returns the byte offset within the torrent file + * where this file starts. It can be used to map the file to a piece + * index (given the piece size). + * + * @param index + * @return + */ + public long fileOffset(int index) { + return fs.file_offset(index); + } + + /** + * @return + */ + public ArrayList paths() { + string_vector v = fs.paths(); + int size = (int) v.size(); + ArrayList l = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + l.add(v.get(i)); + } + + return l; + } + + /** + * Returns a bitmask of flags from {@link file_flags_t} that apply + * to file at {@code index}. + * + * @param index + * @return the flags + */ + public file_flags_t fileFlags(int index) { + return fs.file_flags(index); + } + + /** + * Returns true if the file at the specified index has been renamed to + * have an absolute path, i.e. is not anchored in the save path of the + * torrent. + * + * @param index + * @return + */ + public boolean fileAbsolutePath(int index) { + return fs.file_absolute_path(index); + } + + /** + * Returns the index of the file at the given offset in the torrent. + * + * @param offset + * @return + */ + public int fileIndexAtOffset(long offset) { + return fs.file_index_at_offset(offset); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Files.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Files.java new file mode 100644 index 0000000..1bb5e0b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Files.java @@ -0,0 +1,206 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.frostwire.jlibtorrent; + +import java.io.Closeable; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; + +final class Files { + + private static final int EOF = -1; + + private Files() { + } + + /** + * Reads the contents of a file into a byte array. + * The file is always closed. + * + * @param file the file to read, must not be {@code null} + * @return the file contents, never {@code null} + * @throws IOException in case of an I/O error + * @since 1.1 + */ + public static byte[] bytes(File file) throws IOException { + InputStream in = null; + try { + in = openInputStream(file); + return toByteArray(in, file.length()); + } finally { + closeQuietly(in); + } + } + + /** + * Opens a {@link java.io.FileInputStream} for the specified file, providing better + * error messages than simply calling new FileInputStream(file). + *

+ * At the end of the method either the stream will be successfully opened, + * or an exception will have been thrown. + *

+ * An exception is thrown if the file does not exist. + * An exception is thrown if the file object exists but is a directory. + * An exception is thrown if the file exists but cannot be read. + * + * @param file the file to open for input, must not be {@code null} + * @return a new {@link java.io.FileInputStream} for the specified file + * @throws java.io.FileNotFoundException if the file does not exist + * @throws IOException if the file object is a directory + * @throws IOException if the file cannot be read + * @since 1.3 + */ + private static FileInputStream openInputStream(File file) throws IOException { + if (file.exists()) { + if (file.isDirectory()) { + throw new IOException("File '" + file + "' exists but is a directory"); + } + if (file.canRead() == false) { + throw new IOException("File '" + file + "' cannot be read"); + } + } else { + throw new FileNotFoundException("File '" + file + "' does not exist"); + } + return new FileInputStream(file); + } + + /** + * Get contents of an InputStream as a byte[]. + * Use this method instead of toByteArray(InputStream) + * when InputStream size is known. + * NOTE: the method checks that the length can safely be cast to an int without truncation + * before using {@link #toByteArray(java.io.InputStream, int)} to read into the byte array. + * (Arrays can have no more than Integer.MAX_VALUE entries anyway) + * + * @param input the InputStream to read from + * @param size the size of InputStream + * @return the requested byte array + * @throws IOException if an I/O error occurs or InputStream size differ from parameter size + * @throws IllegalArgumentException if size is less than zero or size is greater than Integer.MAX_VALUE + * @see #toByteArray(java.io.InputStream, int) + * @since 2.1 + */ + private static byte[] toByteArray(InputStream input, long size) throws IOException { + + if (size > Integer.MAX_VALUE) { + throw new IllegalArgumentException("Size cannot be greater than Integer max value: " + size); + } + + return toByteArray(input, (int) size); + } + + /** + * Get the contents of an InputStream as a byte[]. + * Use this method instead of toByteArray(InputStream) + * when InputStream size is known + * + * @param input the InputStream to read from + * @param size the size of InputStream + * @return the requested byte array + * @throws java.io.IOException if an I/O error occurs or InputStream size differ from parameter size + * @throws IllegalArgumentException if size is less than zero + * @since 2.1 + */ + private static byte[] toByteArray(InputStream input, int size) throws IOException { + + if (size < 0) { + throw new IllegalArgumentException("Size must be equal or greater than zero: " + size); + } + + if (size == 0) { + return new byte[0]; + } + + byte[] data = new byte[size]; + int offset = 0; + int readed; + + while (offset < size && (readed = input.read(data, offset, size - offset)) != EOF) { + offset += readed; + } + + if (offset != size) { + throw new IOException("Unexpected readed size. current: " + offset + ", excepted: " + size); + } + + return data; + } + + /** + * Unconditionally close an InputStream. + *

+ * Equivalent to {@link InputStream#close()}, except any exceptions will be ignored. + * This is typically used in finally blocks. + *

+ * Example code: + *

+     *   byte[] data = new byte[1024];
+     *   InputStream in = null;
+     *   try {
+     *       in = new FileInputStream("foo.txt");
+     *       in.read(data);
+     *       in.close(); //close errors are handled
+     *   } catch (Exception e) {
+     *       // error handling
+     *   } finally {
+     *       IOUtils.closeQuietly(in);
+     *   }
+     * 
+ * + * @param input the InputStream to close, may be null or already closed + */ + static void closeQuietly(InputStream input) { + closeQuietly((Closeable) input); + } + + /** + * Unconditionally close a Closeable. + *

+ * Equivalent to {@link java.io.Closeable#close()}, except any exceptions will be ignored. + * This is typically used in finally blocks. + *

+ * Example code: + *

+     *   Closeable closeable = null;
+     *   try {
+     *       closeable = new FileReader("foo.txt");
+     *       // process closeable
+     *       closeable.close();
+     *   } catch (Exception e) {
+     *       // error handling
+     *   } finally {
+     *       IOUtils.closeQuietly(closeable);
+     *   }
+     * 
+ * + * @param closeable the object to close, may be null or already closed + * @since 2.0 + */ + static void closeQuietly(Closeable closeable) { + try { + if (closeable != null) { + closeable.close(); + } + } catch (IOException ioe) { + // ignore + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Hex.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Hex.java new file mode 100644 index 0000000..c139e57 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Hex.java @@ -0,0 +1,111 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.frostwire.jlibtorrent; + +/** + * Converts hexadecimal Strings. + */ +final class Hex { + + /** + * Used to build output as Hex + */ + private static final char[] DIGITS_LOWER = + {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; + + private Hex() { + } + + /** + * Converts an array of characters representing hexadecimal values into an array of bytes of those same values. The + * returned array will be half the length of the passed array, as it takes two characters to represent any given + * byte. An exception is thrown if the passed char array has an odd number of elements. + * + * @param data An array of characters containing hexadecimal digits + * @return A byte array containing binary data decoded from the supplied char array. + */ + public static byte[] decode(final char[] data) { + + final int len = data.length; + + final byte[] out = new byte[len >> 1]; + + // two characters form the hex value. + for (int i = 0, j = 0; j < len; i++) { + int f = toDigit(data[j], j) << 4; + j++; + f = f | toDigit(data[j], j); + j++; + out[i] = (byte) (f & 0xFF); + } + + return out; + } + + public static byte[] decode(String data) { + return decode(data.toCharArray()); + } + + /** + * Converts an array of bytes into an array of characters representing the hexadecimal values of each byte in order. + * The returned array will be double the length of the passed array, as it takes two characters to represent any + * given byte. + * + * @param data a byte[] to convert to Hex characters + * @return A char[] containing hexadecimal characters + */ + public static String encode(final byte[] data) { + return new String(encode(data, DIGITS_LOWER)); + } + + /** + * Converts an array of bytes into an array of characters representing the hexadecimal values of each byte in order. + * The returned array will be double the length of the passed array, as it takes two characters to represent any + * given byte. + * + * @param data a byte[] to convert to Hex characters + * @param toDigits the output alphabet + * @return A char[] containing hexadecimal characters + * @since 1.4 + */ + private static char[] encode(final byte[] data, final char[] toDigits) { + final int l = data.length; + final char[] out = new char[l << 1]; + // two characters form the hex value. + for (int i = 0, j = 0; i < l; i++) { + out[j++] = toDigits[(0xF0 & data[i]) >>> 4]; + out[j++] = toDigits[0x0F & data[i]]; + } + return out; + } + + /** + * Converts a hexadecimal character to an integer. + * + * @param ch A character to convert to an integer digit + * @param index The index of the character in the source + * @return An integer + */ + private static int toDigit(final char ch, final int index) { + final int digit = Character.digit(ch, 16); + if (digit == -1) { + throw new IllegalArgumentException("Illegal hexadecimal character " + ch + " at index " + index); + } + return digit; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/IntSeries.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/IntSeries.java new file mode 100644 index 0000000..95cfcc0 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/IntSeries.java @@ -0,0 +1,109 @@ +package com.frostwire.jlibtorrent; + +/** + * This is a limited capability data point series backed by + * a circular buffer logic. Used to hold equally timed sample + * of statistics. + * + * @author aldenml + * @author gubatron + */ +public final class IntSeries { + + private final long[] buffer; + + private int head; + private int end; + private int size; + + IntSeries(long[] buffer) { + if (buffer == null) { + throw new IllegalArgumentException("buffer to hold data can't be null"); + } + if (buffer.length == 0) { + throw new IllegalArgumentException("buffer to hold data can't be of size 0"); + } + this.buffer = buffer; + + head = -1; + end = -1; + size = 0; + } + + IntSeries(int capacity) { + this(new long[capacity]); + } + + void add(long value) { + if (head == -1) { // first element add + head = end = 0; + buffer[end] = value; + size = 1; + return; + } + + // update buffer and pointers + end = (end + 1) % buffer.length; + buffer[end] = value; + if (end <= head) { + head = (head + 1) % buffer.length; + } + + // update size + if (head <= end) { + size = 1 + (end - head); + } else { + size = buffer.length; + } + } + + /** + * This method will always returns a value, but keep in mind that + * due to the nature of the circular buffer internal logic, if you pass + * past the size, you will get the sames values again. + * Use {@link #size()} for a proper boundary check. + *

+ * Usage example: + *

+     * {@code
+     *     for (int i = min(series.size(), desired_count); i >= 0; i--) {
+     *         plotMyValueAt(i, series.get(i));
+     *     }
+     * }
+     * 
+ * + * @param index the value's index + * @return the value in the series + */ + public long get(int index) { + return buffer[(head + index) % size]; + } + + /** + * This method will always returns a value, if the series is empty + * {@code 0} is returned. + * + * @return the last value in the series + */ + public long last() { + return end != 0 ? buffer[end] : 0; + } + + public int size() { + return size; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("[ "); + for (int i = 0; i < buffer.length; i++) { + sb.append(buffer[i]); + if (i != buffer.length - 1) { + sb.append(", "); + } + } + sb.append(" ]"); + return "{ head: " + head + ", end: " + end + ", size: " + size() + ", buffer: " + sb.toString() + " }"; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/LibTorrent.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/LibTorrent.java new file mode 100644 index 0000000..bf92dcc --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/LibTorrent.java @@ -0,0 +1,115 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.libtorrent; +import com.frostwire.jlibtorrent.swig.libtorrent_jni; +import com.frostwire.jlibtorrent.swig.stats_metric_vector; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author gubatron + * @author aldenml + */ +public final class LibTorrent { + + private LibTorrent() { + } + + /** + * The version number as reported by libtorrent + * + * @return the version number + */ + public static int versionNum() { + return libtorrent.LIBTORRENT_VERSION_NUM; + } + + /** + * The version string as reported by libtorrent + * + * @return the version string + */ + public static String version() { + return libtorrent.version(); + } + + /** + * The git revision of libtorrent the native library is using. + *

+ * This is not the internal revision libtorrent reports, since + * that string is updated from time to time. This library can be + * using an up to date revision, this string is manually + * hardcoded in each version of jlibtorrent. See + * {@link libtorrent#LIBTORRENT_REVISION} for the libtorrent string. + * + * @return the git revision + */ + public static String revision() { + return "b5bf6c3260bd726b0181671625c007be5ad49845"; + } + + public static int boostVersionNum() { + return libtorrent.boost_version(); + } + + public static String boostVersion() { + return libtorrent.boost_lib_version(); + } + + public static int opensslVersionNum() { + return libtorrent.openssl_version_number(); + } + + public static String opensslVersion() { + return libtorrent.openssl_version_text(); + } + + public static String jlibtorrentVersion() { + return libtorrent_jni.jlibtorrentVersion(); + } + + /** + * This free function returns the list of available metrics exposed by + * libtorrent's statistics API. Each metric has a name and a *value index*. + * The value index is the index into the array in session_stats_alert where + * this metric's value can be found when the session stats is sampled (by + * calling post_session_stats()). + * + * @return the list of all metrics + */ + public static List sessionStatsMetrics() { + stats_metric_vector v = libtorrent.session_stats_metrics(); + int size = (int) v.size(); + + ArrayList l = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + l.add(new StatsMetric(v.get(i))); + } + + return l; + } + + /** + * given a name of a metric, this function returns the counter index of it, + * or -1 if it could not be found. The counter index is the index into the + * values array returned by session_stats_alert. + * + * @param name the name of the metric + * @return the index of the metric + */ + public static int findMetricIdx(String name) { + return libtorrent.find_metric_idx_s(name); + } + + /** + * If the native library is an ARM architecture variant, returns true + * if the running platform has NEON support. + * + * @return true if the running platform has NEON support + */ + public static boolean hasArmNeonSupport() { + return libtorrent.arm_neon_support(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Logger.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Logger.java new file mode 100644 index 0000000..1df6002 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Logger.java @@ -0,0 +1,56 @@ +package com.frostwire.jlibtorrent; + +import java.util.logging.Level; + +import static java.util.logging.Level.INFO; + +/** + * @author gubatron + * @author aldenml + */ +final class Logger { + + private final java.util.logging.Logger jul; + private final String name; + + Logger(java.util.logging.Logger jul) { + this.jul = jul; + this.name = jul.getName(); + } + + public static Logger getLogger(Class clazz) { + return new Logger(java.util.logging.Logger.getLogger(clazz.getName())); + } + + public void info(String msg) { + jul.logp(INFO, name, "", msg); + } + + public void info(String msg, Throwable e) { + jul.logp(Level.INFO, name, "", msg, e); + } + + public void warn(String msg) { + jul.logp(INFO, name, "", msg); + } + + public void warn(String msg, Throwable e) { + jul.logp(Level.INFO, name, "", msg, e); + } + + public void error(String msg) { + jul.logp(INFO, name, "", msg); + } + + public void error(String msg, Throwable e) { + jul.logp(Level.INFO, name, "", msg, e); + } + + public void debug(String msg) { + jul.logp(INFO, name, "", msg); + } + + public void debug(String msg, Throwable e) { + jul.logp(Level.INFO, name, "", msg, e); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/MoveFlags.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/MoveFlags.java new file mode 100644 index 0000000..f461254 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/MoveFlags.java @@ -0,0 +1,62 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.move_flags_t; + +/** + * Flags for asynchronous move of a torrent handle storage. + * + * @author gubatron + * @author aldenml + * @see TorrentHandle#moveStorage(String, MoveFlags) + */ +public enum MoveFlags { + + /** + * Replace any files in the destination when copying + * or moving the storage. + */ + ALWAYS_REPLACE_FILES(move_flags_t.always_replace_files), + + /** + * If any files that we want to copy exist in the destination, + * fail the whole operation and don't perform + * any copy or move. There is an inherent race condition + * in this mode. The files are checked for existence before + * the operation starts. In between the check and performing + * the copy, the destination files may be created, in which + * case they are replaced. + */ + FAIL_IF_EXIST(move_flags_t.fail_if_exist), + + /** + * If any files exist in the target, take those files instead + * of the ones we may have in the source. + */ + DONT_REPLACE(move_flags_t.dont_replace); + + private final move_flags_t swigValue; + + MoveFlags(move_flags_t swigValue) { + this.swigValue = swigValue; + } + + /** + * @param swigValue the native value + */ + public static MoveFlags fromSwig(move_flags_t swigValue) { + MoveFlags[] enumValues = MoveFlags.class.getEnumConstants(); + for (MoveFlags ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + throw new IllegalArgumentException("Enum value not supported"); + } + + /** + * @return the native value + */ + public move_flags_t swig() { + return swigValue; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Operation.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Operation.java new file mode 100644 index 0000000..1d9d2bb --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Operation.java @@ -0,0 +1,254 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.libtorrent; +import com.frostwire.jlibtorrent.swig.operation_t; + +/** + * These constants are used to identify the operation that failed, causing a + * peer to disconnect. + * + * @author gubatron + * @author aldenml + */ +public enum Operation { + + /** + * The error was unexpected and it is unknown which operation caused it. + */ + UNKNOWN(operation_t.unknown.swigValue()), + + /** + * This is used when the bittorrent logic determines to disconnect. + */ + BITTORRENT(operation_t.bittorrent.swigValue()), + + /** + * A call to iocontrol failed. + */ + IOCONTROL(operation_t.iocontrol.swigValue()), + + /** + * A call to getpeername failed (querying the remote IP of a connection). + */ + GETPEERNAME(operation_t.getpeername.swigValue()), + + /** + * A call to getname failed (querying the local IP of a connection). + */ + GETNAME(operation_t.getname.swigValue()), + + /** + * An attempt to allocate a receive buffer failed. + */ + ALLOC_RECVBUF(operation_t.alloc_recvbuf.swigValue()), + + /** + * An attempt to allocate a send buffer failed. + */ + ALLOC_SNDBUF(operation_t.alloc_sndbuf.swigValue()), + + /** + * Writing to a file failed. + */ + FILE_WRITE(operation_t.file_write.swigValue()), + + /** + * Reading from a file failed. + */ + FILE_READ(operation_t.file_read.swigValue()), + + /** + * A non-read and non-write file operation failed. + */ + FILE(operation_t.file.swigValue()), + + /** + * A socket write operation failed. + */ + SOCK_WRITE(operation_t.sock_write.swigValue()), + + /** + * A socket read operation failed. + */ + SOCK_READ(operation_t.sock_read.swigValue()), + + /** + * A call to open(), to create a socket socket failed. + */ + SOCK_OPEN(operation_t.sock_open.swigValue()), + + /** + * A call to bind() on a socket failed. + */ + SOCK_BIND(operation_t.sock_bind.swigValue()), + + /** + * An attempt to query the number of bytes available to read from a socket + * failed. + */ + AVAILABLE(operation_t.available.swigValue()), + + /** + * A call related to bittorrent protocol encryption failed. + */ + ENCRYPTION(operation_t.encryption.swigValue()), + + /** + * An attempt to connect a socket failed. + */ + CONNECT(operation_t.connect.swigValue()), + + /** + * Establishing an SSL connection failed. + */ + SSL_HANDSHAKE(operation_t.ssl_handshake.swigValue()), + + /** + * A connection failed to satisfy the bind interface setting. + */ + GET_INTERFACE(operation_t.get_interface.swigValue()), + + /** + * A call to listen() on a socket. + */ + SOCK_LISTEN(operation_t.sock_listen.swigValue()), + + /** + * A call to the ioctl to bind a socket to a specific network device or + * adaptor. + */ + SOCK_BIND_TO_DEVICE(operation_t.sock_bind_to_device.swigValue()), + + /** + * A call to accept() on a socket. + */ + SOCK_ACCEPT(operation_t.sock_accept.swigValue()), + + /** + * Convert a string into a valid network address. + */ + PARSE_ADDRESS(operation_t.parse_address.swigValue()), + + /** + * Enumeration network devices or adapters. + */ + ENUM_IF(operation_t.enum_if.swigValue()), + + /** + * + */ + FILE_STAT(operation_t.file_stat.swigValue()), + + /** + * + */ + FILE_COPY(operation_t.file_copy.swigValue()), + + /** + * + */ + FILE_FALLOCATE(operation_t.file_fallocate.swigValue()), + + /** + * + */ + FILE_HARD_LINK(operation_t.file_hard_link.swigValue()), + + /** + * + */ + FILE_REMOVE(operation_t.file_remove.swigValue()), + + /** + * + */ + FILE_RENAME(operation_t.file_rename.swigValue()), + + /** + * + */ + FILE_OPEN(operation_t.file_open.swigValue()), + + /** + * + */ + MKDIR(operation_t.mkdir.swigValue()), + + /** + * + */ + CHECK_RESUME(operation_t.check_resume.swigValue()), + + /** + * + */ + EXCEPTION(operation_t.exception.swigValue()), + + /** + * + */ + ALLOC_CACHE_PIECE(operation_t.alloc_cache_piece.swigValue()), + + /** + * + */ + PARTFILE_MOVE(operation_t.partfile_move.swigValue()), + + /** + * + */ + PARTFILE_READ(operation_t.partfile_read.swigValue()), + + /** + * + */ + PARTFILE_WRITE(operation_t.partfile_write.swigValue()), + + /** + * + */ + HOSTNAME_LOOKUP(operation_t.hostname_lookup.swigValue()); + + private final int swigValue; + + Operation(int swigValue) { + this.swigValue = swigValue; + } + + /** + * @param swigValue the native value + * @return the swig enum. + */ + public static Operation fromSwig(int swigValue) { + Operation[] enumValues = Operation.class.getEnumConstants(); + for (Operation ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + return UNKNOWN; + } + + /** + * @param swigValue the native enum + * @return the swig enum. + */ + public static Operation fromSwig(operation_t swigValue) { + return fromSwig(swigValue.swigValue()); + } + + /** + * @return the native value. + */ + public int swig() { + return swigValue; + } + + public String nativeName() { + try { + return libtorrent.operation_name(operation_t.swigToEnum(swigValue)); + } catch (Throwable e) { + return "invalid enum value"; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Pair.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Pair.java new file mode 100644 index 0000000..6b56fc8 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Pair.java @@ -0,0 +1,53 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.string_int_pair; +import com.frostwire.jlibtorrent.swig.string_string_pair; + +/** + * Utility function to mirror the C++ std::pair class + * + * @author gubatron + * @author aldenml + */ +public final class Pair { + + /** + * the first element + */ + public final T1 first; + /** + * the second element + */ + public final T2 second; + + /** + * @param first first element + * @param second second element + */ + public Pair(T1 first, T2 second) { + this.first = first; + this.second = second; + } + + /** + * @return a native object + */ + string_string_pair to_string_string_pair() { + if (!String.class.equals(first.getClass()) || !String.class.equals(second.getClass())) { + throw new IllegalArgumentException("Incompatible types"); + } + + return new string_string_pair((String) first, (String) second); + } + + /** + * @return a native object + */ + string_int_pair to_string_int_pair() { + if (!String.class.equals(first.getClass()) || !Integer.class.equals(second.getClass())) { + throw new IllegalArgumentException("Incompatible types"); + } + + return new string_int_pair((String) first, (Integer) second); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PartialPieceInfo.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PartialPieceInfo.java new file mode 100644 index 0000000..0c82fe6 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PartialPieceInfo.java @@ -0,0 +1,77 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.partial_piece_info; + +/** + * This class holds information about pieces that have outstanding + * requests or outstanding writes. + * + * @author gubatron + * @author aldenml + */ +public final class PartialPieceInfo { + + private final partial_piece_info p; + + /** + * @param p the native object + */ + public PartialPieceInfo(partial_piece_info p) { + this.p = p; + } + + /** + * @return the native object + */ + public partial_piece_info swig() { + return p; + } + + /** + * The index of the piece in question. {@link #blocksInPiece()} is + * the number of blocks in this particular piece. This number will + * be the same for most pieces, but the last piece may have fewer + * blocks than the standard pieces. + * + * @return the piece index + */ + public int pieceIndex() { + return p.getPiece_index(); + } + + /** + * The number of blocks in this piece. + * + * @return the number of blocks + */ + public int blocksInPiece() { + return p.getBlocks_in_piece(); + } + + /** + * The number of blocks that are in the finished state. + * + * @return the number of finished blocks + */ + public int finished() { + return p.getFinished(); + } + + /** + * The number of blocks that are in the writing state. + * + * @return the number of blocks in writing state + */ + public int writing() { + return p.getWriting(); + } + + /** + * The number of blocks that are in the requested state. + * + * @return the number of blocks in requested state + */ + public int requested() { + return p.getRequested(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PeerInfo.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PeerInfo.java new file mode 100644 index 0000000..3f9b064 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PeerInfo.java @@ -0,0 +1,218 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.peer_info; + +/** + * Holds information and statistics about one peer + * that libtorrent is connected to. + *

+ * This class is a lightweight version of the native {@link peer_info}, and + * only carries a subset of all the information. However, it's completely open + * for custom use or optimization to accommodate client necessities. + * + * @author gubatron + * @author aldenml + */ +public class PeerInfo { + + protected String client; + protected long totalDownload; + protected long totalUpload; + protected int flags; + protected byte source; + protected int upSpeed; + protected int downSpeed; + protected ConnectionType connectionType; + protected float progress; + protected int progressPpm; + protected String ip; + + public PeerInfo(peer_info p) { + init(p); + } + + /** + * This describe the software at the other end of the connection. + * In some cases this information is not available, then it will contain + * a string that may give away something about which software is running + * in the other end. In the case of a web seed, the server type and + * version will be a part of this string. + * + * @return the client string + */ + public String client() { + return client; + } + + /** + * The total number of bytes downloaded from this peer. + * These numbers do not include the protocol chatter, but only the + * payload data. + * + * @return number of bytes downloaded + */ + public long totalDownload() { + return totalDownload; + } + + /** + * The total number of bytes uploaded to this peer. + * These numbers do not include the protocol chatter, but only the + * payload data. + * + * @return number of bytes uploaded + */ + public long totalUpload() { + return totalUpload; + } + + /** + * Tells you in which state the peer is in. It is set to + * any combination of the peer_flags_t flags. + * + * @return the flags as an integer + */ + public int flags() { + return flags; + } + + /** + * A combination of flags describing from which sources this peer + * was received. A combination of the peer_source_flags_t flags. + * + * @return the flags as a byte + */ + public byte source() { + return source; + } + + /** + * The current upload speed we have to and from this peer + * (including any protocol messages). Updated about once per second + * + * @return current upload speed we have to and from this peer + */ + public int upSpeed() { + return upSpeed; + } + + /** + * The current download speed we have to and from this peer + * (including any protocol messages). Updated about once per second + * + * @return current download speed we have to and from this peer + */ + public int downSpeed() { + return downSpeed; + } + + /** + * The kind of connection this peer uses. + * + * @return the connection type + */ + public ConnectionType connectionType() { + return connectionType; + } + + /** + * The progress of the peer in the range [0, 1]. This is always 0 when + * floating point operations are disabled, instead use ``progress_ppm``. + * + * @return the progress of the peer in the range [0, 1] + */ + public float progress() { + return progress; + } + + /** + * Indicates the download progress of the peer in the range [0, 1000000] + * (parts per million). + * + * @return the download progress of the peer in the range [0, 1000000] + */ + public int progressPpm() { + return progressPpm; + } + + /** + * The IP-address to this peer. + * + * @return a string representing the endpoint. + */ + public String ip() { + return ip; + } + + /** + * NOTE: use this with care and only if necessary. + * + * @param p the native object + */ + protected void init(peer_info p) { + client = Vectors.byte_vector2utf8(p.get_client()); + totalDownload = p.getTotal_download(); + totalUpload = p.getTotal_upload(); + flags = p.get_flags(); + source = p.get_source(); + upSpeed = p.getUp_speed(); + downSpeed = p.getDown_speed(); + connectionType = ConnectionType.fromSwig(p.getConnection_type()); + progress = p.getProgress(); + progressPpm = p.getProgress_ppm(); + ip = new TcpEndpoint(p.getIp()).toString(); + } + + /** + * The kind of connection this is. Used for the connectionType field. + */ + public enum ConnectionType { + + /** + * Regular bittorrent connection. + */ + STANDARD_BITTORRENT(peer_info.connection_type_t.standard_bittorrent.swigValue()), + + /** + * HTTP connection using the `BEP 19`_ protocol + */ + WEB_SEED(peer_info.connection_type_t.web_seed.swigValue()), + + /** + * HTTP connection using the `BEP 17`_ protocol. + */ + HTTP_SEED(peer_info.connection_type_t.http_seed.swigValue()), + + /** + * + */ + UNKNOWN(-1); + + private final int swigValue; + + ConnectionType(int swigValue) { + this.swigValue = swigValue; + } + + /** + * @param swigValue the swig value + * @return the enum value + */ + public static ConnectionType fromSwig(int swigValue) { + ConnectionType[] enumValues = ConnectionType.class.getEnumConstants(); + for (ConnectionType ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + return UNKNOWN; + } + + /** + * @return the native value + */ + public int swig() { + return swigValue; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PeerRequest.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PeerRequest.java new file mode 100644 index 0000000..5ff889e --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PeerRequest.java @@ -0,0 +1,62 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.peer_request; + +/** + * Represents a byte range within a piece. Internally this is + * is used for incoming piece requests. + * + * @author gubatron + * @author aldenml + */ +public final class PeerRequest { + + private final peer_request r; + + // internal + public PeerRequest(peer_request r) { + this.r = r; + } + + /** + * @return native object + */ + public peer_request swig() { + return r; + } + + /** + * The index of the piece in which the range starts. + * + * @return the piece index + */ + public int piece() { + return r.getPiece(); + } + + /** + * The offset within that piece where the range starts. + * + * @return the start offset + */ + public int start() { + return r.getStart(); + } + + /** + * The size of the range, in bytes. + * + * @return the range length + */ + public int length() { + return r.getLength(); + } + + /** + * @return string representation + */ + @Override + public String toString() { + return "PeerRequest(piece: " + piece() + ", start: " + start() + ", length: " + length() + ")"; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PieceIndexBitfield.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PieceIndexBitfield.java new file mode 100644 index 0000000..da41815 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PieceIndexBitfield.java @@ -0,0 +1,177 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.piece_index_bitfield; +import com.frostwire.jlibtorrent.swig.torrent_status; + +/** + * The bitfield type stores any number of bits as a bitfield + * in a heap allocated array. + * + * @author gubatron + * @author aldenml + */ +public final class PieceIndexBitfield { + + private final piece_index_bitfield f; + private final torrent_status ts; + + /** + * @param f the native object + */ + public PieceIndexBitfield(piece_index_bitfield f) { + this(f, null); + } + + /** + * Used to keep the torrent status reference around. + * + * @param f the native object + * @param ts the torrent status to pin + */ + PieceIndexBitfield(piece_index_bitfield f, torrent_status ts) { + this.f = f; + this.ts = ts; + } + + /** + * @return the native object + */ + public piece_index_bitfield swig() { + return f; + } + + /** + * This methods returns the internal torrent status or null + * if it was constructed without one. + *

+ * This also prevent premature garbage collection in case + * the storage was created from a torrent status. + * + * @return the pinned torrent info + */ + public torrent_status ts() { + return ts; + } + + /** + * @param index the bit index + * @return the bit value + */ + public boolean getBit(int index) { + return f.get_bit(index); + } + + /** + * @param index the bit index + */ + public void clearBit(int index) { + f.clear_bit(index); + } + + /** + * @param index the bit index + */ + public void setBit(int index) { + f.set_bit(index); + } + + public int endIndex() { + return f.end_index(); + } + + /** + * Returns true if all bits in the bitfield are set. + * + * @return true if all bits are set + */ + public boolean isAllSet() { + return f.all_set(); + } + + /** + * @return true if no bit is set + */ + public boolean isNoneSet() { + return f.none_set(); + } + + /** + * Returns the size of the bitfield in bits. + * + * @return the size + */ + public int size() { + return f.size(); + } + + /** + * Returns true if the bitfield has zero size. + * + * @return true if empty + */ + public boolean isEmpty() { + return f.empty(); + } + + /** + * Counts the number of bits in the bitfield that are set to 1. + * + * @return the number of bits set + */ + public int count() { + return f.count(); + } + + /** + * @return the bit index + */ + public int findFirstSet() { + return f.find_first_set(); + } + + /** + * @return the bit index + */ + public int findLastClear() { + return f.find_last_clear(); + } + + /** + * Set the size of the bitfield to ``bits`` length. If the bitfield is extended, + * the new bits are initialized to ``val``. + * + * @param bits the number of bits + * @param val the bits value + */ + public void resize(int bits, boolean val) { + f.resize(bits, val); + } + + /** + * @param bits the number of bits + */ + public void resize(int bits) { + f.resize(bits); + } + + /** + * Set all bits in the bitfield to 1 (set_all) or 0 (clear_all). + */ + public void setAll() { + f.set_all(); + } + + /** + * Set all bits in the bitfield to 1 (set_all) or 0 (clear_all). + */ + public void clearAll() { + f.clear_all(); + } + + /** + * Make the bitfield empty, of zero size. + */ + public void clear() { + f.clear(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PiecesTracker.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PiecesTracker.java new file mode 100644 index 0000000..393bd22 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PiecesTracker.java @@ -0,0 +1,103 @@ +package com.frostwire.jlibtorrent; + +import java.util.ArrayList; + +/** + * @author gubatron + * @author aldenml + */ +public final class PiecesTracker { + + private final int numFiles; + private final int numPieces; + + private final int[][] files; + private final long[][] sizes; + private final boolean[] complete; + + public PiecesTracker(TorrentInfo ti) { + this.numFiles = ti.numFiles(); + this.numPieces = ti.numPieces(); + + this.files = new int[numFiles][]; + this.sizes = new long[numFiles][]; + this.complete = new boolean[numPieces]; + + FileStorage fs = ti.files(); + + for (int fileIndex = 0; fileIndex < numFiles; fileIndex++) { + long size = fs.fileSize(fileIndex); + int firstPiece = ti.mapFile(fileIndex, 0, 1).piece(); + int lastPiece = ti.mapFile(fileIndex, size - 1, 1).piece(); + + int numSlices = lastPiece - firstPiece + 1; + files[fileIndex] = new int[numSlices]; + sizes[fileIndex] = new long[numSlices]; + + for (int pieceIndex = firstPiece; pieceIndex <= lastPiece; pieceIndex++) { + int index = pieceIndex - firstPiece; + + files[fileIndex][index] = pieceIndex; + + ArrayList slices = ti.mapBlock(pieceIndex, 0, ti.pieceSize(pieceIndex)); + for (FileSlice slice : slices) { + if (slice.fileIndex() == fileIndex) { + sizes[fileIndex][index] = slice.size(); + } + } + } + } + } + + public int numFiles() { + return numFiles; + } + + public int numPieces() { + return numPieces; + } + + public boolean isComplete(int pieceIndex) { + return complete[pieceIndex]; + } + + public void setComplete(int pieceIndex, boolean complete) { + this.complete[pieceIndex] = complete; + } + + public long getSequentialDownloadedBytes(int fileIndex) { + int[] pieces = files[fileIndex]; + + long downloaded = 0; + + for (int i = 0; i < pieces.length; i++) { + int pieceIndex = pieces[i]; + + if (complete[pieceIndex]) { + downloaded += sizes[fileIndex][i]; + } else { + break; + } + } + + return downloaded; + } + + public int getSequentialDownloadedPieces(int fileIndex) { + int[] pieces = files[fileIndex]; + + int count = 0; + + for (int i = 0; i < pieces.length; i++) { + int pieceIndex = pieces[i]; + + if (complete[pieceIndex]) { + count++; + } else { + break; + } + } + + return count; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Plugin.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Plugin.java new file mode 100644 index 0000000..995169f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Plugin.java @@ -0,0 +1,10 @@ +package com.frostwire.jlibtorrent; + +/** + * @author gubatron + * @author aldenml + */ +public interface Plugin { + + boolean onDhtRequest(String query, UdpEndpoint source, BDecodeNode message, Entry response); +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PortmapProtocol.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PortmapProtocol.java new file mode 100644 index 0000000..5856c38 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PortmapProtocol.java @@ -0,0 +1,36 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.portmap_protocol; + +/** + * @author gubatron + * @author aldenml + */ +public enum PortmapProtocol { + + NONE(portmap_protocol.none.swigValue()), + + TCP(portmap_protocol.tcp.swigValue()), + + UDP(portmap_protocol.udp.swigValue()); + + private final int swigValue; + + PortmapProtocol(int swigValue) { + this.swigValue = swigValue; + } + + public static PortmapProtocol fromSwig(int swigValue) { + PortmapProtocol[] enumValues = PortmapProtocol.class.getEnumConstants(); + for (PortmapProtocol ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + throw new IllegalArgumentException("No enum " + PortmapProtocol.class + " with value " + swigValue); + } + + public int swig() { + return swigValue; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PortmapTransport.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PortmapTransport.java new file mode 100644 index 0000000..5904ddc --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/PortmapTransport.java @@ -0,0 +1,34 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.portmap_transport; + +/** + * @author gubatron + * @author aldenml + */ +public enum PortmapTransport { + + NAT_PMP(portmap_transport.natpmp.swigValue()), + + UPNP(portmap_transport.upnp.swigValue()); + + private final int swigValue; + + PortmapTransport(int swigValue) { + this.swigValue = swigValue; + } + + public static PortmapTransport fromSwig(int swigValue) { + PortmapTransport[] enumValues = PortmapTransport.class.getEnumConstants(); + for (PortmapTransport ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + throw new IllegalArgumentException("No enum " + PortmapTransport.class + " with value " + swigValue); + } + + public int swig() { + return swigValue; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Priority.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Priority.java new file mode 100644 index 0000000..809122d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Priority.java @@ -0,0 +1,113 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.byte_vector; +import com.frostwire.jlibtorrent.swig.int_vector; + +/** + * @author gubatron + * @author aldenml + */ +public enum Priority { + + /** + * piece or file is not downloaded at all + */ + IGNORE(0), + + /** + * normal priority. Download order is dependent on availability + */ + NORMAL(1), + + /** + * higher than normal priority. Pieces are preferred over pieces with + * the same availability, but not over pieces with lower availability + */ + TWO(2), + + /** + * pieces are as likely to be picked as partial pieces. + */ + THREE(3), + + /** + * pieces are preferred over partial pieces, but not over pieces with + * lower availability + */ + FOUR(4), + + /** + * *currently the same as 4* + */ + FIVE(5), + + /** + * piece is as likely to be picked as any piece with availability 1 + */ + SIX(6), + + /** + * maximum priority, availability is disregarded, the piece is + * preferred over any other piece with lower priority + */ + SEVEN(7); + + private final int swigValue; + + Priority(int swigValue) { + this.swigValue = swigValue; + } + + /** + * @param swigValue the native value + * @return the enum corresponding value + */ + public static Priority fromSwig(int swigValue) { + Priority[] enumValues = Priority.class.getEnumConstants(); + for (Priority ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + throw new IllegalArgumentException("Invalid native value"); + } + + public static Priority[] array(Priority value, int size) { + Priority[] arr = new Priority[size]; + + for (int i = 0; i < size; i++) { + arr[i] = value; + } + + return arr; + } + + static int_vector array2vector(Priority[] arr) { + int_vector v = new int_vector(); + + for (int i = 0; i < arr.length; i++) { + Priority p = arr[i]; + v.push_back(p.swig()); + } + + return v; + } + + static byte_vector array2byte_vector(Priority[] arr) { + byte_vector v = new byte_vector(); + + for (int i = 0; i < arr.length; i++) { + Priority p = arr[i]; + v.push_back((byte) p.swig()); + } + + return v; + } + + /** + * @return the native value + */ + public int swig() { + return swigValue; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SessionHandle.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SessionHandle.java new file mode 100644 index 0000000..4b49156 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SessionHandle.java @@ -0,0 +1,634 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.alerts.DhtImmutableItemAlert; +import com.frostwire.jlibtorrent.alerts.DhtMutableItemAlert; +import com.frostwire.jlibtorrent.swig.bdecode_node; +import com.frostwire.jlibtorrent.swig.byte_vector; +import com.frostwire.jlibtorrent.swig.entry; +import com.frostwire.jlibtorrent.swig.error_code; +import com.frostwire.jlibtorrent.swig.libtorrent_errors; +import com.frostwire.jlibtorrent.swig.port_mapping_t_vector; +import com.frostwire.jlibtorrent.swig.portmap_protocol; +import com.frostwire.jlibtorrent.swig.remove_flags_t; +import com.frostwire.jlibtorrent.swig.reopen_network_flags_t; +import com.frostwire.jlibtorrent.swig.save_state_flags_t; +import com.frostwire.jlibtorrent.swig.session_flags_t; +import com.frostwire.jlibtorrent.swig.session_handle; +import com.frostwire.jlibtorrent.swig.status_flags_t; +import com.frostwire.jlibtorrent.swig.torrent_handle; +import com.frostwire.jlibtorrent.swig.torrent_handle_vector; + +import java.util.ArrayList; +import java.util.List; + +/** + * The session holds all state that spans multiple torrents. Among other + * things it runs the network loop and manages all torrents. Once it's + * created, the session object will spawn the main thread that will do all + * the work. The main thread will be idle as long it doesn't have any + * torrents to participate in. + *

+ * This class belongs to a middle logical layer of abstraction. It's a wrapper + * of the underlying swig session object (from libtorrent), but it does not + * expose all the raw features. + * + * @author gubatron + * @author aldenml + */ +public class SessionHandle { + + /** + * When set, the session will start paused. Call SessionHandle::resume() to start + */ + public static final session_flags_t PAUSED = session_handle.paused; + /** + * Saves settings (i.e. the {@link SettingsPack}). + */ + public static final save_state_flags_t SAVE_SETTINGS = session_handle.save_settings; + /** + * Saves {@link DhtSettings}. + */ + public static final save_state_flags_t SAVE_DHT_SETTINGS = session_handle.save_dht_settings; + /** + * Saves dht state such as nodes and node-id, possibly accelerating + * joining the DHT if provided at next session startup. + */ + public static final save_state_flags_t SAVE_DHT_STATE = session_handle.save_dht_state; + /** + * Delete the files belonging to the torrent from disk, + * including the part-file, if there is one. + */ + public static final remove_flags_t DELETE_FILES = session_handle.delete_files; + /** + * Delete just the part-file associated with this torrent. + */ + public static final remove_flags_t DELETE_PARTFILE = session_handle.delete_partfile; + /** + * This option indicates if the ports are mapped using natpmp + * and UPnP. If mapping was already made, they are deleted and added + * again. This only works if natpmp and/or upnp are configured to be + * enable. + */ + public static final reopen_network_flags_t REOPEN_MAP_PORTS = session_handle.reopen_map_ports; + public static final int DHT_ANNOUNCE_SEED = 1; + public static final int DHT_ANNOUNCE_IMPLIED_PORT = 1 << 1; + public static final int DHT_ANNOUNCE_SSL_TORRENT = 1 << 2; + private static final Logger LOG = Logger.getLogger(SessionHandle.class); + protected final session_handle s; + + /** + * @param s the native object + */ + public SessionHandle(session_handle s) { + this.s = s; + } + + /** + * @return the native object + */ + public session_handle swig() { + return s; + } + + public boolean isValid() { + return s.is_valid(); + } + + /** + * Loads and saves all session settings, including dht settings, + * encryption settings and proxy settings. This method + * internally writes all keys to an {@link entry} that is returned + * as a bencoded byte array. + *

+ * The {@code flags} argument passed in to this method can be used to + * filter which parts of the session state to save. By default, all state + * is saved (except for the individual torrents). + * + * @return the bencoded byte array + */ + public byte[] saveState(save_state_flags_t flags) { + entry e = new entry(); + s.save_state(e, flags); + return Vectors.byte_vector2bytes(e.bencode()); + } + + /** + * Same as calling {@link #saveState(save_state_flags_t)} with all save state flags. + * + * @return the bencoded byte array + */ + public byte[] saveState() { + entry e = new entry(); + s.save_state(e); + return Vectors.byte_vector2bytes(e.bencode()); + } + + /** + * Loads all session settings, including DHT settings, + * encryption settings and proxy settings. + *

+ * This method expects a byte array that it is a + * bencoded buffer. + *

+ * The {@code flags} argument passed in to this method can be used to + * filter which parts of the session state to load. By default, all state + * is restored (except for the individual torrents). + * + * @param data the bencoded byte array + */ + public void loadState(byte[] data, save_state_flags_t flags) { + byte_vector buffer = Vectors.bytes2byte_vector(data); + bdecode_node n = new bdecode_node(); + error_code ec = new error_code(); + int ret = bdecode_node.bdecode(buffer, n, ec); + + if (ret == 0) { + s.load_state(n, flags); + buffer.clear(); // prevents GC + } else { + LOG.error("failed to decode bencoded data: " + ec.message()); + } + } + + /** + * Same as calling {@link #loadState(byte[], save_state_flags_t)} with all + * save state flags. + */ + public void loadState(byte[] data) { + byte_vector buffer = Vectors.bytes2byte_vector(data); + bdecode_node n = new bdecode_node(); + error_code ec = new error_code(); + int ret = bdecode_node.bdecode(buffer, n, ec); + + if (ret == 0) { + s.load_state(n); + buffer.clear(); // prevents GC + } else { + LOG.error("failed to decode bencoded data: " + ec.message()); + } + } + + /** + * This functions instructs the session to post the + * {@link com.frostwire.jlibtorrent.alerts.StateUpdateAlert}, + * containing the status of all torrents whose state changed since the + * last time this function was called. + *

+ * Only torrents who has the state subscription flag set will be + * included. This flag is on by default. See {@link AddTorrentParams}. + * the {@code flags} argument is the same as for torrent_handle::status(). + * + * @param flags or-combination of native values + */ + public void postTorrentUpdates(status_flags_t flags) { + s.post_torrent_updates(flags); + } + + /** + * This functions instructs the session to post the + * {@link com.frostwire.jlibtorrent.alerts.StateUpdateAlert}, + * containing the status of all torrents whose state changed since the + * last time this function was called. + *

+ * Only torrents who has the state subscription flag set will be + * included. + */ + public void postTorrentUpdates() { + s.post_torrent_updates(); + } + + /** + * This function will post a {@link com.frostwire.jlibtorrent.alerts.SessionStatsAlert} object, containing a + * snapshot of the performance counters from the internals of libtorrent. + * To interpret these counters, query the session via + * session_stats_metrics(). + */ + public void postSessionStats() { + s.post_session_stats(); + } + + /** + * This will cause a dht_stats_alert to be posted. + */ + public void postDhtStats() { + s.post_dht_stats(); + } + + /** + * Looks for a torrent with the given info-hash. In case there is such + * a torrent in the session, a {@link TorrentHandle} to that torrent + * is returned. + *

+ * In case the torrent cannot be found, a null is returned. + * + * @param infoHash + * @return + */ + public TorrentHandle findTorrent(Sha1Hash infoHash) { + torrent_handle th = s.find_torrent(infoHash.swig()); + + return th != null && th.is_valid() ? new TorrentHandle(th) : null; + } + + /** + * Returns a list of torrent handles to all the + * torrents currently in the session. + * + * @return + */ + public List torrents() { + torrent_handle_vector v = s.get_torrents(); + int size = (int) v.size(); + + ArrayList l = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + l.add(new TorrentHandle(v.get(i))); + } + + return l; + } + + /** + * You add torrents through the {@link #addTorrent(AddTorrentParams, ErrorCode)} + * function where you give an object with all the parameters. + * The {@code addTorrent} overloads will block + * until the torrent has been added (or failed to be added) and returns + * an error code and a {@link TorrentHandle}. In order to add torrents more + * efficiently, consider using {@link #asyncAddTorrent(AddTorrentParams)} + * which returns immediately, without waiting for the torrent to add. + * Notification of the torrent being added is sent as + * {@link com.frostwire.jlibtorrent.alerts.AddTorrentAlert}. + *

+ * The {@link TorrentHandle} returned by this method can be used to retrieve + * information about the torrent's progress, its peers etc. It is also + * used to abort a torrent. + *

+ * If the torrent you are trying to add already exists in the session (is + * either queued for checking, being checked or downloading) + * the error code will be set to {@link libtorrent_errors#duplicate_torrent} + * unless {@code flag_duplicate_is_error} + * is set to false. In that case, {@code addTorrent} will return the handle + * to the existing torrent. + *

+ * All torrent handles must be destructed before the session is destructed! + * + * @param params the parameters to create the torrent download + * @param ec the error code if no torrent handle was created + * @return the torrent handle, could be invalid + */ + public TorrentHandle addTorrent(AddTorrentParams params, ErrorCode ec) { + error_code e = new error_code(); + TorrentHandle th = new TorrentHandle(s.add_torrent(params.swig(), e)); + ec.assign(e); + return th; + } + + public void asyncAddTorrent(AddTorrentParams params) { + s.async_add_torrent(params.swig()); + } + + /** + * This method will close all peer connections associated with the torrent and tell the + * tracker that we've stopped participating in the swarm. This operation cannot fail. + * When it completes, you will receive a torrent_removed_alert. + *

+ * The optional second argument options can be used to delete all the files downloaded + * by this torrent. To do so, pass in the value session::delete_files. The removal of + * the torrent is asynchronous, there is no guarantee that adding the same torrent immediately + * after it was removed will not throw a libtorrent_exception exception. Once the torrent + * is deleted, a torrent_deleted_alert is posted. + * + * @param th the handle + */ + public void removeTorrent(TorrentHandle th, remove_flags_t options) { + if (th.isValid()) { + s.remove_torrent(th.swig(), options); + } + } + + // starts/stops UPnP, NATPMP or LSD port mappers they are stopped by + // default These functions are not available in case + // ``TORRENT_DISABLE_DHT`` is defined. ``start_dht`` starts the dht node + // and makes the trackerless service available to torrents. The startup + // state is optional and can contain nodes and the node id from the + // previous session. The dht node state is a bencoded dictionary with the + // following entries: + // + // nodes + // A list of strings, where each string is a node endpoint encoded in + // binary. If the string is 6 bytes long, it is an IPv4 address of 4 + // bytes, encoded in network byte order (big endian), followed by a 2 + // byte port number (also network byte order). If the string is 18 + // bytes long, it is 16 bytes of IPv6 address followed by a 2 bytes + // port number (also network byte order). + // + // node-id + // The node id written as a readable string as a hexadecimal number. + // + // ``dht_state`` will return the current state of the dht node, this can + // be used to start up the node again, passing this entry to + // ``start_dht``. It is a good idea to save this to disk when the session + // is closed, and read it up again when starting. + // + // If the port the DHT is supposed to listen on is already in use, and + // exception is thrown, ``asio::error``. + // + // ``stop_dht`` stops the dht node. + // + // ``add_dht_node`` adds a node to the routing table. This can be used if + // your client has its own source of bootstrapping nodes. + // + // ``set_dht_settings`` sets some parameters available to the dht node. + // See dht_settings for more information. + // + // ``is_dht_running()`` returns true if the DHT support has been started + // and false + // otherwise. + + /** + * This method will close all peer connections associated with the torrent and tell the + * tracker that we've stopped participating in the swarm. This operation cannot fail. + * When it completes, you will receive a torrent_removed_alert. + * + * @param th + */ + public void removeTorrent(TorrentHandle th) { + if (th.isValid()) { + s.remove_torrent(th.swig()); + } + } + + /** + * Pausing the session has the same effect as pausing every torrent in + * it, except that torrents will not be resumed by the auto-manage + * mechanism. + */ + public void pause() { + s.pause(); + } + + /** + * Resuming will restore the torrents to their previous paused + * state. i.e. the session pause state is separate from the torrent pause + * state. A torrent is inactive if it is paused or if the session is + * paused. + */ + public void resume() { + s.resume(); + } + + public boolean isPaused() { + return s.is_paused(); + } + + void setDhtSettings(DhtSettings settings) { + s.set_dht_settings(settings.swig()); + } + + public boolean isDhtRunning() { + return s.is_dht_running(); + } + + /** + * takes a host name and port pair. That endpoint will be + * pinged, and if a valid DHT reply is received, the node will be added to + * the routing table. + * + * @param node + */ + public void addDhtNode(Pair node) { + s.add_dht_node(node.to_string_int_pair()); + } + + /** + * Applies the settings specified by the settings pack {@code sp}. This is an + * asynchronous operation that will return immediately and actually apply + * the settings to the main thread of libtorrent some time later. + * + * @param sp the settings + */ + public void applySettings(SettingsPack sp) { + s.apply_settings(sp.swig()); + } + + /** + * @return a copy of the internal settings + */ + public SettingsPack settings() { + return new SettingsPack(s.get_settings()); + } + + /** + * Adds a port forwarding on UPnP and/or NAT-PMP, using PCP if supported, + * whichever is enabled. The return value is a handle referring to the + * port mapping that was just created. Pass it to {@link #deletePortMapping} + * to remove it. + * + * @param t the mapping protocol + * @param externalPort the external port + * @param localPort the local port + * @return the array of port mapping ids + */ + public int[] addPortMapping(PortmapProtocol t, int externalPort, int localPort) { + port_mapping_t_vector v = s.add_port_mapping(portmap_protocol.swigToEnum(t.swig()), externalPort, localPort); + + int size = (int) v.size(); + int[] arr = new int[size]; + + for (int i = 0; i < size; i++) { + arr[i] = v.get(i); + } + + return arr; + } + + public void deletePortMapping(int handle) { + s.delete_port_mapping(handle); + } + + /** + * Instructs the session to reopen all listen and outgoing sockets. + *

+ * It's useful in the case your platform doesn't support the built in + * IP notifier mechanism, or if you have a better more reliable way to + * detect changes in the IP routing table. + * + * @param options the options + */ + public void reopenNetworkSockets(reopen_network_flags_t options) { + s.reopen_network_sockets(options); + } + + /** + * Instructs the session to reopen all listen and outgoing sockets. + *

+ * It's useful in the case your platform doesn't support the built in + * IP notifier mechanism, or if you have a better more reliable way to + * detect changes in the IP routing table. + */ + public void reopenNetworkSockets() { + s.reopen_network_sockets(); + } + + /** + * Query the DHT for an immutable item at the target hash. + * the result is posted as a {@link DhtImmutableItemAlert}. + * + * @param target + */ + public void dhtGetItem(Sha1Hash target) { + s.dht_get_item(target.swig()); + } + + /** + * Query the DHT for a mutable item under the public key {@code key}. + * this is an ed25519 key. The {@code salt} argument is optional and may be left + * as an empty string if no salt is to be used. + *

+ * if the item is found in the DHT, a {@link DhtMutableItemAlert} is + * posted. + * + * @param key + * @param salt + */ + public void dhtGetItem(byte[] key, byte[] salt) { + s.dht_get_item(Vectors.bytes2byte_vector(key), Vectors.bytes2byte_vector(salt)); + } + + /** + * Store the given bencoded data as an immutable item in the DHT. + * the returned hash is the key that is to be used to look the item + * up again. It's just the sha-1 hash of the bencoded form of the + * structure. + * + * @param entry + * @return + */ + public Sha1Hash dhtPutItem(Entry entry) { + return new Sha1Hash(s.dht_put_item(entry.swig())); + } + + // store an immutable item. The ``key`` is the public key the blob is + // to be stored under. The optional ``salt`` argument is a string that + // is to be mixed in with the key when determining where in the DHT + // the value is to be stored. The callback function is called from within + // the libtorrent network thread once we've found where to store the blob, + // possibly with the current value stored under the key. + // The values passed to the callback functions are: + // + // entry& value + // the current value stored under the key (may be empty). Also expected + // to be set to the value to be stored by the function. + // + // boost::array& signature + // the signature authenticating the current value. This may be zeroes + // if there is currently no value stored. The function is expected to + // fill in this buffer with the signature of the new value to store. + // To generate the signature, you may want to use the + // ``sign_mutable_item`` function. + // + // boost::uint64_t& seq + // current sequence number. May be zero if there is no current value. + // The function is expected to set this to the new sequence number of + // the value that is to be stored. Sequence numbers must be monotonically + // increasing. Attempting to overwrite a value with a lower or equal + // sequence number will fail, even if the signature is correct. + // + // std::string const& salt + // this is the salt that was used for this put call. + // + // Since the callback function ``cb`` is called from within libtorrent, + // it is critical to not perform any blocking operations. Ideally not + // even locking a mutex. Pass any data required for this function along + // with the function object's context and make the function entirely + // self-contained. The only reason data blobs' values are computed + // via a function instead of just passing in the new value is to avoid + // race conditions. If you want to *update* the value in the DHT, you + // must first retrieve it, then modify it, then write it back. The way + // the DHT works, it is natural to always do a lookup before storing and + // calling the callback in between is convenient. + public void dhtPutItem(byte[] publicKey, byte[] privateKey, Entry entry, byte[] salt) { + s.dht_put_item(Vectors.bytes2byte_vector(publicKey), + Vectors.bytes2byte_vector(privateKey), + entry.swig(), + Vectors.bytes2byte_vector(salt)); + } + + /** + * @param infoHash + */ + public void dhtGetPeers(Sha1Hash infoHash) { + s.dht_get_peers(infoHash.swig()); + } + + /** + * @param infoHash + * @param port + * @param flags + */ + public void dhtAnnounce(Sha1Hash infoHash, int port, int flags) { + s.dht_announce(infoHash.swig(), port, flags); + } + + /** + * @param infoHash + */ + public void dhtAnnounce(Sha1Hash infoHash) { + s.dht_announce(infoHash.swig()); + } + + /** + * @param endp + * @param entry + * @param userdata + */ + public void dhtDirectRequest(UdpEndpoint endp, Entry entry, long userdata) { + s.dht_direct_request(endp.swig(), entry.swig(), userdata); + } + + /** + * @param endp + * @param entry + */ + public void dhtDirectRequest(UdpEndpoint endp, Entry entry) { + s.dht_direct_request(endp.swig(), entry.swig()); + } + + /** + * returns the port we ended up listening on. Since you + * just pass a port-range to the constructor and to ``listen_on()``, to + * know which port it ended up using, you have to ask the session using + * this function. + * + * @return + */ + public int getListenPort() { + return s.listen_port(); + } + + public int getSslListenPort() { + return s.ssl_listen_port(); + } + + /** + * will tell you whether or not the session has + * successfully opened a listening port. If it hasn't, this function will + * return false, and then you can use ``listen_on()`` to make another + * attempt. + * + * @return {@code true} if listening + */ + public boolean isListening() { + return s.is_listening(); + } + + /** + * + */ + public void addExtension(Plugin plugin) { + SwigPlugin p = new SwigPlugin(plugin); + s.add_extension(p); + p.swigReleaseOwnership(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SessionManager.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SessionManager.java new file mode 100644 index 0000000..2e1d11d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SessionManager.java @@ -0,0 +1,1299 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.alerts.AddTorrentAlert; +import com.frostwire.jlibtorrent.alerts.Alert; +import com.frostwire.jlibtorrent.alerts.AlertType; +import com.frostwire.jlibtorrent.alerts.Alerts; +import com.frostwire.jlibtorrent.alerts.DhtGetPeersReplyAlert; +import com.frostwire.jlibtorrent.alerts.DhtImmutableItemAlert; +import com.frostwire.jlibtorrent.alerts.DhtMutableItemAlert; +import com.frostwire.jlibtorrent.alerts.DhtStatsAlert; +import com.frostwire.jlibtorrent.alerts.ExternalIpAlert; +import com.frostwire.jlibtorrent.alerts.ListenFailedAlert; +import com.frostwire.jlibtorrent.alerts.ListenSucceededAlert; +import com.frostwire.jlibtorrent.alerts.MetadataReceivedAlert; +import com.frostwire.jlibtorrent.alerts.SessionStatsAlert; +import com.frostwire.jlibtorrent.alerts.SocketType; +import com.frostwire.jlibtorrent.alerts.TorrentAlert; +import com.frostwire.jlibtorrent.swig.add_torrent_params; +import com.frostwire.jlibtorrent.swig.address; +import com.frostwire.jlibtorrent.swig.alert; +import com.frostwire.jlibtorrent.swig.alert_category_t; +import com.frostwire.jlibtorrent.swig.alert_ptr_vector; +import com.frostwire.jlibtorrent.swig.byte_vector; +import com.frostwire.jlibtorrent.swig.create_torrent; +import com.frostwire.jlibtorrent.swig.entry; +import com.frostwire.jlibtorrent.swig.error_code; +import com.frostwire.jlibtorrent.swig.port_filter; +import com.frostwire.jlibtorrent.swig.remove_flags_t; +import com.frostwire.jlibtorrent.swig.session; +import com.frostwire.jlibtorrent.swig.session_flags_t; +import com.frostwire.jlibtorrent.swig.session_params; +import com.frostwire.jlibtorrent.swig.settings_pack; +import com.frostwire.jlibtorrent.swig.sha1_hash; +import com.frostwire.jlibtorrent.swig.tcp_endpoint_vector; +import com.frostwire.jlibtorrent.swig.torrent_flags_t; +import com.frostwire.jlibtorrent.swig.torrent_handle; +import com.frostwire.jlibtorrent.swig.torrent_handle_vector; +import com.frostwire.jlibtorrent.swig.torrent_info; +import com.frostwire.jlibtorrent.swig.torrent_status; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.ReentrantLock; + +/** + * @author gubatron + * @author aldenml + */ +public class SessionManager { + + private static final Logger LOG = Logger.getLogger(SessionManager.class); + + private static final long REQUEST_STATS_RESOLUTION_MILLIS = 1000; + private static final long ALERTS_LOOP_WAIT_MILLIS = 500; + + private static final int[] METADATA_ALERT_TYPES = new int[] + {AlertType.METADATA_RECEIVED.swig(), AlertType.METADATA_FAILED.swig()}; + private static final String FETCH_MAGNET_DOWNLOAD_KEY = "fetch_magnet___"; + + private static final int[] DHT_IMMUTABLE_ITEM_TYPES = {AlertType.DHT_IMMUTABLE_ITEM.swig()}; + private static final int[] DHT_MUTABLE_ITEM_TYPES = {AlertType.DHT_MUTABLE_ITEM.swig()}; + private static final int[] DHT_GET_PEERS_REPLY_ALERT_TYPES = {AlertType.DHT_GET_PEERS_REPLY.swig()}; + + private final boolean logging; + + private final AlertListener[] listeners; + + private final ReentrantLock sync; + private final ReentrantLock syncMagnet; + private final SessionStats stats; + private final Map listenEndpoints; + private volatile session session; + private long lastStatsRequestTime; + private boolean firewalled; + private String externalAddress; + private int externalPort; + private Thread alertsLoop; + private SessionParams sessionParams; + + private Throwable lastAlertError; + + public SessionManager(boolean logging) { + this.logging = logging; + + this.listeners = new AlertListener[Alerts.NUM_ALERT_TYPES + 1]; + + this.sync = new ReentrantLock(); + this.syncMagnet = new ReentrantLock(); + + this.stats = new SessionStats(); + this.listenEndpoints = new HashMap<>(); + + resetState(); + } + + public SessionManager() { + this(false); + } + + private static alert_category_t alertMask(boolean logging) { + alert_category_t mask = alert.all_categories; + if (!logging) { + alert_category_t log_mask = alert.session_log_notification; + log_mask = log_mask.or_(alert.torrent_log_notification); + log_mask = log_mask.or_(alert.peer_log_notification); + log_mask = log_mask.or_(alert.dht_log_notification); + log_mask = log_mask.or_(alert.port_mapping_log_notification); + log_mask = log_mask.or_(alert.picker_log_notification); + + mask = mask.and_(log_mask.inv()); + } + return mask; + } + + private static String dhtBootstrapNodes() { + StringBuilder sb = new StringBuilder(); + + sb.append("dht.libtorrent.org:25401").append(","); + sb.append("router.bittorrent.com:6881").append(","); + sb.append("router.utorrent.com:6881").append(","); + sb.append("dht.transmissionbt.com:6881").append(","); + // for DHT IPv6 + sb.append("router.silotis.us:6881"); + + return sb.toString(); + } + + private static boolean isSpecialType(int type) { + return type == AlertType.SESSION_STATS.swig() || + type == AlertType.STATE_UPDATE.swig() || + type == AlertType.SESSION_STATS_HEADER.swig(); + } + + public session swig() { + return session; + } + + public void addListener(AlertListener listener) { + modifyListeners(true, listener); + } + + public void removeListener(AlertListener listener) { + modifyListeners(false, listener); + } + + /** + * Starts the session without passing session_flags_t attributes. + * + * @param params + */ + public void start(SessionParams params) { + start(params, null); + } + + /** + * @param params + * @param flags You can pass a flag like SessionHandle.PAUSED to start the session paused. + */ + public void start(SessionParams params, session_flags_t flags) { + if (session != null) { + return; + } + + sync.lock(); + + try { + if (session != null) { + return; + } + + onBeforeStart(); + + resetState(); + + params.settings().setInteger(settings_pack.int_types.alert_mask.swigValue(), alertMask(logging).to_int()); + sessionParams = params; + + if (flags == null) { + session = new session(params.swig()); + } else { + session = new session(params.swig(), flags); + } + alertsLoop(); + + // block all connections to port < 1024, but + // allows 80 and 443 for web seeds + port_filter f = new port_filter(); + f.add_rule(0, 79, 1); + f.add_rule(81, 442, 1); + f.add_rule(444, 1023, 1); + session.set_port_filter(f); + + onAfterStart(); + + } finally { + sync.unlock(); + } + } + + public void start() { + settings_pack sp = new settings_pack(); + + sp.set_str(settings_pack.string_types.dht_bootstrap_nodes.swigValue(), dhtBootstrapNodes()); + + start(new SessionParams(new session_params(sp))); + } + + /** + * This method blocks during the destruction of the native session, it + * could take some time, don't call this from the UI thread or other + * sensitive multithreaded code. + */ + public void stop() { + if (session == null) { + return; + } + + sync.lock(); + + try { + if (session == null) { + return; + } + + onBeforeStop(); + + session s = session; + session = null; // stop alerts loop and session methods + + // guarantee one more alert is post and detected + s.post_session_stats(); + try { + // 250 is to ensure that the sleep is bigger + // than the wait in alerts loop + Thread.sleep(ALERTS_LOOP_WAIT_MILLIS + 250); + } catch (InterruptedException ignore) { + } + + if (alertsLoop != null) { + try { + alertsLoop.join(); + } catch (Throwable e) { + // ignore + } + } + + resetState(); + + s.delete(); + + onAfterStop(); + + } finally { + sync.unlock(); + } + } + + /** + * This method blocks for at least a second plus the time + * needed to destroy the native session, don't call it from the UI thread. + */ + public void restart() { + sync.lock(); + + try { + stop(); + Thread.sleep(1000); // allow some time to release native resources + start(sessionParams); + } catch (InterruptedException e) { + // ignore + } finally { + sync.unlock(); + } + } + + public boolean isRunning() { + return session != null; + } + + public void pause() { + if (session != null && !session.is_paused()) { + session.pause(); + } + } + + public void resume() { + if (session != null) { + session.resume(); + } + } + + public boolean isPaused() { + return session != null && session.is_paused(); + } + + public SessionStats stats() { + return stats; + } + + public long downloadRate() { + return stats.downloadRate(); + } + + public long uploadRate() { + return stats.uploadRate(); + } + + public long totalDownload() { + return stats.totalDownload(); + } + + public long totalUpload() { + return stats.totalUpload(); + } + + public long dhtNodes() { + return stats.dhtNodes(); + } + + //-------------------------------------------------- + // Settings methods + //-------------------------------------------------- + + public boolean isFirewalled() { + return firewalled; + } + + public String externalAddress() { + return externalAddress; + } + + public List listenEndpoints() { + return new ArrayList<>(listenEndpoints.values()); + } + + /** + * Returns a setting pack with all the settings + * the current session is working with. + *

+ * If the current internal session is null, returns + * null. + * + * @return + */ + public SettingsPack settings() { + return session != null ? new SettingsPack(session.get_settings()) : null; + } + + public void applySettings(SettingsPack sp) { + if (session != null) { + + if (sp == null) { + throw new IllegalArgumentException("settings pack can't be null"); + } + + session.apply_settings(sp.swig()); + onApplySettings(sp); + } + } + + public int downloadRateLimit() { + if (session == null) { + return 0; + } + return settings().downloadRateLimit(); + } + + public void downloadRateLimit(int limit) { + if (session == null) { + return; + } + applySettings(new SettingsPack().downloadRateLimit(limit)); + } + + public int uploadRateLimit() { + if (session == null) { + return 0; + } + return settings().uploadRateLimit(); + } + + public void uploadRateLimit(int limit) { + if (session == null) { + return; + } + applySettings(new SettingsPack().uploadRateLimit(limit)); + } + + public int maxActiveDownloads() { + if (session == null) { + return 0; + } + return settings().activeDownloads(); + } + + public void maxActiveDownloads(int limit) { + if (session == null) { + return; + } + applySettings(new SettingsPack().activeDownloads(limit)); + } + + public int maxActiveSeeds() { + if (session == null) { + return 0; + } + return settings().activeSeeds(); + } + + public void maxActiveSeeds(int limit) { + if (session == null) { + return; + } + applySettings(new SettingsPack().activeSeeds(limit)); + } + + public int maxConnections() { + if (session == null) { + return 0; + } + return settings().connectionsLimit(); + } + + public void maxConnections(int limit) { + if (session == null) { + return; + } + applySettings(new SettingsPack().connectionsLimit(limit)); + } + + public int maxPeers() { + if (session == null) { + return 0; + } + return settings().maxPeerlistSize(); + } + + //-------------------------------------------------- + // more methods + //-------------------------------------------------- + + public void maxPeers(int limit) { + if (session == null) { + return; + } + applySettings(new SettingsPack().maxPeerlistSize(limit)); + } + + public String listenInterfaces() { + if (session == null) { + return null; + } + return settings().listenInterfaces(); + } + + public void listenInterfaces(String value) { + if (session == null) { + return; + } + applySettings(new SettingsPack().listenInterfaces(value)); + } + + /** + * This function will post a {@link SessionStatsAlert} object, containing a + * snapshot of the performance counters from the internals of libtorrent. + */ + public void postSessionStats() { + if (session != null) { + session.post_session_stats(); + } + } + + /** + * This will cause a {@link DhtStatsAlert} to be posted. + */ + public void postDhtStats() { + if (session != null) { + session.post_dht_stats(); + } + } + + /** + * This functions instructs the session to post the + * {@link com.frostwire.jlibtorrent.alerts.StateUpdateAlert}, + * containing the status of all torrents whose state changed since the + * last time this function was called. + *

+ * Only torrents who has the state subscription flag set will be + * included. + */ + public void postTorrentUpdates() { + if (session != null) { + session.post_torrent_updates(); + } + } + + public boolean isDhtRunning() { + return session != null && session.is_dht_running(); + } + + public void startDht() { + toggleDht(true); + } + + public void stopDht() { + toggleDht(false); + } + + public TorrentHandle find(Sha1Hash sha1) { + if (session == null) { + return null; + } + + torrent_handle th = session.find_torrent(sha1.swig()); + return th != null && th.is_valid() ? new TorrentHandle(th) : null; + } + + /** + * @param ti the torrent info to download + * @param saveDir the path to save the downloaded files + * @param resumeFile the file with the resume file + * @param priorities the initial file priorities + */ + public void download(TorrentInfo ti, File saveDir, File resumeFile, Priority[] priorities, List peers) { + if (session == null) { + return; + } + + if (!ti.isValid()) { + throw new IllegalArgumentException("torrent info not valid"); + } + + torrent_handle th = session.find_torrent(ti.swig().info_hash()); + + if (th != null && th.is_valid()) { + // found a download with the same hash, just adjust the priorities if needed + if (priorities != null) { + if (ti.numFiles() != priorities.length) { + throw new IllegalArgumentException("priorities count should be equals to the number of files"); + } + th.prioritize_files2(Priority.array2vector(priorities)); + } else { + // did they just add the entire torrent (therefore not selecting any priorities) + priorities = Priority.array(Priority.NORMAL, ti.numFiles()); + th.prioritize_files2(Priority.array2vector(priorities)); + } + + return; + } + + add_torrent_params p = null; + + if (resumeFile != null) { + try { + byte[] data = Files.bytes(resumeFile); + error_code ec = new error_code(); + p = add_torrent_params.read_resume_data(Vectors.bytes2byte_vector(data), ec); + if (ec.value() != 0) { + throw new IllegalArgumentException("Unable to read the resume data: " + ec.message()); + } + } catch (Throwable e) { + LOG.warn("Unable to set resume data", e); + } + } + + if (p == null) { + p = add_torrent_params.create_instance(); + } + + p.set_ti(ti.swig()); + if (saveDir != null) { + p.setSave_path(saveDir.getAbsolutePath()); + } + + if (priorities != null) { + if (ti.files().numFiles() != priorities.length) { + throw new IllegalArgumentException("priorities count should be equals to the number of files"); + } + byte_vector v = new byte_vector(); + for (int i = 0; i < priorities.length; i++) { + v.push_back((byte) priorities[i].swig()); + } + p.set_file_priorities2(v); + } + + if (peers != null && !peers.isEmpty()) { + tcp_endpoint_vector v = new tcp_endpoint_vector(); + for (TcpEndpoint endp : peers) { + v.push_back(endp.swig()); + } + p.set_peers(v); + } + + torrent_flags_t flags = p.getFlags(); + + flags = flags.and_(TorrentFlags.AUTO_MANAGED.inv()); + + p.setFlags(flags); + + session.async_add_torrent(p); + } + + /** + * Downloads a magnet uri. + * + * @param magnetUri the magnet uri to download + * @param saveDir the path to save the downloaded files + */ + public void download(String magnetUri, File saveDir) { + if (session == null) { + return; + } + + error_code ec = new error_code(); + add_torrent_params p = add_torrent_params.parse_magnet_uri(magnetUri, ec); + + if (ec.value() != 0) { + throw new IllegalArgumentException(ec.message()); + } + + sha1_hash info_hash = p.getInfo_hash(); + + torrent_handle th = session.find_torrent(info_hash); + + if (th != null && th.is_valid()) { + // found a download with the same hash + return; + } + + if (saveDir != null) { + p.setSave_path(saveDir.getAbsolutePath()); + } + + torrent_flags_t flags = p.getFlags(); + + flags = flags.and_(TorrentFlags.AUTO_MANAGED.inv()); + + p.setFlags(flags); + + session.async_add_torrent(p); + } + + /** + * @param ti + * @param saveDir + */ + public void download(TorrentInfo ti, File saveDir) { + download(ti, saveDir, null, null, null); + } + + public void remove(TorrentHandle th, remove_flags_t options) { + if (session != null && th.isValid()) { + session.remove_torrent(th.swig(), options); + } + } + + public void remove(TorrentHandle th) { + if (session != null && th.isValid()) { + session.remove_torrent(th.swig()); + } + } + + /** + * @param uri magnet uri + * @param timeout in seconds + * @param maxSize in bytes + * @param extra if extra data is included + * @return the bencoded info or null + */ + public byte[] fetchMagnet(String uri, int timeout, final boolean extra, final int maxSize) { + if (session == null) { + return null; + } + + error_code ec = new error_code(); + add_torrent_params p = add_torrent_params.parse_magnet_uri(uri, ec); + + if (ec.value() != 0) { + throw new IllegalArgumentException(ec.message()); + } + + p.set_disabled_storage(); + + final sha1_hash info_hash = p.getInfo_hash(); + final byte[][] data = {null}; + final CountDownLatch signal = new CountDownLatch(1); + + AlertListener listener = new AlertListener() { + @Override + public int[] types() { + return METADATA_ALERT_TYPES; + } + + @Override + public void alert(Alert alert) { + torrent_handle th = ((TorrentAlert) alert).swig().getHandle(); + if (th == null || !th.is_valid() || th.info_hash().op_ne(info_hash)) { + return; + } + + AlertType type = alert.type(); + + if (type.equals(AlertType.METADATA_RECEIVED)) { + MetadataReceivedAlert a = ((MetadataReceivedAlert) alert); + int size = a.metadataSize(); + if (0 < size && size <= maxSize) { + data[0] = a.torrentData(extra); + } + } + + signal.countDown(); + } + }; + + addListener(listener); + + boolean add = false; + torrent_handle th = null; + + try { + + syncMagnet.lock(); + + try { + th = session.find_torrent(info_hash); + if (th != null && th.is_valid()) { + // we have a download with the same info-hash + add = false; + + torrent_info ti = th.torrent_file_ptr(); + if (ti != null && ti.is_valid()) { + create_torrent ct = new create_torrent(ti); + entry e = ct.generate(); + + int size = ti.metadata_size(); + if (0 < size && size <= maxSize) { + data[0] = Vectors.byte_vector2bytes(e.bencode()); + } + signal.countDown(); + } + } else { + add = true; + } + + if (add) { + p.setName(FETCH_MAGNET_DOWNLOAD_KEY + uri); + p.setSave_path(FETCH_MAGNET_DOWNLOAD_KEY + uri); + + torrent_flags_t flags = p.getFlags(); + flags = flags.and_(TorrentFlags.AUTO_MANAGED.inv()); + flags = flags.or_(TorrentFlags.UPLOAD_MODE); + flags = flags.or_(TorrentFlags.STOP_WHEN_READY); + p.setFlags(flags); + + ec.clear(); + th = session.add_torrent(p, ec); + th.resume(); + } + } finally { + syncMagnet.unlock(); + } + + signal.await(timeout, TimeUnit.SECONDS); + + } catch (Throwable e) { + LOG.error("Error fetching magnet", e); + } finally { + removeListener(listener); + if (session != null && add && th != null && th.is_valid()) { + session.remove_torrent(th); + } + } + + return data[0]; + } + + /** + * Similar to call {@link #fetchMagnet(String, int, boolean, int)} with + * a maximum size of 2MB. + * + * @param uri magnet uri + * @param timeout in seconds + * @param extra if extra data is included + * @return the bencoded info or null + */ + public byte[] fetchMagnet(String uri, int timeout, boolean extra) { + return fetchMagnet(uri, timeout, extra, 2 * 1024 * 1024); + } + + /** + * Similar to call {@link #fetchMagnet(String, int, boolean)} with + * a maximum {@code extra = false}. + * + * @param uri + * @param timeout + * @return the bencoded info or null + */ + public byte[] fetchMagnet(String uri, int timeout) { + return fetchMagnet(uri, timeout, false); + } + + /** + * @param sha1 + * @param timeout in seconds + * @return the item + */ + public Entry dhtGetItem(Sha1Hash sha1, int timeout) { + if (session == null) { + return null; + } + + final sha1_hash target = sha1.swig(); + final Entry[] result = {null}; + final CountDownLatch signal = new CountDownLatch(1); + + AlertListener listener = new AlertListener() { + + @Override + public int[] types() { + return DHT_IMMUTABLE_ITEM_TYPES; + } + + @Override + public void alert(Alert alert) { + DhtImmutableItemAlert a = (DhtImmutableItemAlert) alert; + if (target.op_eq(a.swig().getTarget())) { + result[0] = new Entry(new entry(a.swig().getItem())); + signal.countDown(); + } + } + }; + + addListener(listener); + + try { + + session.dht_get_item(target); + + signal.await(timeout, TimeUnit.SECONDS); + + } catch (Throwable e) { + LOG.error("Error getting immutable item", e); + } finally { + removeListener(listener); + } + + return result[0]; + } + + /** + * @param entry the data + * @return the target key + */ + public Sha1Hash dhtPutItem(Entry entry) { + return session != null ? new SessionHandle(session).dhtPutItem(entry) : null; + } + + public MutableItem dhtGetItem(final byte[] key, final byte[] salt, int timeout) { + if (session == null) { + return null; + } + + final MutableItem[] result = {null}; + final CountDownLatch signal = new CountDownLatch(1); + + AlertListener listener = new AlertListener() { + + @Override + public int[] types() { + return DHT_MUTABLE_ITEM_TYPES; + } + + @Override + public void alert(Alert alert) { + DhtMutableItemAlert a = (DhtMutableItemAlert) alert; + boolean sameKey = Arrays.equals(key, a.key()); + boolean sameSalt = Arrays.equals(salt, a.salt()); + if (sameKey && sameSalt) { + Entry e = new Entry(new entry(a.swig().getItem())); + MutableItem item = new MutableItem(e, a.signature(), a.seq()); + result[0] = item; + signal.countDown(); + } + } + }; + + addListener(listener); + + try { + + new SessionHandle(session).dhtGetItem(key, salt); + + signal.await(timeout, TimeUnit.SECONDS); + + } catch (Throwable e) { + LOG.error("Error getting mutable item", e); + } finally { + removeListener(listener); + } + + return result[0]; + } + + public void dhtPutItem(byte[] publicKey, byte[] privateKey, Entry entry, byte[] salt) { + if (session != null) { + new SessionHandle(session).dhtPutItem(publicKey, privateKey, entry, salt); + } + } + + /** + * @param sha1 + * @param timeout in seconds + * @return the peer list or an empty list + */ + public ArrayList dhtGetPeers(Sha1Hash sha1, int timeout) { + final ArrayList result = new ArrayList<>(); + if (session == null) { + return result; + } + + final sha1_hash target = sha1.swig(); + final CountDownLatch signal = new CountDownLatch(1); + + AlertListener listener = new AlertListener() { + + @Override + public int[] types() { + return DHT_GET_PEERS_REPLY_ALERT_TYPES; + } + + @Override + public void alert(Alert alert) { + DhtGetPeersReplyAlert a = (DhtGetPeersReplyAlert) alert; + if (target.op_eq(a.swig().getInfo_hash())) { + result.addAll(a.peers()); + signal.countDown(); + } + } + }; + + addListener(listener); + + try { + + session.dht_get_peers(target); + + signal.await(timeout, TimeUnit.SECONDS); + + } catch (Throwable e) { + LOG.error("Error getting peers from the dht", e); + } finally { + removeListener(listener); + } + + return result; + } + + public void dhtAnnounce(Sha1Hash sha1, int port, int flags) { + if (session != null) { + session.dht_announce(sha1.swig(), port, flags); + } + } + + public void dhtAnnounce(Sha1Hash sha1) { + if (session != null) { + session.dht_announce(sha1.swig()); + } + } + + /** + * @param dir + */ + public void moveStorage(File dir) { + if (session == null) { + return; + } + + try { + torrent_handle_vector v = session.get_torrents(); + int size = (int) v.size(); + + String path = dir.getAbsolutePath(); + for (int i = 0; i < size; i++) { + torrent_handle th = v.get(i); + torrent_status ts = th.status(); + boolean incomplete = !ts.getIs_seeding() && !ts.getIs_finished(); + if (th.is_valid() && incomplete) { + th.move_storage(path); + } + } + } catch (Throwable e) { + LOG.error("Error changing save path for session", e); + } + } + + public byte[] saveState() { + return session != null ? new SessionHandle(session).saveState() : null; + } + + public void loadState(byte[] data) { + if (session != null) { + new SessionHandle(session).loadState(data); + } + } + + /** + * Instructs the session to reopen all listen and outgoing sockets. + *

+ * It's useful in the case your platform doesn't support the built in + * IP notifier mechanism, or if you have a better more reliable way to + * detect changes in the IP routing table. + */ + public void reopenNetworkSockets() { + if (session != null) { + session.reopen_network_sockets(); + } + } + + public String magnetPeers() { + if (session == null) { + return ""; + } + + StringBuilder sb = new StringBuilder(); + + if (externalAddress != null && externalPort > 0) { + sb.append("&x.pe="); + sb.append(externalAddress).append(":").append(externalPort); + } + + for (String endp : listenEndpoints.values()) { + sb.append("&x.pe=").append(endp); + } + + return sb.toString(); + } + + /** + * This methods return the last error recorded calling the alert + * listeners. + * + * @return the last alert listener exception registered (or null) + */ + public Throwable lastAlertError() { + return lastAlertError; + } + + protected void onBeforeStart() { + } + + protected void onAfterStart() { + } + + protected void onBeforeStop() { + } + + protected void onAfterStop() { + } + + protected void onApplySettings(SettingsPack sp) { + } + + @Override + protected void finalize() throws Throwable { + stop(); + super.finalize(); + } + + private void resetState() { + stats.clear(); + firewalled = true; + listenEndpoints.clear(); + externalAddress = null; + alertsLoop = null; + } + + private void modifyListeners(boolean add, AlertListener listener) { + if (listener == null) { + return; + } + + int[] types = listener.types(); + + // all alert-type including listener + if (types == null) { + modifyListeners(add, Alerts.NUM_ALERT_TYPES, listener); + } else { + for (int i = 0; i < types.length; i++) { + modifyListeners(add, types[i], listener); + } + } + } + + private synchronized void modifyListeners(boolean add, int type, AlertListener listener) { + if (add) { + listeners[type] = AlertMulticaster.add(listeners[type], listener); + } else { + listeners[type] = AlertMulticaster.remove(listeners[type], listener); + } + } + + private void fireAlert(Alert a, int type) { + AlertListener listener = listeners[type]; + if (listener != null) { + try { + listener.alert(a); + } catch (Throwable e) { + LOG.warn("Error calling alert listener: " + e.getMessage()); + lastAlertError = e; + } + } + } + + private void onListenSucceeded(ListenSucceededAlert alert) { + try { + // only store TCP endpoints + if (alert.socketType() == SocketType.TCP) { + return; + } + + Address addr = alert.address(); + + if (addr.isV4()) { + // consider just one IPv4 listen endpoint port + // as the external port + externalPort = alert.port(); + } + + // only consider valid addresses + if (addr.isLoopback() || addr.isMulticast() || addr.isUnspecified()) { + return; + } + + String address = addr.toString(); + int port = alert.port(); + + // avoid invalid addresses + if (address.contains("invalid")) { + return; + } + + // avoid local-link addresses + if (address.startsWith("127.") || address.startsWith("fe80::")) { + return; + } + + String endp = (addr.isV6() ? "[" + address + "]" : address) + ":" + port; + listenEndpoints.put(address, endp); + } catch (Throwable e) { + LOG.error("Error adding listen endpoint to internal list", e); + } + } + + private void onListenFailed(ListenFailedAlert alert) { + LOG.error("onListenFailed(): iface= " + alert.listenInterface() + + ", address= " + alert.address() + + ", port= " + alert.port() + + ", socketType= " + alert.socketType() + + ", errorCode= " + alert.error()); + LOG.error("onListenFailed(): error_message=" + alert.message()); + } + + private void toggleDht(boolean on) { + if (session == null || isDhtRunning() == on) { + return; + } + applySettings(new SettingsPack().enableDht(on)); + } + + private void onExternalIpAlert(ExternalIpAlert alert) { + try { + // libtorrent perform all kind of tests + // to avoid non usable addresses + address addr = alert.swig().get_external_address(); + // filter out non IPv4 addresses + if (!addr.is_v4()) { + return; + } + String address = alert.externalAddress().toString(); + if (address.contains("invalid")) { + return; + } + externalAddress = address; + } catch (Throwable e) { + LOG.error("Error saving reported external ip", e); + } + } + + private boolean isFetchMagnetDownload(AddTorrentAlert alert) { + String name = alert.torrentName(); + return name != null && name.contains(FETCH_MAGNET_DOWNLOAD_KEY); + } + + private void alertsLoop() { + Runnable r = new Runnable() { + @Override + public void run() { + alert_ptr_vector v = new alert_ptr_vector(); + + while (session != null) { + alert ptr = session.wait_for_alert_ms(ALERTS_LOOP_WAIT_MILLIS); + + if (session == null) { + return; + } + + if (ptr != null) { + session.pop_alerts(v); + long size = v.size(); + for (int i = 0; i < size; i++) { + alert a = v.get(i); + int type = a.type(); + + Alert alert = null; + + switch (AlertType.fromSwig(type)) { + case SESSION_STATS: + alert = Alerts.cast(a); + stats.update((SessionStatsAlert) alert); + break; + case PORTMAP: + firewalled = false; + break; + case PORTMAP_ERROR: + firewalled = true; + break; + case LISTEN_SUCCEEDED: + alert = Alerts.cast(a); + onListenSucceeded((ListenSucceededAlert) alert); + break; + case LISTEN_FAILED: + alert = Alerts.cast(a); + onListenFailed((ListenFailedAlert) alert); + break; + case EXTERNAL_IP: + alert = Alerts.cast(a); + onExternalIpAlert((ExternalIpAlert) alert); + break; + case ADD_TORRENT: + alert = Alerts.cast(a); + if (isFetchMagnetDownload((AddTorrentAlert) alert)) { + continue; + } + break; + } + + if (listeners[type] != null) { + if (alert == null) { + alert = Alerts.cast(a); + } + fireAlert(alert, type); + } + + if (!isSpecialType(type) && listeners[Alerts.NUM_ALERT_TYPES] != null) { + if (alert == null) { + alert = Alerts.cast(a); + } + fireAlert(alert, Alerts.NUM_ALERT_TYPES); + } + } + v.clear(); + } + + long now = System.currentTimeMillis(); + if ((now - lastStatsRequestTime) >= REQUEST_STATS_RESOLUTION_MILLIS) { + lastStatsRequestTime = now; + postSessionStats(); + postTorrentUpdates(); + } + } + } + }; + + Thread t = new Thread(r, "SessionManager-alertsLoop"); + t.setDaemon(true); + t.start(); + + alertsLoop = t; + } + + public static final class MutableItem { + + public final Entry item; + public final byte[] signature; + public final long seq; + + private MutableItem(Entry item, byte[] signature, long seq) { + this.item = item; + this.signature = signature; + this.seq = seq; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SessionParams.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SessionParams.java new file mode 100644 index 0000000..c33f992 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SessionParams.java @@ -0,0 +1,58 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.session_params; + +/** + * This is a parameters pack for configuring the session + * before it's started. + * + * @author gubatron + * @author aldenml + */ +public class SessionParams { + + private final session_params p; + + /** + * @param p the native object + */ + public SessionParams(session_params p) { + this.p = p; + } + + /** + * This constructor can be used to start with the default plugins + * (ut_metadata, ut_pex and smart_ban). The default values in the + * settings is to start the default features like upnp, nat-pmp, + * and dht for example. + */ + public SessionParams() { + this(new session_params()); + } + + /** + * This constructor can be used to start with the default plugins + * (ut_metadata, ut_pex and smart_ban). The default values in the + * settings is to start the default features like upnp, nat-pmp, + * and dht for example. + * + * @param settings the initial settings pack + */ + public SessionParams(SettingsPack settings) { + this(new session_params(settings.swig())); + } + + /** + * @return the native object + */ + public session_params swig() { + return p; + } + + /** + * @return the settings pack + */ + public SettingsPack settings() { + return new SettingsPack(p.getSettings()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SessionStats.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SessionStats.java new file mode 100644 index 0000000..fcd393b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SessionStats.java @@ -0,0 +1,149 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.alerts.SessionStatsAlert; + +/** + * @author gubatron + * @author aldenml + */ +public final class SessionStats { + + // these are the channels we keep stats for + private static final int UPLOAD_PAYLOAD = 0; + private static final int UPLOAD_PROTOCOL = 1; + private static final int UPLOAD_IP_PROTOCOL = 2; + private static final int DOWNLOAD_PAYLOAD = 3; + private static final int DOWNLOAD_PROTOCOL = 4; + private static final int DOWNLOAD_IP_PROTOCOL = 5; + private static final int NUM_AVERAGES = 6; + + private final Average[] stat; + + private long lastTickTime; + private long dhtNodes; + + SessionStats() { + this.stat = new Average[NUM_AVERAGES]; + for (int i = 0; i < this.stat.length; i++) { + this.stat[i] = new Average(); + } + } + + public long totalDownload() { + return stat[DOWNLOAD_PAYLOAD].total() + + stat[DOWNLOAD_PROTOCOL].total() + + stat[DOWNLOAD_IP_PROTOCOL].total(); + } + + public long totalUpload() { + return stat[UPLOAD_PAYLOAD].total() + + stat[UPLOAD_PROTOCOL].total() + + stat[UPLOAD_IP_PROTOCOL].total(); + } + + public long downloadRate() { + return stat[DOWNLOAD_PAYLOAD].rate() + + stat[DOWNLOAD_PROTOCOL].rate() + + stat[DOWNLOAD_IP_PROTOCOL].rate(); + } + + public long uploadRate() { + return stat[UPLOAD_PAYLOAD].rate() + + stat[UPLOAD_PROTOCOL].rate() + + stat[UPLOAD_IP_PROTOCOL].rate(); + } + + public long dhtNodes() { + return dhtNodes; + } + + void update(SessionStatsAlert alert) { + long now = System.currentTimeMillis(); + long tickIntervalMs = now - lastTickTime; + lastTickTime = now; + + long received = alert.value(StatsMetric.NET_RECV_BYTES_COUNTER_INDEX); + long payload = alert.value(StatsMetric.NET_RECV_PAYLOAD_BYTES_COUNTER_INDEX); + long protocol = received - payload; + long ip = alert.value(StatsMetric.NET_RECV_IP_OVERHEAD_BYTES_COUNTER_INDEX); + + payload -= stat[DOWNLOAD_PAYLOAD].total(); + protocol -= stat[DOWNLOAD_PROTOCOL].total(); + ip -= stat[DOWNLOAD_IP_PROTOCOL].total(); + stat[DOWNLOAD_PAYLOAD].add(payload); + stat[DOWNLOAD_PROTOCOL].add(protocol); + stat[DOWNLOAD_IP_PROTOCOL].add(ip); + + long sent = alert.value(StatsMetric.NET_SENT_BYTES_COUNTER_INDEX); + payload = alert.value(StatsMetric.NET_SENT_PAYLOAD_BYTES_COUNTER_INDEX); + protocol = sent - payload; + ip = alert.value(StatsMetric.NET_SENT_IP_OVERHEAD_BYTES_COUNTER_INDEX); + + payload -= stat[UPLOAD_PAYLOAD].total(); + protocol -= stat[UPLOAD_PROTOCOL].total(); + ip -= stat[UPLOAD_IP_PROTOCOL].total(); + stat[UPLOAD_PAYLOAD].add(payload); + stat[UPLOAD_PROTOCOL].add(protocol); + stat[UPLOAD_IP_PROTOCOL].add(ip); + + tick(tickIntervalMs); + dhtNodes = alert.value(StatsMetric.DHT_NODES_GAUGE_INDEX); + } + + void clear() { + for (int i = 0; i < NUM_AVERAGES; ++i) { + stat[i].clear(); + } + dhtNodes = 0; + } + + // should be called once every second + private void tick(long tickIntervalMs) { + for (int i = 0; i < NUM_AVERAGES; ++i) { + stat[i].tick(tickIntervalMs); + } + } + + private static final class Average { + + // total counters + private long totalCounter; + + // the accumulator for this second. + private long counter; + + // sliding average + private long averageSec5; + + public Average() { + } + + public void add(long count) { + counter += count; + totalCounter += count; + } + + // should be called once every second + public void tick(long tickIntervalMs) { + if (tickIntervalMs >= 1) { + long sample = (counter * 1000) / tickIntervalMs; + averageSec5 = (averageSec5 * 4) / 5 + sample / 5; + counter = 0; + } + } + + public long rate() { + return averageSec5; + } + + public long total() { + return totalCounter; + } + + public void clear() { + counter = 0; + averageSec5 = 0; + totalCounter = 0; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SettingsPack.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SettingsPack.java new file mode 100644 index 0000000..61bca83 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SettingsPack.java @@ -0,0 +1,609 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.settings_pack; + +/** + * The ``settings_pack`` struct, contains the names of all settings as + * enum values. These values are passed in to the ``set_str()``, + * ``set_int()``, ``set_bool()`` functions, to specify the setting to + * change. + * + * @author gubatron + * @author aldenml + */ +public final class SettingsPack { + + private final settings_pack sp; + + public SettingsPack(settings_pack sp) { + this.sp = sp; + } + + /** + * Example, how to turn on the DHT using SettingsPack. + *

{@code
+     * SettingsPack pack = new SettingsPack();
+     * pack.setBoolean(settings_pack.bool_types.enable_dht.swigValue(), on);
+     * s.applySettings(pack);
+     * }
+ */ + public SettingsPack() { + this(new settings_pack()); + } + + /** + * @return + */ + public settings_pack swig() { + return sp; + } + + /** + * @param name + * @return + */ + public boolean getBoolean(int name) { + return sp.get_bool(name); + } + + /** + * @param name + * @param value + */ + public SettingsPack setBoolean(int name, boolean value) { + sp.set_bool(name, value); + return this; + } + + /** + * @param name + * @return + */ + public int getInteger(int name) { + return sp.get_int(name); + } + + /** + * @param name + * @param value + */ + public SettingsPack setInteger(int name, int value) { + sp.set_int(name, value); + return this; + } + + /** + * @param name + * @return + */ + public String getString(int name) { + return sp.get_str(name); + } + + /** + * @param name + * @param value + */ + public SettingsPack setString(int name, String value) { + sp.set_str(name, value); + return this; + } + + public void clear() { + sp.clear(); + } + + public void clear(int name) { + sp.clear(name); + } + + /** + * @return the session-global download rate limit in bytes per second. (0 for unlimited) + */ + public int downloadRateLimit() { + return sp.get_int(settings_pack.int_types.download_rate_limit.swigValue()); + } + + /** + * Sets the session-global limits of download rate limit, in + * bytes per second. + *

+ * A value of 0 means unlimited. + * + * @param value + */ + public SettingsPack downloadRateLimit(int value) { + sp.set_int(settings_pack.int_types.download_rate_limit.swigValue(), value); + return this; + } + + /** + * @return the session-global upload rate limit in bytes per second. (0 for unlimited) + */ + public int uploadRateLimit() { + return sp.get_int(settings_pack.int_types.upload_rate_limit.swigValue()); + } + + /** + * Sets the session-global limits of upload rate limit, in + * bytes per second. + *

+ * A value of 0 means unlimited. + * + * @param value + */ + public SettingsPack uploadRateLimit(int value) { + sp.set_int(settings_pack.int_types.upload_rate_limit.swigValue(), value); + return this; + } + + /** + * {@code active_downloads} controls how many active + * downloading torrents the queuing mechanism allows. + *

+ * The target number of active torrents is {@code min(active_downloads + + * active_seeds, active_limit)}. {@code active_downloads} and + * {@code active_seeds} are upper limits on the number of downloading + * torrents and seeding torrents respectively. Setting the value to -1 + * means unlimited. + *

+ * For auto managed torrents, these are the limits they are subject to. + * If there are too many torrents some of the auto managed ones will be + * paused until some slots free up. + *

+ * You can have more torrents *active*, even though they are not + * announced to the DHT, lsd or their tracker. If some peer knows about + * you for any reason and tries to connect, it will still be accepted, + * unless the torrent is paused, which means it won't accept any + * connections. + *

+ * For example if there are 10 seeding torrents and 10 downloading + * torrents, and ``active_downloads`` is 4 and ``active_seeds`` is 4, + * there will be 4 seeds active and 4 downloading torrents. If the + * settings are ``active_downloads`` = 2 and ``active_seeds`` = 4, then + * there will be 2 downloading torrents and 4 seeding torrents active. + * Torrents that are not auto managed are also counted against these + * limits. If there are non-auto managed torrents that use up all the + * slots, no auto managed torrent will be activated. + * + * @return + */ + public int activeDownloads() { + return sp.get_int(settings_pack.int_types.active_downloads.swigValue()); + } + + /** + * @param value + * @see #activeDownloads() + */ + public SettingsPack activeDownloads(int value) { + sp.set_int(settings_pack.int_types.active_downloads.swigValue(), value); + return this; + } + + /** + * {@code active_seeds} controls how many active seeding + * torrents the queuing mechanism allows. + * + * @return + * @see #activeDownloads() + */ + public int activeSeeds() { + return sp.get_int(settings_pack.int_types.active_seeds.swigValue()); + } + + /** + * @param value + * @see #activeSeeds() + */ + public SettingsPack activeSeeds(int value) { + sp.set_int(settings_pack.int_types.active_seeds.swigValue(), value); + return this; + } + + /** + * {@code active_checking} is the limit of number of simultaneous checking + * torrents. + * + * @return + * @see #activeDownloads() + */ + public int activeChecking() { + return sp.get_int(settings_pack.int_types.active_checking.swigValue()); + } + + /** + * @param value + * @see #activeChecking() + */ + public SettingsPack activeChecking(int value) { + sp.set_int(settings_pack.int_types.active_checking.swigValue(), value); + return this; + } + + /** + * {@code active_dht_limit} is the max number of torrents to announce to + * the DHT. By default this is set to 88, which is no more than one + * DHT announce every 10 seconds. + * + * @return + * @see #activeDownloads() + */ + public int activeDhtLimit() { + return sp.get_int(settings_pack.int_types.active_dht_limit.swigValue()); + } + + /** + * @param value + * @see #activeDhtLimit() + */ + public SettingsPack activeDhtLimit(int value) { + sp.set_int(settings_pack.int_types.active_dht_limit.swigValue(), value); + return this; + } + + public int dhtUploadRate() { + return sp.get_int(settings_pack.int_types.dht_upload_rate_limit.swigValue()); + } + + public SettingsPack dhtUploadRate(int value) { + sp.set_int(settings_pack.int_types.dht_upload_rate_limit.swigValue(), value); + return this; + } + + /** + * {@code active_tracker_limit} is the max number of torrents to announce + * to their trackers. By default this is 360, which is no more than + * one announce every 5 seconds. + * + * @return + * @see #activeDownloads() + */ + public int activeTrackerLimit() { + return sp.get_int(settings_pack.int_types.active_tracker_limit.swigValue()); + } + + /** + * @param value + * @see #activeTrackerLimit() + */ + public SettingsPack activeTrackerLimit(int value) { + sp.set_int(settings_pack.int_types.active_tracker_limit.swigValue(), value); + return this; + } + + /** + * {@code active_lsd_limit} is the max number of torrents to announce to + * the local network over the local service discovery protocol. By + * default this is 80, which is no more than one announce every 5 + * seconds (assuming the default announce interval of 5 minutes). + * + * @return + * @see #activeDownloads() + */ + public int activeLsdLimit() { + return sp.get_int(settings_pack.int_types.active_lsd_limit.swigValue()); + } + + /** + * @param value + * @see #activeLsdLimit() + */ + public SettingsPack activeLsdLimit(int value) { + sp.set_int(settings_pack.int_types.active_lsd_limit.swigValue(), value); + return this; + } + + /** + * {@code active_limit} is a hard limit on the number of active (auto + * managed) torrents. This limit also applies to slow torrents. + * + * @return the value + * @see #activeDownloads() + */ + public int activeLimit() { + return sp.get_int(settings_pack.int_types.active_limit.swigValue()); + } + + /** + * {@code active_limit} is a hard limit on the number of active (auto + * managed) torrents. This limit also applies to slow torrents. + * + * @param value the value + * @see #activeLimit() + */ + public SettingsPack activeLimit(int value) { + sp.set_int(settings_pack.int_types.active_limit.swigValue(), value); + return this; + } + + /** + * @return global limit on the number of connections opened. + */ + public int connectionsLimit() { + return sp.get_int(settings_pack.int_types.connections_limit.swigValue()); + } + + /** + * Sets a global limit on the number of connections opened. The number of + * connections is set to a hard minimum of at least two per torrent, so + * if you set a too low connections limit, and open too many torrents, + * the limit will not be met. + * + * @param value + */ + public SettingsPack connectionsLimit(int value) { + sp.set_int(settings_pack.int_types.connections_limit.swigValue(), value); + return this; + } + + /** + * @return the maximum number of peers in the list of known peers. (0 for unlimited) + */ + public int maxPeerlistSize() { + return sp.get_int(settings_pack.int_types.max_peerlist_size.swigValue()); + } + + /** + * Sets the maximum number of peers in the list of known peers. These peers + * are not necessarily connected, so this number should be much greater + * than the maximum number of connected peers. Peers are evicted from the + * cache when the list grows passed 90% of this limit, and once the size + * hits the limit, peers are no longer added to the list. If this limit + * is set to 0, there is no limit on how many peers we'll keep in the + * peer list. + * + * @param value + */ + public SettingsPack maxPeerlistSize(int value) { + sp.set_int(settings_pack.int_types.max_peerlist_size.swigValue(), value); + return this; + } + + /** + * @return the maximum number of bytes a connection may have pending in the disk + * write queue before its download rate is being throttled. + */ + public int maxQueuedDiskBytes() { + return sp.get_int(settings_pack.int_types.max_queued_disk_bytes.swigValue()); + } + + /** + * Sets the maximum number of bytes a connection may have pending in the disk + * write queue before its download rate is being throttled. This prevents + * fast downloads to slow medias to allocate more memory indefinitely. + * This should be set to at least 16 kB to not completely disrupt normal + * downloads. If it's set to 0, you will be starving the disk thread and + * nothing will be written to disk. this is a per session setting. + *

+ * When this limit is reached, the peer connections will stop reading + * data from their sockets, until the disk thread catches up. Setting + * this too low will severely limit your download rate. + * + * @param value + */ + public SettingsPack maxQueuedDiskBytes(int value) { + sp.set_int(settings_pack.int_types.max_queued_disk_bytes.swigValue(), value); + return this; + } + + /** + * @return the upper limit of the send buffer low-watermark. + */ + public int sendBufferWatermark() { + return sp.get_int(settings_pack.int_types.send_buffer_watermark.swigValue()); + } + + /** + * Sets the upper limit of the send buffer low-watermark. + *

+ * if the send buffer has fewer bytes than this, we'll read another 16kB + * block onto it. If set too small, upload rate capacity will suffer. If + * set too high, memory will be wasted. The actual watermark may be lower + * than this in case the upload rate is low, this is the upper limit. + * + * @param value + */ + public SettingsPack sendBufferWatermark(int value) { + sp.set_int(settings_pack.int_types.send_buffer_watermark.swigValue(), value); + return this; + } + + /** + * Sets the disk write and read cache. It is specified in units of 16 KiB + * blocks. Buffers that are part of a peer's send or receive buffer also + * count against this limit. Send and receive buffers will never be + * denied to be allocated, but they will cause the actual cached blocks + * to be flushed or evicted. If this is set to -1, the cache size is + * automatically set to the amount of physical RAM available in the + * machine divided by 8. If the amount of physical RAM cannot be + * determined, it's set to 1024 (= 16 MiB). + * + * @return the current value + */ + public int cacheSize() { + return sp.get_int(settings_pack.int_types.cache_size.swigValue()); + } + + /** + * Sets the disk write and read cache. It is specified in units of 16 KiB + * blocks. Buffers that are part of a peer's send or receive buffer also + * count against this limit. Send and receive buffers will never be + * denied to be allocated, but they will cause the actual cached blocks + * to be flushed or evicted. If this is set to -1, the cache size is + * automatically set to the amount of physical RAM available in the + * machine divided by 8. If the amount of physical RAM cannot be + * determined, it's set to 1024 (= 16 MiB). + * + * @param value the new value + * @return this + */ + public SettingsPack cacheSize(int value) { + sp.set_int(settings_pack.int_types.cache_size.swigValue(), value); + return this; + } + + /** + * @return + */ + public int tickInterval() { + return sp.get_int(settings_pack.int_types.tick_interval.swigValue()); + } + + /** + * Specifies the number of milliseconds between internal ticks. This is + * the frequency with which bandwidth quota is distributed to peers. It + * should not be more than one second (i.e. 1000 ms). Setting this to a + * low value (around 100) means higher resolution bandwidth quota + * distribution, setting it to a higher value saves CPU cycles. + * + * @param value + */ + public SettingsPack tickInterval(int value) { + sp.set_int(settings_pack.int_types.tick_interval.swigValue(), value); + return this; + } + + /** + * @return + */ + public int inactivityTimeout() { + return sp.get_int(settings_pack.int_types.inactivity_timeout.swigValue()); + } + + /** + * if a peer is uninteresting and uninterested for longer than this + * number of seconds, it will be disconnected. default is 10 minutes + * + * @param value + */ + public SettingsPack inactivityTimeout(int value) { + sp.set_int(settings_pack.int_types.inactivity_timeout.swigValue(), value); + return this; + } + + /** + * @return + */ + public boolean seedingOutgoingConnections() { + return sp.get_bool(settings_pack.bool_types.seeding_outgoing_connections.swigValue()); + } + + /** + * Determines if seeding (and finished) torrents should attempt to make + * outgoing connections or not. By default this is true. It may be set to + * false in very specific applications where the cost of making outgoing + * connections is high, and there are no or small benefits of doing so. + * For instance, if no nodes are behind a firewall or a NAT, seeds don't + * need to make outgoing connections. + * + * @param value + */ + public SettingsPack seedingOutgoingConnections(boolean value) { + sp.set_bool(settings_pack.bool_types.seeding_outgoing_connections.swigValue(), value); + return this; + } + + /** + * @return + */ + public boolean anonymousMode() { + return sp.get_bool(settings_pack.bool_types.anonymous_mode.swigValue()); + } + + /** + * defaults to false. When set to true, the client tries to hide its + * identity to a certain degree. The peer-ID will no longer include the + * client's fingerprint. The user-agent will be reset to an empty string. + * It will also try to not leak other identifying information, such as + * your local listen port, your IP etc. + *

+ * If you're using I2P, a VPN or a proxy, it might make sense to enable + * anonymous mode. + * + * @param value + */ + public SettingsPack anonymousMode(boolean value) { + sp.set_bool(settings_pack.bool_types.anonymous_mode.swigValue(), value); + return this; + } + + /** + * @return + */ + public boolean enableDht() { + return sp.get_bool(settings_pack.bool_types.enable_dht.swigValue()); + } + + /** + * Starts the dht node and makes the trackerless service available to + * torrents. + * + * @param value + * @return this + */ + public SettingsPack enableDht(boolean value) { + sp.set_bool(settings_pack.bool_types.enable_dht.swigValue(), value); + return this; + } + + /** + * @return + */ + public String listenInterfaces() { + return sp.get_str(settings_pack.string_types.listen_interfaces.swigValue()); + } + + /** + * @param value + * @return this + */ + public SettingsPack listenInterfaces(String value) { + sp.set_str(settings_pack.string_types.listen_interfaces.swigValue(), value); + return this; + } + + /** + * @return the current value + * @see #stopTrackerTimeout(int) + */ + public int stopTrackerTimeout() { + return sp.get_int(settings_pack.int_types.stop_tracker_timeout.swigValue()); + } + + /** + * {@code stop_tracker_timeout} is the number of seconds to wait when + * sending a stopped message before considering a tracker to have + * timed out. This is usually shorter, to make the client quit faster. + * If the value is set to 0, the connections to trackers with the + * stopped event are suppressed. + * + * @param value the new value + * @return this + */ + public SettingsPack stopTrackerTimeout(int value) { + sp.set_int(settings_pack.int_types.stop_tracker_timeout.swigValue(), value); + return this; + } + + /** + * @return the current value + * @see #alertQueueSize(int) + */ + public int alertQueueSize() { + return sp.get_int(settings_pack.int_types.alert_queue_size.swigValue()); + } + + /** + * {@code alert_queue_size} is the maximum number of alerts queued up + * internally. If alerts are not popped, the queue will eventually + * fill up to this level. + * + * @param value the new value + * @return this + */ + public SettingsPack alertQueueSize(int value) { + sp.set_int(settings_pack.int_types.alert_queue_size.swigValue(), value); + return this; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Sha1Hash.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Sha1Hash.java new file mode 100644 index 0000000..5cb36cb --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Sha1Hash.java @@ -0,0 +1,174 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.sha1_hash; +import com.frostwire.jlibtorrent.swig.sha1_hash_vector; + +import java.util.ArrayList; + +/** + * This type holds a SHA-1 digest or any other kind of 20 byte + * sequence. It implements a number of convenience functions, such + * as bit operations, comparison operators etc. + *

+ * In libtorrent it is primarily used to hold info-hashes, piece-hashes, + * peer IDs, node IDs etc. + * + * @author gubatron + * @author aldenml + */ +public final class Sha1Hash implements Comparable, Cloneable { + + private final sha1_hash h; + + /** + * @param h native object + */ + public Sha1Hash(sha1_hash h) { + this.h = h; + } + + /** + * @param bytes hash as an array of bytes + */ + public Sha1Hash(byte[] bytes) { + if (bytes.length != 20) { + throw new IllegalArgumentException("bytes array must be of length 20"); + } + + this.h = new sha1_hash(Vectors.bytes2byte_vector(bytes)); + } + + /** + * @param hex hex coded representation of the hash + */ + public Sha1Hash(String hex) { + this(Hex.decode(hex)); + } + + /** + * Constructs an all-zero sha1-hash + */ + public Sha1Hash() { + this(new sha1_hash()); + } + + /** + * returns an all-F sha1-hash. i.e. the maximum value + * representable by a 160 bit number (20 bytes). This is + * a static member function. + * + * @return the maximum number + */ + public static Sha1Hash max() { + return new Sha1Hash(sha1_hash.max()); + } + + /** + * returns an all-zero sha1-hash. i.e. the minimum value + * representable by a 160 bit number (20 bytes). This is + * a static member function. + * + * @return the minimum number (zero) + */ + public static Sha1Hash min() { + return new Sha1Hash(sha1_hash.min()); + } + + static ArrayList convert(sha1_hash_vector v) { + int size = (int) v.size(); + ArrayList l = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + l.add(new Sha1Hash(v.get(i))); + } + + return l; + } + + /** + * @return the native object + */ + public sha1_hash swig() { + return h; + } + + /** + * set the sha1-hash to all zeroes. + */ + public void clear() { + h.clear(); + } + + /** + * return true if the sha1-hash is all zero. + * + * @return true if zero + */ + public boolean isAllZeros() { + return h.is_all_zeros(); + } + + /** + * @return the number of leading zeroes + */ + public int countLeadingZeroes() { + return h.count_leading_zeroes(); + } + + /** + * Returns the hex representation of this has. + *

+ * This method uses internally the libtorrent to_hex function. + * + * @return the hex representation + */ + public String toHex() { + return h.to_hex(); + } + + /** + * @param o {@inheritDoc} + * @return {@inheritDoc} + */ + @Override + public int compareTo(Sha1Hash o) { + return sha1_hash.compare(this.h, o.h); + } + + /** + * Returns an hex representation of this hash. Internally it + * calls {@link #toHex()}. + * + * @return {@inheritDoc} + */ + @Override + public String toString() { + return toHex(); + } + + /** + * @param obj {@inheritDoc} + * @return {@inheritDoc} + */ + @Override + public boolean equals(Object obj) { + if (!(obj instanceof Sha1Hash)) { + return false; + } + + return h.op_eq(((Sha1Hash) obj).h); + } + + /** + * @return {@inheritDoc} + */ + @Override + public int hashCode() { + return h.hash_code(); + } + + @Override + public Sha1Hash clone() { + return new Sha1Hash(new sha1_hash(h)); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/StatsMetric.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/StatsMetric.java new file mode 100644 index 0000000..811faf0 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/StatsMetric.java @@ -0,0 +1,59 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.metric_type_t; +import com.frostwire.jlibtorrent.swig.stats_metric; + +/** + * Describes one statistics metric from the session. + * + * @author gubatron + * @author aldenml + */ +public final class StatsMetric { + + public static final String NET_SENT_PAYLOAD_BYTES_COUNTER_NAME = "net.sent_payload_bytes"; + public static final String NET_SENT_BYTES_COUNTER_NAME = "net.sent_bytes"; + public static final String NET_SENT_IP_OVERHEAD_BYTES_COUNTER_NAME = "net.sent_ip_overhead_bytes"; + public static final String NET_RECV_PAYLOAD_BYTES_COUNTER_NAME = "net.recv_payload_bytes"; + public static final String NET_RECV_BYTES_COUNTER_NAME = "net.recv_bytes"; + public static final String NET_RECV_IP_OVERHEAD_BYTES_COUNTER_NAME = "net.recv_ip_overhead_bytes"; + + public static final int NET_SENT_PAYLOAD_BYTES_COUNTER_INDEX = LibTorrent.findMetricIdx(NET_SENT_PAYLOAD_BYTES_COUNTER_NAME); + public static final int NET_SENT_BYTES_COUNTER_INDEX = LibTorrent.findMetricIdx(NET_SENT_BYTES_COUNTER_NAME); + public static final int NET_SENT_IP_OVERHEAD_BYTES_COUNTER_INDEX = LibTorrent.findMetricIdx(NET_SENT_IP_OVERHEAD_BYTES_COUNTER_NAME); + public static final int NET_RECV_PAYLOAD_BYTES_COUNTER_INDEX = LibTorrent.findMetricIdx(NET_RECV_PAYLOAD_BYTES_COUNTER_NAME); + public static final int NET_RECV_BYTES_COUNTER_INDEX = LibTorrent.findMetricIdx(NET_RECV_BYTES_COUNTER_NAME); + public static final int NET_RECV_IP_OVERHEAD_BYTES_COUNTER_INDEX = LibTorrent.findMetricIdx(NET_RECV_IP_OVERHEAD_BYTES_COUNTER_NAME); + + public static final String DHT_NODES_GAUGE_NAME = "dht.dht_nodes"; + public static final int DHT_NODES_GAUGE_INDEX = LibTorrent.findMetricIdx(DHT_NODES_GAUGE_NAME); + + public static final int TYPE_COUNTER = metric_type_t.counter.swigValue(); + public static final int TYPE_GAUGE = metric_type_t.gauge.swigValue(); + public final String name; + public final int valueIndex; + public final int type; + + StatsMetric(stats_metric sm) { + this.name = sm.get_name(); + this.valueIndex = sm.getValue_index(); + this.type = sm.getType().swigValue(); + } + + @Override + public String toString() { + return name + ":" + valueIndex + ":" + typeStr(); + } + + private String typeStr() { + String str = "unknown"; + + if (type == TYPE_COUNTER) { + str = "counter"; + } else if (type == TYPE_GAUGE) { + str = "gauge"; + } + + return str; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/StorageMode.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/StorageMode.java new file mode 100644 index 0000000..685eddd --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/StorageMode.java @@ -0,0 +1,57 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.storage_mode_t; + +/** + * Types of storage allocation used for {@link AddTorrentParams#storageMode(StorageMode)}. + * + * @author gubatron + * @author aldenml + */ +public enum StorageMode { + + /** + * All pieces will be written to their final position, all files will be + * allocated in full when the torrent is first started. This is done with + * {@code fallocate()} and similar calls. This mode minimizes fragmentation. + */ + STORAGE_MODE_ALLOCATE(storage_mode_t.storage_mode_allocate.swigValue()), + + /** + * All pieces will be written to the place where they belong and sparse files + * will be used. This is the recommended, and default mode. + */ + STORAGE_MODE_SPARSE(storage_mode_t.storage_mode_sparse.swigValue()), + + /** + * + */ + UNKNOWN(-1); + + private final int swigValue; + + StorageMode(int swigValue) { + this.swigValue = swigValue; + } + + /** + * @param swigValue the native value + * @return the java enum + */ + public static StorageMode fromSwig(int swigValue) { + StorageMode[] enumValues = StorageMode.class.getEnumConstants(); + for (StorageMode ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + return UNKNOWN; + } + + /** + * @return the native value + */ + public int swig() { + return swigValue; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SwigPlugin.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SwigPlugin.java new file mode 100644 index 0000000..7004eea --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/SwigPlugin.java @@ -0,0 +1,30 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.bdecode_node; +import com.frostwire.jlibtorrent.swig.byte_vector; +import com.frostwire.jlibtorrent.swig.entry; +import com.frostwire.jlibtorrent.swig.string_view; +import com.frostwire.jlibtorrent.swig.swig_plugin; +import com.frostwire.jlibtorrent.swig.udp_endpoint; + +/** + * @author gubatron + * @author aldenml + */ +class SwigPlugin extends swig_plugin { + + private final Plugin p; + + public SwigPlugin(Plugin p) { + this.p = p; + } + + @Override + public boolean on_dht_request(string_view query, udp_endpoint source, + bdecode_node message, entry response) { + byte_vector v = query.to_bytes(); + String s = Vectors.byte_vector2ascii(v); + return p.onDhtRequest(s, new UdpEndpoint(source), + new BDecodeNode(message), new Entry(response)); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TcpEndpoint.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TcpEndpoint.java new file mode 100644 index 0000000..9c92d93 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TcpEndpoint.java @@ -0,0 +1,85 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.address; +import com.frostwire.jlibtorrent.swig.error_code; +import com.frostwire.jlibtorrent.swig.tcp_endpoint; + +/** + * @author gubatron + * @author aldenml + */ +public final class TcpEndpoint implements Cloneable { + + private final tcp_endpoint endp; + + /** + * @param endp the native object + */ + public TcpEndpoint(tcp_endpoint endp) { + this.endp = endp; + } + + /** + * + */ + public TcpEndpoint() { + this(new tcp_endpoint()); + } + + /** + * @param address the address + * @param port the port + */ + public TcpEndpoint(Address address, int port) { + this(new tcp_endpoint(address.swig(), port)); + } + + /** + * @param ip the address as an IP + * @param port the port + */ + public TcpEndpoint(String ip, int port) { + error_code ec = new error_code(); + address addr = address.from_string(ip, ec); + if (ec.value() != 0) { + throw new IllegalArgumentException(ec.message()); + } + this.endp = new tcp_endpoint(addr, port); + } + + /** + * @return the native object + */ + public tcp_endpoint swig() { + return endp; + } + + /** + * @return the address + */ + public Address address() { + return new Address(endp.address()); + } + + /** + * @return the port + */ + public int port() { + return endp.port(); + } + + /** + * @return the string representation + */ + @Override + public String toString() { + address addr = endp.address(); + String s = Address.toString(addr); + return (addr.is_v4() ? s : "[" + s + "]") + ":" + endp.port(); + } + + @Override + public TcpEndpoint clone() { + return new TcpEndpoint(new tcp_endpoint(endp)); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentBuilder.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentBuilder.java new file mode 100644 index 0000000..095da14 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentBuilder.java @@ -0,0 +1,665 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.add_files_listener; +import com.frostwire.jlibtorrent.swig.create_flags_t; +import com.frostwire.jlibtorrent.swig.create_torrent; +import com.frostwire.jlibtorrent.swig.error_code; +import com.frostwire.jlibtorrent.swig.file_storage; +import com.frostwire.jlibtorrent.swig.set_piece_hashes_listener; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +import static com.frostwire.jlibtorrent.swig.libtorrent.add_files_ex; +import static com.frostwire.jlibtorrent.swig.libtorrent.set_piece_hashes_ex; + +/** + * @author gubatron + * @author aldenml + */ +public final class TorrentBuilder { + + /** + * This will insert pad files to align the files to piece boundaries, for + * optimized disk-I/O. This will minimize the number of bytes of pad- + * files, to keep the impact down for clients that don't support + * them. + */ + public static final create_flags_t OPTIMIZE_ALIGNMENT = create_torrent.optimize_alignment; + /** + * This will create a merkle hash tree torrent. A merkle torrent cannot + * be opened in clients that don't specifically support merkle torrents. + * The benefit is that the resulting torrent file will be much smaller and + * not grow with more pieces. When this option is specified, it is + * recommended to have a fairly small piece size, say 64 kiB. + * When creating merkle torrents, the full hash tree is also generated + * and should be saved off separately. + */ + public static final create_flags_t MERKLE = create_torrent.merkle; + /** + * This will include the file modification time as part of the torrent. + * This is not enabled by default, as it might cause problems when you + * create a torrent from separate files with the same content, hoping to + * yield the same info-hash. If the files have different modification times, + * with this option enabled, you would get different info-hashes for the + * files. + */ + public static final create_flags_t MODIFICATION_TIME = create_torrent.modification_time; + /** + * If this flag is set, files that are symlinks get a symlink attribute + * set on them and their data will not be included in the torrent. This + * is useful if you need to reconstruct a file hierarchy which contains + * symlinks. + */ + public static final create_flags_t SYMLINKS = create_torrent.symlinks; + /** + * To create a torrent that can be updated via a *mutable torrent* + * (see BEP38_). This also needs to be enabled for torrents that update + * another torrent. + *

+ * BEP38: http://www.bittorrent.org/beps/bep_0038.html + */ + public static final create_flags_t MUTABLE_TORRENT_SUPPORT = create_torrent.mutable_torrent_support; + private final List urlSeeds; + private final List httpSeeds; + private final List> nodes; + private final List> trackers; + private final List similarTorrents; + private final List collections; + private File path; + private int pieceSize; + private int padFileLimit; + private create_flags_t flags; + private int alignment; + private String comment; + private String creator; + private boolean priv; + private Listener listener; + + public TorrentBuilder() { + this.pieceSize = 0; + this.padFileLimit = -1; + this.flags = OPTIMIZE_ALIGNMENT; + this.alignment = -1; + + this.urlSeeds = new LinkedList<>(); + this.httpSeeds = new LinkedList<>(); + this.nodes = new LinkedList<>(); + this.trackers = new LinkedList<>(); + + this.similarTorrents = new LinkedList<>(); + this.collections = new LinkedList<>(); + } + + /** + * @return + */ + public File path() { + return path; + } + + /** + * Adds the file specified by {@code value} + * + * @param value + * @return + */ + public TorrentBuilder path(File value) { + this.path = value; + return this; + } + + /** + * @return + */ + public int pieceSize() { + return pieceSize; + } + + /** + * The size of each piece in bytes. It must + * be a multiple of 16 kiB. If a piece size of 0 is specified, a + * {@code pieceSize} will be calculated such that the torrent file is roughly 40 kB. + * + * @param value + * @return + */ + public TorrentBuilder pieceSize(int value) { + this.pieceSize = value; + return this; + } + + /** + * @return + */ + public int padFileLimit() { + return padFileLimit; + } + + /** + * If a ``pad_size_limit`` is specified (other than -1), any file larger than + * the specified number of bytes will be preceded by a pad file to align it + * with the start of a piece. The pad_file_limit is ignored unless the + * {@link OPTIMIZE_ALIGNMENT} flag is passed. Typically it doesn't make sense + * to set this any lower than 4kiB. + * + * @param value + * @return + */ + public TorrentBuilder padFileLimit(int value) { + this.padFileLimit = value; + return this; + } + + /** + * @return + */ + public create_flags_t flags() { + return flags; + } + + /** + * Specifies options for the torrent creation. It can + * be any combination of the flags defined by {@link create_flags_t} + * + * @param value + * @return + */ + public TorrentBuilder flags(create_flags_t value) { + this.flags = value; + return this; + } + + /** + * @return + */ + public int alignment() { + return alignment; + } + + /** + * Used when pad files are enabled. This is the size + * eligible files are aligned to. The default is -1, which means the + * piece size of the torrent. + * + * @param value + * @return + */ + public TorrentBuilder alignment(int value) { + this.alignment = value; + return this; + } + + /** + * The comment for the torrent. The comment in a torrent file is optional. + * + * @return + */ + public String comment() { + return comment; + } + + /** + * Sets the comment for the torrent. The comment in a torrent file is optional. + * + * @param value + * @return + */ + public TorrentBuilder comment(String value) { + this.comment = value; + return this; + } + + /** + * The creator of the torrent. This is optional. + * + * @return + */ + public String creator() { + return creator; + } + + /** + * Sets the creator of the torrent. This is optional. + * + * @param value + * @return + */ + public TorrentBuilder creator(String value) { + this.creator = value; + return this; + } + + /** + * @return + */ + public List urlSeeds() { + return urlSeeds; + } + + /** + * @param value + * @return + */ + public TorrentBuilder addUrlSeeds(List value) { + if (value != null) { + this.urlSeeds.addAll(value); + } + return this; + } + + /** + * This adds a url seed to the torrent. You can have any number of url seeds. For a + * single file torrent, this should be an HTTP url, pointing to a file with identical + * content as the file of the torrent. For a multi-file torrent, it should point to + * a directory containing a directory with the same name as this torrent, and all the + * files of the torrent in it. + * + * @param value + * @return + */ + public TorrentBuilder addUrlSeed(String value) { + if (value != null) { + this.urlSeeds.add(value); + } + return this; + } + + /** + * @return + */ + public List httpSeeds() { + return httpSeeds; + } + + /** + * @param value + * @return + */ + public TorrentBuilder addHttpSeeds(List value) { + if (value != null) { + this.httpSeeds.addAll(value); + } + return this; + } + + /** + * This adds a HTTP seed to the torrent. You can have any number of url seeds. For a + * single file torrent, this should be an HTTP url, pointing to a file with identical + * content as the file of the torrent. For a multi-file torrent, it should point to + * a directory containing a directory with the same name as this torrent, and all the + * files of the torrent in it. + * + * @param value + * @return + */ + public TorrentBuilder addHttpSeed(String value) { + if (value != null) { + this.httpSeeds.add(value); + } + return this; + } + + /** + * @return + */ + public List> nodes() { + return nodes; + } + + /** + * @param value + * @return + */ + public TorrentBuilder addNodes(List> value) { + if (value != null) { + this.nodes.addAll(value); + } + return this; + } + + /** + * This adds a DHT node to the torrent. This especially useful if you're creating a + * tracker less torrent. It can be used by clients to bootstrap their DHT node from. + * The node is a hostname and a port number where there is a DHT node running. + * You can have any number of DHT nodes in a torrent. + * + * @param value + * @return + */ + public TorrentBuilder addNode(Pair value) { + if (value != null) { + this.nodes.add(value); + } + return this; + } + + /** + * @return + */ + public List> trackers() { + return trackers; + } + + /** + * @param value + * @return + */ + public TorrentBuilder addTrackers(List> value) { + if (value != null) { + this.trackers.addAll(value); + } + return this; + } + + /** + * @param value + * @return + */ + public TorrentBuilder addTracker(Pair value) { + if (value != null) { + this.trackers.add(value); + } + return this; + } + + /** + * Adds a tracker to the torrent. This is not strictly required, but most torrents + * use a tracker as their main source of peers. The url should be an http:// or udp:// + * url to a machine running a bittorrent tracker that accepts announces for this torrent's + * info-hash. The tier is the fallback priority of the tracker. All trackers with tier 0 are + * tried first (in any order). If all fail, trackers with tier 1 are tried. If all of those + * fail, trackers with tier 2 are tried, and so on. + * + * @param url + * @param tier + * @return + */ + public TorrentBuilder addTracker(String url, int tier) { + return addTracker(new Pair<>(url, tier)); + } + + /** + * @param url + * @return + */ + public TorrentBuilder addTracker(String url) { + return addTracker(url, 0); + } + + /** + * @return + */ + public boolean isPrivate() { + return priv; + } + + /** + * Sets the private flag of the torrent. + *

+ * Torrents with the private flag set ask clients to not use any other + * sources than the tracker for peers, and to not advertise itself publicly, + * apart from the tracker. + * + * @param value + * @return + */ + public TorrentBuilder setPrivate(boolean value) { + this.priv = value; + return this; + } + + /** + * @return + */ + public List similarTorrents() { + return similarTorrents; + } + + /** + * @param value + * @return + */ + public TorrentBuilder addSimilarTorrents(List value) { + if (value != null) { + this.similarTorrents.addAll(value); + } + return this; + } + + /** + * Add similar torrents (by info-hash). + *

+ * Similar torrents are expected to share some files with this torrent. + * Torrents sharing a collection name with this torrent are also expected + * to share files with this torrent. A torrent may have more than one + * collection and more than one similar torrents. For more information, + * see BEP 38. + *

+ * BEP 38: http://www.bittorrent.org/beps/bep_0038.html + * + * @param value + * @return + */ + public TorrentBuilder addSimilarTorrent(Sha1Hash value) { + if (value != null) { + this.similarTorrents.add(value); + } + return this; + } + + /** + * @return + */ + public List collections() { + return collections; + } + + /** + * @param value + * @return + */ + public TorrentBuilder addCollections(List value) { + if (value != null) { + this.collections.addAll(value); + } + return this; + } + + /** + * Add collections of similar torrents. + *

+ * Similar torrents are expected to share some files with this torrent. + * Torrents sharing a collection name with this torrent are also expected + * to share files with this torrent. A torrent may have more than one + * collection and more than one similar torrents. For more information, + * see BEP 38. + *

+ * BEP 38: http://www.bittorrent.org/beps/bep_0038.html + * + * @param value + * @return + */ + public TorrentBuilder addCollection(String value) { + if (value != null) { + this.collections.add(value); + } + return this; + } + + /** + * @return + */ + public Listener listener() { + return listener; + } + + /** + * @param value + * @return + */ + public TorrentBuilder listener(Listener value) { + this.listener = value; + return this; + } + + /** + * This function will generate a result withe the .torrent file as a bencode tree. + * + * @return + * @throws IOException + */ + public Result generate() throws IOException { + if (path == null) { + throw new IOException("path can't be null"); + } + + File absPath = path.getAbsoluteFile(); + + file_storage fs = new file_storage(); + add_files_listener l1 = new add_files_listener() { + @Override + public boolean pred(String p) { + return listener == null || listener.accept(p); + } + }; + add_files_ex(fs, absPath.getPath(), l1, flags); + if (fs.total_size() == 0) { + throw new IOException("content total size can't be 0"); + } + create_torrent t = new create_torrent(fs, pieceSize, padFileLimit, flags, alignment); + final int numPieces = t.num_pieces(); + set_piece_hashes_listener l2 = new set_piece_hashes_listener() { + @Override + public void progress(int i) { + if (listener != null) { + listener.progress(i, numPieces); + } + } + }; + File parent = absPath.getParentFile(); + if (parent == null) { + throw new IOException("path's parent can't be null"); + } + error_code ec = new error_code(); + set_piece_hashes_ex(t, parent.getAbsolutePath(), l2, ec); + if (ec.value() != 0) { + throw new IOException(ec.message()); + } + + if (comment != null) { + t.set_comment(comment); + } + if (creator != null) { + t.set_creator(creator); + } + for (String s : urlSeeds) { + t.add_url_seed(s); + } + for (String s : httpSeeds) { + t.add_http_seed(s); + } + for (Pair n : nodes) { + t.add_node(n.to_string_int_pair()); + } + for (Pair tr : trackers) { + t.add_tracker(tr.first, tr.second); + } + if (priv) { + t.set_priv(priv); + } + + if (!similarTorrents.isEmpty()) { + for (Sha1Hash h : similarTorrents) { + t.add_similar_torrent(h.swig()); + } + } + if (!collections.isEmpty()) { + for (String s : collections) { + t.add_collection(s); + } + } + + return new Result(t); + } + + /** + * + */ + public interface Listener { + + /** + * @param filename + * @return + */ + boolean accept(String filename); + + /** + * @param pieceIndex + * @param numPieces + */ + void progress(int pieceIndex, int numPieces); + } + + /** + * + */ + public static final class Result { + + private final create_torrent t; + private final Entry entry; + + private Result(create_torrent t) { + this.t = t; + this.entry = new Entry(t.generate()); + } + + /** + * @return + */ + public Entry entry() { + return entry; + } + + /** + * @return + */ + public int numPieces() { + return t.num_pieces(); + } + + /** + * @return + */ + public int pieceLength() { + return t.piece_length(); + } + + /** + * @param index + * @return + */ + public int pieceSize(int index) { + return t.piece_size(index); + } + + /** + * This function returns the merkle hash tree, if the torrent was created + * as a merkle torrent. The tree is created by {@link #generate()} and won't + * be valid until that function has been called. + *

+ * When creating a merkle tree torrent, the actual tree itself has to + * be saved off separately and fed into libtorrent the first time you start + * seeding it, through the {@link TorrentInfo#merkleTree(List)} function. + * From that point onwards, the tree will be saved in the resume data. + * + * @return + */ + public ArrayList merkleTree() { + return Sha1Hash.convert(t.merkle_tree()); + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentFlags.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentFlags.java new file mode 100644 index 0000000..898eeee --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentFlags.java @@ -0,0 +1,169 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.libtorrent; +import com.frostwire.jlibtorrent.swig.torrent_flags_t; + +/** + * @author gubatron + * @author aldenml + */ +public final class TorrentFlags { + + // If ``seed_mode`` is set, libtorrent will assume that all files + // are present for this torrent and that they all match the hashes in + // the torrent file. Each time a peer requests to download a block, + // the piece is verified against the hash, unless it has been verified + // already. If a hash fails, the torrent will automatically leave the + // seed mode and recheck all the files. The use case for this mode is + // if a torrent is created and seeded, or if the user already know + // that the files are complete, this is a way to avoid the initial + // file checks, and significantly reduce the startup time. + // + // Setting ``seed_mode`` on a torrent without metadata (a + // .torrent file) is a no-op and will be ignored. + // + // If resume data is passed in with this torrent, the seed mode saved + // in there will override the seed mode you set here. + public static final torrent_flags_t SEED_MODE = libtorrent.getSeed_mode(); + // If ``upload_mode`` is set, the torrent will be initialized in + // upload-mode, which means it will not make any piece requests. This + // state is typically entered on disk I/O errors, and if the torrent + // is also auto managed, it will be taken out of this state + // periodically (see ``settings_pack::optimistic_disk_retry``). + // + // This mode can be used to avoid race conditions when + // adjusting priorities of pieces before allowing the torrent to start + // downloading. + // + // If the torrent is auto-managed (``auto_managed``), the torrent + // will eventually be taken out of upload-mode, regardless of how it + // got there. If it's important to manually control when the torrent + // leaves upload mode, don't make it auto managed. + public static final torrent_flags_t UPLOAD_MODE = libtorrent.getUpload_mode(); + // determines if the torrent should be added in *share mode* or not. + // Share mode indicates that we are not interested in downloading the + // torrent, but merely want to improve our share ratio (i.e. increase + // it). A torrent started in share mode will do its best to never + // download more than it uploads to the swarm. If the swarm does not + // have enough demand for upload capacity, the torrent will not + // download anything. This mode is intended to be safe to add any + // number of torrents to, without manual screening, without the risk + // of downloading more than is uploaded. + // + // A torrent in share mode sets the priority to all pieces to 0, + // except for the pieces that are downloaded, when pieces are decided + // to be downloaded. This affects the progress bar, which might be set + // to "100% finished" most of the time. Do not change file or piece + // priorities for torrents in share mode, it will make it not work. + // + // The share mode has one setting, the share ratio target, see + // ``settings_pack::share_mode_target`` for more info. + public static final torrent_flags_t SHARE_MODE = libtorrent.getShare_mode(); + // determines if the IP filter should apply to this torrent or not. By + // default all torrents are subject to filtering by the IP filter + // (i.e. this flag is set by default). This is useful if certain + // torrents needs to be exempt for some reason, being an auto-update + // torrent for instance. + public static final torrent_flags_t APPLY_IP_FILTER = libtorrent.getApply_ip_filter(); + // specifies whether or not the torrent is to be started in a paused + // state. I.e. it won't connect to the tracker or any of the peers + // until it's resumed. This is typically a good way of avoiding race + // conditions when setting configuration options on torrents before + // starting them. + public static final torrent_flags_t PAUSED = libtorrent.getPaused(); + // If the torrent is auto-managed (``auto_managed``), the torrent + // may be resumed at any point, regardless of how it paused. If it's + // important to manually control when the torrent is paused and + // resumed, don't make it auto managed. + // + // If ``auto_managed`` is set, the torrent will be queued, + // started and seeded automatically by libtorrent. When this is set, + // the torrent should also be started as paused. The default queue + // order is the order the torrents were added. They are all downloaded + // in that order. For more details, see queuing_. + // + // If you pass in resume data, the auto_managed state of the torrent + // when the resume data was saved will override the auto_managed state + // you pass in here. You can override this by setting + // ``override_resume_data``. + public static final torrent_flags_t AUTO_MANAGED = libtorrent.getAuto_managed(); + public static final torrent_flags_t DUPLICATE_IS_ERROR = libtorrent.getDuplicate_is_error(); + // on by default and means that this torrent will be part of state + // updates when calling post_torrent_updates(). + public static final torrent_flags_t UPDATE_SUBSCRIBE = libtorrent.getUpdate_subscribe(); + // sets the torrent into super seeding mode. If the torrent is not a + // seed, this flag has no effect. It has the same effect as calling + // ``torrent_handle::super_seeding(true)`` on the torrent handle + // immediately after adding it. + public static final torrent_flags_t SUPER_SEEDING = libtorrent.getSuper_seeding(); + // sets the sequential download state for the torrent. It has the same + // effect as calling ``torrent_handle::sequential_download(true)`` on + // the torrent handle immediately after adding it. + public static final torrent_flags_t SEQUENTIAL_DOWNLOAD = libtorrent.getSequential_download(); + // When this flag is set, the + // torrent will *force stop* whenever it transitions from a + // non-data-transferring state into a data-transferring state (referred to + // as being ready to download or seed). This is useful for torrents that + // should not start downloading or seeding yet, but want to be made ready + // to do so. A torrent may need to have its files checked for instance, so + // it needs to be started and possibly queued for checking (auto-managed + // and started) but as soon as it's done, it should be stopped. + // + // *Force stopped* means auto-managed is set to false and it's paused. As + // if auto_manage(false) and pause() were called on the torrent. + // + // Note that the torrent may transition into a downloading state while + // calling this function, and since the logic is edge triggered you may + // miss the edge. To avoid this race, if the torrent already is in a + // downloading state when this call is made, it will trigger the + // stop-when-ready immediately. + // + // When the stop-when-ready logic fires, the flag is cleared. Any + // subsequent transitions between downloading and non-downloading states + // will not be affected, until this function is used to set it again. + // + // The behavior is more robust when setting this flag as part of adding + // the torrent. See add_torrent_params. + // + // The stop-when-ready flag fixes the inherent race condition of waiting + // for the state_changed_alert and then call pause(). The download/seeding + // will most likely start in between posting the alert and receiving the + // call to pause. + public static final torrent_flags_t STOP_WHEN_READY = libtorrent.getStop_when_ready(); + // when this flag is set, the tracker list in the add_torrent_params + // object override any trackers from the torrent file. If the flag is + // not set, the trackers from the add_torrent_params object will be + // added to the list of trackers used by the torrent. + public static final torrent_flags_t OVERRIDE_TRACKERS = libtorrent.getOverride_trackers(); + // If this flag is set, the web seeds from the add_torrent_params + // object will override any web seeds in the torrent file. If it's not + // set, web seeds in the add_torrent_params object will be added to the + // list of web seeds used by the torrent. + public static final torrent_flags_t OVERRIDE_WEB_SEEDS = libtorrent.getOverride_web_seeds(); + /** + * If this flag is set (which it is by default) the torrent will be + * considered needing to save its resume data immediately as it's + * added. New torrents that don't have any resume data should do that. + * This flag is cleared by a successful call to save_resume_data() + */ + public static final torrent_flags_t NEED_SAVE_RESUME = libtorrent.getNeed_save_resume(); + /** + * Set this flag to disable DHT for this torrent. This lets you have the DHT + * enabled for the whole client, and still have specific torrents not + * participating in it. i.e. not announcing to the DHT nor picking up peers + * from it. + */ + public static final torrent_flags_t DISABLE_DHT = libtorrent.getDisable_dht(); + /** + * Set this flag to disable local service discovery for this torrent. + */ + public static final torrent_flags_t DISABLE_LSD = libtorrent.getDisable_lsd(); + /** + * Set this flag to disable peer exchange for this torrent. + */ + public static final torrent_flags_t DISABLE_PEX = libtorrent.getDisable_pex(); + public static final torrent_flags_t ALL = libtorrent.getAll(); + + private TorrentFlags() { + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentHandle.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentHandle.java new file mode 100644 index 0000000..16c3072 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentHandle.java @@ -0,0 +1,1383 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.add_piece_flags_t; +import com.frostwire.jlibtorrent.swig.announce_entry_vector; +import com.frostwire.jlibtorrent.swig.byte_vector; +import com.frostwire.jlibtorrent.swig.deadline_flags_t; +import com.frostwire.jlibtorrent.swig.int64_vector; +import com.frostwire.jlibtorrent.swig.int_vector; +import com.frostwire.jlibtorrent.swig.libtorrent; +import com.frostwire.jlibtorrent.swig.partial_piece_info_vector; +import com.frostwire.jlibtorrent.swig.peer_info_vector; +import com.frostwire.jlibtorrent.swig.reannounce_flags_t; +import com.frostwire.jlibtorrent.swig.resume_data_flags_t; +import com.frostwire.jlibtorrent.swig.status_flags_t; +import com.frostwire.jlibtorrent.swig.torrent_flags_t; +import com.frostwire.jlibtorrent.swig.torrent_handle; +import com.frostwire.jlibtorrent.swig.torrent_info; +import com.frostwire.jlibtorrent.swig.torrent_status; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * You will usually have to store your torrent handles somewhere, since it's + * the object through which you retrieve information about the torrent and + * aborts the torrent. + *

+ * .. warning:: + * Any member function that returns a value or fills in a value has to be + * made synchronously. This means it has to wait for the main thread to + * complete the query before it can return. This might potentially be + * expensive if done from within a GUI thread that needs to stay + * responsive. Try to avoid querying for information you don't need, and + * try to do it in as few calls as possible. You can get most of the + * interesting information about a torrent from the + * torrent_handle::status() call. + *

+ * The default constructor will initialize the handle to an invalid state. + * Which means you cannot perform any operation on it, unless you first + * assign it a valid handle. If you try to perform any operation on an + * uninitialized handle, it will throw ``invalid_handle``. + *

+ * .. warning:: + * All operations on a torrent_handle may throw libtorrent_exception + * exception, in case the handle is no longer referring to a torrent. + * There is one exception is_valid() will never throw. Since the torrents + * are processed by a background thread, there is no guarantee that a + * handle will remain valid between two calls. + * + * @author gubatron + * @author aldenml + */ +public final class TorrentHandle { + + /** + * Instruct libtorrent to overwrite any data that may already have been + * downloaded with the data of the new piece being added. + */ + public static final add_piece_flags_t OVERWRITE_EXISTING = torrent_handle.overwrite_existing; + /** + * calculates ``distributed_copies``, ``distributed_full_copies`` and + * ``distributed_fraction``. + */ + public static final status_flags_t QUERY_DISTRIBUTED_COPIES = torrent_handle.query_distributed_copies; + /** + * includes partial downloaded blocks in ``total_done`` and + * ``total_wanted_done``. + */ + public static final status_flags_t QUERY_ACCURATE_DOWNLOAD_COUNTERS = torrent_handle.query_accurate_download_counters; + /** + * includes ``last_seen_complete``. + */ + public static final status_flags_t QUERY_LAST_SEEN_COMPLETE = torrent_handle.query_last_seen_complete; + /** + * includes ``pieces``. + */ + public static final status_flags_t QUERY_PIECES = torrent_handle.query_pieces; + /** + * includes ``verified_pieces`` (only applies to torrents in *seed mode*). + */ + public static final status_flags_t QUERY_VERIFIED_PIECES = torrent_handle.query_verified_pieces; + /** + * includes ``torrent_file``, which is all the static information from the .torrent file. + */ + public static final status_flags_t QUERY_TORRENT_FILE = torrent_handle.query_torrent_file; + /** + * includes {@code name}, the name of the torrent. This is either derived + * from the .torrent file, or from the {@code &dn=} magnet link argument + * or possibly some other source. If the name of the torrent is not + * known, this is an empty string. + */ + public static final status_flags_t QUERY_NAME = torrent_handle.query_name; + /** + * includes ``save_path``, the path to the directory the files of the + * torrent are saved to. + */ + public static final status_flags_t QUERY_SAVE_PATH = torrent_handle.query_save_path; + /** + * The disk cache will be flushed before creating the resume data. + * This avoids a problem with file timestamps in the resume data in + * case the cache hasn't been flushed yet. + */ + public static final resume_data_flags_t FLUSH_DISK_CACHE = torrent_handle.flush_disk_cache; + /** + * The resume data will contain the metadata from the torrent file as + * well. This is default for any torrent that's added without a + * torrent file (such as a magnet link or a URL). + */ + public static final resume_data_flags_t SAVE_INFO_DICT = torrent_handle.save_info_dict; + /** + * If nothing significant has changed in the torrent since the last + * time resume data was saved, fail this attempt. Significant changes + * primarily include more data having been downloaded, file or piece + * priorities having changed etc. If the resume data doesn't need + * saving, a save_resume_data_failed_alert is posted with the error + * resume_data_not_modified. + */ + public static final resume_data_flags_t ONLY_IF_MODIFIED = torrent_handle.only_if_modified; + /** + * By default, force-reannounce will still honor the min-interval + * published by the tracker. If this flag is set, it will be ignored + * and the tracker is announced immediately. + */ + public static final reannounce_flags_t IGNORE_MIN_INTERVAL = torrent_handle.ignore_min_interval; + /** + * + */ + public static final deadline_flags_t ALERT_WHEN_AVAILABLE = torrent_handle.alert_when_available; + private static final long REQUEST_STATUS_RESOLUTION_MILLIS = 500; + // cache this zero flag for performance reasons + private static final status_flags_t STATUS_FLAGS_ZERO = new status_flags_t(); + private final torrent_handle th; + private long lastStatusRequestTime; + private TorrentStatus lastStatus; + + public TorrentHandle(torrent_handle th) { + this.th = th; + } + + /** + * @return the native object + */ + public torrent_handle swig() { + return th; + } + + /** + * This function will write {@code data} to the storage as piece {@code piece}, + * as if it had been downloaded from a peer. {@code data} is expected to + * point to a buffer of as many bytes as the size of the specified piece. + * The data in the buffer is copied and passed on to the disk IO thread + * to be written at a later point. + *

+ * By default, data that's already been downloaded is not overwritten by + * this buffer. If you trust this data to be correct (and pass the piece + * hash check) you may pass the overwrite_existing flag. This will + * instruct libtorrent to overwrite any data that may already have been + * downloaded with this data. + *

+ * Since the data is written asynchronously, you may know that is passed + * or failed the hash check by waiting for + * {@link com.frostwire.jlibtorrent.alerts.PieceFinishedAlert} or + * {@link com.frostwire.jlibtorrent.alerts.HashFailedAlert}. + * + * @param piece the piece index + * @param data the piece data + * @param flags flags + */ + public void addPiece(int piece, byte[] data, add_piece_flags_t flags) { + th.add_piece_bytes(piece, Vectors.bytes2byte_vector(data), flags); + } + + /** + * Same as calling {@link #addPiece(int, byte[], add_piece_flags_t)} with + * {@code flags} with value 0. + * + * @param piece the piece index + * @param data the piece data + */ + public void addPiece(int piece, byte[] data) { + th.add_piece_bytes(piece, Vectors.bytes2byte_vector(data)); + } + + /** + * This function starts an asynchronous read operation of the specified + * piece from this torrent. You must have completed the download of the + * specified piece before calling this function. + *

+ * When the read operation is completed, it is passed back through an + * alert, {@link com.frostwire.jlibtorrent.alerts.ReadPieceAlert}. + * Since this alert is a response to an explicit + * call, it will always be posted, regardless of the alert mask. + *

+ * Note that if you read multiple pieces, the read operations are not + * guaranteed to finish in the same order as you initiated them. + * + * @param piece the piece index + */ + public void readPiece(int piece) { + th.read_piece(piece); + } + + /** + * Returns true if this piece has been completely downloaded, and false + * otherwise. + * + * @param piece the piece index + * @return if piece has been completely downloaded + */ + public boolean havePiece(int piece) { + return th.have_piece(piece); + } + + /** + * Returns a list filled with one entry for each peer connected to this + * torrent, given the handle is valid. If the handle is invalid, it will + * return an empty list. + *

+ * Each entry in the vector contains information about that particular peer. + * + * @return the list with the peers information + * @see PeerInfo + */ + public List peerInfo() { + if (!th.is_valid()) { + return new ArrayList<>(); + } + + peer_info_vector v = new peer_info_vector(); + th.get_peer_info(v); + + int size = (int) v.size(); + ArrayList l = new ArrayList<>(size); + for (int i = 0; i < size; i++) { + l.add(new PeerInfo(v.get(i))); + } + + return l; + } + + /** + * Returns a pointer to the torrent_info object associated with this + * torrent. The {@link com.frostwire.jlibtorrent.TorrentInfo} object + * may be a copy of the internal object. + *

+ * If the torrent doesn't have metadata, the pointer will not be + * initialized (i.e. a NULL pointer). The torrent may be in a state + * without metadata only if it was started without a .torrent file, e.g. + * by using the libtorrent extension of just supplying a tracker and + * info-hash. + * + * @return the internal torrent info + */ + public TorrentInfo torrentFile() { + if (!th.is_valid()) { + return null; + } + torrent_info ti = th.torrent_file_ptr(); + return ti != null ? new TorrentInfo(ti) : null; + } + + /** + * `status()`` will return a structure with information about the status + * of this torrent. If the torrent_handle is invalid, it will throw + * libtorrent_exception exception. See torrent_status. The ``flags`` + * argument filters what information is returned in the torrent_status. + * Some information in there is relatively expensive to calculate, and if + * you're not interested in it (and see performance issues), you can + * filter them out. + *

+ * By default everything is included. The flags you can use to decide + * what to *include* are defined in the status_flags_t enum. + *

+ * It is important not to call this method for each field in the status + * for performance reasons. + * + * @return the status + */ + public TorrentStatus status(boolean force) { + long now = System.currentTimeMillis(); + if (force || (now - lastStatusRequestTime) >= REQUEST_STATUS_RESOLUTION_MILLIS) { + lastStatusRequestTime = now; + lastStatus = new TorrentStatus(th.status(STATUS_FLAGS_ZERO)); + } + + return lastStatus; + } + + /** + * Returns a structure with information about the status + * of this torrent. If the handle is invalid, it will throw + * libtorrent_exception exception. See torrent_status. The ``flags`` + * argument filters what information is returned in the torrent_status. + * Some information in there is relatively expensive to calculate, and if + * you're not interested in it (and see performance issues), you can + * filter them out. + * + * @return the status + */ + public TorrentStatus status() { + return status(false); + } + + /** + * This method returns an up to date torrent status, the {@code flags} parameters + * is an or-combination of the {@link status_flags_t} native values, in case you want + * advanced (and expensive) fields filled. We recommend the use of the simple call + * to {@link #status()} that internally keep a cache with a small time resolution. + * + * @param flags the flags + * @return the status + */ + public TorrentStatus status(status_flags_t flags) { + return new TorrentStatus(th.status(flags)); + } + + /** + * Returns an array (list) with information about pieces that are partially + * downloaded or not downloaded at all but partially requested. See + * {@link PartialPieceInfo} for the fields in the returned vector. + * + * @return a list with partial piece info + */ + public ArrayList getDownloadQueue() { + partial_piece_info_vector v = new partial_piece_info_vector(); + th.get_download_queue(v); + int size = (int) v.size(); + ArrayList l = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + l.add(new PartialPieceInfo(v.get(i))); + } + + return l; + } + + /** + * Returns the info-hash for the torrent. + *

+ * If this handle is to a torrent that hasn't loaded yet (for instance by being added) + * by a URL, the returned value is undefined. + * + * @return the torrent info hash + */ + public Sha1Hash infoHash() { + return new Sha1Hash(th.info_hash()); + } + + /** + * Note that this is a blocking function, unlike torrent_handle::is_valid() which returns immediately. + * + * @return Returns true if the torrent is in the session. It returns true before SessionHandle::removeTorrent() is called, and false afterward. + */ + public boolean inSession() { + return th.in_session(); + } + + /** + * This method will disconnect all peers. + *

+ * When a torrent is paused, it will however + * remember all share ratios to all peers and remember all potential (not + * connected) peers. Torrents may be paused automatically if there is a + * file error (e.g. disk full) or something similar. See + * {@link com.frostwire.jlibtorrent.alerts.FileErrorAlert}. + *

+ * To know if a torrent is paused or not, call + * {@link #status()} and inspect TorrentStatus#isPaused() . + *

+ * The ``flags`` argument to pause can be set to + * ``torrent_handle::graceful_pause`` which will delay the disconnect of + * peers that we're still downloading outstanding requests from. The + * torrent will not accept any more requests and will disconnect all idle + * peers. As soon as a peer is done transferring the blocks that were + * requested from it, it is disconnected. This is a graceful shut down of + * the torrent in the sense that no downloaded bytes are wasted. + *

+ * torrents that are auto-managed may be automatically resumed again. It + * does not make sense to pause an auto-managed torrent without making it + * not automanaged first. + */ + public void pause() { + th.pause(); + } + + /** + * Will reconnect all peers. + *

+ * Torrents that are auto-managed may be automatically resumed again. + */ + public void resume() { + th.resume(); + } + + public torrent_flags_t flags() { + return th.flags(); + } + + public void setFlags(torrent_flags_t flags, torrent_flags_t mask) { + th.set_flags(flags, mask); + } + + public void setFlags(torrent_flags_t flags) { + th.set_flags(flags); + } + + public void unsetFlags(torrent_flags_t flags) { + th.unset_flags(flags); + } + + /** + * Instructs libtorrent to flush all the disk caches for this torrent and + * close all file handles. This is done asynchronously and you will be + * notified that it's complete through {@link com.frostwire.jlibtorrent.alerts.CacheFlushedAlert}. + *

+ * Note that by the time you get the alert, libtorrent may have cached + * more data for the torrent, but you are guaranteed that whatever cached + * data libtorrent had by the time you called + * {@code flushCache()} has been written to disk. + */ + public void flushCache() { + th.flush_cache(); + } + + /** + * Returns true if any whole chunk has been downloaded + * since the torrent was first loaded or since the last time the resume + * data was saved. When saving resume data periodically, it makes sense + * to skip any torrent which hasn't downloaded anything since the last + * time. + *

+ * A torrent's resume data is considered saved as soon as the alert is + * posted. It is important to make sure this alert is received and + * handled in order for this function to be meaningful. + * + * @return true if data has been downloaded since the last time the resume + * data was saved. + */ + public boolean needSaveResumeData() { + return th.need_save_resume_data(); + } + + /** + * Every torrent that is added is assigned a queue position exactly one + * greater than the greatest queue position of all existing torrents. + * Torrents that are being seeded have -1 as their queue position, since + * they're no longer in line to be downloaded. + *

+ * When a torrent is removed or turns into a seed, all torrents with + * greater queue positions have their positions decreased to fill in the + * space in the sequence. + *

+ * This function returns the torrent's position in the download + * queue. The torrents with the smallest numbers are the ones that are + * being downloaded. The smaller number, the closer the torrent is to the + * front of the line to be started. + *

+ * The queue position is also available in the torrent_status. + * + * @return the queue position + */ + public int queuePosition() { + return th.queue_position2(); + } + + /** + * The {@code queue_position_*()} functions adjust the torrents position in + * the queue. Up means closer to the front and down means closer to the + * back of the queue. Top and bottom refers to the front and the back of + * the queue respectively. + */ + public void queuePositionUp() { + th.queue_position_up(); + } + + /** + * The {@code queue_position_*()} functions adjust the torrents position in + * the queue. Up means closer to the front and down means closer to the + * back of the queue. Top and bottom refers to the front and the back of + * the queue respectively. + */ + public void queuePositionDown() { + th.queue_position_down(); + } + + /** + * The {@code queue_position_*()} functions adjust the torrents position in + * the queue. Up means closer to the front and down means closer to the + * back of the queue. Top and bottom refers to the front and the back of + * the queue respectively. + */ + public void queuePositionTop() { + th.queue_position_top(); + } + + /** + * The {@code queue_position_*()} functions adjust the torrents position in + * the queue. Up means closer to the front and down means closer to the + * back of the queue. Top and bottom refers to the front and the back of + * the queue respectively. + */ + public void queuePositionBottom() { + th.queue_position_bottom(); + } + + /** + * Updates the position in the queue for this torrent. The relative order + * of all other torrents remain intact but their numerical queue position + * shifts to make space for this torrent's new position + * + * @param position the new position + */ + public void queuePositionSet(int position) { + th.queue_position_set2(position); + } + + /** + * For SSL torrents, use this to specify a path to a .pem file to use as + * this client's certificate. The certificate must be signed by the + * certificate in the .torrent file to be valid. + *

+ * Note that when a torrent first starts up, and it needs a certificate, + * it will suspend connecting to any peers until it has one. It's + * typically desirable to resume the torrent after setting the SSL + * certificate. + *

+ * If you receive a {@link com.frostwire.jlibtorrent.alerts.TorrentNeedCertAlert}, + * you need to call this to provide a valid cert. If you don't have a cert + * you won't be allowed to connect to any peers. + * + * @param certificate is a path to the (signed) certificate in .pem format + * corresponding to this torrent. + * @param privateKey is a path to the private key for the specified + * certificate. This must be in .pem format. + * @param dhParams is a path to the Diffie-Hellman parameter file, which + * needs to be in .pem format. You can generate this file using the + * openssl command like this: ``openssl dhparam -outform PEM -out + * dhparams.pem 512``. + */ + public void setSslCertificate(String certificate, String privateKey, + String dhParams) { + th.set_ssl_certificate(certificate, privateKey, dhParams); + } + + /** + * For SSL torrents, use this to specify a path to a .pem file to use as + * this client's certificate. The certificate must be signed by the + * certificate in the .torrent file to be valid. + *

+ * Note that when a torrent first starts up, and it needs a certificate, + * it will suspend connecting to any peers until it has one. It's + * typically desirable to resume the torrent after setting the SSL + * certificate. + *

+ * If you receive a {@link com.frostwire.jlibtorrent.alerts.TorrentNeedCertAlert}, + * you need to call this to provide a valid cert. If you don't have a cert + * you won't be allowed to connect to any peers. + * + * @param certificate is a path to the (signed) certificate in .pem format + * corresponding to this torrent. + * @param privateKey is a path to the private key for the specified + * certificate. This must be in .pem format. + * @param dhParams is a path to the Diffie-Hellman parameter file, which + * needs to be in .pem format. You can generate this file using the + * openssl command like this: ``openssl dhparam -outform PEM -out + * dhparams.pem 512``. + * @param passphrase may be specified if the private key is encrypted and + * requires a passphrase to be decrypted. + */ + public void setSslCertificate(String certificate, String privateKey, + String dhParams, String passphrase) { + th.set_ssl_certificate(certificate, privateKey, dhParams, passphrase); + } + + /** + * This method is like {@link #setSslCertificate} but takes the actual + * certificate, private key and DH params as byte arrays, rather than paths + * to files. + * + * @param certificate buffer of the (signed) certificate in .pem format + * corresponding to this torrent. + * @param privateKey buffer of the private key for the specified + * certificate. This must be in .pem format. + * @param dhParams buffer of the Diffie-Hellman parameter file, which + * needs to be in .pem format. + */ + void setSslCertificateBuffer(byte[] certificate, byte[] privateKey, + byte[] dhParams) { + byte_vector cert = Vectors.bytes2byte_vector(certificate); + byte_vector pk = Vectors.bytes2byte_vector(privateKey); + byte_vector dh = Vectors.bytes2byte_vector(dhParams); + th.set_ssl_certificate_buffer2(cert, pk, dh); + } + + /** + * ``save_resume_data()`` generates fast-resume data and returns it as an + * entry. This entry is suitable for being bencoded. For more information + * about how fast-resume works, see fast-resume_. + *

+ * The ``flags`` argument is a bitmask of flags ORed together. see + * save_resume_flags_t + *

+ * This operation is asynchronous, ``save_resume_data`` will return + * immediately. The resume data is delivered when it's done through an + * save_resume_data_alert. + *

+ * The fast resume data will be empty in the following cases: + *

+ * 1. The torrent handle is invalid. + * 2. The torrent is checking (or is queued for checking) its storage, it + * will obviously not be ready to write resume data. + * 3. The torrent hasn't received valid metadata and was started without + * metadata (see libtorrent's metadata-from-peers_ extension) + *

+ * Note that by the time you receive the fast resume data, it may already + * be invalid if the torrent is still downloading! The recommended + * practice is to first pause the session, then generate the fast resume + * data, and then close it down. Make sure to not remove_torrent() before + * you receive the save_resume_data_alert though. There's no need to + * pause when saving intermittent resume data. + *

+ * .. warning:: + * If you pause every torrent individually instead of pausing the + * session, every torrent will have its paused state saved in the + * resume data! + *

+ * .. warning:: + * The resume data contains the modification timestamps for all files. + * If one file has been modified when the torrent is added again, the + * will be rechecked. When shutting down, make sure to flush the disk + * cache before saving the resume data. This will make sure that the + * file timestamps are up to date and won't be modified after saving + * the resume data. The recommended way to do this is to pause the + * torrent, which will flush the cache and disconnect all peers. + *

+ * .. note:: + * It is typically a good idea to save resume data whenever a torrent + * is completed or paused. In those cases you don't need to pause the + * torrent or the session, since the torrent will do no more writing to + * its files. If you save resume data for torrents when they are + * paused, you can accelerate the shutdown process by not saving resume + * data again for paused torrents. Completed torrents should have their + * resume data saved when they complete and on exit, since their + * statistics might be updated. + *

+ * In full allocation mode the reume data is never invalidated by + * subsequent writes to the files, since pieces won't move around. This + * means that you don't need to pause before writing resume data in full + * or sparse mode. If you don't, however, any data written to disk after + * you saved resume data and before the session closed is lost. + *

+ * It also means that if the resume data is out dated, libtorrent will + * not re-check the files, but assume that it is fairly recent. The + * assumption is that it's better to loose a little bit than to re-check + * the entire file. + *

+ * It is still a good idea to save resume data periodically during + * download as well as when closing down. + *

+ * Example code to pause and save resume data for all torrents and wait + * for the alerts: + *

+ * .. code:: c++ + *

+     * {@code
+     * extern int outstanding_resume_data; // global counter of outstanding resume data
+     * std::vector handles = ses.get_torrents();
+     * ses.pause();
+     * for (std::vector::iterator i = handles.begin();
+     * i != handles.end(); ++i)
+     * {
+     * torrent_handle& h = *i;
+     * if (!h.is_valid()) continue;
+     * torrent_status s = h.status();
+     * if (!s.has_metadata) continue;
+     * if (!s.need_save_resume_data()) continue;
+     *
+     * h.save_resume_data();
+     * ++outstanding_resume_data;
+     * }
+     *
+     * while (outstanding_resume_data > 0)
+     * {
+     * alert const* a = ses.wait_for_alert(seconds(10));
+     *
+     * // if we don't get an alert within 10 seconds, abort
+     * if (a == 0) break;
+     *
+     * std::auto_ptr holder = ses.pop_alert();
+     *
+     * if (alert_cast(a))
+     * {
+     * process_alert(a);
+     * --outstanding_resume_data;
+     * continue;
+     * }
+     *
+     * save_resume_data_alert const* rd = alert_cast(a);
+     * if (rd == 0)
+     * {
+     * process_alert(a);
+     * continue;
+     * }
+     *
+     * torrent_handle h = rd->handle;
+     * torrent_status st = h.status(torrent_handle::query_save_path | torrent_handle::query_name);
+     * std::ofstream out((st.save_path
+     * + "/" + st.name + ".fastresume").c_str()
+     * , std::ios_base::binary);
+     * out.unsetf(std::ios_base::skipws);
+     * bencode(std::ostream_iterator(out), *rd->resume_data);
+     * --outstanding_resume_data;
+     * }
+     * }
+     * 
+ * .. note:: + * Note how ``outstanding_resume_data`` is a global counter in this + * example. This is deliberate, otherwise there is a race condition for + * torrents that was just asked to save their resume data, they posted + * the alert, but it has not been received yet. Those torrents would + * report that they don't need to save resume data again, and skipped by + * the initial loop, and thwart the counter otherwise. + */ + public void saveResumeData(resume_data_flags_t flags) { + th.save_resume_data(flags); + } + + /** + * Similar to calling {@link #saveResumeData(resume_data_flags_t)} with + * empty flags. + */ + public void saveResumeData() { + th.save_resume_data(); + } + + /** + * Returns true if this handle refers to a valid torrent and false if it + * hasn't been initialized or if the torrent it refers to has been + * aborted. Note that a handle may become invalid after it has been added + * to the session. Usually this is because the storage for the torrent is + * somehow invalid or if the filenames are not allowed (and hence cannot + * be opened/created) on your filesystem. If such an error occurs, a + * file_error_alert is generated and all handles that refers to that + * torrent will become invalid. + * + * @return + */ + public boolean isValid() { + return th.is_valid(); + } + + /** + * Generates a magnet URI from the specified torrent. If the torrent + * handle is invalid, null is returned. + * + * @return + */ + public String makeMagnetUri() { + return th.is_valid() ? libtorrent.make_magnet_uri(th) : null; + } + + // ``set_upload_limit`` will limit the upload bandwidth used by this + // particular torrent to the limit you set. It is given as the number of + // bytes per second the torrent is allowed to upload. + // ``set_download_limit`` works the same way but for download bandwidth + // instead of upload bandwidth. Note that setting a higher limit on a + // torrent then the global limit + // (``session_settings::upload_rate_limit``) will not override the global + // rate limit. The torrent can never upload more than the global rate + // limit. + // + // ``upload_limit`` and ``download_limit`` will return the current limit + // setting, for upload and download, respectively. + public int getUploadLimit() { + return th.upload_limit(); + } + + // ``set_upload_limit`` will limit the upload bandwidth used by this + // particular torrent to the limit you set. It is given as the number of + // bytes per second the torrent is allowed to upload. + // ``set_download_limit`` works the same way but for download bandwidth + // instead of upload bandwidth. Note that setting a higher limit on a + // torrent then the global limit + // (``session_settings::upload_rate_limit``) will not override the global + // rate limit. The torrent can never upload more than the global rate + // limit. + // + // ``upload_limit`` and ``download_limit`` will return the current limit + // setting, for upload and download, respectively. + public void setUploadLimit(int limit) { + th.set_upload_limit(limit); + } + + // ``set_upload_limit`` will limit the upload bandwidth used by this + // particular torrent to the limit you set. It is given as the number of + // bytes per second the torrent is allowed to upload. + // ``set_download_limit`` works the same way but for download bandwidth + // instead of upload bandwidth. Note that setting a higher limit on a + // torrent then the global limit + // (``session_settings::upload_rate_limit``) will not override the global + // rate limit. The torrent can never upload more than the global rate + // limit. + // + // ``upload_limit`` and ``download_limit`` will return the current limit + // setting, for upload and download, respectively. + public int getDownloadLimit() { + return th.download_limit(); + } + + // ``set_upload_limit`` will limit the upload bandwidth used by this + // particular torrent to the limit you set. It is given as the number of + // bytes per second the torrent is allowed to upload. + // ``set_download_limit`` works the same way but for download bandwidth + // instead of upload bandwidth. Note that setting a higher limit on a + // torrent then the global limit + // (``session_settings::upload_rate_limit``) will not override the global + // rate limit. The torrent can never upload more than the global rate + // limit. + // + // ``upload_limit`` and ``download_limit`` will return the current limit + // setting, for upload and download, respectively. + public void setDownloadLimit(int limit) { + th.set_download_limit(limit); + } + + /** + * This method puts the torrent back in a state where it assumes to + * have no resume data. All peers will be disconnected and the torrent + * will stop announcing to the tracker. The torrent will be added to the + * checking queue, and will be checked (all the files will be read and + * compared to the piece hashes). Once the check is complete, the torrent + * will start connecting to peers again, as normal. + */ + public void forceRecheck() { + th.force_recheck(); + } + + // ``force_reannounce()`` will force this torrent to do another tracker + // request, to receive new peers. The ``seconds`` argument specifies how + // many seconds from now to issue the tracker announces. + // + // If the tracker's ``min_interval`` has not passed since the last + // announce, the forced announce will be scheduled to happen immediately + // as the ``min_interval`` expires. This is to honor trackers minimum + // re-announce interval settings. + // + // The ``tracker_index`` argument specifies which tracker to re-announce. + // If set to -1 (which is the default), all trackers are re-announce. + // + public void forceReannounce(int seconds, int tracker_index, reannounce_flags_t flags) { + th.force_reannounce(seconds, tracker_index, flags); + } + + // ``force_reannounce()`` will force this torrent to do another tracker + // request, to receive new peers. The ``seconds`` argument specifies how + // many seconds from now to issue the tracker announces. + // + // If the tracker's ``min_interval`` has not passed since the last + // announce, the forced announce will be scheduled to happen immediately + // as the ``min_interval`` expires. This is to honor trackers minimum + // re-announce interval settings. + // + // The ``tracker_index`` argument specifies which tracker to re-announce. + // If set to -1 (which is the default), all trackers are re-announce. + // + public void forceReannounce(int seconds, int tracker_index) { + th.force_reannounce(seconds, tracker_index); + } + + // ``force_reannounce()`` will force this torrent to do another tracker + // request, to receive new peers. The ``seconds`` argument specifies how + // many seconds from now to issue the tracker announces. + // + // If the tracker's ``min_interval`` has not passed since the last + // announce, the forced announce will be scheduled to happen immediately + // as the ``min_interval`` expires. This is to honor trackers minimum + // re-announce interval settings. + // + // The ``tracker_index`` argument specifies which tracker to re-announce. + // If set to -1 (which is the default), all trackers are re-announce. + // + public void forceReannounce(int seconds) { + th.force_reannounce(seconds); + } + + /** + * Force this torrent to do another tracker + * request, to receive new peers. The ``seconds`` argument specifies how + * many seconds from now to issue the tracker announces. + *

+ * If the tracker's ``min_interval`` has not passed since the last + * announce, the forced announce will be scheduled to happen immediately + * as the ``min_interval`` expires. This is to honor trackers minimum + * re-announce interval settings. + *

+ * The ``tracker_index`` argument specifies which tracker to re-announce. + * If set to -1 (which is the default), all trackers are re-announce. + */ + public void forceReannounce() { + th.force_reannounce(); + } + + /** + * Announce the torrent to the DHT immediately. + */ + public void forceDHTAnnounce() { + th.force_dht_announce(); + } + + /** + * Will return a sorted list with the trackers of this torrent. + *

+ * The announce entry contains both a string {@code url} which specify the + * announce url for the tracker as well as an int {@code tier}, which + * specifies the order in which this tracker is tried. + * + * @return the list of trackers + */ + public List trackers() { + if (!th.is_valid()) { + return Collections.emptyList(); + } + return TorrentInfo.trackers(th.trackers()); + } + + /** + * Will send a scrape request to the tracker. A + * scrape request queries the tracker for statistics such as total number + * of incomplete peers, complete peers, number of downloads etc. + *

+ * This request will specifically update the ``num_complete`` and + * ``num_incomplete`` fields in the torrent_status struct once it + * completes. When it completes, it will generate a scrape_reply_alert. + * If it fails, it will generate a scrape_failed_alert. + */ + public void scrapeTracker() { + th.scrape_tracker(); + } + + /** + * If you want libtorrent to use another list of trackers for this torrent, + * you can use {@link #replaceTrackers(List)} which takes a list of the same + * form as the one returned from {@link #trackers()} and will replace it. + * If you want an immediate effect, you have to call {@link #forceReannounce()}. + *

+ * The updated set of trackers will be saved in the resume data, and when + * a torrent is started with resume data, the trackers from the resume + * data will replace the original ones. + * + * @param trackers the list of trackers + * @see AnnounceEntry + */ + public void replaceTrackers(List trackers) { + announce_entry_vector v = new announce_entry_vector(); + + for (AnnounceEntry t : trackers) { + v.push_back(t.swig()); + } + + th.replace_trackers(v); + } + + /** + * This method will look if the specified tracker is already in the + * set. If it is, it doesn't do anything. If it's not in the current set + * of trackers, it will insert it in the tier specified in the + * {@link AnnounceEntry}. + *

+ * The updated set of trackers will be saved in the resume data, and when + * a torrent is started with resume data, the trackers from the resume + * data will replace the original ones. + */ + public void addTracker(AnnounceEntry tracker) { + th.add_tracker(tracker.swig()); + } + + // ``add_url_seed()`` adds another url to the torrent's list of url + // seeds. If the given url already exists in that list, the call has no + // effect. The torrent will connect to the server and try to download + // pieces from it, unless it's paused, queued, checking or seeding. + // ``remove_url_seed()`` removes the given url if it exists already. + // ``url_seeds()`` return a set of the url seeds currently in this + // torrent. Note that urls that fails may be removed automatically from + // the list. + // + // See http-seeding_ for more information. + public void addUrlSeed(String url) { + th.add_url_seed(url); + } + + // ``add_url_seed()`` adds another url to the torrent's list of url + // seeds. If the given url already exists in that list, the call has no + // effect. The torrent will connect to the server and try to download + // pieces from it, unless it's paused, queued, checking or seeding. + // ``remove_url_seed()`` removes the given url if it exists already. + // ``url_seeds()`` return a set of the url seeds currently in this + // torrent. Note that urls that fails may be removed automatically from + // the list. + // + // See http-seeding_ for more information. + public void removeUrlSeed(String url) { + th.remove_url_seed(url); + } + + /** + * Return a set of the url seeds currently in this + * torrent. This list is based on BEP 19. + * + * @return the url seed list + */ + public List urlSeeds() { + return Vectors.string_vector2list(th.get_url_seeds()); + } + + // These functions are identical as the ``*_url_seed()`` variants, but + // they operate on `BEP 17`_ web seeds instead of `BEP 19`_. + // + // See http-seeding_ for more information. + public void addHttpSeed(String url) { + th.add_url_seed(url); + } + + // These functions are identical as the ``*_url_seed()`` variants, but + // they operate on `BEP 17`_ web seeds instead of `BEP 19`_. + // + // See http-seeding_ for more information. + public void removeHttpSeed(String url) { + th.remove_http_seed(url); + } + + /** + * Return a set of the url seeds currently in this + * torrent. This list is based on BEP 17. + * + * @return the url seed list + */ + public List httpSeeds() { + return Vectors.string_vector2list(th.get_http_seeds()); + } + + /** + * Returns an array with the availability for each piece in this torrent. + * libtorrent does not keep track of availability for seeds, so if the + * torrent is seeding the availability for all pieces is reported as 0. + *

+ * The piece availability is the number of peers that we are connected + * that has advertised having a particular piece. This is the information + * that libtorrent uses in order to prefer picking rare pieces. + * + * @return the array with piece availability + */ + public int[] pieceAvailability() { + int_vector v = new int_vector(); + th.piece_availability(v); + return Vectors.int_vector2ints(v); + } + + // These functions are used to set and get the priority of individual + // pieces. By default all pieces have priority 1. That means that the + // random rarest first algorithm is effectively active for all pieces. + // You may however change the priority of individual pieces. There are 8 + // different priority levels: + // + // 0. piece is not downloaded at all + // 1. normal priority. Download order is dependent on availability + // 2. higher than normal priority. Pieces are preferred over pieces with + // the same availability, but not over pieces with lower availability + // 3. pieces are as likely to be picked as partial pieces. + // 4. pieces are preferred over partial pieces, but not over pieces with + // lower availability + // 5. *currently the same as 4* + // 6. piece is as likely to be picked as any piece with availability 1 + // 7. maximum priority, availability is disregarded, the piece is + // preferred over any other piece with lower priority + // + // The exact definitions of these priorities are implementation details, + // and subject to change. The interface guarantees that higher number + // means higher priority, and that 0 means do not download. + // + // ``piece_priority`` sets or gets the priority for an individual piece, + // specified by ``index``. + // + // ``prioritize_pieces`` takes a vector of integers, one integer per + // piece in the torrent. All the piece priorities will be updated with + // the priorities in the vector. + // + // ``piece_priorities`` returns a vector with one element for each piece + // in the torrent. Each element is the current priority of that piece. + public void piecePriority(int index, Priority priority) { + th.piece_priority2(index, priority.swig()); + } + + public Priority piecePriority(int index) { + return Priority.fromSwig(th.piece_priority2(index)); + } + + public void prioritizePieces(Priority[] priorities) { + th.prioritize_pieces2(Priority.array2vector(priorities)); + } + + public Priority[] piecePriorities() { + int_vector v = th.get_piece_priorities2(); + int size = (int) v.size(); + Priority[] arr = new Priority[size]; + for (int i = 0; i < size; i++) { + arr[i] = Priority.fromSwig(v.get(i)); + } + return arr; + } + + /** + * index must be in the range [0, number_of_files). + *

+ * The priority values are the same as for piece_priority(). + *

+ * Whenever a file priority is changed, all other piece priorities are + * reset to match the file priorities. In order to maintain sepcial + * priorities for particular pieces, piece_priority() has to be called + * again for those pieces. + *

+ * You cannot set the file priorities on a torrent that does not yet have + * metadata or a torrent that is a seed. ``file_priority(int, int)`` and + * prioritize_files() are both no-ops for such torrents. + * + * @param index + * @param priority + */ + public void filePriority(int index, Priority priority) { + th.file_priority2(index, priority.swig()); + } + + /** + * index must be in the range [0, number_of_files). + *

+ * queries or sets the priority of file index. + * + * @param index + * @return + */ + public Priority filePriority(int index) { + return Priority.fromSwig(th.file_priority2(index)); + } + + /** + * Takes a vector that has at as many elements as + * there are files in the torrent. Each entry is the priority of that + * file. The function sets the priorities of all the pieces in the + * torrent based on the vector. + * + * @param priorities the array of priorities + */ + public void prioritizeFiles(Priority[] priorities) { + th.prioritize_files2(Priority.array2vector(priorities)); + } + + /** + * Returns a vector with the priorities of all files. + * + * @return the array of priorities. + */ + public Priority[] filePriorities() { + int_vector v = th.get_file_priorities2(); + int size = (int) v.size(); + Priority[] arr = new Priority[size]; + for (int i = 0; i < size; i++) { + arr[i] = Priority.fromSwig(v.get(i)); + } + return arr; + } + + /** + * This function sets or resets the deadline associated with a specific + * piece index (``index``). libtorrent will attempt to download this + * entire piece before the deadline expires. This is not necessarily + * possible, but pieces with a more recent deadline will always be + * prioritized over pieces with a deadline further ahead in time. The + * deadline (and flags) of a piece can be changed by calling this + * function again. + *

+ * If the piece is already downloaded when this call is made, nothing + * happens, unless the alert_when_available flag is set, in which case it + * will do the same thing as calling read_piece() for ``index``. + * + * @param index + * @param deadline + */ + public void setPieceDeadline(int index, int deadline) { + th.set_piece_deadline(index, deadline); + } + + /** + * This function sets or resets the deadline associated with a specific + * piece index (``index``). libtorrent will attempt to download this + * entire piece before the deadline expires. This is not necessarily + * possible, but pieces with a more recent deadline will always be + * prioritized over pieces with a deadline further ahead in time. The + * deadline (and flags) of a piece can be changed by calling this + * function again. + *

+ * The ``flags`` parameter can be used to ask libtorrent to send an alert + * once the piece has been downloaded, by passing alert_when_available. + * When set, the read_piece_alert alert will be delivered, with the piece + * data, when it's downloaded. + *

+ * If the piece is already downloaded when this call is made, nothing + * happens, unless the alert_when_available flag is set, in which case it + * will do the same thing as calling read_piece() for ``index``. + * + * @param index + * @param deadline + * @param flags + */ + public void setPieceDeadline(int index, int deadline, deadline_flags_t flags) { + th.set_piece_deadline(index, deadline, flags); + } + + /** + * Removes the deadline from the piece. If it + * hasn't already been downloaded, it will no longer be considered a + * priority. + * + * @param index + */ + public void resetPieceDeadline(int index) { + th.reset_piece_deadline(index); + } + + /** + * Removes deadlines on all pieces in the torrent. + * As if {@link #resetPieceDeadline(int)} was called on all pieces. + */ + public void clearPieceDeadlines() { + th.clear_piece_deadlines(); + } + + /** + * This function fills in the supplied vector with the number of + * bytes downloaded of each file in this torrent. The progress values are + * ordered the same as the files in the torrent_info. This operation is + * not very cheap. Its complexity is *O(n + mj)*. Where *n* is the number + * of files, *m* is the number of downloading pieces and *j* is the + * number of blocks in a piece. + *

+ * The ``flags`` parameter can be used to specify the granularity of the + * file progress. If left at the default value of 0, the progress will be + * as accurate as possible, but also more expensive to calculate. If + * ``torrent_handle::piece_granularity`` is specified, the progress will + * be specified in piece granularity. i.e. only pieces that have been + * fully downloaded and passed the hash check count. When specifying + * piece granularity, the operation is a lot cheaper, since libtorrent + * already keeps track of this internally and no calculation is required. + * + * @param flags + * @return the file progress + */ + public long[] fileProgress(FileProgressFlags flags) { + int64_vector v = new int64_vector(); + th.file_progress(v, flags.swig()); + return Vectors.int64_vector2longs(v); + } + + /** + * This function fills in the supplied vector with the number of + * bytes downloaded of each file in this torrent. The progress values are + * ordered the same as the files in the torrent_info. This operation is + * not very cheap. Its complexity is *O(n + mj)*. Where *n* is the number + * of files, *m* is the number of downloading pieces and *j* is the + * number of blocks in a piece. + * + * @return the file progress + */ + public long[] fileProgress() { + int64_vector v = new int64_vector(); + th.file_progress(v); + return Vectors.int64_vector2longs(v); + } + + /** + * The path to the directory where this torrent's files are stored. + * It's typically the path as was given to async_add_torrent() or + * add_torrent() when this torrent was started. + * + * @return + */ + public String savePath() { + torrent_status ts = th.status(torrent_handle.query_save_path); + return ts.getSave_path(); + } + + /** + * The name of the torrent. Typically this is derived from the + * .torrent file. In case the torrent was started without metadata, + * and hasn't completely received it yet, it returns the name given + * to it when added to the session. + * + * @return the name + */ + public String name() { + torrent_status ts = th.status(torrent_handle.query_name); + return ts.getName(); + } + + /** + * Moves the file(s) that this torrent are currently seeding from or + * downloading to. If the given {@code savePath} is not located on the same + * drive as the original save path, the files will be copied to the new + * drive and removed from their original location. This will block all + * other disk IO, and other torrents download and upload rates may drop + * while copying the file. + *

+ * Since disk IO is performed in a separate thread, this operation is + * also asynchronous. Once the operation completes, the + * {@link com.frostwire.jlibtorrent.alerts.StorageMovedAlert} is generated, + * with the new path as the message. If the move fails for some reason, + * {@link com.frostwire.jlibtorrent.alerts.StorageMovedFailedAlert} + * generated instead, containing the error message. + *

+ * The {@code flags} argument determines the behavior of the copying/moving + * of the files in the torrent. + *

+ * Files that have been renamed to have absolute paths are not moved by + * this function. Keep in mind that files that don't belong to the + * torrent but are stored in the torrent's directory may be moved as + * well. This goes for files that have been renamed to absolute paths + * that still end up inside the save path. + * + * @param savePath the new save path + * @param flags the move behavior flags + */ + public void moveStorage(String savePath, MoveFlags flags) { + th.move_storage(savePath, flags.swig()); + } + + /** + * Sames as calling {@link #moveStorage(String, MoveFlags)} with empty flags. + * + * @param savePath the new path + * @see #moveStorage(String, MoveFlags) + */ + public void moveStorage(String savePath) { + th.move_storage(savePath); + } + + /** + * Renames the file with the given index asynchronously. The rename + * operation is complete when either a {@link com.frostwire.jlibtorrent.alerts.FileRenamedAlert} or + * {@link com.frostwire.jlibtorrent.alerts.FileRenameFailedAlert} is posted. + * + * @param index + * @param newName + */ + public void renameFile(int index, String newName) { + th.rename_file(index, newName); + } + + /** + * Flags to be passed in {@link #fileProgress(TorrentHandle.FileProgressFlags)}. + */ + public enum FileProgressFlags { + + /** + * only calculate file progress at piece granularity. This makes + * the file_progress() call cheaper and also only takes bytes that + * have passed the hash check into account, so progress cannot + * regress in this mode. + */ + PIECE_GRANULARITY(torrent_handle.file_progress_flags_t.piece_granularity.swigValue()); + + private final int swigValue; + + FileProgressFlags(int swigValue) { + this.swigValue = swigValue; + } + + /** + * @return the native value + */ + public int swig() { + return swigValue; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentInfo.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentInfo.java new file mode 100644 index 0000000..e497146 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentInfo.java @@ -0,0 +1,709 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.announce_entry_vector; +import com.frostwire.jlibtorrent.swig.bdecode_node; +import com.frostwire.jlibtorrent.swig.byte_vector; +import com.frostwire.jlibtorrent.swig.create_torrent; +import com.frostwire.jlibtorrent.swig.error_code; +import com.frostwire.jlibtorrent.swig.libtorrent; +import com.frostwire.jlibtorrent.swig.libtorrent_jni; +import com.frostwire.jlibtorrent.swig.sha1_hash_vector; +import com.frostwire.jlibtorrent.swig.string_int_pair; +import com.frostwire.jlibtorrent.swig.string_int_pair_vector; +import com.frostwire.jlibtorrent.swig.string_string_pair_vector; +import com.frostwire.jlibtorrent.swig.string_vector; +import com.frostwire.jlibtorrent.swig.torrent_info; +import com.frostwire.jlibtorrent.swig.web_seed_entry_vector; + +import java.io.File; +import java.io.IOException; +import java.nio.MappedByteBuffer; +import java.util.ArrayList; +import java.util.List; + +/** + * This class represents the information stored in a .torrent file + * + * @author gubatron + * @author aldenml + */ +public final class TorrentInfo { + + private final torrent_info ti; + + public TorrentInfo(torrent_info ti) { + this.ti = ti; + } + + /** + * Load the torrent file and decode it inside the constructor, for convenience. + *

+ * This might not be the most suitable for applications that + * want to be able to report detailed errors on what might go wrong. + * + * @param torrent the torrent file + */ + public TorrentInfo(File torrent) { + this(bdecode0(torrent)); + } + + /** + * Load the torrent data and decode it inside the constructor, for convenience. + *

+ * This might not be the most suitable for applications that + * want to be able to report detailed errors on what might go wrong. + * + * @param data the torrent data + */ + public TorrentInfo(byte[] data) { + this(bdecode0(data)); + } + + public TorrentInfo(MappedByteBuffer buffer) { + try { + long ptr = libtorrent_jni.directBufferAddress(buffer); + long size = libtorrent_jni.directBufferCapacity(buffer); + + error_code ec = new error_code(); + this.ti = new torrent_info(ptr, (int) size, ec); + + if (ec.value() != 0) { + throw new IllegalArgumentException("Can't decode data: " + ec.message()); + } + } catch (Throwable e) { + throw new IllegalArgumentException("Can't decode data mapped buffer: " + e.getMessage(), e); + } + } + + public static TorrentInfo bdecode(byte[] data) { + return new TorrentInfo(bdecode0(data)); + } + + // helper function + static ArrayList trackers(announce_entry_vector v) { + int size = (int) v.size(); + ArrayList l = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + l.add(new AnnounceEntry(v.get(i))); + } + + return l; + } + + private static torrent_info bdecode0(File file) { + try { + byte[] data = Files.bytes(file); + return bdecode0(data); + } catch (IOException e) { + throw new IllegalArgumentException("Can't decode data from file: " + file, e); + } + } + + private static torrent_info bdecode0(byte[] data) { + byte_vector buffer = Vectors.bytes2byte_vector(data); + bdecode_node n = new bdecode_node(); + error_code ec = new error_code(); + int ret = bdecode_node.bdecode(buffer, n, ec); + + if (ret == 0) { + ec.clear(); + torrent_info ti = new torrent_info(n, ec); + buffer.clear(); // prevents GC + if (ec.value() != 0) { + throw new IllegalArgumentException("Can't decode data: " + ec.message()); + } + return ti; + } else { + throw new IllegalArgumentException("Can't decode data: " + ec.message()); + } + } + + /** + * @return the native object + */ + public torrent_info swig() { + return this.ti; + } + + /** + * The {@link FileStorage} object contains the information on + * how to map the pieces to files. + *

+ * It is separated from the {@link TorrentInfo} object because when creating torrents + * a storage object needs to be created without having a torrent file. When renaming files + * in a storage, the storage needs to make its own copy of the {@link FileStorage} in order + * to make its mapping differ from the one in the torrent file. + * + * @return the files storage + */ + public FileStorage files() { + return new FileStorage(ti.files(), ti); + } + + /** + * Returns the original (unmodified) file storage for this torrent. This + * is used by the web server connection, which needs to request files with the original + * names. Filename may be changed using {@link #renameFile(int, String)}. + * + * @return the original file storage + */ + public FileStorage origFiles() { + return new FileStorage(ti.orig_files(), ti); + } + + /** + * Renames a the file with the specified index to the new name. The new + * filename is reflected by the {@link FileStorage} returned by {@link #files()} + * but not by the one returned by {@link #origFiles()}. + *

+ * If you want to rename the base name of the torrent (for a multifile + * torrent), you can copy the {@code FileStorage} (see {@link #files()} and + * {@link #origFiles()} ), change the name, and then use + * {@link #remapFiles(FileStorage)}. + *

+ * The {@code newFilename} can both be a relative path, in which case the + * file name is relative to the {@code savePath} of the torrent. If the + * {@code newFilename} is an absolute path then the file is detached from + * the {@code savePath} of the torrent. In this case the file is not moved when + * {@link TorrentHandle#moveStorage(String, MoveFlags)} is invoked. + * + * @param index the file index to rename + * @param newFilename the new file name + */ + public void renameFile(int index, String newFilename) { + ti.rename_file(index, newFilename); + } + + /** + * Remaps the file storage to a new file layout. This can be used to, for + * instance, download all data in a torrent to a single file, or to a + * number of fixed size sector aligned files, regardless of the number + * and sizes of the files in the torrent. + *

+ * The new specified {@link FileStorage} must have the exact same size as + * the current one. + * + * @param f the file storage + */ + public void remapFiles(FileStorage f) { + ti.remap_files(f.swig()); + } + + /** + * Adds a tracker to the announce-list. + * + * @param url the tracker url + */ + public void addTracker(String url) { + ti.add_tracker(url); + } + + /** + * Adds a tracker to the announce-list. The {@code tier} determines the order in + * which the trackers are to be tried. + * + * @param url the tracker url + * @param tier the tracker tier + */ + public void addTracker(String url, int tier) { + ti.add_tracker(url, tier); + } + + /** + * Will return a sorted list with the trackers of this torrent info. + *

+ * Each announce entry contains a string, which is the tracker url, and a tier index. The + * tier index is the high-level priority. No matter which trackers that works or not, the + * ones with lower tier will always be tried before the one with higher tier number. + * + * @return the list of trackers + */ + public ArrayList trackers() { + return trackers(ti.trackers()); + } + + /** + * This function is related to BEP38_ (mutable torrents). The + * vector returned from this correspond to the "similar" in the + * .torrent file. The info-hashes from within the info-dict + * and from outside of it are included. + *

+ * BEP38: http://www.bittorrent.org/beps/bep_0038.html + * + * @return + */ + public ArrayList similarTorrents() { + return Sha1Hash.convert(ti.similar_torrents()); + } + + /** + * This function is related to BEP38_ (mutable torrents). The + * vector returned from this correspond to the "collections" keys + * in the .torrent file. The collections from within the info-dict + * and from outside of it are included. + *

+ * BEP38: http://www.bittorrent.org/beps/bep_0038.html + * + * @return + */ + public ArrayList collections() { + string_vector v = ti.collections(); + int size = (int) v.size(); + + ArrayList l = new ArrayList<>(size); + for (int i = 0; i < size; i++) { + l.add(v.get(i)); + } + + return l; + } + + /** + * Clear the internal list of trackers. + */ + public void clearTrackers() { + ti.trackers().clear(); + } + + /** + * Adds one url to the list of url seeds. Currently, the only transport protocol + * supported for the url is http. + * + * @param url + * @see #addHttpSeed(String, String) + */ + public void addUrlSeed(String url) { + ti.add_url_seed(url); + } + + /** + * Adds one url to the list of url seeds. Currently, the only transport protocol + * supported for the url is http. + *

+ * The {@code externAuth} argument can be used for other authorization schemes than + * basic HTTP authorization. If set, it will override any username and password + * found in the URL itself. The string will be sent as the HTTP authorization header's + * value (without specifying "Basic"). + *

+ * This is the same as calling {@link #addUrlSeed(String, String, List)} with an + * empty list. + * + * @param url + * @param externAuth + */ + public void addUrlSeed(String url, String externAuth) { + ti.add_url_seed(url, externAuth); + } + + /** + * Adds one url to the list of url seeds. Currently, the only transport protocol + * supported for the url is http. + *

+ * The {@code externAuth} argument can be used for other authorization schemes than + * basic HTTP authorization. If set, it will override any username and password + * found in the URL itself. The string will be sent as the HTTP authorization header's + * value (without specifying "Basic"). + *

+ * The {@code extraHeaders} argument can be used to insert custom HTTP headers + * in the requests to a specific web seed. + * + * @param url + * @param externAuth + * @param extraHeaders + */ + public void addUrlSeed(String url, String externAuth, List> extraHeaders) { + string_string_pair_vector v = new string_string_pair_vector(); + + for (Pair p : extraHeaders) { + v.push_back(p.to_string_string_pair()); + } + + ti.add_url_seed(url, externAuth, v); + } + + /** + * Adds one url to the list of http seeds. Currently, the only transport protocol supported for the url + * is http. + * + * @param url + */ + public void addHttpSeed(String url) { + ti.add_url_seed(url); + } + + /** + * Adds one url to the list of http seeds. Currently, the only transport protocol supported for the url + * is http. + *

+ * The {@code externAuth} argument can be used for other authorization schemes than + * basic HTTP authorization. If set, it will override any username and password + * found in the URL itself. The string will be sent as the HTTP authorization header's + * value (without specifying "Basic"). + * + * @param url + * @param externAuth + */ + public void addHttpSeed(String url, String externAuth) { + ti.add_url_seed(url, externAuth); + } + + /** + * Adds one url to the list of http seeds. Currently, the only transport protocol supported + * for the url is http. + *

+ * The {@code externAuth} argument can be used for other authorization schemes than + * basic HTTP authorization. If set, it will override any username and password + * found in the URL itself. The string will be sent as the HTTP authorization header's + * value (without specifying "Basic"). + *

+ * The {@code extraHeaders} argument defaults to an empty list, but can be used to + * insert custom HTTP headers in the requests to a specific web seed. + * + * @param url + * @param externAuth + * @param extraHeaders + */ + public void addHttpSeed(String url, String externAuth, List> extraHeaders) { + string_string_pair_vector v = new string_string_pair_vector(); + + for (Pair p : extraHeaders) { + v.push_back(p.to_string_string_pair()); + } + + ti.add_url_seed(url, externAuth, v); + } + + /** + * Returns all url seeds and http seeds in the torrent. Each entry + * is a {@link WebSeedEntry} and may refer to either a url seed or http seed. + * + * @return the list of web seeds + */ + public ArrayList webSeeds() { + web_seed_entry_vector v = ti.web_seeds(); + int size = (int) v.size(); + + ArrayList l = new ArrayList<>(size); + for (int i = 0; i < size; i++) { + l.add(new WebSeedEntry(v.get(i))); + } + + return l; + } + + /** + * Replaces all web seeds with the ones specified in the + * {@code seeds} list. + * + * @param seeds the list of web seeds + */ + public void setWebSeeds(List seeds) { + web_seed_entry_vector v = new web_seed_entry_vector(); + + for (WebSeedEntry e : seeds) { + v.push_back(e.swig()); + } + + ti.set_web_seeds(v); + } + + /** + * The total number of bytes the torrent-file represents (all the files in it). + * + * @return + */ + public long totalSize() { + return ti.total_size(); + } + + /** + * The number of byte for each piece. + *

+ * The difference between {@link #pieceSize(int)} and {@link #pieceLength()} is that + * {@link #pieceSize(int)} takes the piece index as argument and gives you the exact size + * of that piece. It will always be the same as {@link #pieceLength()} except in the case + * of the last piece, which may be smaller. + * + * @return + */ + public int pieceLength() { + return ti.piece_length(); + } + + /** + * The total number of pieces. + * + * @return + */ + public int numPieces() { + return ti.num_pieces(); + } + + /** + * returns the info-hash of the torrent. + * + * @return + */ + public Sha1Hash infoHash() { + return new Sha1Hash(ti.info_hash()); + } + + /** + * If you need index-access to files you can use this method + * to access files using indices. + * + * @return + */ + public int numFiles() { + return ti.num_files(); + } + + /** + * This function will map a piece index, a byte offset within that piece and + * a size (in bytes) into the corresponding files with offsets where that data + * for that piece is supposed to be stored. + * + * @param piece + * @param offset + * @param size + * @return + * @see com.frostwire.jlibtorrent.FileSlice + */ + public ArrayList mapBlock(int piece, long offset, int size) { + return FileStorage.mapBlock(ti.map_block(piece, offset, size)); + } + + /** + * This function will map a range in a specific file into a range in the torrent. + * The {@code offset} parameter is the offset in the file, given in bytes, where + * 0 is the start of the file. + *

+ * The input range is assumed to be valid within the torrent. {@code offset + size} + * is not allowed to be greater than the file size. {@code index} + * must refer to a valid file, i.e. it cannot be {@code >= numFiles()}. + * + * @param file + * @param offset + * @param size + * @return + * @see com.frostwire.jlibtorrent.PeerRequest + */ + public PeerRequest mapFile(int file, long offset, int size) { + return new PeerRequest(ti.map_file(file, offset, size)); + } + + /** + * Returns the SSL root certificate for the torrent, if it is an SSL + * torrent. Otherwise returns an empty string. The certificate is + * the the public certificate in x509 format. + * + * @return the cert as a byte array + */ + byte[] sslCert() { + byte_vector v = ti.ssl_cert().to_bytes(); + return Vectors.byte_vector2bytes(v); + } + + /** + * Returns true if this torrent_info object has a torrent loaded. + *

+ * This is primarily used to determine if a magnet link has had its + * metadata resolved yet or not. + * + * @return + */ + public boolean isValid() { + return ti.is_valid(); + } + + /** + * Returns true if this torrent is private. i.e., it should not be + * distributed on the trackerless network (the kademlia DHT). + * + * @return + */ + public boolean isPrivate() { + return ti.priv(); + } + + /** + * Returns true if this is an i2p torrent. This is determined by whether + * or not it has a tracker whose URL domain name ends with ".i2p". i2p + * torrents disable the DHT and local peer discovery as well as talking + * to peers over anything other than the i2p network. + * + * @return + */ + public boolean isI2p() { + return ti.is_i2p(); + } + + public int pieceSize(int index) { + return ti.piece_size(index); + } + + /** + * takes a piece-index and returns the 20-bytes sha1-hash for that + * piece and ``info_hash()`` returns the 20-bytes sha1-hash for the info-section of the + * torrent file. + * + * @param index + * @return + */ + public Sha1Hash hashForPiece(int index) { + return new Sha1Hash(ti.hash_for_piece(index)); + } + + public boolean isLoaded() { + return ti.is_loaded(); + } + + /** + * Returns a copy to the merkle tree for this + * torrent, if any. + * + * @return + */ + public ArrayList merkleTree() { + return Sha1Hash.convert(ti.merkle_tree()); + } + + /** + * Copies the passed in merkle tree into the torrent info object. + *

+ * You need to set the merkle tree for a torrent that you've just created + * (as a merkle torrent). The merkle tree is retrieved from the + * {@link #merkleTree()} function, and need to be saved + * separately from the torrent file itself. Once it's added to + * libtorrent, the merkle tree will be persisted in the resume data. + * + * @param tree + */ + public void merkleTree(List tree) { + sha1_hash_vector v = new sha1_hash_vector(); + + for (Sha1Hash h : tree) { + v.push_back(h.swig()); + } + + ti.set_merkle_tree(v); + } + + /** + * returns the name of the torrent. + *

+ * the name is an UTF-8 encoded strings. + * + * @return + */ + public String name() { + return ti.name(); + } + + /** + * Returns the creation date of he torrent as time_t (`posix time`_). + * If there's no time stamp in the torrent file, + * a value of zero is returned. + * + * @return the time + */ + public long creationDate() { + return ti.creation_date(); + } + + /** + * Returns the creator string in the torrent. If there is no creator string + * it will return an empty string. + * + * @return the creator + */ + public String creator() { + return ti.creator(); + } + + /** + * Returns the comment associated with the torrent. If there's no comment, + * it will return an empty string. + *

+ * The comment is an UTF-8 encoded strings. + * + * @return the comment + */ + public String comment() { + return ti.comment(); + } + + /** + * If this torrent contains any DHT nodes, they are returned in + * their original form (host name and port number). + * + * @return + */ + public ArrayList> nodes() { + string_int_pair_vector v = ti.nodes(); + int size = (int) v.size(); + + ArrayList> l = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + string_int_pair p = v.get(i); + l.add(new Pair<>(p.getFirst(), p.getSecond())); + } + + return l; + } + + /** + * This is used when creating torrent. Use this to add a known DHT node. + * It may be used, by the client, to bootstrap into the DHT network. + * + * @param host + * @param port + */ + public void addNode(String host, int port) { + ti.add_node(new string_int_pair(host, port)); + } + + /** + * This function looks up keys from the info-dictionary of the loaded + * torrent file. It can be used to access extension values put in the + * .torrent file. If the specified key cannot be found, it returns NULL. + * + * @param key + * @return + */ + public bdecode_node info(String key) { + return ti.info(key); + } + + /** + * Returns whether or not this is a merkle torrent. + * See BEP30: http://bittorrent.org/beps/bep_0030.html + * + * @return + */ + public boolean isMerkleTorrent() { + return ti.is_merkle_torrent(); + } + + /** + * Generates a magnet URI from the specified torrent. If the torrent + * is invalid, null is returned. + *

+ * For more information about magnet links, see magnet-links_. + * + * @return + */ + public String makeMagnetUri() { + return ti.is_valid() ? libtorrent.make_magnet_uri(ti) : null; + } + + public Entry toEntry() { + return new Entry(new create_torrent(ti).generate()); + } + + public byte[] bencode() { + return toEntry().bencode(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentStats.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentStats.java new file mode 100644 index 0000000..ef98ae2 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentStats.java @@ -0,0 +1,400 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.torrent_status; + +/** + * To be used in concert with {@link SessionManager}. + *

+ * The call to {@code SessionManager#postTorrentUpdates()} is done approximately + * every second. This class holds a time series per metric and a time series for + * the sampling time. + * + * @author gubatron + * @author aldenml + * @author haperlot + */ +public final class TorrentStats { + + private final Sha1Hash ih; + + private final int maxSamples; + + private final IntSeries time; + private final IntSeries downloadRateSeries; + private final IntSeries uploadRateSeries; + + private long totalDownload; + private long totalUpload; + private long totalPayloadDownload; + private long totalPayloadUpload; + private long totalDone; + private long totalWantedDone; + private long totalWanted; + private long allTimeUpload; + private long allTimeDownload; + private float progress; + private int progressPpm; + private int downloadRate; + private int uploadRate; + private int downloadPayloadRate; + private int uploadPayloadRate; + private int numSeeds; + private int numPeers; + private int listSeeds; + private int listPeers; + private int numPieces; + private int numConnections; + private TorrentStatus.State state; + private boolean needSaveResume; + private boolean isPaused; + private boolean isSequentialDownload; + private boolean isSeeding; + private boolean isFinished; + + public TorrentStats(Sha1Hash infoHash, int maxSamples) { + this.ih = infoHash.clone(); + + this.maxSamples = maxSamples; + + this.time = new IntSeries(maxSamples); + this.downloadRateSeries = new IntSeries(maxSamples); + this.uploadRateSeries = new IntSeries(maxSamples); + } + + public int maxSamples() { + return maxSamples; + } + + public IntSeries series(SeriesMetric metric) { + switch (metric) { + case TIME: + return time; + case DOWNLOAD_RATE: + return downloadRateSeries; + case UPLOAD_RATE: + return uploadRateSeries; + default: + throw new UnsupportedOperationException("metric type not supported"); + } + } + + public long last(SeriesMetric metric) { + return series(metric).last(); + } + + /** + * The number of bytes downloaded and uploaded to all peers, accumulated, this session + * only. The session is considered to restart when a torrent is paused and restarted + * again. When a torrent is paused, these counters are reset to 0. If you want complete, + * persistent, stats, see allTimeUpload and allTimeDownload. + */ + public long totalDownload() { + return totalDownload; + } + + /** + * The number of bytes downloaded and uploaded to all peers, accumulated, this session + * only. The session is considered to restart when a torrent is paused and restarted + * again. When a torrent is paused, these counters are reset to 0. If you want complete, + * persistent, stats, see allTimeUpload and allTimeDownload. + */ + public long totalUpload() { + return totalUpload; + } + + /** + * Counts the amount of bytes received this session, but only + * the actual payload data (i.e the interesting data), these counters + * ignore any protocol overhead. + * + * @return + */ + public long totalPayloadDownload() { + return totalPayloadDownload; + } + + /** + * Counts the amount of bytes send this session, but only + * the actual payload data (i.e the interesting data), these counters + * ignore any protocol overhead. + * + * @return + */ + public long totalPayloadUpload() { + return totalPayloadUpload; + } + + /** + * The total number of bytes of the file(s) that we have. All this does not necessarily + * has to be downloaded during this session (that's total_payload_download). + * + * @return the value + */ + public long totalDone() { + return totalDone; + } + + /** + * The number of bytes we have downloaded, only counting the pieces that we actually want + * to download. i.e. excluding any pieces that we have but have priority 0 (i.e. not wanted). + */ + public long totalWantedDone() { + return totalWantedDone; + } + + /** + * The total number of bytes we want to download. This may be smaller than the total + * torrent size in case any pieces are prioritized to 0, i.e. not wanted. + */ + public long totalWanted() { + return totalWanted; + } + + /** + * This is the accumulated upload payload byte counter. They are saved in and restored + * from resume data to keep totals across sessions. + */ + public long allTimeUpload() { + return allTimeUpload; + } + + /** + * This is the accumulated download payload byte counters. They are saved in and restored + * from resume data to keep totals across sessions. + */ + public long allTimeDownload() { + return allTimeDownload; + } + + /** + * A value in the range [0, 1], that represents the progress of the torrent's + * current task. It may be checking files or downloading. + * + * @return the progress in [0, 1] + */ + public float progress() { + return progress; + } + + /** + * progress parts per million (progress * 1000000) when disabling + * floating point operations, this is the only option to query progress + *

+ * reflects the same value as ``progress``, but instead in a range [0, + * 1000000] (ppm = parts per million). When floating point operations are + * disabled, this is the only alternative to the floating point value in. + * + * @return the progress in parts per million (progress * 1000000) + */ + public int progressPpm() { + return progressPpm; + } + + /** + * The total rates for all peers for this torrent. These will usually have better + * precision than summing the rates from all peers. The rates are given as the + * number of bytes per second. + */ + public int downloadRate() { + return downloadRate; + } + + /** + * The total rates for all peers for this torrent. These will usually have better + * precision than summing the rates from all peers. The rates are given as the + * number of bytes per second. + */ + public int uploadRate() { + return uploadRate; + } + + /** + * The total transfer rate of payload only, not counting protocol chatter. + * This might be slightly smaller than the other rates, but if projected over + * a long time (e.g. when calculating ETA:s) the difference may be noticeable. + */ + public int downloadPayloadRate() { + return downloadPayloadRate; + } + + /** + * The total transfer rate of payload only, not counting protocol chatter. + * This might be slightly smaller than the other rates, but if projected over + * a long time (e.g. when calculating ETA:s) the difference may be noticeable. + */ + public int uploadPayloadRate() { + return uploadPayloadRate; + } + + /** + * The number of peers that are seeding that this client is currently connected to. + */ + public int numSeeds() { + return numSeeds; + } + + /** + * The number of peers this torrent currently is connected to. Peer connections that + * are in the half-open state (is attempting to connect) or are queued for later + * connection attempt do not count. Although they are visible in the peer list when + * you call get_peer_info(). + */ + public int numPeers() { + return numPeers; + } + + /** + * The number of seeds in our peer list and the total number of peers (including seeds). + * We are not necessarily connected to all the peers in our peer list. This is the number + * of peers we know of in total, including banned peers and peers that we have failed to + * connect to. + */ + public int listSeeds() { + return listSeeds; + } + + /** + * The number of seeds in our peer list and the total number of peers (including seeds). + * We are not necessarily connected to all the peers in our peer list. This is the number + * of peers we know of in total, including banned peers and peers that we have failed to + * connect to. + */ + public int listPeers() { + return listPeers; + } + + /** + * Returns the number of pieces that has been downloaded so you don't have + * to count yourself. This can be used to see if anything has updated + * since last time if you want to keep a graph of the pieces up to date. + * + * @return the number of pieces that has been downloaded + */ + public int numPieces() { + return numPieces; + } + + /** + * Returns the number of peer connections this torrent has, + * including half-open connections that hasn't completed the + * bittorrent handshake yet. + *

+ * This is always {@code >= num_peers}. + * + * @return the number of peer connections + */ + public int numConnections() { + return numConnections; + } + + /** + * The main state the torrent is in. See torrent_status::state_t. + * + * @return the state + */ + public TorrentStatus.State state() { + return state; + } + + /** + * true if this torrent has unsaved changes + * to its download state and statistics since the last resume data + * was saved. + * + * @return + */ + public boolean needSaveResume() { + return needSaveResume; + } + + /** + * set to true if the torrent is paused and false otherwise. It's only + * true if the torrent itself is paused. If the torrent is not running + * because the session is paused, this is still false. To know if a + * torrent is active or not, you need to inspect both + * ``torrent_status::paused`` and ``session::is_paused()``. + * + * @return + */ + public boolean isPaused() { + return isPaused; + } + + /** + * true when the torrent is in sequential download mode. In this mode + * pieces are downloaded in order rather than rarest first. + * + * @return + */ + public boolean isSequentialDownload() { + return isSequentialDownload; + } + + /** + * true if all pieces have been downloaded. + * + * @return + */ + public boolean isSeeding() { + return isSeeding; + } + + /** + * Returns {@code true} if all pieces that have a + * {@code priority > 0} are downloaded. There is + * only a distinction between finished and seeding if some pieces or + * files have been set to priority 0, i.e. are not downloaded. + * + * @return {@code true} if all pieces that have a {@code priority > 0} are downloaded. + */ + public boolean isFinished() { + return isFinished; + } + + public void update(TorrentStatus status) { + if (!ih.equals(status.infoHash())) { + return; // not for us + } + + time.add(System.currentTimeMillis()); + + torrent_status st = status.swig(); + + downloadRateSeries.add(st.getDownload_rate()); + uploadRateSeries.add(st.getUpload_rate()); + + totalDownload = st.getTotal_download(); + totalUpload = st.getTotal_upload(); + totalPayloadDownload = st.getTotal_payload_download(); + totalPayloadUpload = st.getTotal_payload_upload(); + totalDone = st.getTotal_done(); + totalWantedDone = st.getTotal_wanted_done(); + totalWanted = st.getTotal_wanted(); + allTimeUpload = st.getAll_time_upload(); + allTimeDownload = st.getAll_time_download(); + progress = st.getProgress(); + progressPpm = st.getProgress_ppm(); + downloadRate = st.getDownload_rate(); + uploadRate = st.getUpload_rate(); + downloadPayloadRate = st.getDownload_payload_rate(); + uploadPayloadRate = st.getUpload_payload_rate(); + numSeeds = st.getNum_seeds(); + numPeers = st.getNum_peers(); + listSeeds = st.getList_seeds(); + listPeers = st.getList_peers(); + numPieces = st.getNum_pieces(); + numConnections = st.getNum_connections(); + state = status.state(); + needSaveResume = st.getNeed_save_resume(); + isPaused = st.getFlags().and_(TorrentFlags.PAUSED).nonZero(); + isSequentialDownload = st.getFlags().and_(TorrentFlags.SEQUENTIAL_DOWNLOAD).nonZero(); + isSeeding = st.getIs_seeding(); + isFinished = st.getIs_finished(); + } + + public enum SeriesMetric { + TIME, + DOWNLOAD_RATE, + UPLOAD_RATE + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentStatus.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentStatus.java new file mode 100644 index 0000000..677b7e2 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/TorrentStatus.java @@ -0,0 +1,780 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.torrent_flags_t; +import com.frostwire.jlibtorrent.swig.torrent_status; + +/** + * Holds a snapshot of the status of a torrent, as queried by + * {@link TorrentHandle#status()} + * + * @author gubatron + * @author aldenml + */ +public final class TorrentStatus implements Cloneable { + + private final torrent_status ts; + + /** + * Internal, don't use it in your code. + * + * @param ts + */ + // this is public to make it available to StateUpdateAlert + public TorrentStatus(torrent_status ts) { + this.ts = ts; + } + + private static long time2millis(long time) { + return time * 1000; + } + + /** + * @return the native object + */ + public torrent_status swig() { + return ts; + } + + /** + * May be set to an error message describing why the torrent + * was paused, in case it was paused by an error. If the torrent + * is not paused or if it's paused but not because of an error, + * this string is empty. + * + * @return the error code + */ + public ErrorCode errorCode() { + return new ErrorCode(ts.getErrc()); + } + + /** + * Returns the name of the torrent. Typically this is derived from the + * .torrent file. In case the torrent was started without metadata, + * and hasn't completely received it yet, it returns the name given + * to it when added to the session. See ``session::add_torrent``. + * This field is only included if the torrent status is queried + * with ``torrent_handle::query_name``. + * + * @return the name + */ + public String name() { + return ts.getName(); + } + + /** + * The time until the torrent will announce itself to the tracker (in milliseconds). + * + * @return the next announce time + */ + public long nextAnnounce() { + return ts.get_next_announce(); + } + + /** + * the URL of the last working tracker. If no tracker request has + * been successful yet, it's set to an empty string. + * + * @return + */ + public String currentTracker() { + return ts.getCurrent_tracker(); + } + + /** + * The number of bytes downloaded and uploaded to all peers, accumulated, this session + * only. The session is considered to restart when a torrent is paused and restarted + * again. When a torrent is paused, these counters are reset to 0. If you want complete, + * persistent, stats, see allTimeUpload and allTimeDownload. + */ + public long totalDownload() { + return ts.getTotal_download(); + } + + /** + * The number of bytes downloaded and uploaded to all peers, accumulated, this session + * only. The session is considered to restart when a torrent is paused and restarted + * again. When a torrent is paused, these counters are reset to 0. If you want complete, + * persistent, stats, see allTimeUpload and allTimeDownload. + */ + public long totalUpload() { + return ts.getTotal_upload(); + } + + /** + * Counts the amount of bytes received this session, but only + * the actual payload data (i.e the interesting data), these counters + * ignore any protocol overhead. + * + * @return + */ + public long totalPayloadDownload() { + return ts.getTotal_payload_download(); + } + + /** + * Counts the amount of bytes send this session, but only + * the actual payload data (i.e the interesting data), these counters + * ignore any protocol overhead. + * + * @return + */ + public long totalPayloadUpload() { + return ts.getTotal_payload_upload(); + } + + /** + * The number of bytes that has been downloaded and that has failed the + * piece hash test. In other words, this is just how much crap that has + * been downloaded. + * + * @return + */ + public long totalFailedBytes() { + return ts.getTotal_failed_bytes(); + } + + /** + * The number of bytes that has been downloaded even though that data + * already was downloaded. The reason for this is that in some situations + * the same data can be downloaded by mistake. When libtorrent sends + * requests to a peer, and the peer doesn't send a response within a + * certain timeout, libtorrent will re-request that block. Another + * situation when libtorrent may re-request blocks is when the requests + * it sends out are not replied in FIFO-order (it will re-request blocks + * that are skipped by an out of order block). This is supposed to be as + * low as possible. + * + * @return the value + */ + public long totalRedundantBytes() { + return ts.getTotal_redundant_bytes(); + } + + /** + * IMPORTANT: If you are not getting up to date information about pieces + * remember that PieceIndexBitfield data is considered augmented data + * for a torrentHandle.status() call, meaning, if you want to get the latest + * piece data, you must use the TorrentHandle.QUERY_PIECES flag when invoking + * torrentHandle.status(TorrentHandle.QUERY_PIECES). Keep in mind this is + * an expensive call, therefore not part of the default flags. + *

+ * A bitmask that represents which pieces we have (set to true) and the + * pieces we don't have. It's a pointer and may be set to 0 if the + * torrent isn't downloading or seeding. + * + * @return the bitfield of pieces + */ + public PieceIndexBitfield pieces() { + return new PieceIndexBitfield(ts.getPieces(), ts); + } + + /** + * A bitmask representing which pieces has had their hash checked. This + * only applies to torrents in *seed mode*. If the torrent is not in seed + * mode, this bitmask may be empty. + * + * @return the bitfield of verified pieces + */ + public PieceIndexBitfield verifiedPieces() { + return new PieceIndexBitfield(ts.getVerified_pieces(), ts); + } + + /** + * The total number of bytes of the file(s) that we have. All this does not necessarily + * has to be downloaded during this session (that's total_payload_download). + * + * @return the value + */ + public long totalDone() { + return ts.getTotal_done(); + } + + /** + * The total number of bytes to download for this torrent. This + * may be less than the size of the torrent in case there are + * pad files. This number only counts bytes that will actually + * be requested from peers. + */ + public long total() { + return ts.getTotal(); + } + + /** + * The number of bytes we have downloaded, only counting the pieces that we actually want + * to download. i.e. excluding any pieces that we have but have priority 0 (i.e. not wanted). + */ + public long totalWantedDone() { + return ts.getTotal_wanted_done(); + } + + /** + * The total number of bytes we want to download. This may be smaller than the total + * torrent size in case any pieces are prioritized to 0, i.e. not wanted. + */ + public long totalWanted() { + return ts.getTotal_wanted(); + } + + /** + * This is the accumulated upload payload byte counter. They are saved in and restored + * from resume data to keep totals across sessions. + */ + public long allTimeUpload() { + return ts.getAll_time_upload(); + } + + /** + * This is the accumulated download payload byte counters. They are saved in and restored + * from resume data to keep totals across sessions. + */ + public long allTimeDownload() { + return ts.getAll_time_download(); + } + + /** + * The posix-time (in milliseconds) when this torrent was added. i.e. what time(NULL) returned at the time. + */ + public long addedTime() { + return time2millis(ts.getAdded_time()); + } + + /** + * The posix-time (in milliseconds) when this torrent was finished. If the torrent is not yet finished, this is 0. + */ + public long completedTime() { + return time2millis(ts.getCompleted_time()); + } + + /** + * The time (in milliseconds) when we, or one of our peers, last saw a complete copy of this torrent. + */ + public long lastSeenComplete() { + return time2millis(ts.getLast_seen_complete()); + } + + /** + * The allocation mode for the torrent. + * + * @see StorageMode + */ + public final StorageMode storageMode() { + return StorageMode.fromSwig(ts.getStorage_mode().swigValue()); + } + + /** + * A value in the range [0, 1], that represents the progress of the torrent's + * current task. It may be checking files or downloading. + * + * @return the progress in [0, 1] + */ + public float progress() { + return ts.getProgress(); + } + + /** + * progress parts per million (progress * 1000000) when disabling + * floating point operations, this is the only option to query progress + *

+ * reflects the same value as ``progress``, but instead in a range [0, + * 1000000] (ppm = parts per million). When floating point operations are + * disabled, this is the only alternative to the floating point value in. + * + * @return the progress in parts per million (progress * 1000000) + */ + public int progressPpm() { + return ts.getProgress_ppm(); + } + + /** + * the position this torrent has in the download + * queue. If the torrent is a seed or finished, this is -1. + * + * @return + */ + public int queuePosition() { + return ts.get_queue_position(); + } + + /** + * The total rates for all peers for this torrent. These will usually have better + * precision than summing the rates from all peers. The rates are given as the + * number of bytes per second. + */ + public int downloadRate() { + return ts.getDownload_rate(); + } + + /** + * The total rates for all peers for this torrent. These will usually have better + * precision than summing the rates from all peers. The rates are given as the + * number of bytes per second. + */ + public int uploadRate() { + return ts.getUpload_rate(); + } + + /** + * The total transfer rate of payload only, not counting protocol chatter. + * This might be slightly smaller than the other rates, but if projected over + * a long time (e.g. when calculating ETA:s) the difference may be noticeable. + */ + public int downloadPayloadRate() { + return ts.getDownload_payload_rate(); + } + + /** + * The total transfer rate of payload only, not counting protocol chatter. + * This might be slightly smaller than the other rates, but if projected over + * a long time (e.g. when calculating ETA:s) the difference may be noticeable. + */ + public int uploadPayloadRate() { + return ts.getUpload_payload_rate(); + } + + /** + * The number of peers that are seeding that this client is currently connected to. + */ + public int numSeeds() { + return ts.getNum_seeds(); + } + + /** + * The number of peers this torrent currently is connected to. Peer connections that + * are in the half-open state (is attempting to connect) or are queued for later + * connection attempt do not count. Although they are visible in the peer list when + * you call get_peer_info(). + */ + public int numPeers() { + return ts.getNum_peers(); + } + + /** + * If the tracker sends scrape info in its announce reply, these fields + * will be set to the total number of peers that have the whole file and + * the total number of peers that are still downloading. set to -1 if the + * tracker did not send any scrape data in its announce reply. + * + * @return + */ + public int numComplete() { + return ts.getNum_complete(); + } + + /** + * If the tracker sends scrape info in its announce reply, these fields + * will be set to the total number of peers that have the whole file and + * the total number of peers that are still downloading. set to -1 if the + * tracker did not send any scrape data in its announce reply. + * + * @return + */ + public int numIncomplete() { + return ts.getNum_incomplete(); + } + + /** + * The number of seeds in our peer list and the total number of peers (including seeds). + * We are not necessarily connected to all the peers in our peer list. This is the number + * of peers we know of in total, including banned peers and peers that we have failed to + * connect to. + */ + public int listSeeds() { + return ts.getList_seeds(); + } + + /** + * The number of seeds in our peer list and the total number of peers (including seeds). + * We are not necessarily connected to all the peers in our peer list. This is the number + * of peers we know of in total, including banned peers and peers that we have failed to + * connect to. + */ + public int listPeers() { + return ts.getList_peers(); + } + + /** + * the number of peers in this torrent's peer list that is a candidate to + * be connected to. i.e. It has fewer connect attempts than the max fail + * count, it is not a seed if we are a seed, it is not banned etc. If + * this is 0, it means we don't know of any more peers that we can try. + * + * @return + */ + public int connectCandidates() { + return ts.getConnect_candidates(); + } + + /** + * Returns the number of pieces that has been downloaded so you don't have + * to count yourself. This can be used to see if anything has updated + * since last time if you want to keep a graph of the pieces up to date. + * + * @return the number of pieces that has been downloaded + */ + public int numPieces() { + return ts.getNum_pieces(); + } + + /** + * the number of distributed copies of the torrent. Note that one copy + * may be spread out among many peers. It tells how many copies there are + * currently of the rarest piece(s) among the peers this client is + * connected to. + * + * @return + */ + public int distributedFullCopies() { + return ts.getDistributed_full_copies(); + } + + /** + * tells the share of pieces that have more copies than the rarest + * // piece(s). Divide this number by 1000 to get the fraction. + * // + * // For example, if ``distributed_full_copies`` is 2 and + * // ``distributed_fraction`` is 500, it means that the rarest pieces have + * // only 2 copies among the peers this torrent is connected to, and that + * // 50% of all the pieces have more than two copies. + * // + * // If we are a seed, the piece picker is deallocated as an optimization, + * // and piece availability is no longer tracked. In this case the + * // distributed copies members are set to -1. + * + * @return + */ + public int distributedFraction() { + return ts.getDistributed_fraction(); + } + + /** + * the number of distributed copies of the file. note that one copy may + * be spread out among many peers. This is a floating point + * representation of the distributed copies. + *

+ * the integer part tells how many copies + * there are of the rarest piece(s) + *

+ * the fractional part tells the fraction of pieces that + * have more copies than the rarest piece(s). + * + * @return + */ + public float distributedCopies() { + return ts.getDistributed_copies(); + } + + /** + * the size of a block, in bytes. A block is a sub piece, it is the + * number of bytes that each piece request asks for and the number of + * bytes that each bit in the ``partial_piece_info``'s bitset represents, + * see get_download_queue(). This is typically 16 kB, but it may be + * larger if the pieces are larger. + * + * @return + */ + public int blockSize() { + return ts.getBlock_size(); + } + + /** + * the number of unchoked peers in this torrent. + * + * @return + */ + public int numUploads() { + return ts.getNum_uploads(); + } + + /** + * Returns the number of peer connections this torrent has, + * including half-open connections that hasn't completed the + * bittorrent handshake yet. + *

+ * This is always {@code >= num_peers}. + * + * @return the number of peer connections + */ + public int numConnections() { + return ts.getNum_connections(); + } + + /** + * get limit of upload slots (unchoked peers) for this torrent. + * + * @return + */ + public int uploadsLimit() { + return ts.getUploads_limit(); + } + + /** + * get limit of number of connections for this torrent. + * + * @return + */ + public int connectionsLimit() { + return ts.getConnections_limit(); + } + + /** + * the number of peers in this torrent that are waiting for more bandwidth quota from the torrent rate limiter. + * This can determine if the rate you get from this torrent is bound by the torrents limit or not. + * If there is no limit set on this torrent, the peers might still be waiting for bandwidth quota from the global limiter, + * but then they are counted in the ``session_status`` object. + * + * @return + */ + public int upBandwidthQueue() { + return ts.getUp_bandwidth_queue(); + } + + /** + * the number of peers in this torrent that are waiting for more bandwidth quota from the torrent rate limiter. + * This can determine if the rate you get from this torrent is bound by the torrents limit or not. + * If there is no limit set on this torrent, the peers might still be waiting for bandwidth quota from the global limiter, + * but then they are counted in the ``session_status`` object. + * + * @return + */ + public int downBandwidthQueue() { + return ts.getDown_bandwidth_queue(); + } + + /** + * A rank of how important it is to seed the torrent, it is used to determine which torrents to seed and which to queue. + * It is based on the peer to seed ratio from the tracker scrape. Higher value means more important to seed. + * + * @return the seed rank + */ + public int seedRank() { + return ts.getSeed_rank(); + } + + /** + * The main state the torrent is in. See torrent_status::state_t. + * + * @return the state + */ + public State state() { + return State.fromSwig(ts.getState().swigValue()); + } + + /** + * true if this torrent has unsaved changes + * to its download state and statistics since the last resume data + * was saved. + * + * @return + */ + public boolean needSaveResume() { + return ts.getNeed_save_resume(); + } + + /** + * true if all pieces have been downloaded. + * + * @return + */ + public boolean isSeeding() { + return ts.getIs_seeding(); + } + + /** + * Returns {@code true} if all pieces that have a + * {@code priority > 0} are downloaded. There is + * only a distinction between finished and seeding if some pieces or + * files have been set to priority 0, i.e. are not downloaded. + * + * @return {@code true} if all pieces that have a {@code priority > 0} are downloaded. + */ + public boolean isFinished() { + return ts.getIs_finished(); + } + + /** + * true if this torrent has metadata (either it was started from a + * .torrent file or the metadata has been downloaded). The only scenario + * where this can be false is when the torrent was started torrent-less + * (i.e. with just an info-hash and tracker ip, a magnet link for + * instance). + * + * @return + */ + public boolean hasMetadata() { + return ts.getHas_metadata(); + } + + /** + * true if there has ever been an incoming connection attempt to this + * torrent. + * + * @return + */ + public boolean hasIncoming() { + return ts.getHas_incoming(); + } + + /** + * this is true if this torrent's storage is currently being moved from + * one location to another. This may potentially be a long operation + * if a large file ends up being copied from one drive to another. + * + * @return + */ + public boolean isMovingStorage() { + return ts.getMoving_storage(); + } + + /** + * These are set to true if this torrent is allowed to announce to the + * respective peer source. Whether they are true or false is determined by + * the queue logic/auto manager. Torrents that are not auto managed will + * always be allowed to announce to all peer sources. + * + * @return + */ + public boolean announcingToTrackers() { + return ts.getAnnouncing_to_trackers(); + } + + /** + * These are set to true if this torrent is allowed to announce to the + * respective peer source. Whether they are true or false is determined by + * the queue logic/auto manager. Torrents that are not auto managed will + * always be allowed to announce to all peer sources. + * + * @return + */ + public boolean announcingToLsd() { + return ts.getAnnouncing_to_lsd(); + } + + /** + * These are set to true if this torrent is allowed to announce to the + * respective peer source. Whether they are true or false is determined by + * the queue logic/auto manager. Torrents that are not auto managed will + * always be allowed to announce to all peer sources. + * + * @return + */ + public boolean announcingToDht() { + return ts.getAnnouncing_to_dht(); + } + + /** + * the info-hash for this torrent. + * + * @return + */ + public Sha1Hash infoHash() { + return new Sha1Hash(ts.getInfo_hash()); + } + + public long lastUpload() { + return ts.get_last_upload(); + } + + public long lastDownload() { + return ts.get_last_download(); + } + + public long activeDuration() { + return ts.get_active_duration(); + } + + public long finishedDuration() { + return ts.get_finished_duration(); + } + + public long seedingDuration() { + return ts.get_seeding_duration(); + } + + public torrent_flags_t flags() { + return ts.getFlags(); + } + + @Override + protected TorrentStatus clone() { + return new TorrentStatus(new torrent_status(ts)); + } + + /** + * the different overall states a torrent can be in. + */ + public enum State { + + /** + * The torrent has not started its download yet, and is + * currently checking existing files. + */ + CHECKING_FILES(torrent_status.state_t.checking_files.swigValue()), + + /** + * The torrent is trying to download metadata from peers. + * This assumes the metadata_transfer extension is in use. + */ + DOWNLOADING_METADATA(torrent_status.state_t.downloading_metadata.swigValue()), + + /** + * The torrent is being downloaded. This is the state + * most torrents will be in most of the time. The progress + * meter will tell how much of the files that has been + * downloaded. + */ + DOWNLOADING(torrent_status.state_t.downloading.swigValue()), + + /** + * In this state the torrent has finished downloading but + * still doesn't have the entire torrent. i.e. some pieces + * are filtered and won't get downloaded. + */ + FINISHED(torrent_status.state_t.finished.swigValue()), + + /** + * In this state the torrent has finished downloading and + * is a pure seeder. + */ + SEEDING(torrent_status.state_t.seeding.swigValue()), + + /** + * The torrent is currently checking the fastresume data and + * comparing it to the files on disk. This is typically + * completed in a fraction of a second, but if you add a + * large number of torrents at once, they will queue up. + */ + CHECKING_RESUME_DATA(torrent_status.state_t.checking_resume_data.swigValue()), + + /** + * + */ + UNKNOWN(-1); + + private final int swigValue; + + State(int swigValue) { + this.swigValue = swigValue; + } + + /** + * @param swigValue + * @return + */ + public static State fromSwig(int swigValue) { + State[] enumValues = State.class.getEnumConstants(); + for (State ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + return UNKNOWN; + } + + /** + * @return the native value + */ + public int swig() { + return swigValue; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/UdpEndpoint.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/UdpEndpoint.java new file mode 100644 index 0000000..ca614cb --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/UdpEndpoint.java @@ -0,0 +1,63 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.address; +import com.frostwire.jlibtorrent.swig.error_code; +import com.frostwire.jlibtorrent.swig.udp_endpoint; + +/** + * @author gubatron + * @author aldenml + */ +public final class UdpEndpoint implements Cloneable { + + private final udp_endpoint endp; + + public UdpEndpoint(udp_endpoint endp) { + this.endp = endp; + } + + public UdpEndpoint() { + this(new udp_endpoint()); + } + + public UdpEndpoint(Address address, int port) { + this(new udp_endpoint(address.swig(), port)); + } + + public UdpEndpoint(String ip, int port) { + error_code ec = new error_code(); + address addr = address.from_string(ip, ec); + if (ec.value() != 0) { + throw new IllegalArgumentException(ec.message()); + } + this.endp = new udp_endpoint(addr, port); + } + + public udp_endpoint swig() { + return endp; + } + + public Address address() { + return new Address(endp.address()); + } + + /** + * Get the port associated with the endpoint. The port number is always in + * the host's byte order. + * + * @return the port + */ + public int port() { + return endp.port(); + } + + @Override + public String toString() { + return "udp:" + Address.toString(endp.address()) + ":" + endp.port(); + } + + @Override + public UdpEndpoint clone() { + return new UdpEndpoint(new udp_endpoint(endp)); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Vectors.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Vectors.java new file mode 100644 index 0000000..e6280c3 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/Vectors.java @@ -0,0 +1,150 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.byte_const_span; +import com.frostwire.jlibtorrent.swig.byte_vector; +import com.frostwire.jlibtorrent.swig.int64_vector; +import com.frostwire.jlibtorrent.swig.int_vector; +import com.frostwire.jlibtorrent.swig.string_vector; + +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.List; + +/** + * @author gubatron + * @author aldenml + */ +public final class Vectors { + + private Vectors() { + } + + public static byte[] byte_vector2bytes(byte_vector v) { + int size = (int) v.size(); + byte[] arr = new byte[size]; + + for (int i = 0; i < size; i++) { + arr[i] = v.get(i); + } + + return arr; + } + + public static void byte_vector2bytes(byte_vector v, byte[] arr) { + int size = (int) v.size(); + + for (int i = 0; i < size; i++) { + arr[i] = v.get(i); + } + } + + public static byte_vector bytes2byte_vector(byte[] arr) { + byte_vector v = new byte_vector(); + + for (int i = 0; i < arr.length; i++) { + v.push_back(arr[i]); + } + + return v; + } + + public static void bytes2byte_vector(byte[] arr, byte_vector v) { + for (int i = 0; i < arr.length; i++) { + v.set(i, arr[i]); + } + } + + public static int[] int_vector2ints(int_vector v) { + int size = (int) v.size(); + int[] arr = new int[size]; + + for (int i = 0; i < size; i++) { + arr[i] = v.get(i); + } + + return arr; + } + + public static long[] int64_vector2longs(int64_vector v) { + int size = (int) v.size(); + long[] arr = new long[size]; + + for (int i = 0; i < size; i++) { + arr[i] = v.get(i); + } + + return arr; + } + + public static byte[] byte_span2bytes(byte_const_span v) { + int size = (int) v.size(); + byte[] arr = new byte[size]; + + for (int i = 0; i < size; i++) { + arr[i] = v.get(i); + } + + return arr; + } + + public static byte_vector new_byte_vector(int size) { + byte_vector v = new byte_vector(); + byte z = (byte) 0; + for (int i = 0; i < size; i++) { + v.push_back(z); + } + + return v; + } + + public static List string_vector2list(string_vector v) { + int size = (int) v.size(); + ArrayList l = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + l.add(v.get(i)); + } + + return l; + } + + public static String byte_vector2string(byte_vector v, String encoding) { + byte[] arr = Vectors.byte_vector2bytes(v); + + int n = 0; + for (; n < arr.length && arr[n] != 0; ) { + n++; + } + + if (n == 0) { + return ""; + } + + try { + return new String(arr, 0, n, encoding); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + } + + public static String byte_vector2ascii(byte_vector v) { + return byte_vector2string(v, "US-ASCII"); + } + + public static String byte_vector2utf8(byte_vector v) { + return byte_vector2string(v, "UTF-8"); + } + + public static byte_vector string2byte_vector(String s, String encoding) { + try { + byte[] arr = s.getBytes(encoding); + return bytes2byte_vector(arr); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + } + + public static byte_vector ascii2byte_vector(String s) { + return string2byte_vector(s, "US-ASCII"); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/WebSeedEntry.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/WebSeedEntry.java new file mode 100644 index 0000000..6750c57 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/WebSeedEntry.java @@ -0,0 +1,126 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.string_string_pair; +import com.frostwire.jlibtorrent.swig.string_string_pair_vector; +import com.frostwire.jlibtorrent.swig.web_seed_entry; + +import java.util.ArrayList; + +/** + * The web_seed_entry holds information about a web seed (also known + * as URL seed or HTTP seed). It is essentially a URL with some state + * associated with it. For more information, see `BEP 17`_ and `BEP 19`_. + * + * @author gubatron + * @author aldenml + */ +public final class WebSeedEntry { + + private final web_seed_entry e; + + public WebSeedEntry(web_seed_entry e) { + this.e = e; + } + + public web_seed_entry swig() { + return e; + } + + /** + * The URL of the web seed. + * + * @return + */ + public String url() { + return e.getUrl(); + } + + /** + * Optional authentication. If this is set, it's passed + * in as HTTP basic auth to the web seed. The format is: + * username:password. + * + * @return + */ + public String auth() { + return e.getAuth(); + } + + /** + * Any extra HTTP headers that need to be passed to the web seed. + * + * @return + */ + public ArrayList> extraHeaders() { + string_string_pair_vector v = e.getExtra_headers(); + int size = (int) v.size(); + + ArrayList> l = new ArrayList<>(size); + for (int i = 0; i < size; i++) { + string_string_pair p = v.get(i); + l.add(new Pair<>(p.getFirst(), p.getSecond())); + } + + return l; + } + + /** + * The type of web seed. + * + * @return + * @see Type + */ + public Type type() { + return Type.fromSwig(e.getType()); + } + + /** + * Http seeds are different from url seeds in the + * protocol they use. http seeds follows the original + * http seed spec. by John Hoffman + */ + public enum Type { + + /** + * + */ + URL_SEED(web_seed_entry.type_t.url_seed.swigValue()), + + /** + * + */ + HTTP_SEED(web_seed_entry.type_t.http_seed.swigValue()), + + /** + * + */ + UNKNOWN(-1); + + private final int swigValue; + + Type(int swigValue) { + this.swigValue = swigValue; + } + + /** + * @param swigValue + * @return + */ + public static Type fromSwig(int swigValue) { + Type[] enumValues = Type.class.getEnumConstants(); + for (Type ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + return UNKNOWN; + } + + /** + * @return + */ + public int swig() { + return swigValue; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/AbstractAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/AbstractAlert.java new file mode 100644 index 0000000..1514b4d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/AbstractAlert.java @@ -0,0 +1,109 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.alert; +import com.frostwire.jlibtorrent.swig.alert_category_t; + +/** + * @author gubatron + * @author aldenml + */ +public abstract class AbstractAlert implements Alert { + + protected final T alert; + private final AlertType type; + + AbstractAlert(T alert) { + this.alert = alert; + this.type = AlertType.fromSwig(alert.type()); + } + + @Override + public final T swig() { + return alert; + } + + /** + * A timestamp is automatically created in the constructor (in milliseconds). + * + * @return + */ + @Override + public long timestamp() { + return alert.get_timestamp(); + } + + // returns an integer that is unique to this alert type. It can be + // compared against a specific alert by querying a static constant called ``alert_type`` + // in the alert. It can be used to determine the run-time type of an alert* in + // order to cast to that alert type and access specific members. + // + // e.g: + // + // .. code:: c++ + // + // std::vector alerts; + // ses.pop_alerts(&alerts); + // for (alert* i : alerts) { + // switch (a->type()) { + // + // case read_piece_alert::alert_type: + // { + // read_piece_alert* p = (read_piece_alert*)a; + // if (p->ec) { + // // read_piece failed + // break; + // } + // // use p + // break; + // } + // case file_renamed_alert::alert_type: + // { + // // etc... + // } + // } + // } + @Override + public AlertType type() { + return type; + } + + /** + * Returns a string literal describing the type of the alert. It does + * not include any information that might be bundled with the alert. + * + * @return + */ + @Override + public String what() { + return alert.what(); + } + + /** + * Generate a string describing the alert and the information bundled + * with it. This is mainly intended for debug and development use. It is not suitable + * to use this for applications that may be localized. Instead, handle each alert + * type individually and extract and render the information from the alert depending + * on the locale. + * + * @return the alert message + */ + @Override + public String message() { + return alert.message(); + } + + /** + * Returns a bitmask specifying which categories this alert belong to. + * + * @return the alert category + */ + @Override + public alert_category_t category() { + return alert.category(); + } + + @Override + public String toString() { + return type() + " - " + what() + " - " + message(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/AddTorrentAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/AddTorrentAlert.java new file mode 100644 index 0000000..d23afe2 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/AddTorrentAlert.java @@ -0,0 +1,42 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.AddTorrentParams; +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.swig.add_torrent_alert; + +/** + * This alert is always posted when a torrent was attempted to be added + * and contains the return status of the add operation. The torrent handle + * of the new torrent can be found in the {@link #handle()} member. + * If adding the torrent failed, {@link #error()} contains the error code. + * + * @author gubatron + * @author aldenml + */ +public final class AddTorrentAlert extends TorrentAlert { + + AddTorrentAlert(add_torrent_alert alert) { + super(alert); + } + + /** + * A copy of the parameters used when adding the torrent, it can be used + * to identify which invocation to + * {@link com.frostwire.jlibtorrent.SessionHandle#asyncAddTorrent(AddTorrentParams)} + * caused this alert. + * + * @return the params used to add the torrent + */ + public AddTorrentParams params() { + return new AddTorrentParams(alert.getParams()); + } + + /** + * Set to the error, if one occurred while adding the torrent. + * + * @return the error + */ + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/Alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/Alert.java new file mode 100644 index 0000000..e04e771 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/Alert.java @@ -0,0 +1,103 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.alert; +import com.frostwire.jlibtorrent.swig.alert_category_t; + +/** + * @author gubatron + * @author aldenml + */ +public interface Alert { + + alert_category_t ERROR_NOTIFICATION = alert.error_notification; + alert_category_t PEER_NOTIFICATION = alert.peer_notification; + alert_category_t PORT_MAPPING_NOTIFICATION = alert.port_mapping_notification; + alert_category_t STORAGE_NOTIFICATION = alert.storage_notification; + alert_category_t TRACKER_NOTIFICATION = alert.tracker_notification; + alert_category_t CONNECT_NOTIFICATION = alert.connect_notification; + alert_category_t STATUS_NOTIFICATION = alert.status_notification; + alert_category_t IP_BLOCK_NOTIFICATION = alert.ip_block_notification; + alert_category_t PERFORMANCE_WARNING = alert.performance_warning; + alert_category_t DHT_NOTIFICATION = alert.dht_notification; + alert_category_t STATS_NOTIFICATION = alert.stats_notification; + alert_category_t SESSION_LOG_NOTIFICATION = alert.session_log_notification; + alert_category_t TORRENT_LOG_NOTIFICATION = alert.torrent_log_notification; + alert_category_t PEER_LOG_NOTIFICATION = alert.peer_log_notification; + alert_category_t INCOMING_REQUEST_NOTIFICATION = alert.incoming_request_notification; + alert_category_t DHT_LOG_NOTIFICATION = alert.dht_log_notification; + alert_category_t DHT_OPERATION_NOTIFICATION = alert.dht_operation_notification; + alert_category_t PORT_MAPPING_LOG_NOTIFICATION = alert.port_mapping_log_notification; + alert_category_t PICKER_LOG_NOTIFICATION = alert.picker_log_notification; + alert_category_t FILE_PROGRESS_NOTIFICATION = alert.file_progress_notification; + alert_category_t PIECE_PROGRESS_NOTIFICATION = alert.piece_progress_notification; + alert_category_t UPLOAD_NOTIFICATION = alert.upload_notification; + alert_category_t BLOCK_PROGRESS_NOTIFICATION = alert.block_progress_notification; + alert_category_t ALL_CATEGORIES = alert.all_categories; + + T swig(); + + /** + * A timestamp is automatically created in the constructor (in milliseconds). + * + * @return the timestamp + */ + long timestamp(); + + // returns an integer that is unique to this alert type. It can be + // compared against a specific alert by querying a static constant called ``alert_type`` + // in the alert. It can be used to determine the run-time type of an alert* in + // order to cast to that alert type and access specific members. + // + // e.g: + // + // .. code:: c++ + // + // std::vector alerts; + // ses.pop_alerts(&alerts); + // for (alert* i : alerts) { + // switch (a->type()) { + // + // case read_piece_alert::alert_type: + // { + // read_piece_alert* p = (read_piece_alert*)a; + // if (p->ec) { + // // read_piece failed + // break; + // } + // // use p + // break; + // } + // case file_renamed_alert::alert_type: + // { + // // etc... + // } + // } + // } + AlertType type(); + + /** + * Returns a string literal describing the type of the alert. It does + * not include any information that might be bundled with the alert. + * + * @return + */ + String what(); + + /** + * Generate a string describing the alert and the information bundled + * with it. This is mainly intended for debug and development use. It is not suitable + * to use this for applications that may be localized. Instead, handle each alert + * type individually and extract and render the information from the alert depending + * on the locale. + * + * @return + */ + String message(); + + /** + * Returns a bitmask specifying which categories this alert belong to. + * + * @return the alert category + */ + alert_category_t category(); +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/AlertType.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/AlertType.java new file mode 100644 index 0000000..86e938d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/AlertType.java @@ -0,0 +1,312 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.add_torrent_alert; +import com.frostwire.jlibtorrent.swig.alerts_dropped_alert; +import com.frostwire.jlibtorrent.swig.block_downloading_alert; +import com.frostwire.jlibtorrent.swig.block_finished_alert; +import com.frostwire.jlibtorrent.swig.block_timeout_alert; +import com.frostwire.jlibtorrent.swig.block_uploaded_alert; +import com.frostwire.jlibtorrent.swig.cache_flushed_alert; +import com.frostwire.jlibtorrent.swig.dht_announce_alert; +import com.frostwire.jlibtorrent.swig.dht_bootstrap_alert; +import com.frostwire.jlibtorrent.swig.dht_direct_response_alert; +import com.frostwire.jlibtorrent.swig.dht_error_alert; +import com.frostwire.jlibtorrent.swig.dht_get_peers_alert; +import com.frostwire.jlibtorrent.swig.dht_get_peers_reply_alert; +import com.frostwire.jlibtorrent.swig.dht_immutable_item_alert; +import com.frostwire.jlibtorrent.swig.dht_live_nodes_alert; +import com.frostwire.jlibtorrent.swig.dht_log_alert; +import com.frostwire.jlibtorrent.swig.dht_mutable_item_alert; +import com.frostwire.jlibtorrent.swig.dht_outgoing_get_peers_alert; +import com.frostwire.jlibtorrent.swig.dht_pkt_alert; +import com.frostwire.jlibtorrent.swig.dht_put_alert; +import com.frostwire.jlibtorrent.swig.dht_reply_alert; +import com.frostwire.jlibtorrent.swig.dht_sample_infohashes_alert; +import com.frostwire.jlibtorrent.swig.dht_stats_alert; +import com.frostwire.jlibtorrent.swig.external_ip_alert; +import com.frostwire.jlibtorrent.swig.fastresume_rejected_alert; +import com.frostwire.jlibtorrent.swig.file_completed_alert; +import com.frostwire.jlibtorrent.swig.file_error_alert; +import com.frostwire.jlibtorrent.swig.file_rename_failed_alert; +import com.frostwire.jlibtorrent.swig.file_renamed_alert; +import com.frostwire.jlibtorrent.swig.hash_failed_alert; +import com.frostwire.jlibtorrent.swig.i2p_alert; +import com.frostwire.jlibtorrent.swig.incoming_connection_alert; +import com.frostwire.jlibtorrent.swig.incoming_request_alert; +import com.frostwire.jlibtorrent.swig.invalid_request_alert; +import com.frostwire.jlibtorrent.swig.listen_failed_alert; +import com.frostwire.jlibtorrent.swig.listen_succeeded_alert; +import com.frostwire.jlibtorrent.swig.log_alert; +import com.frostwire.jlibtorrent.swig.lsd_error_alert; +import com.frostwire.jlibtorrent.swig.lsd_peer_alert; +import com.frostwire.jlibtorrent.swig.metadata_failed_alert; +import com.frostwire.jlibtorrent.swig.metadata_received_alert; +import com.frostwire.jlibtorrent.swig.peer_ban_alert; +import com.frostwire.jlibtorrent.swig.peer_blocked_alert; +import com.frostwire.jlibtorrent.swig.peer_connect_alert; +import com.frostwire.jlibtorrent.swig.peer_disconnected_alert; +import com.frostwire.jlibtorrent.swig.peer_error_alert; +import com.frostwire.jlibtorrent.swig.peer_log_alert; +import com.frostwire.jlibtorrent.swig.peer_snubbed_alert; +import com.frostwire.jlibtorrent.swig.peer_unsnubbed_alert; +import com.frostwire.jlibtorrent.swig.performance_alert; +import com.frostwire.jlibtorrent.swig.picker_log_alert; +import com.frostwire.jlibtorrent.swig.piece_finished_alert; +import com.frostwire.jlibtorrent.swig.portmap_alert; +import com.frostwire.jlibtorrent.swig.portmap_error_alert; +import com.frostwire.jlibtorrent.swig.portmap_log_alert; +import com.frostwire.jlibtorrent.swig.read_piece_alert; +import com.frostwire.jlibtorrent.swig.request_dropped_alert; +import com.frostwire.jlibtorrent.swig.save_resume_data_alert; +import com.frostwire.jlibtorrent.swig.save_resume_data_failed_alert; +import com.frostwire.jlibtorrent.swig.scrape_failed_alert; +import com.frostwire.jlibtorrent.swig.scrape_reply_alert; +import com.frostwire.jlibtorrent.swig.session_error_alert; +import com.frostwire.jlibtorrent.swig.session_stats_alert; +import com.frostwire.jlibtorrent.swig.session_stats_header_alert; +import com.frostwire.jlibtorrent.swig.socks5_alert; +import com.frostwire.jlibtorrent.swig.state_changed_alert; +import com.frostwire.jlibtorrent.swig.state_update_alert; +import com.frostwire.jlibtorrent.swig.stats_alert; +import com.frostwire.jlibtorrent.swig.storage_moved_alert; +import com.frostwire.jlibtorrent.swig.storage_moved_failed_alert; +import com.frostwire.jlibtorrent.swig.torrent_checked_alert; +import com.frostwire.jlibtorrent.swig.torrent_delete_failed_alert; +import com.frostwire.jlibtorrent.swig.torrent_deleted_alert; +import com.frostwire.jlibtorrent.swig.torrent_error_alert; +import com.frostwire.jlibtorrent.swig.torrent_finished_alert; +import com.frostwire.jlibtorrent.swig.torrent_log_alert; +import com.frostwire.jlibtorrent.swig.torrent_need_cert_alert; +import com.frostwire.jlibtorrent.swig.torrent_paused_alert; +import com.frostwire.jlibtorrent.swig.torrent_removed_alert; +import com.frostwire.jlibtorrent.swig.torrent_resumed_alert; +import com.frostwire.jlibtorrent.swig.tracker_announce_alert; +import com.frostwire.jlibtorrent.swig.tracker_error_alert; +import com.frostwire.jlibtorrent.swig.tracker_reply_alert; +import com.frostwire.jlibtorrent.swig.tracker_warning_alert; +import com.frostwire.jlibtorrent.swig.trackerid_alert; +import com.frostwire.jlibtorrent.swig.udp_error_alert; +import com.frostwire.jlibtorrent.swig.unwanted_block_alert; +import com.frostwire.jlibtorrent.swig.url_seed_alert; + +/** + * @author gubatron + * @author aldenml + */ +public enum AlertType { + + TORRENT_FINISHED(torrent_finished_alert.alert_type), + TORRENT_REMOVED(torrent_removed_alert.alert_type), + TORRENT_DELETED(torrent_deleted_alert.alert_type), + TORRENT_PAUSED(torrent_paused_alert.alert_type), + TORRENT_RESUMED(torrent_resumed_alert.alert_type), + TORRENT_CHECKED(torrent_checked_alert.alert_type), + TORRENT_ERROR(torrent_error_alert.alert_type), + TORRENT_NEED_CERT(torrent_need_cert_alert.alert_type), + INCOMING_CONNECTION(incoming_connection_alert.alert_type), + ADD_TORRENT(add_torrent_alert.alert_type), + SAVE_RESUME_DATA(save_resume_data_alert.alert_type), + FASTRESUME_REJECTED(fastresume_rejected_alert.alert_type), + BLOCK_FINISHED(block_finished_alert.alert_type), + METADATA_RECEIVED(metadata_received_alert.alert_type), + METADATA_FAILED(metadata_failed_alert.alert_type), + FILE_COMPLETED(file_completed_alert.alert_type), + FILE_RENAMED(file_renamed_alert.alert_type), + FILE_RENAME_FAILED(file_rename_failed_alert.alert_type), + FILE_ERROR(file_error_alert.alert_type), + HASH_FAILED(hash_failed_alert.alert_type), + PORTMAP(portmap_alert.alert_type), + PORTMAP_ERROR(portmap_error_alert.alert_type), + PORTMAP_LOG(portmap_log_alert.alert_type), + TRACKER_ANNOUNCE(tracker_announce_alert.alert_type), + TRACKER_REPLY(tracker_reply_alert.alert_type), + TRACKER_WARNING(tracker_warning_alert.alert_type), + TRACKER_ERROR(tracker_error_alert.alert_type), + READ_PIECE(read_piece_alert.alert_type), + STATE_CHANGED(state_changed_alert.alert_type), + DHT_REPLY(dht_reply_alert.alert_type), + DHT_BOOTSTRAP(dht_bootstrap_alert.alert_type), + DHT_GET_PEERS(dht_get_peers_alert.alert_type), + EXTERNAL_IP(external_ip_alert.alert_type), + LISTEN_SUCCEEDED(listen_succeeded_alert.alert_type), + STATE_UPDATE(state_update_alert.alert_type), + SESSION_STATS(session_stats_alert.alert_type), + SCRAPE_REPLY(scrape_reply_alert.alert_type), + SCRAPE_FAILED(scrape_failed_alert.alert_type), + LSD_PEER(lsd_peer_alert.alert_type), + PEER_BLOCKED(peer_blocked_alert.alert_type), + PERFORMANCE(performance_alert.alert_type), + PIECE_FINISHED(piece_finished_alert.alert_type), + SAVE_RESUME_DATA_FAILED(save_resume_data_failed_alert.alert_type), + STATS(stats_alert.alert_type), + STORAGE_MOVED(storage_moved_alert.alert_type), + TORRENT_DELETE_FAILED(torrent_delete_failed_alert.alert_type), + URL_SEED(url_seed_alert.alert_type), + INVALID_REQUEST(invalid_request_alert.alert_type), + LISTEN_FAILED(listen_failed_alert.alert_type), + PEER_BAN(peer_ban_alert.alert_type), + PEER_CONNECT(peer_connect_alert.alert_type), + PEER_DISCONNECTED(peer_disconnected_alert.alert_type), + PEER_ERROR(peer_error_alert.alert_type), + PEER_SNUBBED(peer_snubbed_alert.alert_type), + PEER_UNSNUBBED(peer_unsnubbed_alert.alert_type), + REQUEST_DROPPED(request_dropped_alert.alert_type), + UDP_ERROR(udp_error_alert.alert_type), + BLOCK_DOWNLOADING(block_downloading_alert.alert_type), + BLOCK_TIMEOUT(block_timeout_alert.alert_type), + CACHE_FLUSHED(cache_flushed_alert.alert_type), + DHT_ANNOUNCE(dht_announce_alert.alert_type), + STORAGE_MOVED_FAILED(storage_moved_failed_alert.alert_type), + TRACKERID(trackerid_alert.alert_type), + UNWANTED_BLOCK(unwanted_block_alert.alert_type), + DHT_ERROR(dht_error_alert.alert_type), + DHT_PUT(dht_put_alert.alert_type), + DHT_MUTABLE_ITEM(dht_mutable_item_alert.alert_type), + DHT_IMMUTABLE_ITEM(dht_immutable_item_alert.alert_type), + I2P(i2p_alert.alert_type), + DHT_OUTGOING_GET_PEERS(dht_outgoing_get_peers_alert.alert_type), + LOG(log_alert.alert_type), + TORRENT_LOG(torrent_log_alert.alert_type), + PEER_LOG(peer_log_alert.alert_type), + LSD_ERROR(lsd_error_alert.alert_type), + DHT_STATS(dht_stats_alert.alert_type), + INCOMING_REQUEST(incoming_request_alert.alert_type), + DHT_LOG(dht_log_alert.alert_type), + DHT_PKT(dht_pkt_alert.alert_type), + DHT_GET_PEERS_REPLY(dht_get_peers_reply_alert.alert_type), + DHT_DIRECT_RESPONSE(dht_direct_response_alert.alert_type), + PICKER_LOG(picker_log_alert.alert_type), + SESSION_ERROR(session_error_alert.alert_type), + DHT_LIVE_NODES(dht_live_nodes_alert.alert_type), + SESSION_STATS_HEADER(session_stats_header_alert.alert_type), + DHT_SAMPLE_INFOHASHES(dht_sample_infohashes_alert.alert_type), + BLOCK_UPLOADED(block_uploaded_alert.alert_type), + ALERTS_DROPPED(alerts_dropped_alert.alert_type), + SOCKS5_ALERT(socks5_alert.alert_type), + UNKNOWN(-1); + + private static final AlertType[] TABLE = buildTable(); + private final int swigValue; + + AlertType(int swigValue) { + this.swigValue = swigValue; + } + + /** + * @param swigValue the native swig value + * @return the API enum alert type + */ + public static AlertType fromSwig(int swigValue) { + return TABLE[swigValue]; + } + + private static AlertType[] buildTable() { + AlertType[] arr = new AlertType[Alerts.NUM_ALERT_TYPES]; + + arr[0] = UNKNOWN; + arr[1] = UNKNOWN; + arr[2] = UNKNOWN; + arr[3] = UNKNOWN; + arr[4] = TORRENT_REMOVED; + arr[5] = READ_PIECE; + arr[6] = FILE_COMPLETED; + arr[7] = FILE_RENAMED; + arr[8] = FILE_RENAME_FAILED; + arr[9] = PERFORMANCE; + arr[10] = STATE_CHANGED; + arr[11] = TRACKER_ERROR; + arr[12] = TRACKER_WARNING; + arr[13] = SCRAPE_REPLY; + arr[14] = SCRAPE_FAILED; + arr[15] = TRACKER_REPLY; + arr[16] = DHT_REPLY; + arr[17] = TRACKER_ANNOUNCE; + arr[18] = HASH_FAILED; + arr[19] = PEER_BAN; + arr[20] = PEER_UNSNUBBED; + arr[21] = PEER_SNUBBED; + arr[22] = PEER_ERROR; + arr[23] = PEER_CONNECT; + arr[24] = PEER_DISCONNECTED; + arr[25] = INVALID_REQUEST; + arr[26] = TORRENT_FINISHED; + arr[27] = PIECE_FINISHED; + arr[28] = REQUEST_DROPPED; + arr[29] = BLOCK_TIMEOUT; + arr[30] = BLOCK_FINISHED; + arr[31] = BLOCK_DOWNLOADING; + arr[32] = UNWANTED_BLOCK; + arr[33] = STORAGE_MOVED; + arr[34] = STORAGE_MOVED_FAILED; + arr[35] = TORRENT_DELETED; + arr[36] = TORRENT_DELETE_FAILED; + arr[37] = SAVE_RESUME_DATA; + arr[38] = SAVE_RESUME_DATA_FAILED; + arr[39] = TORRENT_PAUSED; + arr[40] = TORRENT_RESUMED; + arr[41] = TORRENT_CHECKED; + arr[42] = URL_SEED; + arr[43] = FILE_ERROR; + arr[44] = METADATA_FAILED; + arr[45] = METADATA_RECEIVED; + arr[46] = UDP_ERROR; + arr[47] = EXTERNAL_IP; + arr[48] = LISTEN_FAILED; + arr[49] = LISTEN_SUCCEEDED; + arr[50] = PORTMAP_ERROR; + arr[51] = PORTMAP; + arr[52] = PORTMAP_LOG; + arr[53] = FASTRESUME_REJECTED; + arr[54] = PEER_BLOCKED; + arr[55] = DHT_ANNOUNCE; + arr[56] = DHT_GET_PEERS; + arr[57] = STATS; + arr[58] = CACHE_FLUSHED; + arr[59] = UNKNOWN; + arr[60] = LSD_PEER; + arr[61] = TRACKERID; + arr[62] = DHT_BOOTSTRAP; + arr[63] = UNKNOWN; + arr[64] = TORRENT_ERROR; + arr[65] = TORRENT_NEED_CERT; + arr[66] = INCOMING_CONNECTION; + arr[67] = ADD_TORRENT; + arr[68] = STATE_UPDATE; + arr[69] = UNKNOWN; + arr[70] = SESSION_STATS; + arr[71] = UNKNOWN; + arr[72] = UNKNOWN; + arr[73] = DHT_ERROR; + arr[74] = DHT_IMMUTABLE_ITEM; + arr[75] = DHT_MUTABLE_ITEM; + arr[76] = DHT_PUT; + arr[77] = I2P; + arr[78] = DHT_OUTGOING_GET_PEERS; + arr[79] = LOG; + arr[80] = TORRENT_LOG; + arr[81] = PEER_LOG; + arr[82] = LSD_ERROR; + arr[83] = DHT_STATS; + arr[84] = INCOMING_REQUEST; + arr[85] = DHT_LOG; + arr[86] = DHT_PKT; + arr[87] = DHT_GET_PEERS_REPLY; + arr[88] = DHT_DIRECT_RESPONSE; + arr[89] = PICKER_LOG; + arr[90] = SESSION_ERROR; + arr[91] = DHT_LIVE_NODES; + arr[92] = SESSION_STATS_HEADER; + arr[93] = DHT_SAMPLE_INFOHASHES; + arr[94] = BLOCK_UPLOADED; + arr[95] = ALERTS_DROPPED; + arr[96] = SOCKS5_ALERT; + return arr; + } + + /** + * @return the native swig value + */ + public int swig() { + return swigValue; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/Alerts.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/Alerts.java new file mode 100644 index 0000000..38f26cf --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/Alerts.java @@ -0,0 +1,701 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.alert; +import com.frostwire.jlibtorrent.swig.libtorrent; + +import static com.frostwire.jlibtorrent.swig.alert.cast_to_add_torrent_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_alerts_dropped_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_block_downloading_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_block_finished_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_block_timeout_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_block_uploaded_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_cache_flushed_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_dht_announce_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_dht_bootstrap_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_dht_direct_response_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_dht_error_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_dht_get_peers_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_dht_get_peers_reply_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_dht_immutable_item_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_dht_live_nodes_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_dht_log_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_dht_mutable_item_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_dht_outgoing_get_peers_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_dht_pkt_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_dht_put_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_dht_reply_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_dht_sample_infohashes_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_dht_stats_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_external_ip_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_fastresume_rejected_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_file_completed_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_file_error_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_file_rename_failed_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_file_renamed_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_hash_failed_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_i2p_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_incoming_connection_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_incoming_request_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_invalid_request_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_listen_failed_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_listen_succeeded_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_log_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_lsd_error_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_lsd_peer_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_metadata_failed_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_metadata_received_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_peer_ban_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_peer_blocked_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_peer_connect_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_peer_disconnected_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_peer_error_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_peer_log_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_peer_snubbed_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_peer_unsnubbed_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_performance_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_picker_log_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_piece_finished_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_portmap_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_portmap_error_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_portmap_log_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_read_piece_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_request_dropped_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_save_resume_data_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_save_resume_data_failed_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_scrape_failed_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_scrape_reply_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_session_error_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_session_stats_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_session_stats_header_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_state_changed_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_state_update_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_stats_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_storage_moved_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_storage_moved_failed_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_torrent_checked_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_torrent_delete_failed_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_torrent_deleted_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_torrent_error_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_torrent_finished_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_torrent_log_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_torrent_need_cert_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_torrent_paused_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_torrent_removed_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_torrent_resumed_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_tracker_announce_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_tracker_error_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_tracker_reply_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_tracker_warning_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_trackerid_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_udp_error_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_unwanted_block_alert; +import static com.frostwire.jlibtorrent.swig.alert.cast_to_url_seed_alert; + +/** + * @author gubatron + * @author aldenml + */ +public final class Alerts { + + public static final int NUM_ALERT_TYPES = libtorrent.getNum_alert_types(); + + private static final CastLambda[] TABLE = buildTable(); + + private Alerts() { + } + + public static Alert cast(alert a) { + return TABLE[a.type()].cast(a); + } + + private static CastLambda[] buildTable() { + CastLambda[] arr = new CastLambda[NUM_ALERT_TYPES]; + + arr[0] = new CastLambda() { + @Override + public Alert cast(alert a) { + return handleUnknownAlert(a); + } + }; + arr[1] = new CastLambda() { + @Override + public Alert cast(alert a) { + return handleUnknownAlert(a); + } + }; + arr[2] = new CastLambda() { + @Override + public Alert cast(alert a) { + return handleUnknownAlert(a); + } + }; + arr[3] = new CastLambda() { + @Override + public Alert cast(alert a) { + return handleUnknownAlert(a); + } + }; + arr[4] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new TorrentRemovedAlert(cast_to_torrent_removed_alert(a)); + } + }; + arr[5] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new ReadPieceAlert(cast_to_read_piece_alert(a)); + } + }; + arr[6] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new FileCompletedAlert(cast_to_file_completed_alert(a)); + } + }; + arr[7] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new FileRenamedAlert(cast_to_file_renamed_alert(a)); + } + }; + arr[8] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new FileRenameFailedAlert(cast_to_file_rename_failed_alert(a)); + } + }; + arr[9] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new PerformanceAlert(cast_to_performance_alert(a)); + } + }; + arr[10] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new StateChangedAlert(cast_to_state_changed_alert(a)); + } + }; + arr[11] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new TrackerErrorAlert(cast_to_tracker_error_alert(a)); + } + }; + arr[12] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new TrackerWarningAlert(cast_to_tracker_warning_alert(a)); + } + }; + arr[13] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new ScrapeReplyAlert(cast_to_scrape_reply_alert(a)); + } + }; + arr[14] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new ScrapeFailedAlert(cast_to_scrape_failed_alert(a)); + } + }; + arr[15] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new TrackerReplyAlert(cast_to_tracker_reply_alert(a)); + } + }; + arr[16] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new DhtReplyAlert(cast_to_dht_reply_alert(a)); + } + }; + arr[17] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new TrackerAnnounceAlert(cast_to_tracker_announce_alert(a)); + } + }; + arr[18] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new HashFailedAlert(cast_to_hash_failed_alert(a)); + } + }; + arr[19] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new PeerBanAlert(cast_to_peer_ban_alert(a)); + } + }; + arr[20] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new PeerUnsnubbedAlert(cast_to_peer_unsnubbed_alert(a)); + } + }; + arr[21] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new PeerSnubbedAlert(cast_to_peer_snubbed_alert(a)); + } + }; + arr[22] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new PeerErrorAlert(cast_to_peer_error_alert(a)); + } + }; + arr[23] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new PeerConnectAlert(cast_to_peer_connect_alert(a)); + } + }; + arr[24] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new PeerDisconnectedAlert(cast_to_peer_disconnected_alert(a)); + } + }; + arr[25] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new InvalidRequestAlert(cast_to_invalid_request_alert(a)); + } + }; + arr[26] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new TorrentFinishedAlert(cast_to_torrent_finished_alert(a)); + } + }; + arr[27] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new PieceFinishedAlert(cast_to_piece_finished_alert(a)); + } + }; + arr[28] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new RequestDroppedAlert(cast_to_request_dropped_alert(a)); + } + }; + arr[29] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new BlockTimeoutAlert(cast_to_block_timeout_alert(a)); + } + }; + arr[30] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new BlockFinishedAlert(cast_to_block_finished_alert(a)); + } + }; + arr[31] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new BlockDownloadingAlert(cast_to_block_downloading_alert(a)); + } + }; + arr[32] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new UnwantedBlockAlert(cast_to_unwanted_block_alert(a)); + } + }; + arr[33] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new StorageMovedAlert(cast_to_storage_moved_alert(a)); + } + }; + arr[34] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new StorageMovedFailedAlert(cast_to_storage_moved_failed_alert(a)); + } + }; + arr[35] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new TorrentDeletedAlert(cast_to_torrent_deleted_alert(a)); + } + }; + arr[36] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new TorrentDeleteFailedAlert(cast_to_torrent_delete_failed_alert(a)); + } + }; + arr[37] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new SaveResumeDataAlert(cast_to_save_resume_data_alert(a)); + } + }; + arr[38] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new SaveResumeDataFailedAlert(cast_to_save_resume_data_failed_alert(a)); + } + }; + arr[39] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new TorrentPausedAlert(cast_to_torrent_paused_alert(a)); + } + }; + arr[40] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new TorrentResumedAlert(cast_to_torrent_resumed_alert(a)); + } + }; + arr[41] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new TorrentCheckedAlert(cast_to_torrent_checked_alert(a)); + } + }; + arr[42] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new UrlSeedAlert(cast_to_url_seed_alert(a)); + } + }; + arr[43] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new FileErrorAlert(cast_to_file_error_alert(a)); + } + }; + arr[44] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new MetadataFailedAlert(cast_to_metadata_failed_alert(a)); + } + }; + arr[45] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new MetadataReceivedAlert(cast_to_metadata_received_alert(a)); + } + }; + arr[46] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new UdpErrorAlert(cast_to_udp_error_alert(a)); + } + }; + arr[47] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new ExternalIpAlert(cast_to_external_ip_alert(a)); + } + }; + arr[48] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new ListenFailedAlert(cast_to_listen_failed_alert(a)); + } + }; + arr[49] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new ListenSucceededAlert(cast_to_listen_succeeded_alert(a)); + } + }; + arr[50] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new PortmapErrorAlert(cast_to_portmap_error_alert(a)); + } + }; + arr[51] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new PortmapAlert(cast_to_portmap_alert(a)); + } + }; + arr[52] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new PortmapLogAlert(cast_to_portmap_log_alert(a)); + } + }; + arr[53] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new FastresumeRejectedAlert(cast_to_fastresume_rejected_alert(a)); + } + }; + arr[54] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new PeerBlockedAlert(cast_to_peer_blocked_alert(a)); + } + }; + arr[55] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new DhtAnnounceAlert(cast_to_dht_announce_alert(a)); + } + }; + arr[56] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new DhtGetPeersAlert(cast_to_dht_get_peers_alert(a)); + } + }; + arr[57] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new StatsAlert(cast_to_stats_alert(a)); + } + }; + arr[58] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new CacheFlushedAlert(cast_to_cache_flushed_alert(a)); + } + }; + arr[59] = new CastLambda() { + @Override + public Alert cast(alert a) { + return handleUnknownAlert(a); + } + }; + arr[60] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new LsdPeerAlert(cast_to_lsd_peer_alert(a)); + } + }; + arr[61] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new TrackeridAlert(cast_to_trackerid_alert(a)); + } + }; + arr[62] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new DhtBootstrapAlert(cast_to_dht_bootstrap_alert(a)); + } + }; + arr[63] = new CastLambda() { + @Override + public Alert cast(alert a) { + return handleUnknownAlert(a); + } + }; + arr[64] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new TorrentErrorAlert(cast_to_torrent_error_alert(a)); + } + }; + arr[65] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new TorrentNeedCertAlert(cast_to_torrent_need_cert_alert(a)); + } + }; + arr[66] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new IncomingConnectionAlert(cast_to_incoming_connection_alert(a)); + } + }; + arr[67] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new AddTorrentAlert(cast_to_add_torrent_alert(a)); + } + }; + arr[68] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new StateUpdateAlert(cast_to_state_update_alert(a)); + } + }; + arr[69] = new CastLambda() { + @Override + public Alert cast(alert a) { + return handleUnknownAlert(a); + } + }; + arr[70] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new SessionStatsAlert(cast_to_session_stats_alert(a)); + } + }; + arr[71] = new CastLambda() { + @Override + public Alert cast(alert a) { + return handleUnknownAlert(a); + } + }; + arr[72] = new CastLambda() { + @Override + public Alert cast(alert a) { + return handleUnknownAlert(a); + } + }; + arr[73] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new DhtErrorAlert(cast_to_dht_error_alert(a)); + } + }; + arr[74] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new DhtImmutableItemAlert(cast_to_dht_immutable_item_alert(a)); + } + }; + arr[75] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new DhtMutableItemAlert(cast_to_dht_mutable_item_alert(a)); + } + }; + arr[76] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new DhtPutAlert(cast_to_dht_put_alert(a)); + } + }; + arr[77] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new I2pAlert(cast_to_i2p_alert(a)); + } + }; + arr[78] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new DhtOutgoingGetPeersAlert(cast_to_dht_outgoing_get_peers_alert(a)); + } + }; + arr[79] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new LogAlert(cast_to_log_alert(a)); + } + }; + arr[80] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new TorrentLogAlert(cast_to_torrent_log_alert(a)); + } + }; + arr[81] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new PeerLogAlert(cast_to_peer_log_alert(a)); + } + }; + arr[82] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new LsdErrorAlert(cast_to_lsd_error_alert(a)); + } + }; + arr[83] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new DhtStatsAlert(cast_to_dht_stats_alert(a)); + } + }; + arr[84] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new IncomingRequestAlert(cast_to_incoming_request_alert(a)); + } + }; + arr[85] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new DhtLogAlert(cast_to_dht_log_alert(a)); + } + }; + arr[86] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new DhtPktAlert(cast_to_dht_pkt_alert(a)); + } + }; + arr[87] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new DhtGetPeersReplyAlert(cast_to_dht_get_peers_reply_alert(a)); + } + }; + arr[88] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new DhtDirectResponseAlert(cast_to_dht_direct_response_alert(a)); + } + }; + arr[89] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new PickerLogAlert(cast_to_picker_log_alert(a)); + } + }; + arr[90] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new SessionErrorAlert(cast_to_session_error_alert(a)); + } + }; + arr[91] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new DhtLiveNodesAlert(cast_to_dht_live_nodes_alert(a)); + } + }; + arr[92] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new SessionStatsHeaderAlert(cast_to_session_stats_header_alert(a)); + } + }; + arr[93] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new DhtSampleInfohashesAlert(cast_to_dht_sample_infohashes_alert(a)); + } + }; + arr[94] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new BlockUploadedAlert(cast_to_block_uploaded_alert(a)); + } + }; + arr[95] = new CastLambda() { + @Override + public Alert cast(alert a) { + return new AlertsDroppedAlert(cast_to_alerts_dropped_alert(a)); + } + }; + + return arr; + } + + private static Alert handleUnknownAlert(alert a) { + throw new IllegalArgumentException("alert not known: " + a.type() + " - " + a.message()); + } + + private interface CastLambda { + Alert cast(alert a); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/AlertsDroppedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/AlertsDroppedAlert.java new file mode 100644 index 0000000..ed5ad44 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/AlertsDroppedAlert.java @@ -0,0 +1,19 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.alerts_dropped_alert; + +/** + * This alert is posted to indicate to the client that some alerts were + * dropped. Dropped meaning that the alert failed to be delivered to the + * client. The most common cause of such failure is that the internal alert + * queue grew too big (controlled by alert_queue_size). + * + * @author gubatron + * @author aldenml + */ +public final class AlertsDroppedAlert extends AbstractAlert { + + AlertsDroppedAlert(alerts_dropped_alert alert) { + super(alert); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/BlockDownloadingAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/BlockDownloadingAlert.java new file mode 100644 index 0000000..ae15187 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/BlockDownloadingAlert.java @@ -0,0 +1,30 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.block_downloading_alert; + +/** + * This alert is generated when a block request is sent to a peer. + * + * @author gubatron + * @author aldenml + */ +public final class BlockDownloadingAlert extends PeerAlert { + + BlockDownloadingAlert(block_downloading_alert alert) { + super(alert); + } + + /** + * @return the block index + */ + public int blockIndex() { + return alert.getBlock_index(); + } + + /** + * @return the piece index + */ + public int pieceIndex() { + return alert.getPiece_index(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/BlockFinishedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/BlockFinishedAlert.java new file mode 100644 index 0000000..24dc256 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/BlockFinishedAlert.java @@ -0,0 +1,30 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.block_finished_alert; + +/** + * This alert is generated when a block request receives a response. + * + * @author gubatron + * @author aldenml + */ +public final class BlockFinishedAlert extends PeerAlert { + + BlockFinishedAlert(block_finished_alert alert) { + super(alert); + } + + /** + * @return the block index + */ + public int blockIndex() { + return alert.getBlock_index(); + } + + /** + * @return the piece index + */ + public int pieceIndex() { + return alert.getPiece_index(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/BlockTimeoutAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/BlockTimeoutAlert.java new file mode 100644 index 0000000..d917047 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/BlockTimeoutAlert.java @@ -0,0 +1,30 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.block_timeout_alert; + +/** + * This alert is generated when a block request times out. + * + * @author gubatron + * @author aldenml + */ +public final class BlockTimeoutAlert extends PeerAlert { + + BlockTimeoutAlert(block_timeout_alert alert) { + super(alert); + } + + /** + * @return the block index + */ + public int blockIndex() { + return alert.getBlock_index(); + } + + /** + * @return the piece index + */ + public int pieceIndex() { + return alert.getPiece_index(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/BlockUploadedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/BlockUploadedAlert.java new file mode 100644 index 0000000..10981b0 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/BlockUploadedAlert.java @@ -0,0 +1,33 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.block_uploaded_alert; + +/** + * This alert is posted when a block intended to be sent to a peer is placed in the + * send buffer. Note that if the connection is closed before the send buffer is sent, + * the alert may be posted without the bytes having been sent to the peer. + * It belongs to the ``progress_notification`` category. + * + * @author gubatron + * @author aldenml + */ +public final class BlockUploadedAlert extends PeerAlert { + + BlockUploadedAlert(block_uploaded_alert alert) { + super(alert); + } + + /** + * @return the block index + */ + public int blockIndex() { + return alert.getBlock_index(); + } + + /** + * @return the piece index + */ + public int pieceIndex() { + return alert.getPiece_index(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/CacheFlushedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/CacheFlushedAlert.java new file mode 100644 index 0000000..8d2e6e7 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/CacheFlushedAlert.java @@ -0,0 +1,21 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.cache_flushed_alert; + +/** + * This alert is posted when the disk cache has been flushed for a specific + * torrent as a result of a call to torrent_handle::flush_cache(). This + * alert belongs to the ``storage_notification`` category, which must be + * enabled to let this alert through. The alert is also posted when removing + * a torrent from the session, once the outstanding cache flush is complete + * and the torrent does no longer have any files open. + * + * @author gubatron + * @author aldenml + */ +public final class CacheFlushedAlert extends TorrentAlert { + + CacheFlushedAlert(cache_flushed_alert alert) { + super(alert); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/CloseReason.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/CloseReason.java new file mode 100644 index 0000000..97bbda8 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/CloseReason.java @@ -0,0 +1,305 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.close_reason_t; + +/** + * These are all the reasons to disconnect a peer + * all reasons caused by the peer sending unexpected data. + * + * @author gubatron + * @author aldenml + */ +public enum CloseReason { + + /** + * No reason specified. Generic close. + */ + NONE(close_reason_t.none.swigValue()), + + /** + * We're already connected to. + */ + DUPLICATE_PEER_ID(close_reason_t.duplicate_peer_id.swigValue()), + + /** + * This torrent has been removed, paused or stopped from this client. + */ + TORRENT_REMOVED(close_reason_t.torrent_removed.swigValue()), + + /** + * Client failed to allocate necessary memory for this peer connection. + */ + NO_MEMORY(close_reason_t.no_memory.swigValue()), + + /** + * The source port of this peer is blocked. + */ + PORT_BLOCKED(close_reason_t.port_blocked.swigValue()), + + /** + * The source IP has been blocked. + */ + BLOCKED(close_reason_t.blocked.swigValue()), + + /** + * Both ends of the connection are upload-only. Staying connected would + * be redundant. + */ + UPLOAD_TO_UPLOAD(close_reason_t.upload_to_upload.swigValue()), + + /** + * Connection was closed because the other end is upload only and does + * not have any pieces we're interested in. + */ + NOT_INTERESTED_UPLOAD_ONLY(close_reason_t.not_interested_upload_only.swigValue()), + + /** + * Peer connection timed out (generic timeout). + */ + TIMEOUT(close_reason_t.timeout.swigValue()), + + /** + * The peers have not been interested in each other for a very long time. + * disconnect. + */ + TIMED_OUT_INTEREST(close_reason_t.timed_out_interest.swigValue()), + + /** + * The peer has not sent any message in a long time. + */ + TIMED_OUT_ACTIVITY(close_reason_t.timed_out_activity.swigValue()), + + /** + * The peer did not complete the handshake in too long. + */ + TIMED_OUT_HANDSHAKE(close_reason_t.timed_out_handshake.swigValue()), + + /** + * The peer sent an interested message, but did not send a request + * after a very long time after being unchoked. + */ + TIMED_OUT_REQUEST(close_reason_t.timed_out_request.swigValue()), + + /** + * The encryption mode is blocked. + */ + PROTOCOL_BLOCKED(close_reason_t.protocol_blocked.swigValue()), + + /** + * The peer was disconnected in the hopes of finding a better peer + * in the swarm. + */ + PEER_CHURN(close_reason_t.peer_churn.swigValue()), + + /** + * We have too many peers connected. + */ + TOO_MANY_CONNECTIONS(close_reason_t.too_many_connections.swigValue()), + + /** + * We have too many file-descriptors open. + */ + TOO_MANY_FILES(close_reason_t.too_many_files.swigValue()), + + /** + * The encryption handshake failed. + */ + ENCRYPTION_ERROR(close_reason_t.encryption_error.swigValue()), + + /** + * The info hash sent as part of the handshake was not what we expected. + */ + INVALID_INFO_HASH(close_reason_t.invalid_info_hash.swigValue()), + + /** + * + */ + SELF_CONNECTION(close_reason_t.self_connection.swigValue()), + + /** + * The metadata received matched the info-hash, but failed to parse. + * this is either someone finding a SHA1 collision, or the author of + * the magnet link creating it from an invalid torrent. + */ + INVALID_METADATA(close_reason_t.invalid_metadata.swigValue()), + + /** + * The advertised metadata size. + */ + METADATA_TOO_BIG(close_reason_t.metadata_too_big.swigValue()), + + /** + * + */ + MESSAGE_TOO_BIG(close_reason_t.message_too_big.swigValue()), + + /** + * + */ + INVALID_MESSAGE_ID(close_reason_t.invalid_message_id.swigValue()), + + /** + * + */ + INVALID_MESSAGE(close_reason_t.invalid_message.swigValue()), + + /** + * + */ + INVALID_PIECE_MESSAGE(close_reason_t.invalid_piece_message.swigValue()), + + /** + * + */ + INVALID_HAVE_MESSAGE(close_reason_t.invalid_have_message.swigValue()), + + /** + * + */ + INVALID_BITFIELD_MESSAGE(close_reason_t.invalid_bitfield_message.swigValue()), + + /** + * + */ + INVALID_CHOKE_MESSAGE(close_reason_t.invalid_choke_message.swigValue()), + + /** + * + */ + INVALID_UNCHOKE_MESSAGE(close_reason_t.invalid_unchoke_message.swigValue()), + + /** + * + */ + INVALID_INTERESTED_MESSAGE(close_reason_t.invalid_interested_message.swigValue()), + + /** + * + */ + INVALID_NOT_INTERESTED_MESSAGE(close_reason_t.invalid_not_interested_message.swigValue()), + + /** + * + */ + INVALID_REQUEST_MESSAGE(close_reason_t.invalid_request_message.swigValue()), + + /** + * + */ + INVALID_REJECT_MESSAGE(close_reason_t.invalid_reject_message.swigValue()), + + /** + * + */ + INVALID_ALLOW_FAST_MESSAGE(close_reason_t.invalid_allow_fast_message.swigValue()), + + /** + * + */ + NVALID_EXTENDED_MESSAGE(close_reason_t.invalid_extended_message.swigValue()), + + /** + * + */ + INVALID_CANCEL_MESSAGE(close_reason_t.invalid_cancel_message.swigValue()), + + /** + * + */ + INVALID_DHT_PORT_MESSAGE(close_reason_t.invalid_dht_port_message.swigValue()), + + /** + * + */ + INVALID_SUGGEST_MESSAGE(close_reason_t.invalid_suggest_message.swigValue()), + + /** + * + */ + INVALID_HAVE_ALL_MESSAGE(close_reason_t.invalid_have_all_message.swigValue()), + + /** + * + */ + INVALID_DONT_HAVE_MESSAGE(close_reason_t.invalid_dont_have_message.swigValue()), + + /** + * + */ + INVALID_HAVE_NONE_MESSAGE(close_reason_t.invalid_have_none_message.swigValue()), + + /** + * + */ + INVALID_PEX_MESSAGE(close_reason_t.invalid_pex_message.swigValue()), + + /** + * + */ + INVALID_METADATA_REQUEST_MESSAGE(close_reason_t.invalid_metadata_request_message.swigValue()), + + /** + * + */ + INVALID_METADATA_MESSAGE(close_reason_t.invalid_metadata_message.swigValue()), + + /** + * + */ + INVALID_METADATA_OFFSET(close_reason_t.invalid_metadata_offset.swigValue()), + + /** + * The peer sent a request while being choked. + */ + REQUEST_WHEN_CHOKED(close_reason_t.request_when_choked.swigValue()), + + /** + * The peer sent corrupt data. + */ + CORRUPT_PIECES(close_reason_t.corrupt_pieces.swigValue()), + + /** + * + */ + PEX_MESSAGE_TOO_BIG(close_reason_t.pex_message_too_big.swigValue()), + + /** + * + */ + PEX_TOO_FREQUENT(close_reason_t.pex_too_frequent.swigValue()), + + /** + * + */ + UNKNOWN(-1); + + private final int swigValue; + + CloseReason(int swigValue) { + this.swigValue = swigValue; + } + + /** + * Converted method, it's public in order to be used in other + * internal packages. + * + * @param swigValue the native value + * @return the enum value + */ + public static CloseReason fromSwig(int swigValue) { + CloseReason[] enumValues = CloseReason.class.getEnumConstants(); + for (CloseReason ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + return UNKNOWN; + } + + /** + * @return the native value + */ + public int swig() { + return swigValue; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtAnnounceAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtAnnounceAlert.java new file mode 100644 index 0000000..2e7eebf --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtAnnounceAlert.java @@ -0,0 +1,40 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.Address; +import com.frostwire.jlibtorrent.Sha1Hash; +import com.frostwire.jlibtorrent.swig.dht_announce_alert; + +/** + * This alert is generated when a DHT node announces to an info-hash on our + * DHT node. It belongs to the ``dht_notification`` category. + * + * @author gubatron + * @author aldenml + */ +public final class DhtAnnounceAlert extends AbstractAlert { + + DhtAnnounceAlert(dht_announce_alert alert) { + super(alert); + } + + /** + * @return the ip + */ + public Address ip() { + return new Address(alert.get_ip()); + } + + /** + * @return the port + */ + public int port() { + return alert.getPort(); + } + + /** + * @return the info-hash + */ + public Sha1Hash infoHash() { + return new Sha1Hash(alert.getInfo_hash()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtBootstrapAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtBootstrapAlert.java new file mode 100644 index 0000000..4ae3e95 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtBootstrapAlert.java @@ -0,0 +1,16 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.dht_bootstrap_alert; + +/** + * This alert is posted when the initial DHT bootstrap is done. + * + * @author gubatron + * @author aldenml + */ +public final class DhtBootstrapAlert extends AbstractAlert { + + DhtBootstrapAlert(dht_bootstrap_alert alert) { + super(alert); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtDirectResponseAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtDirectResponseAlert.java new file mode 100644 index 0000000..ce15a9a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtDirectResponseAlert.java @@ -0,0 +1,43 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.BDecodeNode; +import com.frostwire.jlibtorrent.Entry; +import com.frostwire.jlibtorrent.UdpEndpoint; +import com.frostwire.jlibtorrent.swig.dht_direct_response_alert; + +/** + * This is posted exactly once for every call to + * {@link com.frostwire.jlibtorrent.SessionHandle#dhtDirectRequest(UdpEndpoint, Entry, long)}. + *

+ * If the request failed, {@link #response()} will return a default constructed {@link BDecodeNode}. + * + * @author gubatron + * @author aldenml + */ +public final class DhtDirectResponseAlert extends AbstractAlert { + + DhtDirectResponseAlert(dht_direct_response_alert alert) { + super(alert); + } + + /** + * @return the user data + */ + public long userdata() { + return alert.get_userdata(); + } + + /** + * @return the endpoint + */ + public UdpEndpoint endpoint() { + return new UdpEndpoint(alert.get_endpoint()); + } + + /** + * @return the response + */ + public BDecodeNode response() { + return new BDecodeNode(alert.response()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtErrorAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtErrorAlert.java new file mode 100644 index 0000000..ad6d48a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtErrorAlert.java @@ -0,0 +1,37 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.Operation; +import com.frostwire.jlibtorrent.swig.dht_error_alert; + +/** + * Posted when something fails in the DHT. This is not necessarily a fatal + * error, but it could prevent proper operation. + * + * @author gubatron + * @author aldenml + */ +public final class DhtErrorAlert extends AbstractAlert { + + DhtErrorAlert(dht_error_alert alert) { + super(alert); + } + + /** + * The error code. + * + * @return the error. + */ + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } + + /** + * the operation that failed + * + * @return the operation. + */ + public Operation operation() { + return Operation.fromSwig(alert.getOp()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtGetPeersAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtGetPeersAlert.java new file mode 100644 index 0000000..311edcd --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtGetPeersAlert.java @@ -0,0 +1,25 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.Sha1Hash; +import com.frostwire.jlibtorrent.swig.dht_get_peers_alert; + +/** + * This alert is generated when a DHT node sends a ``get_peers`` message to + * our DHT node. It belongs to the ``dht_notification`` category. + * + * @author gubatron + * @author aldenml + */ +public final class DhtGetPeersAlert extends AbstractAlert { + + DhtGetPeersAlert(dht_get_peers_alert alert) { + super(alert); + } + + /** + * @return the hash + */ + public Sha1Hash infoHash() { + return new Sha1Hash(alert.getInfo_hash()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtGetPeersReplyAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtGetPeersReplyAlert.java new file mode 100644 index 0000000..ce74880 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtGetPeersReplyAlert.java @@ -0,0 +1,54 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.Address; +import com.frostwire.jlibtorrent.Sha1Hash; +import com.frostwire.jlibtorrent.TcpEndpoint; +import com.frostwire.jlibtorrent.swig.dht_get_peers_reply_alert; +import com.frostwire.jlibtorrent.swig.tcp_endpoint; +import com.frostwire.jlibtorrent.swig.tcp_endpoint_vector; + +import java.util.ArrayList; + +/** + * @author gubatron + * @author aldenml + */ +public final class DhtGetPeersReplyAlert extends AbstractAlert { + + DhtGetPeersReplyAlert(dht_get_peers_reply_alert alert) { + super(alert); + } + + /** + * @return the hash + */ + public Sha1Hash infoHash() { + return new Sha1Hash(alert.getInfo_hash()); + } + + /** + * @return the number of peers + */ + public int numPeers() { + return alert.num_peers(); + } + + /** + * This method creates a new list each time is called. + * + * @return the list of peers + */ + public ArrayList peers() { + tcp_endpoint_vector v = alert.peers(); + int size = (int) v.size(); + ArrayList peers = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + tcp_endpoint endp = v.get(i); + String ip = new Address(endp.address()).toString(); // clone + peers.add(new TcpEndpoint(ip, endp.port())); + } + + return peers; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtImmutableItemAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtImmutableItemAlert.java new file mode 100644 index 0000000..043ccdf --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtImmutableItemAlert.java @@ -0,0 +1,39 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.Entry; +import com.frostwire.jlibtorrent.SessionHandle; +import com.frostwire.jlibtorrent.Sha1Hash; +import com.frostwire.jlibtorrent.swig.dht_immutable_item_alert; + +/** + * This alert is posted as a response to a call to {@link SessionHandle#dhtGetItem(Sha1Hash)}, + * looking up immutable items in the DHT. + * + * @author gubatron + * @author aldenml + */ +public final class DhtImmutableItemAlert extends AbstractAlert { + + DhtImmutableItemAlert(dht_immutable_item_alert alert) { + super(alert); + } + + /** + * The target hash of the immutable item. This must + * match the sha-1 hash of the bencoded form of the item. + * + * @return the target of the original query + */ + public Sha1Hash target() { + return new Sha1Hash(alert.getTarget()); + } + + /** + * the data for this item + * + * @return the entry returned by the DHT + */ + public Entry item() { + return new Entry(alert.getItem()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtLiveNodesAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtLiveNodesAlert.java new file mode 100644 index 0000000..4aa2107 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtLiveNodesAlert.java @@ -0,0 +1,56 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.Pair; +import com.frostwire.jlibtorrent.Sha1Hash; +import com.frostwire.jlibtorrent.UdpEndpoint; +import com.frostwire.jlibtorrent.swig.dht_live_nodes_alert; +import com.frostwire.jlibtorrent.swig.sha1_hash_udp_endpoint_pair; +import com.frostwire.jlibtorrent.swig.sha1_hash_udp_endpoint_pair_vector; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author gubatron + * @author aldenml + */ +public final class DhtLiveNodesAlert extends AbstractAlert { + + DhtLiveNodesAlert(dht_live_nodes_alert alert) { + super(alert); + } + + /** + * @return the DHT node id + */ + public Sha1Hash nodeId() { + return new Sha1Hash(alert.getNode_id()); + } + + /** + * @return the number of nodes + */ + public int numNodes() { + return alert.num_nodes(); + } + + /** + * This method creates a new list each time is called. + * + * @return the list of node, endpoint pairs + */ + public List> nodes() { + sha1_hash_udp_endpoint_pair_vector v = alert.nodes(); + int size = (int) v.size(); + ArrayList> nodes = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + sha1_hash_udp_endpoint_pair p = v.get(i); + Sha1Hash h = new Sha1Hash(p.getFirst()).clone(); + UdpEndpoint endp = new UdpEndpoint(p.getSecond()).clone(); + nodes.add(new Pair<>(h, endp)); + } + + return nodes; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtLogAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtLogAlert.java new file mode 100644 index 0000000..ecf4753 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtLogAlert.java @@ -0,0 +1,72 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.dht_log_alert; + +/** + * @author gubatron + * @author aldenml + */ +public final class DhtLogAlert extends AbstractAlert { + + DhtLogAlert(dht_log_alert alert) { + super(alert); + } + + /** + * The log message. + * + * @return + */ + public String logMessage() { + return alert.log_message(); + } + + /** + * The module, or part, of the DHT that produced this log message. + * + * @return the dht module + */ + public DhtModule module() { + return DhtModule.fromSwig(alert.getModule().swigValue()); + } + + /** + * + */ + public enum DhtModule { + + TRACKER(dht_log_alert.dht_module_t.tracker.swigValue()), + NODE(dht_log_alert.dht_module_t.node.swigValue()), + ROUTING_TABLE(dht_log_alert.dht_module_t.routing_table.swigValue()), + RPC_MANAGER(dht_log_alert.dht_module_t.rpc_manager.swigValue()), + TRAVERSAL(dht_log_alert.dht_module_t.traversal.swigValue()), + UNKNOWN(-1); + + private final int swigValue; + + DhtModule(int swigValue) { + this.swigValue = swigValue; + } + + /** + * @param swigValue the native value + * @return the java enum + */ + public static DhtModule fromSwig(int swigValue) { + DhtModule[] enumValues = DhtModule.class.getEnumConstants(); + for (DhtModule ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + return UNKNOWN; + } + + /** + * @return the native value + */ + public int swig() { + return swigValue; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtMutableItemAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtMutableItemAlert.java new file mode 100644 index 0000000..fb32f57 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtMutableItemAlert.java @@ -0,0 +1,69 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.Entry; +import com.frostwire.jlibtorrent.Vectors; +import com.frostwire.jlibtorrent.swig.dht_mutable_item_alert; + +/** + * This alert is posted as a response to a call to session::get_item(), + * specifically the overload for looking up mutable items in the DHT. + * + * @author gubatron + * @author aldenml + */ +public final class DhtMutableItemAlert extends AbstractAlert { + + DhtMutableItemAlert(dht_mutable_item_alert alert) { + super(alert); + } + + /** + * The public key that was looked up. + * + * @return + */ + public byte[] key() { + return Vectors.byte_vector2bytes(alert.get_key()); + } + + /** + * The signature of the data. This is not the signature of the + * plain encoded form of the item, but it includes the sequence number + * and possibly the hash as well. See the dht_store document for more + * information. This is primarily useful for echoing back in a store + * request. + * + * @return + */ + public byte[] signature() { + return Vectors.byte_vector2bytes(alert.get_signature()); + } + + /** + * The sequence number of this item. + * + * @return + */ + public long seq() { + return alert.get_seq(); + } + + /** + * The salt, if any, used to lookup and store this item. If no + * salt was used, this is an empty string. + * + * @return + */ + public byte[] salt() { + return Vectors.byte_vector2bytes(alert.get_salt()); + } + + /** + * The data for this item. + * + * @return + */ + public Entry item() { + return new Entry(alert.getItem()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtOutgoingGetPeersAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtOutgoingGetPeersAlert.java new file mode 100644 index 0000000..22d839f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtOutgoingGetPeersAlert.java @@ -0,0 +1,47 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.Sha1Hash; +import com.frostwire.jlibtorrent.UdpEndpoint; +import com.frostwire.jlibtorrent.swig.dht_outgoing_get_peers_alert; + +/** + * This alert is generated when we send a get_peers request. + * It belongs to the {@code dht_notification} category. + * + * @author gubatron + * @author aldenml + */ +public final class DhtOutgoingGetPeersAlert extends AbstractAlert { + + DhtOutgoingGetPeersAlert(dht_outgoing_get_peers_alert alert) { + super(alert); + } + + /** + * the info_hash of the torrent we're looking for peers for. + * + * @return + */ + public Sha1Hash infoHash() { + return new Sha1Hash(alert.getInfo_hash()); + } + + /** + * if this was an obfuscated lookup, this is the info-hash target + * actually sent to the node. + * + * @return + */ + public Sha1Hash obfuscatedInfoHash() { + return new Sha1Hash(alert.getObfuscated_info_hash()); + } + + /** + * The endpoint we're sending this query to. + * + * @return the endpoint + */ + public UdpEndpoint endpoint() { + return new UdpEndpoint(alert.get_endpoint()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtPktAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtPktAlert.java new file mode 100644 index 0000000..09b62cd --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtPktAlert.java @@ -0,0 +1,99 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.UdpEndpoint; +import com.frostwire.jlibtorrent.Vectors; +import com.frostwire.jlibtorrent.swig.dht_pkt_alert; + +/** + * This alert is posted every time a DHT message is sent or received. It is + * only posted if the ``alert::dht_log_notification`` alert category is + * enabled. It contains a verbatim copy of the message. + * + * @author gubatron + * @author aldenml + */ +public final class DhtPktAlert extends AbstractAlert { + + DhtPktAlert(dht_pkt_alert alert) { + super(alert); + } + + /** + * Returns a copy of the packet buffer and size of the packet, + * respectively. This buffer is only valid for as long as the alert itself + * is valid, which is owned by libtorrent and reclaimed whenever + * pop_alerts() is called on the session. + * + * @return + */ + public byte[] pktBuf() { + return Vectors.byte_span2bytes(alert.pkt_buf()); + } + + /** + * Whether this is an incoming or outgoing packet. + * + * @return the direction + */ + public Direction direction() { + return Direction.fromSwig(alert.getDirection().swigValue()); + } + + /** + * The DHT node we received this packet from, or sent this packet to + * (depending on {@link #direction()}). + * + * @return the node endpoint + */ + public UdpEndpoint node() { + return new UdpEndpoint(alert.get_node()); + } + + /** + * + */ + public enum Direction { + + /** + * + */ + INCOMING(dht_pkt_alert.direction_t.incoming.swigValue()), + + /** + * + */ + OUTGOING(dht_pkt_alert.direction_t.outgoing.swigValue()), + + /** + * + */ + UNKNOWN(-1); + + private final int swigValue; + + Direction(int swigValue) { + this.swigValue = swigValue; + } + + /** + * @param swigValue the native value + * @return the java enum + */ + public static Direction fromSwig(int swigValue) { + Direction[] enumValues = Direction.class.getEnumConstants(); + for (Direction ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + return UNKNOWN; + } + + /** + * @return the native value + */ + public int swig() { + return swigValue; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtPutAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtPutAlert.java new file mode 100644 index 0000000..da32693 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtPutAlert.java @@ -0,0 +1,69 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.Sha1Hash; +import com.frostwire.jlibtorrent.Vectors; +import com.frostwire.jlibtorrent.swig.dht_put_alert; + +/** + * This is posted when a DHT put operation completes. This is useful if the + * client is waiting for a put to complete before shutting down for instance. + * + * @author gubatron + * @author aldenml + */ +public final class DhtPutAlert extends AbstractAlert { + + DhtPutAlert(dht_put_alert alert) { + super(alert); + } + + /** + * The target hash the item was stored under if this was an *immutable* + * item. + * + * @return + */ + public Sha1Hash target() { + return new Sha1Hash(alert.getTarget()); + } + + /** + * if a mutable item was stored, these are the public key, signature, + * salt and sequence number the item was stored under. + * + * @return + */ + public byte[] publicKey() { + return Vectors.byte_vector2bytes(alert.get_public_key()); + } + + /** + * if a mutable item was stored, these are the public key, signature, + * salt and sequence number the item was stored under. + * + * @return + */ + public byte[] signature() { + return Vectors.byte_vector2bytes(alert.get_signature()); + } + + /** + * if a mutable item was stored, these are the public key, signature, + * salt and sequence number the item was stored under. + * + * @return + */ + public byte[] salt() { + return Vectors.byte_vector2bytes(alert.get_salt()); + } + + /** + * if a mutable item was stored, these are the public key, signature, + * salt and sequence number the item was stored under. + * + * @return + */ + public long seq() { + return alert.get_seq(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtReplyAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtReplyAlert.java new file mode 100644 index 0000000..ab7bd9a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtReplyAlert.java @@ -0,0 +1,26 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.dht_reply_alert; + +/** + * This alert is generated each time the DHT receives peers from a node. ``num_peers`` + * is the number of peers we received in this packet. Typically these packets are + * received from multiple DHT nodes, and so the alerts are typically generated + * a few at a time. + * + * @author gubatron + * @author aldenml + */ +public final class DhtReplyAlert extends TrackerAlert { + + DhtReplyAlert(dht_reply_alert alert) { + super(alert); + } + + /** + * @return + */ + public int numPeers() { + return alert.getNum_peers(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtSampleInfohashesAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtSampleInfohashesAlert.java new file mode 100644 index 0000000..93bf08a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtSampleInfohashesAlert.java @@ -0,0 +1,98 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.Pair; +import com.frostwire.jlibtorrent.Sha1Hash; +import com.frostwire.jlibtorrent.UdpEndpoint; +import com.frostwire.jlibtorrent.swig.dht_sample_infohashes_alert; +import com.frostwire.jlibtorrent.swig.sha1_hash; +import com.frostwire.jlibtorrent.swig.sha1_hash_udp_endpoint_pair; +import com.frostwire.jlibtorrent.swig.sha1_hash_udp_endpoint_pair_vector; +import com.frostwire.jlibtorrent.swig.sha1_hash_vector; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author gubatron + * @author aldenml + */ +public final class DhtSampleInfohashesAlert extends AbstractAlert { + + DhtSampleInfohashesAlert(dht_sample_infohashes_alert alert) { + super(alert); + } + + public UdpEndpoint endpoint() { + return new UdpEndpoint(alert.get_endpoint()); + } + + public long interval() { + return alert.get_interval(); + } + + /** + * This value indicates how many infohash keys are currently + * in the node's storage. + *

+ * If the value is larger than the number of returned samples + * it indicates that the indexer may obtain additional samples + * after waiting out the interval. + * + * @return how many infohash keys are currently in the node's + * storage + */ + public int numInfohashes() { + return alert.getNum_infohashes(); + } + + public int numSamples() { + return alert.num_samples(); + } + + public List samples() { + sha1_hash_vector v = alert.samples(); + int size = (int) v.size(); + ArrayList samples = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + sha1_hash ih = v.get(i); + Sha1Hash h = new Sha1Hash(ih).clone(); + samples.add(h); + } + + return samples; + } + + /** + * The total number of nodes returned by {@link #nodes()}. + * + * @return the number of nodes + */ + public int numNodes() { + return alert.num_nodes(); + } + + /** + * This is the set of more DHT nodes returned by the request. + *

+ * The information is included so that indexing nodes can perform + * a keyspace traversal with a single RPC per node by adjusting + * the target value for each RPC. + * + * @return the set of more DHT nodes returned by the request + */ + public List> nodes() { + sha1_hash_udp_endpoint_pair_vector v = alert.nodes(); + int size = (int) v.size(); + ArrayList> nodes = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + sha1_hash_udp_endpoint_pair p = v.get(i); + Sha1Hash h = new Sha1Hash(p.getFirst()).clone(); + UdpEndpoint endp = new UdpEndpoint(p.getSecond()).clone(); + nodes.add(new Pair<>(h, endp)); + } + + return nodes; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtStatsAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtStatsAlert.java new file mode 100644 index 0000000..9937e60 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/DhtStatsAlert.java @@ -0,0 +1,59 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.DhtLookup; +import com.frostwire.jlibtorrent.DhtRoutingBucket; +import com.frostwire.jlibtorrent.swig.dht_lookup_vector; +import com.frostwire.jlibtorrent.swig.dht_routing_bucket_vector; +import com.frostwire.jlibtorrent.swig.dht_stats_alert; + +import java.util.ArrayList; + +/** + * Contains current DHT state. Posted in response to + * {@link com.frostwire.jlibtorrent.SessionHandle#postDhtStats()}. + * + * @author gubatron + * @author aldenml + */ +public final class DhtStatsAlert extends AbstractAlert { + + DhtStatsAlert(dht_stats_alert alert) { + super(alert); + } + + /** + * An array (list) with the currently running DHT lookups. + * + * @return the list of active requests + */ + public ArrayList activeRequests() { + dht_lookup_vector v = alert.getActive_requests(); + int size = (int) v.size(); + + ArrayList l = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + l.add(new DhtLookup(v.get(i))); + } + + return l; + } + + /** + * Contains information about every bucket in the DHT routing + * table. + * + * @return the routing table + */ + public ArrayList routingTable() { + dht_routing_bucket_vector v = alert.getRouting_table(); + int size = (int) v.size(); + ArrayList l = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + l.add(new DhtRoutingBucket(v.get(i))); + } + + return l; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ExternalIpAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ExternalIpAlert.java new file mode 100644 index 0000000..a5b0855 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ExternalIpAlert.java @@ -0,0 +1,29 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.Address; +import com.frostwire.jlibtorrent.swig.external_ip_alert; + +/** + * Whenever libtorrent learns about the machines external IP, this alert is + * generated. The external IP address can be acquired from the tracker (if it + * supports that) or from peers that supports the extension protocol. + * The address can be accessed through the {@link #externalAddress()} member. + * + * @author gubatron + * @author aldenml + */ +public final class ExternalIpAlert extends AbstractAlert { + + ExternalIpAlert(external_ip_alert alert) { + super(alert); + } + + /** + * The IP address that is believed to be our external IP. + * + * @return the external address + */ + public Address externalAddress() { + return new Address(alert.get_external_address()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/FastresumeRejectedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/FastresumeRejectedAlert.java new file mode 100644 index 0000000..61e10af --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/FastresumeRejectedAlert.java @@ -0,0 +1,44 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.Operation; +import com.frostwire.jlibtorrent.swig.fastresume_rejected_alert; + +/** + * This alert is generated when a fastresume file has been passed + * to {@code addTorrent} but the files on disk did not match the + * fastresume file. The {@link #error()} explains the reason why + * the resume file was rejected. + * + * @author gubatron + * @author aldenml + */ +public final class FastresumeRejectedAlert extends TorrentAlert { + + FastresumeRejectedAlert(fastresume_rejected_alert alert) { + super(alert); + } + + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } + + /** + * If the error happened to a specific file, this returns the path to it. + * + * @return the file path. + */ + public String filePath() { + return alert.file_path(); + } + + /** + * If the error happened in a disk operation, a string with + * the name of that operation. + * + * @return the operation. + */ + public Operation operation() { + return Operation.fromSwig(alert.getOp()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/FileCompletedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/FileCompletedAlert.java new file mode 100644 index 0000000..fdb1e0a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/FileCompletedAlert.java @@ -0,0 +1,26 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.file_completed_alert; + +/** + * This is posted whenever an individual file completes its download. i.e. + * All pieces overlapping this file have passed their hash check. + * + * @author gubatron + * @author aldenml + */ +public final class FileCompletedAlert extends TorrentAlert { + + FileCompletedAlert(file_completed_alert alert) { + super(alert); + } + + /** + * Refers to the index of the file that completed. + * + * @return + */ + public int index() { + return alert.getIndex(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/FileErrorAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/FileErrorAlert.java new file mode 100644 index 0000000..e89e6f0 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/FileErrorAlert.java @@ -0,0 +1,46 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.Operation; +import com.frostwire.jlibtorrent.swig.file_error_alert; + +/** + * If the storage fails to read or write files that it needs access + * to, this alert is generated and the torrent is paused. + * + * @author gubatron + * @author aldenml + */ +public final class FileErrorAlert extends TorrentAlert { + + FileErrorAlert(file_error_alert alert) { + super(alert); + } + + /** + * The error code describing the error. + * + * @return the error. + */ + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } + + /** + * The file that experienced the error. + * + * @return te filename. + */ + public String filename() { + return alert.filename(); + } + + /** + * Indicates which underlying operation caused the error. + * + * @return the operation. + */ + public Operation operation() { + return Operation.fromSwig(alert.getOp()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/FileRenameFailedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/FileRenameFailedAlert.java new file mode 100644 index 0000000..60f0745 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/FileRenameFailedAlert.java @@ -0,0 +1,36 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.swig.file_rename_failed_alert; + +/** + * This is posted as a response to a torrent_handle::rename_file() call, if the rename + * operation failed. + * + * @author gubatron + * @author aldenml + */ +public final class FileRenameFailedAlert extends TorrentAlert { + + public FileRenameFailedAlert(file_rename_failed_alert alert) { + super(alert); + } + + /** + * refers to the index of the file that was supposed to be renamed. + * + * @return + */ + public int getIndex() { + return alert.getIndex(); + } + + /** + * is the error code returned from the filesystem. + * + * @return + */ + public ErrorCode getError() { + return new ErrorCode(alert.getError()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/FileRenamedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/FileRenamedAlert.java new file mode 100644 index 0000000..409d180 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/FileRenamedAlert.java @@ -0,0 +1,30 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.file_renamed_alert; + +/** + * This is posted as a response to a {@link com.frostwire.jlibtorrent.TorrentHandle#renameFile(int, String)}, if the rename + * operation succeeds. + * + * @author gubatron + * @author aldenml + */ +public final class FileRenamedAlert extends TorrentAlert { + + public FileRenamedAlert(file_renamed_alert alert) { + super(alert); + } + + public String newName() { + return alert.new_name(); + } + + /** + * Refers to the index of the file that was renamed. + * + * @return + */ + public int index() { + return alert.getIndex(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/HashFailedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/HashFailedAlert.java new file mode 100644 index 0000000..a728b1e --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/HashFailedAlert.java @@ -0,0 +1,21 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.hash_failed_alert; + +/** + * This alert is generated when a finished piece fails its hash check. You can get the handle + * to the torrent which got the failed piece and the index of the piece itself from the alert. + * + * @author gubatron + * @author aldenml + */ +public final class HashFailedAlert extends TorrentAlert { + + HashFailedAlert(hash_failed_alert alert) { + super(alert); + } + + public int pieceIndex() { + return alert.getPiece_index(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/I2pAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/I2pAlert.java new file mode 100644 index 0000000..964f6d7 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/I2pAlert.java @@ -0,0 +1,26 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.swig.i2p_alert; + +/** + * this alert is used to report errors in the i2p SAM connection. + * + * @author gubatron + * @author aldenml + */ +public final class I2pAlert extends AbstractAlert { + + public I2pAlert(i2p_alert alert) { + super(alert); + } + + /** + * the error that occurred in the i2p SAM connection. + * + * @return + */ + public ErrorCode getError() { + return new ErrorCode(alert.getError()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/IncomingConnectionAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/IncomingConnectionAlert.java new file mode 100644 index 0000000..1244280 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/IncomingConnectionAlert.java @@ -0,0 +1,128 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.TcpEndpoint; +import com.frostwire.jlibtorrent.swig.incoming_connection_alert; + +/** + * The incoming connection alert is posted every time we successfully accept + * an incoming connection, through any mean. The most straigh-forward ways + * of accepting incoming connections are through the TCP listen socket and + * the UDP listen socket for uTP sockets. However, connections may also be + * accepted ofer a Socks5 or i2p listen socket, or via a torrent specific + * listen socket for SSL torrents. + * + * @author gubatron + * @author aldenml + */ +public final class IncomingConnectionAlert extends AbstractAlert { + + IncomingConnectionAlert(incoming_connection_alert alert) { + super(alert); + } + + /** + * Tells you what kind of socket the connection was accepted. + * + * @return the socket type + */ + public SocketType socketType() { + return SocketType.fromSwig(alert.getSocket_type()); + } + + /** + * It is the IP address and port the connection came from. + * + * @return the endpoint + */ + public TcpEndpoint endpoint() { + return new TcpEndpoint(alert.get_endpoint()); + } + + /** + * + */ + public enum SocketType { + + /** + * no socket instantiated. + */ + NONE(0), + + /** + * + */ + TCP(1), + + /** + * + */ + SOCKS5(2), + + /** + * + */ + HTTP(3), + + /** + * + */ + UTP(4), + + /** + * + */ + I2P(5), + + /** + * + */ + SSL_TCP(6), + + /** + * + */ + SSL_SOCKS5(7), + + /** + * Like SSL_HTTP. + */ + HTTPS(8), + + /** + * + */ + SSL_UTP(9), + + /** + * + */ + UNKNOWN(-1); + + private final int swigValue; + + SocketType(int swigValue) { + this.swigValue = swigValue; + } + + /** + * @param swigValue the native value + * @return the java enum + */ + public static SocketType fromSwig(int swigValue) { + SocketType[] enumValues = SocketType.class.getEnumConstants(); + for (SocketType ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + return UNKNOWN; + } + + /** + * @return the native value + */ + public int swig() { + return swigValue; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/IncomingRequestAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/IncomingRequestAlert.java new file mode 100644 index 0000000..2345719 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/IncomingRequestAlert.java @@ -0,0 +1,29 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.PeerRequest; +import com.frostwire.jlibtorrent.swig.incoming_request_alert; + +/** + * Posted every time an incoming request from a peer is accepted and queued + * up for being serviced. This alert is only posted if + * the alert::incoming_request_notification flag is enabled in the alert + * mask. + * + * @author gubatron + * @author aldenml + */ +public final class IncomingRequestAlert extends PeerAlert { + + public IncomingRequestAlert(incoming_request_alert alert) { + super(alert); + } + + /** + * The request this peer sent to us. + * + * @return + */ + public PeerRequest request() { + return new PeerRequest(alert.getReq()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/InvalidRequestAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/InvalidRequestAlert.java new file mode 100644 index 0000000..2f91c6f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/InvalidRequestAlert.java @@ -0,0 +1,23 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.PeerRequest; +import com.frostwire.jlibtorrent.swig.invalid_request_alert; + +/** + * This is a debug alert that is generated by an incoming invalid piece request. + * ``ip`` is the address of the peer and the ``request`` is the actual incoming + * request from the peer. See peer_request for more info. + * + * @author gubatron + * @author aldenml + */ +public final class InvalidRequestAlert extends PeerAlert { + + public InvalidRequestAlert(invalid_request_alert alert) { + super(alert); + } + + public PeerRequest getRequest() { + return new PeerRequest(alert.getRequest()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ListenFailedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ListenFailedAlert.java new file mode 100644 index 0000000..9b30155 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ListenFailedAlert.java @@ -0,0 +1,90 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.Address; +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.Operation; +import com.frostwire.jlibtorrent.swig.listen_failed_alert; + +/** + * This alert is generated when none of the ports, given in the port range, to + * session can be opened for listening. The {@link #listenInterface()} member is the + * interface and port that failed, {@link #error()} is the error code describing + * the failure. + *

+ * In the case an endpoint was created before generating the alert, it is + * represented by ``address`` and ``port``. The combinations of socket type + * and operation in which such address and port are not valid are: + * accept - i2p + * accept - socks5 + * enum_if - tcp + *

+ * libtorrent may sometimes try to listen on port 0, if all other ports failed. + * Port 0 asks the operating system to pick a port that's free). If that fails + * you may see a {@link ListenFailedAlert} with port 0 even if you didn't ask to + * listen on it. + * + * @author gubatron + * @author aldenml + */ +public final class ListenFailedAlert extends AbstractAlert { + + ListenFailedAlert(listen_failed_alert alert) { + super(alert); + } + + /** + * The interface libtorrent attempted to listen on that failed. + * + * @return the listen interface (as string). + */ + public String listenInterface() { + return alert.listen_interface(); + } + + /** + * The error the system returned. + * + * @return the error. + */ + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } + + /** + * The specific low level operation that failed. + * + * @return the operation. + */ + public Operation operation() { + return Operation.fromSwig(alert.getOp()); + } + + /** + * The type of listen socket this alert refers to. + * + * @return the socket type. + */ + public SocketType socketType() { + return SocketType.fromSwig(alert.getSocket_type().swigValue()); + } + + /** + * The address libtorrent attempted to listen on. + * See alert's documentation for validity of this value. + * + * @return the address attempted to listen on. + */ + public Address address() { + return new Address(alert.get_address()); + } + + /** + * The port libtorrent attempted to listen on + * see alert's documentation for validity of this value. + * + * @return the port. + */ + public int port() { + return alert.getPort(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ListenSucceededAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ListenSucceededAlert.java new file mode 100644 index 0000000..6552ab0 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ListenSucceededAlert.java @@ -0,0 +1,47 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.Address; +import com.frostwire.jlibtorrent.swig.listen_succeeded_alert; + +/** + * This alert is posted when the listen port succeeds to be opened on a + * particular interface. {@link #address()} and {@link #port()} is the + * endpoint that successfully was opened for listening. + * + * @author gubatron + * @author aldenml + */ +public final class ListenSucceededAlert extends AbstractAlert { + + ListenSucceededAlert(listen_succeeded_alert alert) { + super(alert); + } + + /** + * The address libtorrent ended up listening on. This address + * refers to the local interface. + * + * @return the address ended up listening on + */ + public Address address() { + return new Address(alert.get_address()); + } + + /** + * The port libtorrent ended up listening on. + * + * @return the port + */ + public int port() { + return alert.getPort(); + } + + /** + * the type of listen socket this alert refers to. + * + * @return the socket type + */ + public SocketType socketType() { + return SocketType.fromSwig(alert.getSocket_type().swigValue()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/LogAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/LogAlert.java new file mode 100644 index 0000000..8351909 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/LogAlert.java @@ -0,0 +1,27 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.log_alert; + +/** + * This alert is posted by some session wide event. Its main purpose is + * trouble shooting and debugging. It's not enabled by the default alert + * mask and is enabled by the ``alert::session_log_notification`` bit. + * + * @author gubatron + * @author aldenml + */ +public final class LogAlert extends AbstractAlert { + + LogAlert(log_alert alert) { + super(alert); + } + + /** + * Returns the log message. + * + * @return the message + */ + public String logMessage() { + return alert.log_message(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/LsdErrorAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/LsdErrorAlert.java new file mode 100644 index 0000000..8af1ea5 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/LsdErrorAlert.java @@ -0,0 +1,26 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.swig.lsd_error_alert; + +/** + * Posted if the local service discovery socket fails to start properly. + * + * @author gubatron + * @author aldenml + */ +public final class LsdErrorAlert extends AbstractAlert { + + LsdErrorAlert(lsd_error_alert alert) { + super(alert); + } + + /** + * The error code. + * + * @return the error + */ + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/LsdPeerAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/LsdPeerAlert.java new file mode 100644 index 0000000..0e40fb4 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/LsdPeerAlert.java @@ -0,0 +1,17 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.lsd_peer_alert; + +/** + * This alert is generated when we receive a local service discovery message + * from a peer for a torrent we're currently participating in. + * + * @author gubatron + * @author aldenml + */ +public final class LsdPeerAlert extends PeerAlert { + + LsdPeerAlert(lsd_peer_alert alert) { + super(alert); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/MetadataFailedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/MetadataFailedAlert.java new file mode 100644 index 0000000..b317344 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/MetadataFailedAlert.java @@ -0,0 +1,29 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.swig.metadata_failed_alert; + +/** + * This alert is generated when the metadata has been completely received and the info-hash + * failed to match it. i.e. the metadata that was received was corrupt. libtorrent will + * automatically retry to fetch it in this case. This is only relevant when running a + * torrent-less download, with the metadata extension provided by libtorrent. + * + * @author gubatron + * @author aldenml + */ +public final class MetadataFailedAlert extends TorrentAlert { + + MetadataFailedAlert(metadata_failed_alert alert) { + super(alert); + } + + /** + * The error that occurred. + * + * @return + */ + public ErrorCode getError() { + return new ErrorCode(alert.getError()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/MetadataReceivedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/MetadataReceivedAlert.java new file mode 100644 index 0000000..2505739 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/MetadataReceivedAlert.java @@ -0,0 +1,180 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.Vectors; +import com.frostwire.jlibtorrent.swig.announce_entry; +import com.frostwire.jlibtorrent.swig.announce_entry_vector; +import com.frostwire.jlibtorrent.swig.create_torrent; +import com.frostwire.jlibtorrent.swig.entry; +import com.frostwire.jlibtorrent.swig.metadata_received_alert; +import com.frostwire.jlibtorrent.swig.string_vector; +import com.frostwire.jlibtorrent.swig.torrent_handle; +import com.frostwire.jlibtorrent.swig.torrent_info; + +import java.util.concurrent.locks.ReentrantLock; + +/** + * This alert is generated when the metadata has been completely received and the torrent + * can start downloading. It is not generated on torrents that are started with metadata, but + * only those that needs to download it from peers (when utilizing the libtorrent extension). + *

+ * Typically, when receiving this alert, you would want to save the torrent file in order + * to load it back up again when the session is restarted. + * + * @author gubatron + * @author aldenml + */ +public final class MetadataReceivedAlert extends TorrentAlert { + + private final ReentrantLock sync; + + private int size; + private byte[] data; + private boolean invalid; + + /** + * @param alert the native object + */ + MetadataReceivedAlert(metadata_received_alert alert) { + super(alert); + this.sync = new ReentrantLock(); + } + + private static byte[] createTorrent(torrent_handle th, torrent_info ti, boolean extra) { + create_torrent ct = new create_torrent(ti); + + if (extra) { + string_vector v = th.get_url_seeds(); + int size = (int) v.size(); + for (int i = 0; i < size; i++) { + ct.add_url_seed(v.get(i)); + } + v = th.get_http_seeds(); + size = (int) v.size(); + for (int i = 0; i < size; i++) { + ct.add_http_seed(v.get(i)); + } + announce_entry_vector trackers = th.trackers(); + size = (int) trackers.size(); + for (int i = 0; i < size; i++) { + announce_entry t = trackers.get(i); + ct.add_tracker(Vectors.byte_vector2ascii(t.get_url()), t.getTier()); + } + } + + entry e = ct.generate(); + return Vectors.byte_vector2bytes(e.bencode()); + } + + /** + * Returns the size of the metadata (info section). + *

+ * Internally it uses a lock synchronization to make it thread-safe. + * + * @return the metadata size + */ + public int metadataSize() { + if (invalid) { + return -1; + } + + if (size > 0) { + return size; + } + + sync.lock(); + + try { + if (invalid) { + return -1; + } + + if (size > 0) { + return size; + } + + torrent_handle th = alert.getHandle(); + if (th == null || !th.is_valid()) { + invalid = true; + return -1; + } + + torrent_info ti = th.torrent_file_ptr(); + if (ti == null || !ti.is_valid()) { + invalid = true; + return -1; + } + + size = ti.metadata_size(); + + } catch (Throwable e) { + invalid = true; + } finally { + sync.unlock(); + } + + return size; + } + + /** + * This method construct the torrent lazily. If the metadata + * is very big it can be a problem in memory constrained devices. + *

+ * Internally it uses a lock synchronization to make it thread-safe. + * + * @param extra this controls if extra data, like trackers and web seeds + * are included + * @return the torrent info bencoded data + */ + public byte[] torrentData(boolean extra) { + if (invalid) { + return null; + } + + if (data != null) { + return data; + } + + sync.lock(); + + try { + if (invalid) { + return null; + } + + if (data != null) { + return data; + } + + torrent_handle th = alert.getHandle(); + if (th == null || !th.is_valid()) { + invalid = true; + return null; + } + + torrent_info ti = th.torrent_file_ptr(); + if (ti == null || !ti.is_valid()) { + invalid = true; + return null; + } + + size = ti.metadata_size(); + data = createTorrent(th, ti, extra); + + } catch (Throwable e) { + invalid = true; + } finally { + sync.unlock(); + } + + return data; + } + + /** + * Same as calling {@link #torrentData(boolean)} with {@code false} + * + * @return the info-dict data + */ + public byte[] torrentData() { + return torrentData(false); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerAlert.java new file mode 100644 index 0000000..10742ad --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerAlert.java @@ -0,0 +1,38 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.Sha1Hash; +import com.frostwire.jlibtorrent.TcpEndpoint; +import com.frostwire.jlibtorrent.swig.peer_alert; + +/** + * The peer alert is a base class for alerts that refer to a specific peer. + * It includes all the information to identify the peer. i.e. {@code ip} and + * {@code peer-id}. + * + * @author gubatron + * @author aldenml + */ +public class PeerAlert extends TorrentAlert { + + PeerAlert(T alert) { + super(alert); + } + + /** + * The peer's IP address and port. + * + * @return the endpoint + */ + public TcpEndpoint endpoint() { + return new TcpEndpoint(alert.get_endpoint()); + } + + /** + * The peer ID, if known. + * + * @return the id + */ + public Sha1Hash peerId() { + return new Sha1Hash(alert.getPid()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerBanAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerBanAlert.java new file mode 100644 index 0000000..8a79ada --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerBanAlert.java @@ -0,0 +1,17 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.peer_ban_alert; + +/** + * This alert is generated when a peer is banned because it has sent too many corrupt pieces + * to us. ``ip`` is the endpoint to the peer that was banned. + * + * @author gubatron + * @author aldenml + */ +public final class PeerBanAlert extends PeerAlert { + + public PeerBanAlert(peer_ban_alert alert) { + super(alert); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerBlockedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerBlockedAlert.java new file mode 100644 index 0000000..8297a22 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerBlockedAlert.java @@ -0,0 +1,105 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.peer_blocked_alert; + +/** + * This alert is posted when an incoming peer connection, or a peer that's about to be added + * to our peer list, is blocked for some reason. This could be any of: + *

+ * * the IP filter + * * i2p mixed mode restrictions (a normal peer is not allowed on an i2p swarm) + * * the port filter + * * the peer has a low port and ``no_connect_privileged_ports`` is enabled + * * the protocol of the peer is blocked (uTP/TCP blocking) + * + * @author gubatron + * @author aldenml + */ +public final class PeerBlockedAlert extends TorrentAlert { + + PeerBlockedAlert(peer_blocked_alert alert) { + super(alert); + } + + /** + * The reason for the peer being blocked. + * + * @return + */ + public Reason reason() { + return Reason.fromSwig(alert.getReason()); + } + + /** + * + */ + public enum Reason { + + /** + * + */ + IP_FILTER(peer_blocked_alert.reason_t.ip_filter.swigValue()), + + /** + * + */ + PORT_FILTER(peer_blocked_alert.reason_t.port_filter.swigValue()), + + /** + * + */ + I2P_MIXED(peer_blocked_alert.reason_t.i2p_mixed.swigValue()), + + /** + * + */ + PRIVILEGED_PORTS(peer_blocked_alert.reason_t.privileged_ports.swigValue()), + + /** + * + */ + UTP_DISABLED(peer_blocked_alert.reason_t.utp_disabled.swigValue()), + + /** + * + */ + TCP_DISABLED(peer_blocked_alert.reason_t.tcp_disabled.swigValue()), + + /** + * + */ + INVALID_LOCAL_INTERFACE(peer_blocked_alert.reason_t.invalid_local_interface.swigValue()), + + /** + * + */ + UNKNOWN(-1); + + private final int swigValue; + + Reason(int swigValue) { + this.swigValue = swigValue; + } + + /** + * @param swigValue + * @return + */ + public static Reason fromSwig(int swigValue) { + Reason[] enumValues = Reason.class.getEnumConstants(); + for (Reason ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + return UNKNOWN; + } + + /** + * @return + */ + public int swig() { + return swigValue; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerConnectAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerConnectAlert.java new file mode 100644 index 0000000..5f729f7 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerConnectAlert.java @@ -0,0 +1,20 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.peer_connect_alert; + +/** + * This alert is posted every time an outgoing peer connect attempts succeeds. + * + * @author gubatron + * @author aldenml + */ +public final class PeerConnectAlert extends PeerAlert { + + PeerConnectAlert(peer_connect_alert alert) { + super(alert); + } + + public int socketType() { + return alert.getSocket_type(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerDisconnectedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerDisconnectedAlert.java new file mode 100644 index 0000000..f0dc4cc --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerDisconnectedAlert.java @@ -0,0 +1,55 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.Operation; +import com.frostwire.jlibtorrent.swig.peer_disconnected_alert; + +/** + * This alert is generated when a peer is disconnected for any + * reason (other than the ones covered by {@link PeerErrorAlert}). + * + * @author gubatron + * @author aldenml + */ +public final class PeerDisconnectedAlert extends PeerAlert { + + PeerDisconnectedAlert(peer_disconnected_alert alert) { + super(alert); + } + + /** + * The kind of socket this peer was connected over. + * + * @return the socket type. + */ + public int socketType() { + return alert.getSocket_type(); + } + + /** + * The operation or level where the error occurred. + * + * @return the operation. + */ + public Operation operation() { + return Operation.fromSwig(alert.getOp()); + } + + /** + * Tells you what error caused peer to disconnect. + * + * @return the error. + */ + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } + + /** + * The reason the peer disconnected (if specified). + * + * @return the reason. + */ + public CloseReason reason() { + return CloseReason.fromSwig(alert.getReason().swigValue()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerErrorAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerErrorAlert.java new file mode 100644 index 0000000..4e97d15 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerErrorAlert.java @@ -0,0 +1,36 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.Operation; +import com.frostwire.jlibtorrent.swig.peer_error_alert; + +/** + * This alert is generated when a peer sends invalid data over the + * peer-peer protocol. The peer will be disconnected, but you get + * its ip address from the alert, to identify it. + * + * @author gubatron + * @author aldenml + */ +public final class PeerErrorAlert extends PeerAlert { + + PeerErrorAlert(peer_error_alert alert) { + super(alert); + } + + /** + * @return the operation. + */ + public Operation operation() { + return Operation.fromSwig(alert.getOp()); + } + + /** + * Tells you what error caused this alert. + * + * @return the error + */ + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerLogAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerLogAlert.java new file mode 100644 index 0000000..feac985 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerLogAlert.java @@ -0,0 +1,108 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.peer_log_alert; + +/** + * This alert is posted by events specific to a peer. It's meant to be used + * for trouble shooting and debugging. It's not enabled by the default alert + * mask and is enabled by the ``alert::peer_log_notification`` bit. + * + * @author gubatron + * @author aldenml + */ +public final class PeerLogAlert extends PeerAlert { + + PeerLogAlert(peer_log_alert alert) { + super(alert); + } + + /** + * String literal indicating the kind of event. For messages, this is the + * message name. + * + * @return the event type + */ + public String eventType() { + return alert.get_event_type(); + } + + /** + * @return the direction + */ + public Direction direction() { + return Direction.fromSwig(alert.getDirection().swigValue()); + } + + /** + * Returns the log message. + * + * @return the log message + */ + public String logMessage() { + return alert.log_message(); + } + + /** + * Describes whether this log refers to in-flow or out-flow of the + * peer. The exception is {@link #INFO} which is neither incoming or outgoing. + */ + public enum Direction { + + /** + * + */ + INCOMING_MESSAGE(peer_log_alert.direction_t.incoming_message.swigValue()), + + /** + * + */ + OUTGOING_MESSAGE(peer_log_alert.direction_t.outgoing_message.swigValue()), + + /** + * + */ + INCOMING(peer_log_alert.direction_t.incoming.swigValue()), + + /** + * + */ + OUTGOING(peer_log_alert.direction_t.outgoing.swigValue()), + + /** + * + */ + INFO(peer_log_alert.direction_t.info.swigValue()), + + /** + * + */ + UNKNOWN(-1); + + private final int swigValue; + + Direction(int swigValue) { + this.swigValue = swigValue; + } + + /** + * @param swigValue + * @return + */ + public static Direction fromSwig(int swigValue) { + Direction[] enumValues = Direction.class.getEnumConstants(); + for (Direction ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + return UNKNOWN; + } + + /** + * @return the native value + */ + public int swig() { + return swigValue; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerSnubbedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerSnubbedAlert.java new file mode 100644 index 0000000..1db2fc4 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerSnubbedAlert.java @@ -0,0 +1,17 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.peer_snubbed_alert; + +/** + * This alert is generated when a peer is snubbed, when it stops sending data when we request + * it. + * + * @author gubatron + * @author aldenml + */ +public final class PeerSnubbedAlert extends PeerAlert { + + public PeerSnubbedAlert(peer_snubbed_alert alert) { + super(alert); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerUnsnubbedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerUnsnubbedAlert.java new file mode 100644 index 0000000..7ebdb60 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PeerUnsnubbedAlert.java @@ -0,0 +1,17 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.peer_unsnubbed_alert; + +/** + * This alert is generated when a peer is unsnubbed. Essentially when it was snubbed for stalling + * sending data, and now it started sending data again. + * + * @author gubatron + * @author aldenml + */ +public final class PeerUnsnubbedAlert extends PeerAlert { + + public PeerUnsnubbedAlert(peer_unsnubbed_alert alert) { + super(alert); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PerformanceAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PerformanceAlert.java new file mode 100644 index 0000000..609c092 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PerformanceAlert.java @@ -0,0 +1,120 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.performance_alert; + +/** + * This alert is generated when a limit is reached that might have a negative impact on + * upload or download rate performance. + * + * @author gubatron + * @author aldenml + */ +public final class PerformanceAlert extends TorrentAlert { + + public PerformanceAlert(performance_alert alert) { + super(alert); + } + + public PerformanceWarning getWarningCode() { + return PerformanceWarning.fromSwig(alert.getWarning_code().swigValue()); + } + + public enum PerformanceWarning { + + // This warning means that the number of bytes queued to be written to disk + // exceeds the max disk byte queue setting (``session_settings::max_queued_disk_bytes``). + // This might restrict the download rate, by not queuing up enough write jobs + // to the disk I/O thread. When this alert is posted, peer connections are + // temporarily stopped from downloading, until the queued disk bytes have fallen + // below the limit again. Unless your ``max_queued_disk_bytes`` setting is already + // high, you might want to increase it to get better performance. + OUTSTANDING_DISK_BUFFER_LIMIT_REACHED(performance_alert.performance_warning_t.outstanding_disk_buffer_limit_reached.swigValue()), + + // This is posted when libtorrent would like to send more requests to a peer, + // but it's limited by ``session_settings::max_out_request_queue``. The queue length + // libtorrent is trying to achieve is determined by the download rate and the + // assumed round-trip-time (``session_settings::request_queue_time``). The assumed + // rount-trip-time is not limited to just the network RTT, but also the remote disk + // access time and message handling time. It defaults to 3 seconds. The target number + // of outstanding requests is set to fill the bandwidth-delay product (assumed RTT + // times download rate divided by number of bytes per request). When this alert + // is posted, there is a risk that the number of outstanding requests is too low + // and limits the download rate. You might want to increase the ``max_out_request_queue`` + // setting. + OUTSTANDING_REQUEST_LIMIT_REACHED(performance_alert.performance_warning_t.outstanding_request_limit_reached.swigValue()), + + // This warning is posted when the amount of TCP/IP overhead is greater than the + // upload rate limit. When this happens, the TCP/IP overhead is caused by a much + // faster download rate, triggering TCP ACK packets. These packets eat into the + // rate limit specified to libtorrent. When the overhead traffic is greater than + // the rate limit, libtorrent will not be able to send any actual payload, such + // as piece requests. This means the download rate will suffer, and new requests + // can be sent again. There will be an equilibrium where the download rate, on + // average, is about 20 times the upload rate limit. If you want to maximize the + // download rate, increase the upload rate limit above 5% of your download capacity. + UPLOAD_LIMIT_TOO_LOW(performance_alert.performance_warning_t.upload_limit_too_low.swigValue()), + + // This is the same warning as ``upload_limit_too_low`` but referring to the download + // limit instead of upload. This suggests that your download rate limit is mcuh lower + // than your upload capacity. Your upload rate will suffer. To maximize upload rate, + // make sure your download rate limit is above 5% of your upload capacity. + DOWNLOAD_LIMIT_TOO_LOW(performance_alert.performance_warning_t.download_limit_too_low.swigValue()), + + // We're stalled on the disk. We want to write to the socket, and we can write + // but our send buffer is empty, waiting to be refilled from the disk. + // This either means the disk is slower than the network connection + // or that our send buffer watermark is too small, because we can + // send it all before the disk gets back to us. + // The number of bytes that we keep outstanding, requested from the disk, is calculated + // as follows:: + // + // min(512, max(upload_rate * send_buffer_watermark_factor / 100, send_buffer_watermark)) + // + // If you receive this alert, you migth want to either increase your ``send_buffer_watermark`` + // or ``send_buffer_watermark_factor``. + SEND_BUFFER_WATERMARK_TOO_LOW(performance_alert.performance_warning_t.send_buffer_watermark_too_low.swigValue()), + + // If the half (or more) of all upload slots are set as optimistic unchoke slots, this + // warning is issued. You probably want more regular (rate based) unchoke slots. + TOO_MANY_OPTIMISTIC_UNCHOKE_SLOTS(performance_alert.performance_warning_t.too_many_optimistic_unchoke_slots.swigValue()), + + // If the disk write queue ever grows larger than half of the cache size, this warning + // is posted. The disk write queue eats into the total disk cache and leaves very little + // left for the actual cache. This causes the disk cache to oscillate in evicting large + // portions of the cache before allowing peers to download any more, onto the disk write + // queue. Either lower ``max_queued_disk_bytes`` or increase ``cache_size``. + TOO_HIGH_DISK_QUEUE_LIMIT(performance_alert.performance_warning_t.too_high_disk_queue_limit.swigValue()), + + // This is generated if outgoing peer connections are failing because of *address in use* + // errors, indicating that ``session_settings::outgoing_ports`` is set and is too small of + // a range. Consider not using the ``outgoing_ports`` setting at all, or widen the range to + // include more ports. + TOO_FEW_OUTGOING_PORTS(performance_alert.performance_warning_t.too_few_outgoing_ports.swigValue()), + + TOO_FEW_FILE_DESCRIPTORS(performance_alert.performance_warning_t.too_few_file_descriptors.swigValue()), + + NUM_WARNINGS(performance_alert.performance_warning_t.num_warnings.swigValue()), + + UNKNOWN(-1); + + private final int swigValue; + + PerformanceWarning(int swigValue) { + this.swigValue = swigValue; + } + + public static PerformanceWarning fromSwig(int swigValue) { + PerformanceWarning[] enumValues = PerformanceWarning.class.getEnumConstants(); + for (PerformanceWarning ev : enumValues) { + if (ev.getSwig() == swigValue) { + return ev; + } + } + return UNKNOWN; + } + + public int getSwig() { + return swigValue; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PickerLogAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PickerLogAlert.java new file mode 100644 index 0000000..6f306f8 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PickerLogAlert.java @@ -0,0 +1,47 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.picker_flags_t; +import com.frostwire.jlibtorrent.swig.picker_log_alert; + +/** + * This is posted when one or more blocks are picked by the piece picker, + * assuming the verbose piece picker logging is enabled (see + * picker_log_notification). + * + * @author gubatron + * @author aldenml + */ +public final class PickerLogAlert extends PeerAlert { + + public static final picker_flags_t PARTIAL_RATIO = picker_log_alert.partial_ratio; + public static final picker_flags_t PRIORITIZE_PARTIALS = picker_log_alert.prioritize_partials; + public static final picker_flags_t RAREST_FIRST_PARTIALS = picker_log_alert.rarest_first_partials; + public static final picker_flags_t RAREST_FIRST = picker_log_alert.rarest_first; + public static final picker_flags_t REVERSE_RAREST_FIRST = picker_log_alert.reverse_rarest_first; + public static final picker_flags_t SUGGESTED_PIECES = picker_log_alert.suggested_pieces; + public static final picker_flags_t PRIO_SEQUENTIAL_PIECES = picker_log_alert.prio_sequential_pieces; + public static final picker_flags_t SEQUENTIAL_PIECES = picker_log_alert.sequential_pieces; + public static final picker_flags_t REVERSE_PIECES = picker_log_alert.time_critical; + public static final picker_flags_t TIME_CRITICAL = picker_log_alert.time_critical; + public static final picker_flags_t RANDOM_PIECES = picker_log_alert.random_pieces; + public static final picker_flags_t PREFER_CONTIGUOUS = picker_log_alert.prefer_contiguous; + public static final picker_flags_t REVERSE_SEQUENTIAL = picker_log_alert.reverse_sequential; + public static final picker_flags_t BACKUP1 = picker_log_alert.backup1; + public static final picker_flags_t BACKUP2 = picker_log_alert.backup2; + public static final picker_flags_t END_GAME = picker_log_alert.end_game; + public static final picker_flags_t EXTENT_AFFINITY = picker_log_alert.extent_affinity; + + PickerLogAlert(picker_log_alert alert) { + super(alert); + } + + /** + * This is a bitmask of which features were enabled for this particular + * pick. The bits are defined in the picker_flags_t enum. + * + * @return the flags + */ + public picker_flags_t pickerFlags() { + return alert.getPicker_flags(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PieceFinishedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PieceFinishedAlert.java new file mode 100644 index 0000000..7075a0d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PieceFinishedAlert.java @@ -0,0 +1,29 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.piece_finished_alert; + +/** + * This alert is posted every time a piece completes downloading + * and passes the hash check. This alert derives from + * {@link TorrentAlert} which contains the + * {@link com.frostwire.jlibtorrent.TorrentHandle} to the torrent + * the piece belongs to. + * + * @author gubatron + * @author aldenml + */ +public final class PieceFinishedAlert extends TorrentAlert { + + PieceFinishedAlert(piece_finished_alert alert) { + super(alert); + } + + /** + * The index of the piece that finished. + * + * @return the piece index + */ + public int pieceIndex() { + return alert.getPiece_index(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PortmapAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PortmapAlert.java new file mode 100644 index 0000000..4c63a6a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PortmapAlert.java @@ -0,0 +1,53 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.PortmapProtocol; +import com.frostwire.jlibtorrent.PortmapTransport; +import com.frostwire.jlibtorrent.swig.portmap_alert; + +/** + * This alert is generated when a NAT router was successfully found and + * a port was successfully mapped on it. On a NAT:ed network with a NAT-PMP + * capable router, this is typically generated once when mapping the TCP + * port and, if DHT is enabled, when the UDP port is mapped. + * + * @author gubatron + * @author aldenml + */ +public final class PortmapAlert extends AbstractAlert { + + PortmapAlert(portmap_alert alert) { + super(alert); + } + + /** + * refers to the mapping index of the port map that failed, i.e. + * the index returned from add_mapping(). + * + * @return the mapping index + */ + public int mapping() { + return alert.getMapping(); + } + + /** + * the external port allocated for the mapping. + * + * @return the external port + */ + public int externalPort() { + return alert.getExternal_port(); + } + + public PortmapTransport mapTransport() { + return PortmapTransport.fromSwig(alert.getMap_transport().swigValue()); + } + + /** + * The protocol this mapping was for. + * + * @return the mapping protocol + */ + public PortmapProtocol mapProtocol() { + return PortmapProtocol.fromSwig(alert.getMap_protocol().swigValue()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PortmapErrorAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PortmapErrorAlert.java new file mode 100644 index 0000000..c99a64f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PortmapErrorAlert.java @@ -0,0 +1,46 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.PortmapTransport; +import com.frostwire.jlibtorrent.swig.portmap_error_alert; + +/** + * This alert is generated when a NAT router was successfully found but some + * part of the port mapping request failed. It contains a text message that + * may help the user figure out what is wrong. This alert is not generated in + * case it appears the client is not running on a NAT:ed network or if it + * appears there is no NAT router that can be remote controlled to add port + * mappings. + * + * @author gubatron + * @author aldenml + */ +public final class PortmapErrorAlert extends AbstractAlert { + + PortmapErrorAlert(portmap_error_alert alert) { + super(alert); + } + + /** + * refers to the mapping index of the port map that failed, i.e. + * the index returned from add_mapping(). + * + * @return the mapping index + */ + public int mapping() { + return alert.getMapping(); + } + + public PortmapTransport mapTransport() { + return PortmapTransport.fromSwig(alert.getMap_transport().swigValue()); + } + + /** + * tells you what failed. + * + * @return the error code + */ + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PortmapLogAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PortmapLogAlert.java new file mode 100644 index 0000000..9af084d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/PortmapLogAlert.java @@ -0,0 +1,33 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.PortmapTransport; +import com.frostwire.jlibtorrent.swig.portmap_log_alert; + +/** + * This alert is generated to log informational events related to either + * UPnP or NAT-PMP. They contain a log line and the type (0 = NAT-PMP + * and 1 = UPnP). Displaying these messages to an end user is only useful + * for debugging the UPnP or NAT-PMP implementation. + * + * @author gubatron + * @author aldenml + */ +public final class PortmapLogAlert extends AbstractAlert { + + PortmapLogAlert(portmap_log_alert alert) { + super(alert); + } + + public PortmapTransport mapType() { + return PortmapTransport.fromSwig(alert.getMap_transport().swigValue()); + } + + /** + * The message associated with this log line. + * + * @return the log message + */ + public String logMessage() { + return alert.log_message(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ReadPieceAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ReadPieceAlert.java new file mode 100644 index 0000000..38ddcfe --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ReadPieceAlert.java @@ -0,0 +1,53 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.swig.read_piece_alert; + +/** + * This alert is posted when the asynchronous read operation initiated by + * a call to {@link com.frostwire.jlibtorrent.TorrentHandle#readPiece(int)} + * is completed. If the read failed, the torrent + * is paused and an error state is set and the buffer member of the alert + * is 0. If successful, {@link #bufferPtr()} points to a buffer containing all the data + * of the piece. {@link #piece()} is the piece index that was read. {@link #size()} + * is the number of bytes that was read. + *

+ * If the operation fails, {@link #error()} will indicate what went wrong. + * + * @author gubatron + * @author aldenml + */ +public final class ReadPieceAlert extends TorrentAlert { + + ReadPieceAlert(read_piece_alert alert) { + super(alert); + } + + /** + * @return the error + */ + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } + + /** + * @return the native buffer pointer + */ + public long bufferPtr() { + return alert.buffer_ptr(); + } + + /** + * @return the piece index + */ + public int piece() { + return alert.getPiece(); + } + + /** + * @return the piece size + */ + public int size() { + return alert.getSize(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/RequestDroppedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/RequestDroppedAlert.java new file mode 100644 index 0000000..a73cf79 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/RequestDroppedAlert.java @@ -0,0 +1,24 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.request_dropped_alert; + +/** + * This alert is generated when a peer rejects or ignores a piece request. + * + * @author gubatron + * @author aldenml + */ +public final class RequestDroppedAlert extends PeerAlert { + + public RequestDroppedAlert(request_dropped_alert alert) { + super(alert); + } + + public int getBlockIndex() { + return alert.getBlock_index(); + } + + public int getPieceIndex() { + return alert.getPiece_index(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SaveResumeDataAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SaveResumeDataAlert.java new file mode 100644 index 0000000..812e69e --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SaveResumeDataAlert.java @@ -0,0 +1,32 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.AddTorrentParams; +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.swig.save_resume_data_alert; + +/** + * This alert is generated as a response to a ``torrent_handle::save_resume_data`` request. + * It is generated once the disk IO thread is done writing the state for this torrent. + * + * @author gubatron + * @author aldenml + */ +public final class SaveResumeDataAlert extends TorrentAlert { + + SaveResumeDataAlert(save_resume_data_alert alert) { + super(alert); + } + + /** + * The {@code params} structure is populated with the fields to be passed to + * {@link com.frostwire.jlibtorrent.SessionHandle#addTorrent(AddTorrentParams, ErrorCode)} + * or {@link com.frostwire.jlibtorrent.SessionHandle#asyncAddTorrent(AddTorrentParams)} + * to resume the torrent. To save the state to disk, you may pass it + * on to {@code write_resume_data()}. + * + * @return the params object + */ + public AddTorrentParams params() { + return new AddTorrentParams(alert.getParams()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SaveResumeDataFailedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SaveResumeDataFailedAlert.java new file mode 100644 index 0000000..70c8ac0 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SaveResumeDataFailedAlert.java @@ -0,0 +1,22 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.swig.save_resume_data_failed_alert; + +/** + * This alert is generated instead of ``save_resume_data_alert`` if there was an error + * generating the resume data. ``error`` describes what went wrong. + * + * @author gubatron + * @author aldenml + */ +public final class SaveResumeDataFailedAlert extends TorrentAlert { + + SaveResumeDataFailedAlert(save_resume_data_failed_alert alert) { + super(alert); + } + + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ScrapeFailedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ScrapeFailedAlert.java new file mode 100644 index 0000000..51ce998 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ScrapeFailedAlert.java @@ -0,0 +1,40 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.swig.scrape_failed_alert; + +/** + * If a scrape request fails, this alert is generated. This might be due + * to the tracker timing out, refusing connection or returning an http response + * code indicating an error. + * + * @author gubatron + * @author aldenml + */ +public final class ScrapeFailedAlert extends TrackerAlert { + + public ScrapeFailedAlert(scrape_failed_alert alert) { + super(alert); + } + + /** + * The error itself. This may indicate that the tracker sent an error + * message (``error::tracker_failure``), in which case it can be + * retrieved by calling {@link #errorMessage()}. + * + * @return + */ + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } + + /** + * If the error indicates there is an associated message, this returns + * that message. Otherwise and empty string. + * + * @return + */ + public String errorMessage() { + return alert.error_message(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ScrapeReplyAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ScrapeReplyAlert.java new file mode 100644 index 0000000..8e57a5b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/ScrapeReplyAlert.java @@ -0,0 +1,36 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.scrape_reply_alert; + +/** + * This alert is generated when a scrape request succeeds. + * + * @author gubatron + * @author aldenml + */ +public final class ScrapeReplyAlert extends TrackerAlert { + + public ScrapeReplyAlert(scrape_reply_alert alert) { + super(alert); + } + + /** + * the data returned in the scrape response. These numbers + * may be -1 if the reponse was malformed. + * + * @return + */ + public int getIncomplete() { + return alert.getIncomplete(); + } + + /** + * the data returned in the scrape response. These numbers + * may be -1 if the reponse was malformed. + * + * @return + */ + public int getComplete() { + return alert.getComplete(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SessionErrorAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SessionErrorAlert.java new file mode 100644 index 0000000..2add798 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SessionErrorAlert.java @@ -0,0 +1,27 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.swig.session_error_alert; + +/** + * This alert is posted when the session encounters a serious error, + * potentially fatal. + * + * @author gubatron + * @author aldenml + */ +public final class SessionErrorAlert extends AbstractAlert { + + SessionErrorAlert(session_error_alert alert) { + super(alert); + } + + /** + * The error code, if one is associated with this error. + * + * @return the error + */ + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SessionStatsAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SessionStatsAlert.java new file mode 100644 index 0000000..a9a3869 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SessionStatsAlert.java @@ -0,0 +1,38 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.session_stats_alert; + +/** + * The {@link SessionStatsAlert} is posted when the user requests session + * statistics by calling {@link com.frostwire.jlibtorrent.SessionHandle#postSessionStats()} + * on the session object. Its category is + * {@link com.frostwire.jlibtorrent.swig.alert#status_notification}, + * but it is not subject to filtering, since it's only manually posted anyway. + * + * @author gubatron + * @author aldenml + */ +public final class SessionStatsAlert extends AbstractAlert { + + SessionStatsAlert(session_stats_alert alert) { + super(alert); + } + + /** + * The internal values are a mix of counters and gauges, which + * meanings can be queries via the + * {@link com.frostwire.jlibtorrent.LibTorrent#sessionStatsMetrics()} function. + *

+ * The mapping from a specific metric to an index into this array is constant for a + * specific version of libtorrent, but may differ for other versions. The intended + * usage is to request the mapping, i.e. call + * {@link com.frostwire.jlibtorrent.LibTorrent#sessionStatsMetrics()}, once + * on startup, and then use that mapping to interpret these values throughout + * the process's runtime. + * + * @return the value + */ + public long value(int index) { + return alert.get_value(index); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SessionStatsHeaderAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SessionStatsHeaderAlert.java new file mode 100644 index 0000000..f20e77b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SessionStatsHeaderAlert.java @@ -0,0 +1,17 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.session_stats_header_alert; + +/** + * The session_stats_header alert is posted during the init of the + * session thread. + * + * @author gubatron + * @author aldenml + */ +public final class SessionStatsHeaderAlert extends AbstractAlert { + + SessionStatsHeaderAlert(session_stats_header_alert alert) { + super(alert); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SocketType.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SocketType.java new file mode 100644 index 0000000..b5b5cc5 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/SocketType.java @@ -0,0 +1,71 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.socket_type_t; + +/** + * + */ +public enum SocketType { + + /** + * + */ + TCP(socket_type_t.tcp.swigValue()), + + /** + * + */ + TCP_SSL(socket_type_t.tcp_ssl.swigValue()), + + /** + * + */ + UDP(socket_type_t.udp.swigValue()), + + /** + * + */ + I2P(socket_type_t.i2p.swigValue()), + + /** + * + */ + SOCKS5(socket_type_t.socks5.swigValue()), + + /** + * + */ + UTP_SSL(socket_type_t.utp_ssl.swigValue()), + + /** + * + */ + UNKNOWN(-1); + + private final int swigValue; + + SocketType(int swigValue) { + this.swigValue = swigValue; + } + + /** + * @param swigValue the native value + * @return the enum value + */ + public static SocketType fromSwig(int swigValue) { + SocketType[] enumValues = SocketType.class.getEnumConstants(); + for (SocketType ev : enumValues) { + if (ev.swig() == swigValue) { + return ev; + } + } + return UNKNOWN; + } + + /** + * @return the native value + */ + public int swig() { + return swigValue; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/StateChangedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/StateChangedAlert.java new file mode 100644 index 0000000..801c2fc --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/StateChangedAlert.java @@ -0,0 +1,35 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.TorrentStatus; +import com.frostwire.jlibtorrent.swig.state_changed_alert; + +/** + * Generated whenever a torrent changes its state. + * + * @author gubatron + * @author aldenml + */ +public final class StateChangedAlert extends TorrentAlert { + + public StateChangedAlert(state_changed_alert alert) { + super(alert); + } + + /** + * The new state of the torrent. + * + * @return + */ + public TorrentStatus.State getState() { + return TorrentStatus.State.fromSwig(alert.getState().swigValue()); + } + + /** + * The previous state. + * + * @return + */ + public TorrentStatus.State getPrevState() { + return TorrentStatus.State.fromSwig(alert.getPrev_state().swigValue()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/StateUpdateAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/StateUpdateAlert.java new file mode 100644 index 0000000..ecd0491 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/StateUpdateAlert.java @@ -0,0 +1,45 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.SessionHandle; +import com.frostwire.jlibtorrent.TorrentStatus; +import com.frostwire.jlibtorrent.swig.state_update_alert; +import com.frostwire.jlibtorrent.swig.torrent_status_vector; + +import java.util.ArrayList; +import java.util.List; + +/** + * This alert is only posted when requested by the user, by calling + * {@link SessionHandle#postTorrentUpdates()}. It contains the torrent status of + * all torrents that changed since last time this message was posted. Its category + * is {@code status_notification}, but it's not subject to filtering, since it's only + * manually posted anyway. + * + * @author gubatron + * @author aldenml + */ +public final class StateUpdateAlert extends AbstractAlert { + + StateUpdateAlert(state_update_alert alert) { + super(alert); + } + + /** + * Contains the torrent status of all torrents that changed since last time + * this message was posted. Note that you can map a torrent status to a + * specific torrent via its {@code handle} member. + * + * @return the list of torrent status + */ + public List status() { + torrent_status_vector v = alert.getStatus(); + int size = (int) v.size(); + + List l = new ArrayList<>(size); + for (int i = 0; i < size; i++) { + l.add(new TorrentStatus(v.get(i))); + } + + return l; + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/StatsAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/StatsAlert.java new file mode 100644 index 0000000..0c52567 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/StatsAlert.java @@ -0,0 +1,98 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.stats_alert; + +/** + * This alert is posted approximately once every second, and it contains + * byte counters of most statistics that's tracked for torrents. Each active + * torrent posts these alerts regularly. + *

+ * This alert will be deprecated soon. + * + * @author gubatron + * @author aldenml + */ +public final class StatsAlert extends TorrentAlert { + + StatsAlert(stats_alert alert) { + super(alert); + } + + // All of these are raw, and not smoothing is performed. + // See {@link StatsChannel} for possible values of index. + public int transferred(int index) { + return alert.get_transferred(index); + } + + /** + * The number of milliseconds during which these stats were collected. + * This is typically just above 1000, but if CPU is limited, it may be + * higher than that. + * + * @return + */ + public int interval() { + return alert.getInterval(); + } + + /** + * + */ + public enum StatsChannel { + + /** + * + */ + UPLOAD_PAYLOAD(stats_alert.stats_channel.upload_payload.swigValue()), + + /** + * + */ + UPlOAD_PROTOCOL(stats_alert.stats_channel.upload_protocol.swigValue()), + + /** + * + */ + DOWNLOAD_PAYLOAD(stats_alert.stats_channel.download_payload.swigValue()), + + /** + * + */ + DOWNLOAD_PROTOCOL(stats_alert.stats_channel.download_protocol.swigValue()), + + /** + * + */ + UPLOAD_IP_PROTOCOL(stats_alert.stats_channel.upload_ip_protocol.swigValue()), + + /** + * + */ + DOWNLOAD_IP_PROTOCOL(stats_alert.stats_channel.download_ip_protocol.swigValue()), + + /** + * + */ + NUM_CHANNELS(stats_alert.stats_channel.num_channels.swigValue()); + + private final int swigValue; + + StatsChannel(int swigValue) { + this.swigValue = swigValue; + } + + /** + * @return + */ + public int swig() { + return swigValue; + } + + /** + * @return + */ + public int getIndex() { + return swigValue; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/StorageMovedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/StorageMovedAlert.java new file mode 100644 index 0000000..6122027 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/StorageMovedAlert.java @@ -0,0 +1,23 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.storage_moved_alert; + +/** + * This alert is generated when all the disk IO has completed and the + * files have been moved, as an effect of a call to {@link com.frostwire.jlibtorrent.TorrentHandle#moveStorage}. This + * is useful to synchronize with the actual disk. The {@link #storagePath()} member is the new path of + * the storage. + * + * @author gubatron + * @author aldenml + */ +public final class StorageMovedAlert extends TorrentAlert { + + public StorageMovedAlert(storage_moved_alert alert) { + super(alert); + } + + public String storagePath() { + return alert.storage_path(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/StorageMovedFailedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/StorageMovedFailedAlert.java new file mode 100644 index 0000000..ef8c801 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/StorageMovedFailedAlert.java @@ -0,0 +1,44 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.Operation; +import com.frostwire.jlibtorrent.swig.storage_moved_failed_alert; + +/** + * This alert is generated when an attempt to move the storage, + * via {@code TorrentHandle#moveStorage} fails. + * + * @author gubatron + * @author aldenml + */ +public final class StorageMovedFailedAlert extends TorrentAlert { + + StorageMovedFailedAlert(storage_moved_failed_alert alert) { + super(alert); + } + + /** + * @return the error. + */ + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } + + /** + * If the error happened for a specific file, this returns its path. + * + * @return the file path. + */ + public String filePath() { + return alert.file_path(); + } + + /** + * This indicates what underlying operation caused the error. + * + * @return the operation. + */ + public Operation operation() { + return Operation.fromSwig(alert.getOp()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentAlert.java new file mode 100644 index 0000000..12bdf74 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentAlert.java @@ -0,0 +1,35 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.TorrentHandle; +import com.frostwire.jlibtorrent.swig.torrent_alert; + +/** + * This is a base class for alerts that are associated with a + * specific torrent. It contains a handle to the torrent. + * + * @author gubatron + * @author aldenml + */ +public class TorrentAlert extends AbstractAlert { + + TorrentAlert(T alert) { + super(alert); + } + + /** + * The torrent_handle pointing to the torrent this + * alert is associated with. + * + * @return + */ + public TorrentHandle handle() { + return new TorrentHandle(alert.getHandle()); + } + + /** + * @return the name of the torrent download + */ + public String torrentName() { + return alert.torrent_name(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentCheckedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentCheckedAlert.java new file mode 100644 index 0000000..751ce4d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentCheckedAlert.java @@ -0,0 +1,17 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.torrent_checked_alert; + +/** + * This alert is posted when a torrent completes checking. i.e. when it transitions + * out of the ``checking files`` state into a state where it is ready to start downloading. + * + * @author gubatron + * @author aldenml + */ +public final class TorrentCheckedAlert extends TorrentAlert { + + TorrentCheckedAlert(torrent_checked_alert alert) { + super(alert); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentDeleteFailedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentDeleteFailedAlert.java new file mode 100644 index 0000000..5baf728 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentDeleteFailedAlert.java @@ -0,0 +1,37 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.Sha1Hash; +import com.frostwire.jlibtorrent.swig.torrent_delete_failed_alert; + +/** + * This alert is generated when a request to delete the files of a torrent fails. + * Just removing a torrent from the session cannot fail + * + * @author gubatron + * @author aldenml + */ +public final class TorrentDeleteFailedAlert extends TorrentAlert { + + public TorrentDeleteFailedAlert(torrent_delete_failed_alert alert) { + super(alert); + } + + /** + * tells you why it failed. + * + * @return + */ + public ErrorCode getError() { + return new ErrorCode(alert.getError()); + } + + /** + * the info hash of the torrent whose files failed to be deleted. + * + * @return + */ + public Sha1Hash getInfoHash() { + return new Sha1Hash(alert.getInfo_hash()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentDeletedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentDeletedAlert.java new file mode 100644 index 0000000..3e57415 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentDeletedAlert.java @@ -0,0 +1,29 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.Sha1Hash; +import com.frostwire.jlibtorrent.swig.torrent_deleted_alert; + +/** + * This alert is generated when a request to delete the files of a torrent complete. + *

+ * The ``info_hash`` is the info-hash of the torrent that was just deleted. Most of + * the time the torrent_handle in the ``torrent_alert`` will be invalid by the time + * this alert arrives, since the torrent is being deleted. The ``info_hash`` member + * is hence the main way of identifying which torrent just completed the delete. + *

+ * This alert is posted in the ``storage_notification`` category, and that bit + * needs to be set in the alert_mask. + * + * @author gubatron + * @author aldenml + */ +public final class TorrentDeletedAlert extends TorrentAlert { + + public TorrentDeletedAlert(torrent_deleted_alert alert) { + super(alert); + } + + public Sha1Hash getInfoHash() { + return new Sha1Hash(alert.getInfo_hash()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentErrorAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentErrorAlert.java new file mode 100644 index 0000000..b91924d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentErrorAlert.java @@ -0,0 +1,35 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.swig.torrent_error_alert; + +/** + * This is posted whenever a torrent is transitioned into the error state. + * + * @author gubatron + * @author aldenml + */ +public final class TorrentErrorAlert extends TorrentAlert { + + TorrentErrorAlert(torrent_error_alert alert) { + super(alert); + } + + /** + * Specifies which error the torrent encountered. + * + * @return + */ + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } + + /** + * Returns the filename (or object) the error occurred on. + * + * @return + */ + public String filename() { + return alert.filename(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentFinishedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentFinishedAlert.java new file mode 100644 index 0000000..3b33e9d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentFinishedAlert.java @@ -0,0 +1,18 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.torrent_finished_alert; + +/** + * This alert is generated when a torrent switches from being a downloader to a seed. + * It will only be generated once per torrent. It contains a torrent handle to the + * torrent in question. + * + * @author gubatron + * @author aldenml + */ +public final class TorrentFinishedAlert extends TorrentAlert { + + public TorrentFinishedAlert(torrent_finished_alert alert) { + super(alert); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentLogAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentLogAlert.java new file mode 100644 index 0000000..31907aa --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentLogAlert.java @@ -0,0 +1,27 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.torrent_log_alert; + +/** + * This alert is posted by torrent wide events. It's meant to be used for + * trouble shooting and debugging. It's not enabled by the default alert + * mask and is enabled by the ``alert::torrent_log_notification`` bit. + * + * @author gubatron + * @author aldenml + */ +public final class TorrentLogAlert extends TorrentAlert { + + TorrentLogAlert(torrent_log_alert alert) { + super(alert); + } + + /** + * The log message. + * + * @return the log message + */ + public String logMessage() { + return alert.log_message(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentNeedCertAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentNeedCertAlert.java new file mode 100644 index 0000000..52915d5 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentNeedCertAlert.java @@ -0,0 +1,19 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.torrent_need_cert_alert; + +/** + * This is always posted for SSL torrents. This is a reminder to the client that + * the torrent won't work unless {@link com.frostwire.jlibtorrent.TorrentHandle#setSslCertificate} + * is called with a valid certificate. Valid certificates MUST be signed by the + * SSL certificate in the .torrent file. + * + * @author gubatron + * @author aldenml + */ +public final class TorrentNeedCertAlert extends TorrentAlert { + + TorrentNeedCertAlert(torrent_need_cert_alert alert) { + super(alert); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentPausedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentPausedAlert.java new file mode 100644 index 0000000..2bb1fdb --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentPausedAlert.java @@ -0,0 +1,18 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.torrent_paused_alert; + +/** + * This alert is generated as a response to a ``torrent_handle::pause`` request. It is + * generated once all disk IO is complete and the files in the torrent have been closed. + * This is useful for synchronizing with the disk. + * + * @author gubatron + * @author aldenml + */ +public final class TorrentPausedAlert extends TorrentAlert { + + public TorrentPausedAlert(torrent_paused_alert alert) { + super(alert); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentRemovedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentRemovedAlert.java new file mode 100644 index 0000000..e0473e4 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentRemovedAlert.java @@ -0,0 +1,32 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.Sha1Hash; +import com.frostwire.jlibtorrent.swig.torrent_removed_alert; + +/** + * The ``torrent_removed_alert`` is posted whenever a torrent is removed. Since + * the torrent handle in its baseclass will always be invalid (since the torrent + * is already removed) it has the info hash as a member, to identify it. + * It's posted when the ``status_notification`` bit is set in the alert_mask. + *

+ * Even though the ``handle`` member doesn't point to an existing torrent anymore, + * it is still useful for comparing to other handles, which may also no + * longer point to existing torrents, but to the same non-existing torrents. + *

+ * The ``torrent_handle`` acts as a ``weak_ptr``, even though its object no + * longer exists, it can still compare equal to another weak pointer which + * points to the same non-existent object. + * + * @author gubatron + * @author aldenml + */ +public final class TorrentRemovedAlert extends TorrentAlert { + + TorrentRemovedAlert(torrent_removed_alert alert) { + super(alert); + } + + public Sha1Hash infoHash() { + return new Sha1Hash(alert.getInfo_hash()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentResumedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentResumedAlert.java new file mode 100644 index 0000000..b83fdac --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TorrentResumedAlert.java @@ -0,0 +1,17 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.torrent_resumed_alert; + +/** + * This alert is generated as a response to a torrent_handle::resume() request. It is + * generated when a torrent goes from a paused state to an active state. + * + * @author gubatron + * @author aldenml + */ +public final class TorrentResumedAlert extends TorrentAlert { + + public TorrentResumedAlert(torrent_resumed_alert alert) { + super(alert); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackerAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackerAlert.java new file mode 100644 index 0000000..646d964 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackerAlert.java @@ -0,0 +1,37 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.TcpEndpoint; +import com.frostwire.jlibtorrent.swig.tracker_alert; + +/** + * This is a base class used for alerts that are associated with a + * specific tracker. It derives from torrent_alert since a tracker + * is also associated with a specific torrent. + * + * @author gubatron + * @author aldenml + */ +public class TrackerAlert extends TorrentAlert { + + TrackerAlert(T alert) { + super(alert); + } + + /** + * Returns the endpoint of the listen interface being announced. + * + * @return the local endpoint + */ + public TcpEndpoint localEndpoint() { + return new TcpEndpoint(alert.get_local_endpoint()); + } + + /** + * Returns a null-terminated string of the tracker's URL. + * + * @return the tracker's URL + */ + public String trackerUrl() { + return alert.tracker_url(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackerAnnounceAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackerAnnounceAlert.java new file mode 100644 index 0000000..b501bd0 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackerAnnounceAlert.java @@ -0,0 +1,61 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.tracker_announce_alert; + +/** + * This alert is generated each time a tracker announce is sent (or attempted to be sent). + *

+ * There are no extra data members in this alert. The url can be found in the base class + * however. + * + * @author gubatron + * @author aldenml + */ +public final class TrackerAnnounceAlert extends TrackerAlert { + + public TrackerAnnounceAlert(tracker_announce_alert alert) { + super(alert); + } + + /** + * Specifies what event was sent to the tracker. + * + * @return + */ + public TrackerAnnounceEvent getEvent() { + return TrackerAnnounceEvent.fromSwig(alert.getEvent()); + } + + public enum TrackerAnnounceEvent { + + NONE(0), + + COMPLETED(1), + + STARTED(2), + + STOPPED(3), + + UNKNOWN(-1); + + private final int swigValue; + + TrackerAnnounceEvent(int swigValue) { + this.swigValue = swigValue; + } + + public static TrackerAnnounceEvent fromSwig(int swigValue) { + TrackerAnnounceEvent[] enumValues = TrackerAnnounceEvent.class.getEnumConstants(); + for (TrackerAnnounceEvent ev : enumValues) { + if (ev.getSwig() == swigValue) { + return ev; + } + } + return UNKNOWN; + } + + public int getSwig() { + return swigValue; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackerErrorAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackerErrorAlert.java new file mode 100644 index 0000000..2437853 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackerErrorAlert.java @@ -0,0 +1,41 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.swig.tracker_error_alert; + +/** + * This alert is generated on tracker time outs, premature disconnects, invalid response or + * a HTTP response other than "200 OK". From the alert you can get the handle to the torrent + * the tracker belongs to. + *

+ * The {@link #timesInRow()} member says how many times in a row this tracker has failed. + * {@link #error()} contains the code returned from the HTTP server. 401 means the tracker needs + * authentication, 404 means not found etc. If the tracker timed out, the code will be set + * to 0. + * + * @author gubatron + * @author aldenml + */ +public final class TrackerErrorAlert extends TrackerAlert { + + TrackerErrorAlert(tracker_error_alert alert) { + super(alert); + } + + public int timesInRow() { + return alert.getTimes_in_row(); + } + + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } + + /** + * The message associated with this error. + * + * @return the error message. + */ + public String errorMessage() { + return alert.error_message(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackerReplyAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackerReplyAlert.java new file mode 100644 index 0000000..4f40103 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackerReplyAlert.java @@ -0,0 +1,29 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.tracker_reply_alert; + +/** + * This alert is only for informational purpose. It is generated when a tracker announce + * succeeds. It is generated regardless what kind of tracker was used, be it UDP, HTTP or + * the DHT. + * + * @author gubatron + * @author aldenml + */ +public final class TrackerReplyAlert extends TrackerAlert { + + public TrackerReplyAlert(tracker_reply_alert alert) { + super(alert); + } + + /** + * Tells how many peers the tracker returned in this response. This is + * not expected to be more thant the ``num_want`` settings. These are not necessarily + * all new peers, some of them may already be connected. + * + * @return the number of peers + */ + public int numPeers() { + return alert.getNum_peers(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackerWarningAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackerWarningAlert.java new file mode 100644 index 0000000..8cbd8cd --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackerWarningAlert.java @@ -0,0 +1,27 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.tracker_warning_alert; + +/** + * This alert is triggered if the tracker reply contains a warning field. Usually this + * means that the tracker announce was successful, but the tracker has a message to + * the client. + * + * @author gubatron + * @author aldenml + */ +public final class TrackerWarningAlert extends TrackerAlert { + + TrackerWarningAlert(tracker_warning_alert alert) { + super(alert); + } + + /** + * The message associated with this warning. + * + * @return the warning + */ + public String warningMessage() { + return alert.warning_message(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackeridAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackeridAlert.java new file mode 100644 index 0000000..dcb85ac --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/TrackeridAlert.java @@ -0,0 +1,27 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.trackerid_alert; + +/** + * This alert is posted whenever a tracker responds with a ``trackerid``. + * The tracker ID is like a cookie. The libtorrent will store the tracker ID + * for this tracker and repeat it in subsequent announces. + * + * @author gubatron + * @author aldenml + */ +public final class TrackeridAlert extends TorrentAlert { + + TrackeridAlert(trackerid_alert alert) { + super(alert); + } + + /** + * The tracker ID returned by the tracker. + * + * @return + */ + public String trackerId() { + return alert.tracker_id(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/UdpErrorAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/UdpErrorAlert.java new file mode 100644 index 0000000..3aea1e9 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/UdpErrorAlert.java @@ -0,0 +1,48 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.Operation; +import com.frostwire.jlibtorrent.UdpEndpoint; +import com.frostwire.jlibtorrent.swig.udp_error_alert; + +/** + * This alert is posted when there is an error on the UDP socket. The + * UDP socket is used for all uTP, DHT and UDP tracker traffic. It's + * global to the session. + * + * @author gubatron + * @author aldenml + */ +public final class UdpErrorAlert extends AbstractAlert { + + UdpErrorAlert(udp_error_alert alert) { + super(alert); + } + + /** + * The source address associated with the error (if any). + * + * @return the endpoint + */ + public UdpEndpoint endpoint() { + return new UdpEndpoint(alert.get_endpoint()); + } + + /** + * The operation that failed. + * + * @return the operation + */ + public Operation operation() { + return Operation.fromSwig(alert.getOperation()); + } + + /** + * The error code describing the error. + * + * @return the error + */ + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/UnwantedBlockAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/UnwantedBlockAlert.java new file mode 100644 index 0000000..51c23b0 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/UnwantedBlockAlert.java @@ -0,0 +1,31 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.swig.unwanted_block_alert; + +/** + * This alert is generated when a block is received that was not requested or + * whose request timed out. + * + * @author gubatron + * @author aldenml + */ +public final class UnwantedBlockAlert extends PeerAlert { + + UnwantedBlockAlert(unwanted_block_alert alert) { + super(alert); + } + + /** + * @return block index + */ + public int blockIndex() { + return alert.getBlock_index(); + } + + /** + * @return piece index + */ + public int pieceIndex() { + return alert.getPiece_index(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/UrlSeedAlert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/UrlSeedAlert.java new file mode 100644 index 0000000..046e5cd --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/alerts/UrlSeedAlert.java @@ -0,0 +1,46 @@ +package com.frostwire.jlibtorrent.alerts; + +import com.frostwire.jlibtorrent.ErrorCode; +import com.frostwire.jlibtorrent.swig.url_seed_alert; + +/** + * This alert is generated when a HTTP seed name lookup fails. + * + * @author gubatron + * @author aldenml + */ +public final class UrlSeedAlert extends TorrentAlert { + + UrlSeedAlert(url_seed_alert alert) { + super(alert); + } + + /** + * The error the web seed encountered. If this is not set, the server + * sent an error message, call {@link #errorMessage()}. + * + * @return error code + */ + public ErrorCode error() { + return new ErrorCode(alert.getError()); + } + + /** + * The URL the error is associated with. + * + * @return server url + */ + public String serverUrl() { + return alert.server_url(); + } + + /** + * In case the web server sent an error message, this function returns + * it. + * + * @return error message + */ + public String errorMessage() { + return alert.error_message(); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/SWIGTYPE_p_boost__system__error_category.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/SWIGTYPE_p_boost__system__error_category.java new file mode 100644 index 0000000..a82fa6f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/SWIGTYPE_p_boost__system__error_category.java @@ -0,0 +1,26 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class SWIGTYPE_p_boost__system__error_category { + private final transient long swigCPtr; + + protected SWIGTYPE_p_boost__system__error_category(long cPtr, @SuppressWarnings("unused") boolean futureUse) { + swigCPtr = cPtr; + } + + protected SWIGTYPE_p_boost__system__error_category() { + swigCPtr = 0; + } + + protected static long getCPtr(SWIGTYPE_p_boost__system__error_category obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/SWIGTYPE_p_boost__system__error_condition.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/SWIGTYPE_p_boost__system__error_condition.java new file mode 100644 index 0000000..d984273 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/SWIGTYPE_p_boost__system__error_condition.java @@ -0,0 +1,26 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class SWIGTYPE_p_boost__system__error_condition { + private final transient long swigCPtr; + + protected SWIGTYPE_p_boost__system__error_condition(long cPtr, @SuppressWarnings("unused") boolean futureUse) { + swigCPtr = cPtr; + } + + protected SWIGTYPE_p_boost__system__error_condition() { + swigCPtr = 0; + } + + protected static long getCPtr(SWIGTYPE_p_boost__system__error_condition obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/SWIGTYPE_p_libtorrent__aux__noexcept_movableT_libtorrent__tcp__endpoint_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/SWIGTYPE_p_libtorrent__aux__noexcept_movableT_libtorrent__tcp__endpoint_t.java new file mode 100644 index 0000000..9f485b7 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/SWIGTYPE_p_libtorrent__aux__noexcept_movableT_libtorrent__tcp__endpoint_t.java @@ -0,0 +1,26 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class SWIGTYPE_p_libtorrent__aux__noexcept_movableT_libtorrent__tcp__endpoint_t { + private final transient long swigCPtr; + + protected SWIGTYPE_p_libtorrent__aux__noexcept_movableT_libtorrent__tcp__endpoint_t(long cPtr, @SuppressWarnings("unused") boolean futureUse) { + swigCPtr = cPtr; + } + + protected SWIGTYPE_p_libtorrent__aux__noexcept_movableT_libtorrent__tcp__endpoint_t() { + swigCPtr = 0; + } + + protected static long getCPtr(SWIGTYPE_p_libtorrent__aux__noexcept_movableT_libtorrent__tcp__endpoint_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/SWIGTYPE_p_std__bitsetT_97_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/SWIGTYPE_p_std__bitsetT_97_t.java new file mode 100644 index 0000000..4267003 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/SWIGTYPE_p_std__bitsetT_97_t.java @@ -0,0 +1,26 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class SWIGTYPE_p_std__bitsetT_97_t { + private final transient long swigCPtr; + + protected SWIGTYPE_p_std__bitsetT_97_t(long cPtr, @SuppressWarnings("unused") boolean futureUse) { + swigCPtr = cPtr; + } + + protected SWIGTYPE_p_std__bitsetT_97_t() { + swigCPtr = 0; + } + + protected static long getCPtr(SWIGTYPE_p_std__bitsetT_97_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/add_files_listener.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/add_files_listener.java new file mode 100644 index 0000000..c4407a9 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/add_files_listener.java @@ -0,0 +1,63 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class add_files_listener { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected add_files_listener(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public add_files_listener() { + this(libtorrent_jni.new_add_files_listener(), true); + libtorrent_jni.add_files_listener_director_connect(this, swigCPtr, true, true); + } + + protected static long getCPtr(add_files_listener obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_add_files_listener(swigCPtr); + } + swigCPtr = 0; + } + } + + protected void swigDirectorDisconnect() { + swigCMemOwn = false; + delete(); + } + + public void swigReleaseOwnership() { + swigCMemOwn = false; + libtorrent_jni.add_files_listener_change_ownership(this, swigCPtr, false); + } + + public void swigTakeOwnership() { + swigCMemOwn = true; + libtorrent_jni.add_files_listener_change_ownership(this, swigCPtr, true); + } + + public boolean pred(String p) { + return (getClass() == add_files_listener.class) ? libtorrent_jni.add_files_listener_pred(swigCPtr, this, p) : libtorrent_jni.add_files_listener_predSwigExplicitadd_files_listener(swigCPtr, this, p); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/add_piece_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/add_piece_flags_t.java new file mode 100644 index 0000000..7094059 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/add_piece_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class add_piece_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected add_piece_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public add_piece_flags_t() { + this(libtorrent_jni.new_add_piece_flags_t(), true); + } + + protected static long getCPtr(add_piece_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static add_piece_flags_t all() { + return new add_piece_flags_t(libtorrent_jni.add_piece_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_add_piece_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.add_piece_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(add_piece_flags_t f) { + return libtorrent_jni.add_piece_flags_t_eq(swigCPtr, this, add_piece_flags_t.getCPtr(f), f); + } + + public boolean ne(add_piece_flags_t f) { + return libtorrent_jni.add_piece_flags_t_ne(swigCPtr, this, add_piece_flags_t.getCPtr(f), f); + } + + public add_piece_flags_t or_(add_piece_flags_t other) { + return new add_piece_flags_t(libtorrent_jni.add_piece_flags_t_or_(swigCPtr, this, add_piece_flags_t.getCPtr(other), other), true); + } + + public add_piece_flags_t and_(add_piece_flags_t other) { + return new add_piece_flags_t(libtorrent_jni.add_piece_flags_t_and_(swigCPtr, this, add_piece_flags_t.getCPtr(other), other), true); + } + + public add_piece_flags_t xor(add_piece_flags_t other) { + return new add_piece_flags_t(libtorrent_jni.add_piece_flags_t_xor(swigCPtr, this, add_piece_flags_t.getCPtr(other), other), true); + } + + public add_piece_flags_t inv() { + return new add_piece_flags_t(libtorrent_jni.add_piece_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.add_piece_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/add_torrent_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/add_torrent_alert.java new file mode 100644 index 0000000..5a76ed9 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/add_torrent_alert.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class add_torrent_alert extends torrent_alert { + public final static int priority = libtorrent_jni.add_torrent_alert_priority_get(); + public final static int alert_type = libtorrent_jni.add_torrent_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.add_torrent_alert_static_category_get(), false); + private transient long swigCPtr; + + protected add_torrent_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.add_torrent_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(add_torrent_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_add_torrent_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.add_torrent_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.add_torrent_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.add_torrent_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.add_torrent_alert_message(swigCPtr, this); + } + + public add_torrent_params getParams() { + long cPtr = libtorrent_jni.add_torrent_alert_params_get(swigCPtr, this); + return (cPtr == 0) ? null : new add_torrent_params(cPtr, false); + } + + public void setParams(add_torrent_params value) { + libtorrent_jni.add_torrent_alert_params_set(swigCPtr, this, add_torrent_params.getCPtr(value), value); + } + + public error_code getError() { + long cPtr = libtorrent_jni.add_torrent_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public void setError(error_code value) { + libtorrent_jni.add_torrent_alert_error_set(swigCPtr, this, error_code.getCPtr(value), value); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/add_torrent_params.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/add_torrent_params.java new file mode 100644 index 0000000..028c46f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/add_torrent_params.java @@ -0,0 +1,372 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class add_torrent_params { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected add_torrent_params(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + protected static long getCPtr(add_torrent_params obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static add_torrent_params create_instance() { + return new add_torrent_params(libtorrent_jni.add_torrent_params_create_instance(), true); + } + + public static add_torrent_params create_instance_disabled_storage() { + return new add_torrent_params(libtorrent_jni.add_torrent_params_create_instance_disabled_storage(), true); + } + + public static add_torrent_params create_instance_zero_storage() { + return new add_torrent_params(libtorrent_jni.add_torrent_params_create_instance_zero_storage(), true); + } + + public static add_torrent_params read_resume_data(bdecode_node rd, error_code ec) { + return new add_torrent_params(libtorrent_jni.add_torrent_params_read_resume_data__SWIG_0(bdecode_node.getCPtr(rd), rd, error_code.getCPtr(ec), ec), true); + } + + public static add_torrent_params read_resume_data(byte_vector buffer, error_code ec) { + return new add_torrent_params(libtorrent_jni.add_torrent_params_read_resume_data__SWIG_1(byte_vector.getCPtr(buffer), buffer, error_code.getCPtr(ec), ec), true); + } + + public static entry write_resume_data(add_torrent_params atp) { + return new entry(libtorrent_jni.add_torrent_params_write_resume_data(add_torrent_params.getCPtr(atp), atp), true); + } + + public static byte_vector write_resume_data_buf(add_torrent_params atp) { + return new byte_vector(libtorrent_jni.add_torrent_params_write_resume_data_buf(add_torrent_params.getCPtr(atp), atp), true); + } + + public static add_torrent_params parse_magnet_uri(String uri, error_code ec) { + return new add_torrent_params(libtorrent_jni.add_torrent_params_parse_magnet_uri(uri, error_code.getCPtr(ec), ec), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_add_torrent_params(swigCPtr); + } + swigCPtr = 0; + } + } + + public int getVersion() { + return libtorrent_jni.add_torrent_params_version_get(swigCPtr, this); + } + + public void setVersion(int value) { + libtorrent_jni.add_torrent_params_version_set(swigCPtr, this, value); + } + + public String getName() { + return libtorrent_jni.add_torrent_params_name_get(swigCPtr, this); + } + + public void setName(String value) { + libtorrent_jni.add_torrent_params_name_set(swigCPtr, this, value); + } + + public String getSave_path() { + return libtorrent_jni.add_torrent_params_save_path_get(swigCPtr, this); + } + + public void setSave_path(String value) { + libtorrent_jni.add_torrent_params_save_path_set(swigCPtr, this, value); + } + + public storage_mode_t getStorage_mode() { + return storage_mode_t.swigToEnum(libtorrent_jni.add_torrent_params_storage_mode_get(swigCPtr, this)); + } + + public void setStorage_mode(storage_mode_t value) { + libtorrent_jni.add_torrent_params_storage_mode_set(swigCPtr, this, value.swigValue()); + } + + public String getTrackerid() { + return libtorrent_jni.add_torrent_params_trackerid_get(swigCPtr, this); + } + + public void setTrackerid(String value) { + libtorrent_jni.add_torrent_params_trackerid_set(swigCPtr, this, value); + } + + public torrent_flags_t getFlags() { + long cPtr = libtorrent_jni.add_torrent_params_flags_get(swigCPtr, this); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public void setFlags(torrent_flags_t value) { + libtorrent_jni.add_torrent_params_flags_set(swigCPtr, this, torrent_flags_t.getCPtr(value), value); + } + + public sha1_hash getInfo_hash() { + long cPtr = libtorrent_jni.add_torrent_params_info_hash_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setInfo_hash(sha1_hash value) { + libtorrent_jni.add_torrent_params_info_hash_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } + + public int getMax_uploads() { + return libtorrent_jni.add_torrent_params_max_uploads_get(swigCPtr, this); + } + + public void setMax_uploads(int value) { + libtorrent_jni.add_torrent_params_max_uploads_set(swigCPtr, this, value); + } + + public int getMax_connections() { + return libtorrent_jni.add_torrent_params_max_connections_get(swigCPtr, this); + } + + public void setMax_connections(int value) { + libtorrent_jni.add_torrent_params_max_connections_set(swigCPtr, this, value); + } + + public int getUpload_limit() { + return libtorrent_jni.add_torrent_params_upload_limit_get(swigCPtr, this); + } + + public void setUpload_limit(int value) { + libtorrent_jni.add_torrent_params_upload_limit_set(swigCPtr, this, value); + } + + public int getDownload_limit() { + return libtorrent_jni.add_torrent_params_download_limit_get(swigCPtr, this); + } + + public void setDownload_limit(int value) { + libtorrent_jni.add_torrent_params_download_limit_set(swigCPtr, this, value); + } + + public long getTotal_uploaded() { + return libtorrent_jni.add_torrent_params_total_uploaded_get(swigCPtr, this); + } + + public void setTotal_uploaded(long value) { + libtorrent_jni.add_torrent_params_total_uploaded_set(swigCPtr, this, value); + } + + public long getTotal_downloaded() { + return libtorrent_jni.add_torrent_params_total_downloaded_get(swigCPtr, this); + } + + public void setTotal_downloaded(long value) { + libtorrent_jni.add_torrent_params_total_downloaded_set(swigCPtr, this, value); + } + + public int getActive_time() { + return libtorrent_jni.add_torrent_params_active_time_get(swigCPtr, this); + } + + public void setActive_time(int value) { + libtorrent_jni.add_torrent_params_active_time_set(swigCPtr, this, value); + } + + public int getFinished_time() { + return libtorrent_jni.add_torrent_params_finished_time_get(swigCPtr, this); + } + + public void setFinished_time(int value) { + libtorrent_jni.add_torrent_params_finished_time_set(swigCPtr, this, value); + } + + public int getSeeding_time() { + return libtorrent_jni.add_torrent_params_seeding_time_get(swigCPtr, this); + } + + public void setSeeding_time(int value) { + libtorrent_jni.add_torrent_params_seeding_time_set(swigCPtr, this, value); + } + + public long getAdded_time() { + return libtorrent_jni.add_torrent_params_added_time_get(swigCPtr, this); + } + + public void setAdded_time(long value) { + libtorrent_jni.add_torrent_params_added_time_set(swigCPtr, this, value); + } + + public long getCompleted_time() { + return libtorrent_jni.add_torrent_params_completed_time_get(swigCPtr, this); + } + + public void setCompleted_time(long value) { + libtorrent_jni.add_torrent_params_completed_time_set(swigCPtr, this, value); + } + + public long getLast_seen_complete() { + return libtorrent_jni.add_torrent_params_last_seen_complete_get(swigCPtr, this); + } + + public void setLast_seen_complete(long value) { + libtorrent_jni.add_torrent_params_last_seen_complete_set(swigCPtr, this, value); + } + + public int getNum_complete() { + return libtorrent_jni.add_torrent_params_num_complete_get(swigCPtr, this); + } + + public void setNum_complete(int value) { + libtorrent_jni.add_torrent_params_num_complete_set(swigCPtr, this, value); + } + + public int getNum_incomplete() { + return libtorrent_jni.add_torrent_params_num_incomplete_get(swigCPtr, this); + } + + public void setNum_incomplete(int value) { + libtorrent_jni.add_torrent_params_num_incomplete_set(swigCPtr, this, value); + } + + public int getNum_downloaded() { + return libtorrent_jni.add_torrent_params_num_downloaded_get(swigCPtr, this); + } + + public void setNum_downloaded(int value) { + libtorrent_jni.add_torrent_params_num_downloaded_set(swigCPtr, this, value); + } + + public piece_index_bitfield getHave_pieces() { + long cPtr = libtorrent_jni.add_torrent_params_have_pieces_get(swigCPtr, this); + return (cPtr == 0) ? null : new piece_index_bitfield(cPtr, false); + } + + public void setHave_pieces(piece_index_bitfield value) { + libtorrent_jni.add_torrent_params_have_pieces_set(swigCPtr, this, piece_index_bitfield.getCPtr(value), value); + } + + public piece_index_bitfield getVerified_pieces() { + long cPtr = libtorrent_jni.add_torrent_params_verified_pieces_get(swigCPtr, this); + return (cPtr == 0) ? null : new piece_index_bitfield(cPtr, false); + } + + public void setVerified_pieces(piece_index_bitfield value) { + libtorrent_jni.add_torrent_params_verified_pieces_set(swigCPtr, this, piece_index_bitfield.getCPtr(value), value); + } + + public long getLast_download() { + return libtorrent_jni.add_torrent_params_last_download_get(swigCPtr, this); + } + + public void setLast_download(long value) { + libtorrent_jni.add_torrent_params_last_download_set(swigCPtr, this, value); + } + + public long getLast_upload() { + return libtorrent_jni.add_torrent_params_last_upload_get(swigCPtr, this); + } + + public void setLast_upload(long value) { + libtorrent_jni.add_torrent_params_last_upload_set(swigCPtr, this, value); + } + + public torrent_info ti_ptr() { + long cPtr = libtorrent_jni.add_torrent_params_ti_ptr(swigCPtr, this); + return (cPtr == 0) ? null : new torrent_info(cPtr, false); + } + + public void set_ti(torrent_info ti) { + libtorrent_jni.add_torrent_params_set_ti(swigCPtr, this, torrent_info.getCPtr(ti), ti); + } + + public void set_renamed_files(file_index_string_map renamed_files) { + libtorrent_jni.add_torrent_params_set_renamed_files(swigCPtr, this, file_index_string_map.getCPtr(renamed_files), renamed_files); + } + + public int_vector get_tracker_tiers() { + return new int_vector(libtorrent_jni.add_torrent_params_get_tracker_tiers(swigCPtr, this), true); + } + + public void set_tracker_tiers(int_vector tracker_tiers) { + libtorrent_jni.add_torrent_params_set_tracker_tiers(swigCPtr, this, int_vector.getCPtr(tracker_tiers), tracker_tiers); + } + + public void set_merkle_tree(sha1_hash_vector merkle_tree) { + libtorrent_jni.add_torrent_params_set_merkle_tree(swigCPtr, this, sha1_hash_vector.getCPtr(merkle_tree), merkle_tree); + } + + public tcp_endpoint_vector get_banned_peers() { + return new tcp_endpoint_vector(libtorrent_jni.add_torrent_params_get_banned_peers(swigCPtr, this), true); + } + + public void set_banned_peers(tcp_endpoint_vector banned_peers) { + libtorrent_jni.add_torrent_params_set_banned_peers(swigCPtr, this, tcp_endpoint_vector.getCPtr(banned_peers), banned_peers); + } + + public tcp_endpoint_vector get_peers() { + return new tcp_endpoint_vector(libtorrent_jni.add_torrent_params_get_peers(swigCPtr, this), true); + } + + public void set_peers(tcp_endpoint_vector peers) { + libtorrent_jni.add_torrent_params_set_peers(swigCPtr, this, tcp_endpoint_vector.getCPtr(peers), peers); + } + + public void set_file_priorities2(byte_vector file_priorities) { + libtorrent_jni.add_torrent_params_set_file_priorities2(swigCPtr, this, byte_vector.getCPtr(file_priorities), file_priorities); + } + + public string_int_pair_vector get_dht_nodes() { + return new string_int_pair_vector(libtorrent_jni.add_torrent_params_get_dht_nodes(swigCPtr, this), true); + } + + public void set_dht_nodes(string_int_pair_vector dht_nodes) { + libtorrent_jni.add_torrent_params_set_dht_nodes(swigCPtr, this, string_int_pair_vector.getCPtr(dht_nodes), dht_nodes); + } + + public void set_http_seeds(string_vector http_seeds) { + libtorrent_jni.add_torrent_params_set_http_seeds(swigCPtr, this, string_vector.getCPtr(http_seeds), http_seeds); + } + + public string_vector get_url_seeds() { + return new string_vector(libtorrent_jni.add_torrent_params_get_url_seeds(swigCPtr, this), true); + } + + public void set_url_seeds(string_vector url_seeds) { + libtorrent_jni.add_torrent_params_set_url_seeds(swigCPtr, this, string_vector.getCPtr(url_seeds), url_seeds); + } + + public string_vector get_trackers() { + return new string_vector(libtorrent_jni.add_torrent_params_get_trackers(swigCPtr, this), true); + } + + public void set_trackers(string_vector trackers) { + libtorrent_jni.add_torrent_params_set_trackers(swigCPtr, this, string_vector.getCPtr(trackers), trackers); + } + + public void set_piece_priorities2(byte_vector piece_priorities) { + libtorrent_jni.add_torrent_params_set_piece_priorities2(swigCPtr, this, byte_vector.getCPtr(piece_priorities), piece_priorities); + } + + public void set_default_storage() { + libtorrent_jni.add_torrent_params_set_default_storage(swigCPtr, this); + } + + public void set_disabled_storage() { + libtorrent_jni.add_torrent_params_set_disabled_storage(swigCPtr, this); + } + + public void set_zero_storage() { + libtorrent_jni.add_torrent_params_set_zero_storage(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/address.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/address.java new file mode 100644 index 0000000..74a63b7 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/address.java @@ -0,0 +1,83 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class address { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected address(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public address() { + this(libtorrent_jni.new_address__SWIG_0(), true); + } + + public address(address other) { + this(libtorrent_jni.new_address__SWIG_1(address.getCPtr(other), other), true); + } + + protected static long getCPtr(address obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static int compare(address a1, address a2) { + return libtorrent_jni.address_compare(address.getCPtr(a1), a1, address.getCPtr(a2), a2); + } + + public static address from_string(String str, error_code ec) { + return new address(libtorrent_jni.address_from_string(str, error_code.getCPtr(ec), ec), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_address(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean is_v4() { + return libtorrent_jni.address_is_v4(swigCPtr, this); + } + + public boolean is_v6() { + return libtorrent_jni.address_is_v6(swigCPtr, this); + } + + public String to_string(error_code ec) { + return libtorrent_jni.address_to_string(swigCPtr, this, error_code.getCPtr(ec), ec); + } + + public boolean is_loopback() { + return libtorrent_jni.address_is_loopback(swigCPtr, this); + } + + public boolean is_unspecified() { + return libtorrent_jni.address_is_unspecified(swigCPtr, this); + } + + public boolean is_multicast() { + return libtorrent_jni.address_is_multicast(swigCPtr, this); + } + + public boolean op_lt(address a2) { + return libtorrent_jni.address_op_lt(swigCPtr, this, address.getCPtr(a2), a2); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/address_sha1_hash_pair.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/address_sha1_hash_pair.java new file mode 100644 index 0000000..72b6888 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/address_sha1_hash_pair.java @@ -0,0 +1,69 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class address_sha1_hash_pair { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected address_sha1_hash_pair(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public address_sha1_hash_pair() { + this(libtorrent_jni.new_address_sha1_hash_pair__SWIG_0(), true); + } + + public address_sha1_hash_pair(address first, sha1_hash second) { + this(libtorrent_jni.new_address_sha1_hash_pair__SWIG_1(address.getCPtr(first), first, sha1_hash.getCPtr(second), second), true); + } + + public address_sha1_hash_pair(address_sha1_hash_pair other) { + this(libtorrent_jni.new_address_sha1_hash_pair__SWIG_2(address_sha1_hash_pair.getCPtr(other), other), true); + } + + protected static long getCPtr(address_sha1_hash_pair obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_address_sha1_hash_pair(swigCPtr); + } + swigCPtr = 0; + } + } + + public address getFirst() { + long cPtr = libtorrent_jni.address_sha1_hash_pair_first_get(swigCPtr, this); + return (cPtr == 0) ? null : new address(cPtr, false); + } + + public void setFirst(address value) { + libtorrent_jni.address_sha1_hash_pair_first_set(swigCPtr, this, address.getCPtr(value), value); + } + + public sha1_hash getSecond() { + long cPtr = libtorrent_jni.address_sha1_hash_pair_second_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setSecond(sha1_hash value) { + libtorrent_jni.address_sha1_hash_pair_second_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/address_sha1_hash_pair_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/address_sha1_hash_pair_vector.java new file mode 100644 index 0000000..8b0175a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/address_sha1_hash_pair_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class address_sha1_hash_pair_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected address_sha1_hash_pair_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public address_sha1_hash_pair_vector() { + this(libtorrent_jni.new_address_sha1_hash_pair_vector(), true); + } + + protected static long getCPtr(address_sha1_hash_pair_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_address_sha1_hash_pair_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.address_sha1_hash_pair_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.address_sha1_hash_pair_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.address_sha1_hash_pair_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.address_sha1_hash_pair_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.address_sha1_hash_pair_vector_clear(swigCPtr, this); + } + + public void push_back(address_sha1_hash_pair x) { + libtorrent_jni.address_sha1_hash_pair_vector_push_back(swigCPtr, this, address_sha1_hash_pair.getCPtr(x), x); + } + + public address_sha1_hash_pair get(int i) { + return new address_sha1_hash_pair(libtorrent_jni.address_sha1_hash_pair_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, address_sha1_hash_pair val) { + libtorrent_jni.address_sha1_hash_pair_vector_set(swigCPtr, this, i, address_sha1_hash_pair.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alert.java new file mode 100644 index 0000000..22beece --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alert.java @@ -0,0 +1,517 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class alert { + public final static alert_category_t error_notification = new alert_category_t(libtorrent_jni.alert_error_notification_get(), false); + public final static alert_category_t peer_notification = new alert_category_t(libtorrent_jni.alert_peer_notification_get(), false); + public final static alert_category_t port_mapping_notification = new alert_category_t(libtorrent_jni.alert_port_mapping_notification_get(), false); + public final static alert_category_t storage_notification = new alert_category_t(libtorrent_jni.alert_storage_notification_get(), false); + public final static alert_category_t tracker_notification = new alert_category_t(libtorrent_jni.alert_tracker_notification_get(), false); + public final static alert_category_t connect_notification = new alert_category_t(libtorrent_jni.alert_connect_notification_get(), false); + public final static alert_category_t status_notification = new alert_category_t(libtorrent_jni.alert_status_notification_get(), false); + public final static alert_category_t ip_block_notification = new alert_category_t(libtorrent_jni.alert_ip_block_notification_get(), false); + public final static alert_category_t performance_warning = new alert_category_t(libtorrent_jni.alert_performance_warning_get(), false); + public final static alert_category_t dht_notification = new alert_category_t(libtorrent_jni.alert_dht_notification_get(), false); + public final static alert_category_t stats_notification = new alert_category_t(libtorrent_jni.alert_stats_notification_get(), false); + public final static alert_category_t session_log_notification = new alert_category_t(libtorrent_jni.alert_session_log_notification_get(), false); + public final static alert_category_t torrent_log_notification = new alert_category_t(libtorrent_jni.alert_torrent_log_notification_get(), false); + public final static alert_category_t peer_log_notification = new alert_category_t(libtorrent_jni.alert_peer_log_notification_get(), false); + public final static alert_category_t incoming_request_notification = new alert_category_t(libtorrent_jni.alert_incoming_request_notification_get(), false); + public final static alert_category_t dht_log_notification = new alert_category_t(libtorrent_jni.alert_dht_log_notification_get(), false); + public final static alert_category_t dht_operation_notification = new alert_category_t(libtorrent_jni.alert_dht_operation_notification_get(), false); + public final static alert_category_t port_mapping_log_notification = new alert_category_t(libtorrent_jni.alert_port_mapping_log_notification_get(), false); + public final static alert_category_t picker_log_notification = new alert_category_t(libtorrent_jni.alert_picker_log_notification_get(), false); + public final static alert_category_t file_progress_notification = new alert_category_t(libtorrent_jni.alert_file_progress_notification_get(), false); + public final static alert_category_t piece_progress_notification = new alert_category_t(libtorrent_jni.alert_piece_progress_notification_get(), false); + public final static alert_category_t upload_notification = new alert_category_t(libtorrent_jni.alert_upload_notification_get(), false); + public final static alert_category_t block_progress_notification = new alert_category_t(libtorrent_jni.alert_block_progress_notification_get(), false); + public final static alert_category_t all_categories = new alert_category_t(libtorrent_jni.alert_all_categories_get(), false); + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected alert(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + protected static long getCPtr(alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static torrent_removed_alert cast_to_torrent_removed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_torrent_removed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new torrent_removed_alert(cPtr, false); + } + + public static read_piece_alert cast_to_read_piece_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_read_piece_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new read_piece_alert(cPtr, false); + } + + public static file_completed_alert cast_to_file_completed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_file_completed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new file_completed_alert(cPtr, false); + } + + public static file_renamed_alert cast_to_file_renamed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_file_renamed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new file_renamed_alert(cPtr, false); + } + + public static file_rename_failed_alert cast_to_file_rename_failed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_file_rename_failed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new file_rename_failed_alert(cPtr, false); + } + + public static performance_alert cast_to_performance_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_performance_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new performance_alert(cPtr, false); + } + + public static state_changed_alert cast_to_state_changed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_state_changed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new state_changed_alert(cPtr, false); + } + + public static tracker_error_alert cast_to_tracker_error_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_tracker_error_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new tracker_error_alert(cPtr, false); + } + + public static tracker_warning_alert cast_to_tracker_warning_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_tracker_warning_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new tracker_warning_alert(cPtr, false); + } + + public static scrape_reply_alert cast_to_scrape_reply_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_scrape_reply_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new scrape_reply_alert(cPtr, false); + } + + public static scrape_failed_alert cast_to_scrape_failed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_scrape_failed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new scrape_failed_alert(cPtr, false); + } + + public static tracker_reply_alert cast_to_tracker_reply_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_tracker_reply_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new tracker_reply_alert(cPtr, false); + } + + public static dht_reply_alert cast_to_dht_reply_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_dht_reply_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new dht_reply_alert(cPtr, false); + } + + public static tracker_announce_alert cast_to_tracker_announce_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_tracker_announce_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new tracker_announce_alert(cPtr, false); + } + + public static hash_failed_alert cast_to_hash_failed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_hash_failed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new hash_failed_alert(cPtr, false); + } + + public static peer_ban_alert cast_to_peer_ban_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_peer_ban_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new peer_ban_alert(cPtr, false); + } + + public static peer_unsnubbed_alert cast_to_peer_unsnubbed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_peer_unsnubbed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new peer_unsnubbed_alert(cPtr, false); + } + + public static peer_snubbed_alert cast_to_peer_snubbed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_peer_snubbed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new peer_snubbed_alert(cPtr, false); + } + + public static peer_error_alert cast_to_peer_error_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_peer_error_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new peer_error_alert(cPtr, false); + } + + public static peer_connect_alert cast_to_peer_connect_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_peer_connect_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new peer_connect_alert(cPtr, false); + } + + public static peer_disconnected_alert cast_to_peer_disconnected_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_peer_disconnected_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new peer_disconnected_alert(cPtr, false); + } + + public static invalid_request_alert cast_to_invalid_request_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_invalid_request_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new invalid_request_alert(cPtr, false); + } + + public static torrent_finished_alert cast_to_torrent_finished_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_torrent_finished_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new torrent_finished_alert(cPtr, false); + } + + public static piece_finished_alert cast_to_piece_finished_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_piece_finished_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new piece_finished_alert(cPtr, false); + } + + public static request_dropped_alert cast_to_request_dropped_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_request_dropped_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new request_dropped_alert(cPtr, false); + } + + public static block_timeout_alert cast_to_block_timeout_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_block_timeout_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new block_timeout_alert(cPtr, false); + } + + public static block_finished_alert cast_to_block_finished_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_block_finished_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new block_finished_alert(cPtr, false); + } + + public static block_downloading_alert cast_to_block_downloading_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_block_downloading_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new block_downloading_alert(cPtr, false); + } + + public static unwanted_block_alert cast_to_unwanted_block_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_unwanted_block_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new unwanted_block_alert(cPtr, false); + } + + public static storage_moved_alert cast_to_storage_moved_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_storage_moved_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new storage_moved_alert(cPtr, false); + } + + public static storage_moved_failed_alert cast_to_storage_moved_failed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_storage_moved_failed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new storage_moved_failed_alert(cPtr, false); + } + + public static torrent_deleted_alert cast_to_torrent_deleted_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_torrent_deleted_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new torrent_deleted_alert(cPtr, false); + } + + public static torrent_delete_failed_alert cast_to_torrent_delete_failed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_torrent_delete_failed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new torrent_delete_failed_alert(cPtr, false); + } + + public static save_resume_data_alert cast_to_save_resume_data_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_save_resume_data_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new save_resume_data_alert(cPtr, false); + } + + public static save_resume_data_failed_alert cast_to_save_resume_data_failed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_save_resume_data_failed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new save_resume_data_failed_alert(cPtr, false); + } + + public static torrent_paused_alert cast_to_torrent_paused_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_torrent_paused_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new torrent_paused_alert(cPtr, false); + } + + public static torrent_resumed_alert cast_to_torrent_resumed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_torrent_resumed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new torrent_resumed_alert(cPtr, false); + } + + public static torrent_checked_alert cast_to_torrent_checked_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_torrent_checked_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new torrent_checked_alert(cPtr, false); + } + + public static url_seed_alert cast_to_url_seed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_url_seed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new url_seed_alert(cPtr, false); + } + + public static file_error_alert cast_to_file_error_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_file_error_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new file_error_alert(cPtr, false); + } + + public static metadata_failed_alert cast_to_metadata_failed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_metadata_failed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new metadata_failed_alert(cPtr, false); + } + + public static metadata_received_alert cast_to_metadata_received_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_metadata_received_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new metadata_received_alert(cPtr, false); + } + + public static udp_error_alert cast_to_udp_error_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_udp_error_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new udp_error_alert(cPtr, false); + } + + public static external_ip_alert cast_to_external_ip_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_external_ip_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new external_ip_alert(cPtr, false); + } + + public static listen_failed_alert cast_to_listen_failed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_listen_failed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new listen_failed_alert(cPtr, false); + } + + public static listen_succeeded_alert cast_to_listen_succeeded_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_listen_succeeded_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new listen_succeeded_alert(cPtr, false); + } + + public static portmap_error_alert cast_to_portmap_error_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_portmap_error_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new portmap_error_alert(cPtr, false); + } + + public static portmap_alert cast_to_portmap_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_portmap_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new portmap_alert(cPtr, false); + } + + public static portmap_log_alert cast_to_portmap_log_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_portmap_log_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new portmap_log_alert(cPtr, false); + } + + public static fastresume_rejected_alert cast_to_fastresume_rejected_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_fastresume_rejected_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new fastresume_rejected_alert(cPtr, false); + } + + public static peer_blocked_alert cast_to_peer_blocked_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_peer_blocked_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new peer_blocked_alert(cPtr, false); + } + + public static dht_announce_alert cast_to_dht_announce_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_dht_announce_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new dht_announce_alert(cPtr, false); + } + + public static dht_get_peers_alert cast_to_dht_get_peers_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_dht_get_peers_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new dht_get_peers_alert(cPtr, false); + } + + public static stats_alert cast_to_stats_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_stats_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new stats_alert(cPtr, false); + } + + public static cache_flushed_alert cast_to_cache_flushed_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_cache_flushed_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new cache_flushed_alert(cPtr, false); + } + + public static lsd_peer_alert cast_to_lsd_peer_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_lsd_peer_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new lsd_peer_alert(cPtr, false); + } + + public static trackerid_alert cast_to_trackerid_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_trackerid_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new trackerid_alert(cPtr, false); + } + + public static dht_bootstrap_alert cast_to_dht_bootstrap_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_dht_bootstrap_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new dht_bootstrap_alert(cPtr, false); + } + + public static torrent_error_alert cast_to_torrent_error_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_torrent_error_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new torrent_error_alert(cPtr, false); + } + + public static torrent_need_cert_alert cast_to_torrent_need_cert_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_torrent_need_cert_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new torrent_need_cert_alert(cPtr, false); + } + + public static incoming_connection_alert cast_to_incoming_connection_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_incoming_connection_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new incoming_connection_alert(cPtr, false); + } + + public static add_torrent_alert cast_to_add_torrent_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_add_torrent_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new add_torrent_alert(cPtr, false); + } + + public static state_update_alert cast_to_state_update_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_state_update_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new state_update_alert(cPtr, false); + } + + public static session_stats_alert cast_to_session_stats_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_session_stats_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new session_stats_alert(cPtr, false); + } + + public static dht_error_alert cast_to_dht_error_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_dht_error_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new dht_error_alert(cPtr, false); + } + + public static dht_immutable_item_alert cast_to_dht_immutable_item_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_dht_immutable_item_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new dht_immutable_item_alert(cPtr, false); + } + + public static dht_mutable_item_alert cast_to_dht_mutable_item_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_dht_mutable_item_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new dht_mutable_item_alert(cPtr, false); + } + + public static dht_put_alert cast_to_dht_put_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_dht_put_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new dht_put_alert(cPtr, false); + } + + public static i2p_alert cast_to_i2p_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_i2p_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new i2p_alert(cPtr, false); + } + + public static dht_outgoing_get_peers_alert cast_to_dht_outgoing_get_peers_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_dht_outgoing_get_peers_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new dht_outgoing_get_peers_alert(cPtr, false); + } + + public static log_alert cast_to_log_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_log_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new log_alert(cPtr, false); + } + + public static torrent_log_alert cast_to_torrent_log_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_torrent_log_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new torrent_log_alert(cPtr, false); + } + + public static peer_log_alert cast_to_peer_log_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_peer_log_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new peer_log_alert(cPtr, false); + } + + public static lsd_error_alert cast_to_lsd_error_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_lsd_error_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new lsd_error_alert(cPtr, false); + } + + public static dht_stats_alert cast_to_dht_stats_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_dht_stats_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new dht_stats_alert(cPtr, false); + } + + public static incoming_request_alert cast_to_incoming_request_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_incoming_request_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new incoming_request_alert(cPtr, false); + } + + public static dht_log_alert cast_to_dht_log_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_dht_log_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new dht_log_alert(cPtr, false); + } + + public static dht_pkt_alert cast_to_dht_pkt_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_dht_pkt_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new dht_pkt_alert(cPtr, false); + } + + public static dht_get_peers_reply_alert cast_to_dht_get_peers_reply_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_dht_get_peers_reply_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new dht_get_peers_reply_alert(cPtr, false); + } + + public static dht_direct_response_alert cast_to_dht_direct_response_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_dht_direct_response_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new dht_direct_response_alert(cPtr, false); + } + + public static picker_log_alert cast_to_picker_log_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_picker_log_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new picker_log_alert(cPtr, false); + } + + public static session_error_alert cast_to_session_error_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_session_error_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new session_error_alert(cPtr, false); + } + + public static dht_live_nodes_alert cast_to_dht_live_nodes_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_dht_live_nodes_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new dht_live_nodes_alert(cPtr, false); + } + + public static session_stats_header_alert cast_to_session_stats_header_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_session_stats_header_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new session_stats_header_alert(cPtr, false); + } + + public static dht_sample_infohashes_alert cast_to_dht_sample_infohashes_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_dht_sample_infohashes_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new dht_sample_infohashes_alert(cPtr, false); + } + + public static block_uploaded_alert cast_to_block_uploaded_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_block_uploaded_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new block_uploaded_alert(cPtr, false); + } + + public static alerts_dropped_alert cast_to_alerts_dropped_alert(alert a) { + long cPtr = libtorrent_jni.alert_cast_to_alerts_dropped_alert(alert.getCPtr(a), a); + return (cPtr == 0) ? null : new alerts_dropped_alert(cPtr, false); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_alert(swigCPtr); + } + swigCPtr = 0; + } + } + + public int type() { + return libtorrent_jni.alert_type(swigCPtr, this); + } + + public String what() { + return libtorrent_jni.alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.alert_message(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.alert_category(swigCPtr, this), true); + } + + public long get_timestamp() { + return libtorrent_jni.alert_get_timestamp(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alert_category_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alert_category_t.java new file mode 100644 index 0000000..ab5cca9 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alert_category_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class alert_category_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected alert_category_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public alert_category_t() { + this(libtorrent_jni.new_alert_category_t(), true); + } + + protected static long getCPtr(alert_category_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static alert_category_t all() { + return new alert_category_t(libtorrent_jni.alert_category_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_alert_category_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.alert_category_t_nonZero(swigCPtr, this); + } + + public boolean eq(alert_category_t f) { + return libtorrent_jni.alert_category_t_eq(swigCPtr, this, alert_category_t.getCPtr(f), f); + } + + public boolean ne(alert_category_t f) { + return libtorrent_jni.alert_category_t_ne(swigCPtr, this, alert_category_t.getCPtr(f), f); + } + + public alert_category_t or_(alert_category_t other) { + return new alert_category_t(libtorrent_jni.alert_category_t_or_(swigCPtr, this, alert_category_t.getCPtr(other), other), true); + } + + public alert_category_t and_(alert_category_t other) { + return new alert_category_t(libtorrent_jni.alert_category_t_and_(swigCPtr, this, alert_category_t.getCPtr(other), other), true); + } + + public alert_category_t xor(alert_category_t other) { + return new alert_category_t(libtorrent_jni.alert_category_t_xor(swigCPtr, this, alert_category_t.getCPtr(other), other), true); + } + + public alert_category_t inv() { + return new alert_category_t(libtorrent_jni.alert_category_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.alert_category_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alert_notify_callback.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alert_notify_callback.java new file mode 100644 index 0000000..1cffe18 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alert_notify_callback.java @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class alert_notify_callback { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected alert_notify_callback(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public alert_notify_callback() { + this(libtorrent_jni.new_alert_notify_callback(), true); + libtorrent_jni.alert_notify_callback_director_connect(this, swigCPtr, true, true); + } + + protected static long getCPtr(alert_notify_callback obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_alert_notify_callback(swigCPtr); + } + swigCPtr = 0; + } + } + + protected void swigDirectorDisconnect() { + swigCMemOwn = false; + delete(); + } + + public void swigReleaseOwnership() { + swigCMemOwn = false; + libtorrent_jni.alert_notify_callback_change_ownership(this, swigCPtr, false); + } + + public void swigTakeOwnership() { + swigCMemOwn = true; + libtorrent_jni.alert_notify_callback_change_ownership(this, swigCPtr, true); + } + + public void on_alert() { + if (getClass() == alert_notify_callback.class) + libtorrent_jni.alert_notify_callback_on_alert(swigCPtr, this); + else + libtorrent_jni.alert_notify_callback_on_alertSwigExplicitalert_notify_callback(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alert_priority.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alert_priority.java new file mode 100644 index 0000000..1efd361 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alert_priority.java @@ -0,0 +1,54 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public final class alert_priority { + public final static alert_priority alert_priority_normal = new alert_priority("alert_priority_normal", libtorrent_jni.alert_priority_normal_get()); + public final static alert_priority alert_priority_high = new alert_priority("alert_priority_high"); + public final static alert_priority alert_priority_critical = new alert_priority("alert_priority_critical"); + private static final alert_priority[] swigValues = {alert_priority_normal, alert_priority_high, alert_priority_critical}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private alert_priority(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private alert_priority(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private alert_priority(String swigName, alert_priority swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static alert_priority swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + alert_priority.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alert_ptr_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alert_ptr_vector.java new file mode 100644 index 0000000..c6c672c --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alert_ptr_vector.java @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class alert_ptr_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected alert_ptr_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public alert_ptr_vector() { + this(libtorrent_jni.new_alert_ptr_vector(), true); + } + + protected static long getCPtr(alert_ptr_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_alert_ptr_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.alert_ptr_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.alert_ptr_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.alert_ptr_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.alert_ptr_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.alert_ptr_vector_clear(swigCPtr, this); + } + + public void push_back(alert x) { + libtorrent_jni.alert_ptr_vector_push_back(swigCPtr, this, alert.getCPtr(x), x); + } + + public alert get(int i) { + long cPtr = libtorrent_jni.alert_ptr_vector_get(swigCPtr, this, i); + return (cPtr == 0) ? null : new alert(cPtr, false); + } + + public void set(int i, alert val) { + libtorrent_jni.alert_ptr_vector_set(swigCPtr, this, i, alert.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alerts_dropped_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alerts_dropped_alert.java new file mode 100644 index 0000000..3b0b968 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/alerts_dropped_alert.java @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class alerts_dropped_alert extends alert { + public final static int priority = libtorrent_jni.alerts_dropped_alert_priority_get(); + public final static int alert_type = libtorrent_jni.alerts_dropped_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.alerts_dropped_alert_static_category_get(), false); + private transient long swigCPtr; + + protected alerts_dropped_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.alerts_dropped_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(alerts_dropped_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_alerts_dropped_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.alerts_dropped_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.alerts_dropped_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.alerts_dropped_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.alerts_dropped_alert_message(swigCPtr, this); + } + + public SWIGTYPE_p_std__bitsetT_97_t getDropped_alerts() { + long cPtr = libtorrent_jni.alerts_dropped_alert_dropped_alerts_get(swigCPtr, this); + return (cPtr == 0) ? null : new SWIGTYPE_p_std__bitsetT_97_t(cPtr, false); + } + + public void setDropped_alerts(SWIGTYPE_p_std__bitsetT_97_t value) { + libtorrent_jni.alerts_dropped_alert_dropped_alerts_set(swigCPtr, this, SWIGTYPE_p_std__bitsetT_97_t.getCPtr(value)); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/announce_endpoint.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/announce_endpoint.java new file mode 100644 index 0000000..7baac57 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/announce_endpoint.java @@ -0,0 +1,113 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class announce_endpoint { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected announce_endpoint(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + protected static long getCPtr(announce_endpoint obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_announce_endpoint(swigCPtr); + } + swigCPtr = 0; + } + } + + public error_code getLast_error() { + long cPtr = libtorrent_jni.announce_endpoint_last_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public void setLast_error(error_code value) { + libtorrent_jni.announce_endpoint_last_error_set(swigCPtr, this, error_code.getCPtr(value), value); + } + + public tcp_endpoint getLocal_endpoint() { + long cPtr = libtorrent_jni.announce_endpoint_local_endpoint_get(swigCPtr, this); + return (cPtr == 0) ? null : new tcp_endpoint(cPtr, false); + } + + public void setLocal_endpoint(tcp_endpoint value) { + libtorrent_jni.announce_endpoint_local_endpoint_set(swigCPtr, this, tcp_endpoint.getCPtr(value), value); + } + + public int getScrape_incomplete() { + return libtorrent_jni.announce_endpoint_scrape_incomplete_get(swigCPtr, this); + } + + public void setScrape_incomplete(int value) { + libtorrent_jni.announce_endpoint_scrape_incomplete_set(swigCPtr, this, value); + } + + public int getScrape_complete() { + return libtorrent_jni.announce_endpoint_scrape_complete_get(swigCPtr, this); + } + + public void setScrape_complete(int value) { + libtorrent_jni.announce_endpoint_scrape_complete_set(swigCPtr, this, value); + } + + public int getScrape_downloaded() { + return libtorrent_jni.announce_endpoint_scrape_downloaded_get(swigCPtr, this); + } + + public void setScrape_downloaded(int value) { + libtorrent_jni.announce_endpoint_scrape_downloaded_set(swigCPtr, this, value); + } + + public short getFails() { + return libtorrent_jni.announce_endpoint_fails_get(swigCPtr, this); + } + + public void setFails(short value) { + libtorrent_jni.announce_endpoint_fails_set(swigCPtr, this, value); + } + + public boolean getUpdating() { + return libtorrent_jni.announce_endpoint_updating_get(swigCPtr, this); + } + + public void setUpdating(boolean value) { + libtorrent_jni.announce_endpoint_updating_set(swigCPtr, this, value); + } + + public boolean is_working() { + return libtorrent_jni.announce_endpoint_is_working(swigCPtr, this); + } + + public byte_vector get_message() { + return new byte_vector(libtorrent_jni.announce_endpoint_get_message(swigCPtr, this), true); + } + + public long get_next_announce() { + return libtorrent_jni.announce_endpoint_get_next_announce(swigCPtr, this); + } + + public long get_min_announce() { + return libtorrent_jni.announce_endpoint_get_min_announce(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/announce_endpoint_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/announce_endpoint_vector.java new file mode 100644 index 0000000..d025ce1 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/announce_endpoint_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class announce_endpoint_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected announce_endpoint_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public announce_endpoint_vector() { + this(libtorrent_jni.new_announce_endpoint_vector(), true); + } + + protected static long getCPtr(announce_endpoint_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_announce_endpoint_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.announce_endpoint_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.announce_endpoint_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.announce_endpoint_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.announce_endpoint_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.announce_endpoint_vector_clear(swigCPtr, this); + } + + public void push_back(announce_endpoint x) { + libtorrent_jni.announce_endpoint_vector_push_back(swigCPtr, this, announce_endpoint.getCPtr(x), x); + } + + public announce_endpoint get(int i) { + return new announce_endpoint(libtorrent_jni.announce_endpoint_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, announce_endpoint val) { + libtorrent_jni.announce_endpoint_vector_set(swigCPtr, this, i, announce_endpoint.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/announce_entry.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/announce_entry.java new file mode 100644 index 0000000..b2382c5 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/announce_entry.java @@ -0,0 +1,145 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class announce_entry { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected announce_entry(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public announce_entry(byte_vector u) { + this(libtorrent_jni.new_announce_entry(byte_vector.getCPtr(u), u), true); + } + + protected static long getCPtr(announce_entry obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_announce_entry(swigCPtr); + } + swigCPtr = 0; + } + } + + public announce_endpoint_vector getEndpoints() { + long cPtr = libtorrent_jni.announce_entry_endpoints_get(swigCPtr, this); + return (cPtr == 0) ? null : new announce_endpoint_vector(cPtr, false); + } + + public void setEndpoints(announce_endpoint_vector value) { + libtorrent_jni.announce_entry_endpoints_set(swigCPtr, this, announce_endpoint_vector.getCPtr(value), value); + } + + public short getTier() { + return libtorrent_jni.announce_entry_tier_get(swigCPtr, this); + } + + public void setTier(short value) { + libtorrent_jni.announce_entry_tier_set(swigCPtr, this, value); + } + + public short getFail_limit() { + return libtorrent_jni.announce_entry_fail_limit_get(swigCPtr, this); + } + + public void setFail_limit(short value) { + libtorrent_jni.announce_entry_fail_limit_set(swigCPtr, this, value); + } + + public short getSource() { + return libtorrent_jni.announce_entry_source_get(swigCPtr, this); + } + + public void setSource(short value) { + libtorrent_jni.announce_entry_source_set(swigCPtr, this, value); + } + + public boolean getVerified() { + return libtorrent_jni.announce_entry_verified_get(swigCPtr, this); + } + + public void setVerified(boolean value) { + libtorrent_jni.announce_entry_verified_set(swigCPtr, this, value); + } + + public byte_vector get_url() { + return new byte_vector(libtorrent_jni.announce_entry_get_url(swigCPtr, this), true); + } + + public void set_url(byte_vector s) { + libtorrent_jni.announce_entry_set_url(swigCPtr, this, byte_vector.getCPtr(s), s); + } + + public byte_vector get_trackerid() { + return new byte_vector(libtorrent_jni.announce_entry_get_trackerid(swigCPtr, this), true); + } + + public void set_trackerid(byte_vector s) { + libtorrent_jni.announce_entry_set_trackerid(swigCPtr, this, byte_vector.getCPtr(s), s); + } + + public final static class tracker_source { + public final static announce_entry.tracker_source source_torrent = new announce_entry.tracker_source("source_torrent", libtorrent_jni.announce_entry_source_torrent_get()); + public final static announce_entry.tracker_source source_client = new announce_entry.tracker_source("source_client", libtorrent_jni.announce_entry_source_client_get()); + public final static announce_entry.tracker_source source_magnet_link = new announce_entry.tracker_source("source_magnet_link", libtorrent_jni.announce_entry_source_magnet_link_get()); + public final static announce_entry.tracker_source source_tex = new announce_entry.tracker_source("source_tex", libtorrent_jni.announce_entry_source_tex_get()); + private static final tracker_source[] swigValues = {source_torrent, source_client, source_magnet_link, source_tex}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private tracker_source(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private tracker_source(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private tracker_source(String swigName, tracker_source swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static tracker_source swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + tracker_source.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/announce_entry_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/announce_entry_vector.java new file mode 100644 index 0000000..79fa956 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/announce_entry_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class announce_entry_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected announce_entry_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public announce_entry_vector() { + this(libtorrent_jni.new_announce_entry_vector(), true); + } + + protected static long getCPtr(announce_entry_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_announce_entry_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.announce_entry_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.announce_entry_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.announce_entry_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.announce_entry_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.announce_entry_vector_clear(swigCPtr, this); + } + + public void push_back(announce_entry x) { + libtorrent_jni.announce_entry_vector_push_back(swigCPtr, this, announce_entry.getCPtr(x), x); + } + + public announce_entry get(int i) { + return new announce_entry(libtorrent_jni.announce_entry_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, announce_entry val) { + libtorrent_jni.announce_entry_vector_set(swigCPtr, this, i, announce_entry.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bandwidth_state_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bandwidth_state_flags_t.java new file mode 100644 index 0000000..adbeeec --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bandwidth_state_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class bandwidth_state_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected bandwidth_state_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public bandwidth_state_flags_t() { + this(libtorrent_jni.new_bandwidth_state_flags_t(), true); + } + + protected static long getCPtr(bandwidth_state_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static bandwidth_state_flags_t all() { + return new bandwidth_state_flags_t(libtorrent_jni.bandwidth_state_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_bandwidth_state_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.bandwidth_state_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(bandwidth_state_flags_t f) { + return libtorrent_jni.bandwidth_state_flags_t_eq(swigCPtr, this, bandwidth_state_flags_t.getCPtr(f), f); + } + + public boolean ne(bandwidth_state_flags_t f) { + return libtorrent_jni.bandwidth_state_flags_t_ne(swigCPtr, this, bandwidth_state_flags_t.getCPtr(f), f); + } + + public bandwidth_state_flags_t or_(bandwidth_state_flags_t other) { + return new bandwidth_state_flags_t(libtorrent_jni.bandwidth_state_flags_t_or_(swigCPtr, this, bandwidth_state_flags_t.getCPtr(other), other), true); + } + + public bandwidth_state_flags_t and_(bandwidth_state_flags_t other) { + return new bandwidth_state_flags_t(libtorrent_jni.bandwidth_state_flags_t_and_(swigCPtr, this, bandwidth_state_flags_t.getCPtr(other), other), true); + } + + public bandwidth_state_flags_t xor(bandwidth_state_flags_t other) { + return new bandwidth_state_flags_t(libtorrent_jni.bandwidth_state_flags_t_xor(swigCPtr, this, bandwidth_state_flags_t.getCPtr(other), other), true); + } + + public bandwidth_state_flags_t inv() { + return new bandwidth_state_flags_t(libtorrent_jni.bandwidth_state_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.bandwidth_state_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bdecode_errors.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bdecode_errors.java new file mode 100644 index 0000000..ca72e87 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bdecode_errors.java @@ -0,0 +1,60 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public final class bdecode_errors { + public final static bdecode_errors bdecode_no_error = new bdecode_errors("bdecode_no_error", libtorrent_jni.bdecode_no_error_get()); + public final static bdecode_errors expected_digit = new bdecode_errors("expected_digit"); + public final static bdecode_errors expected_colon = new bdecode_errors("expected_colon"); + public final static bdecode_errors unexpected_eof = new bdecode_errors("unexpected_eof"); + public final static bdecode_errors expected_value = new bdecode_errors("expected_value"); + public final static bdecode_errors depth_exceeded = new bdecode_errors("depth_exceeded"); + public final static bdecode_errors limit_exceeded = new bdecode_errors("limit_exceeded"); + public final static bdecode_errors overflow = new bdecode_errors("overflow"); + public final static bdecode_errors error_code_max = new bdecode_errors("error_code_max"); + private static final bdecode_errors[] swigValues = {bdecode_no_error, expected_digit, expected_colon, unexpected_eof, expected_value, depth_exceeded, limit_exceeded, overflow, error_code_max}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private bdecode_errors(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private bdecode_errors(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private bdecode_errors(String swigName, bdecode_errors swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static bdecode_errors swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + bdecode_errors.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bdecode_node.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bdecode_node.java new file mode 100644 index 0000000..cb75520 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bdecode_node.java @@ -0,0 +1,193 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class bdecode_node { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected bdecode_node(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public bdecode_node() { + this(libtorrent_jni.new_bdecode_node__SWIG_0(), true); + } + + public bdecode_node(bdecode_node arg0) { + this(libtorrent_jni.new_bdecode_node__SWIG_1(bdecode_node.getCPtr(arg0), arg0), true); + } + + protected static long getCPtr(bdecode_node obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static String to_string(bdecode_node e, boolean single_line, int indent) { + return libtorrent_jni.bdecode_node_to_string(bdecode_node.getCPtr(e), e, single_line, indent); + } + + public static int bdecode(byte_vector buffer, bdecode_node ret, error_code ec) { + return libtorrent_jni.bdecode_node_bdecode(byte_vector.getCPtr(buffer), buffer, bdecode_node.getCPtr(ret), ret, error_code.getCPtr(ec), ec); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_bdecode_node(swigCPtr); + } + swigCPtr = 0; + } + } + + public bdecode_node.type_t type() { + return bdecode_node.type_t.swigToEnum(libtorrent_jni.bdecode_node_type(swigCPtr, this)); + } + + public boolean op_bool() { + return libtorrent_jni.bdecode_node_op_bool(swigCPtr, this); + } + + public bdecode_node list_at(int i) { + return new bdecode_node(libtorrent_jni.bdecode_node_list_at(swigCPtr, this, i), true); + } + + public long list_int_value_at(int i, long default_val) { + return libtorrent_jni.bdecode_node_list_int_value_at__SWIG_0(swigCPtr, this, i, default_val); + } + + public long list_int_value_at(int i) { + return libtorrent_jni.bdecode_node_list_int_value_at__SWIG_1(swigCPtr, this, i); + } + + public int list_size() { + return libtorrent_jni.bdecode_node_list_size(swigCPtr, this); + } + + public string_view_bdecode_node_pair dict_at(int i) { + return new string_view_bdecode_node_pair(libtorrent_jni.bdecode_node_dict_at(swigCPtr, this, i), true); + } + + public int dict_size() { + return libtorrent_jni.bdecode_node_dict_size(swigCPtr, this); + } + + public long int_value() { + return libtorrent_jni.bdecode_node_int_value(swigCPtr, this); + } + + public int string_length() { + return libtorrent_jni.bdecode_node_string_length(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.bdecode_node_clear(swigCPtr, this); + } + + public String list_string_value_at_s(int i, String default_val) { + return libtorrent_jni.bdecode_node_list_string_value_at_s__SWIG_0(swigCPtr, this, i, default_val); + } + + public String list_string_value_at_s(int i) { + return libtorrent_jni.bdecode_node_list_string_value_at_s__SWIG_1(swigCPtr, this, i); + } + + public bdecode_node dict_find_s(String key) { + return new bdecode_node(libtorrent_jni.bdecode_node_dict_find_s(swigCPtr, this, key), true); + } + + public bdecode_node dict_find_dict_s(String key) { + return new bdecode_node(libtorrent_jni.bdecode_node_dict_find_dict_s(swigCPtr, this, key), true); + } + + public bdecode_node dict_find_list_s(String key) { + return new bdecode_node(libtorrent_jni.bdecode_node_dict_find_list_s(swigCPtr, this, key), true); + } + + public bdecode_node dict_find_string_s(String key) { + return new bdecode_node(libtorrent_jni.bdecode_node_dict_find_string_s(swigCPtr, this, key), true); + } + + public bdecode_node dict_find_int_s(String key) { + return new bdecode_node(libtorrent_jni.bdecode_node_dict_find_int_s(swigCPtr, this, key), true); + } + + public String dict_find_string_value_s(String key, String default_value) { + return libtorrent_jni.bdecode_node_dict_find_string_value_s__SWIG_0(swigCPtr, this, key, default_value); + } + + public String dict_find_string_value_s(String key) { + return libtorrent_jni.bdecode_node_dict_find_string_value_s__SWIG_1(swigCPtr, this, key); + } + + public long dict_find_int_value_s(String key, long default_val) { + return libtorrent_jni.bdecode_node_dict_find_int_value_s__SWIG_0(swigCPtr, this, key, default_val); + } + + public long dict_find_int_value_s(String key) { + return libtorrent_jni.bdecode_node_dict_find_int_value_s__SWIG_1(swigCPtr, this, key); + } + + public String string_value_s() { + return libtorrent_jni.bdecode_node_string_value_s(swigCPtr, this); + } + + public final static class type_t { + public final static bdecode_node.type_t none_t = new bdecode_node.type_t("none_t"); + public final static bdecode_node.type_t dict_t = new bdecode_node.type_t("dict_t"); + public final static bdecode_node.type_t list_t = new bdecode_node.type_t("list_t"); + public final static bdecode_node.type_t string_t = new bdecode_node.type_t("string_t"); + public final static bdecode_node.type_t int_t = new bdecode_node.type_t("int_t"); + private static final type_t[] swigValues = {none_t, dict_t, list_t, string_t, int_t}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private type_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private type_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private type_t(String swigName, type_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static type_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + type_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bitset_96.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bitset_96.java new file mode 100644 index 0000000..8fee390 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bitset_96.java @@ -0,0 +1,71 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class bitset_96 { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected bitset_96(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public bitset_96() { + this(libtorrent_jni.new_bitset_96(), true); + } + + protected static long getCPtr(bitset_96 obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_bitset_96(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean test(long pos) { + return libtorrent_jni.bitset_96_test(swigCPtr, this, pos); + } + + public boolean all() { + return libtorrent_jni.bitset_96_all(swigCPtr, this); + } + + public boolean any() { + return libtorrent_jni.bitset_96_any(swigCPtr, this); + } + + public boolean none() { + return libtorrent_jni.bitset_96_none(swigCPtr, this); + } + + public long count() { + return libtorrent_jni.bitset_96_count(swigCPtr, this); + } + + public long size() { + return libtorrent_jni.bitset_96_size(swigCPtr, this); + } + + public boolean get(long pos) { + return libtorrent_jni.bitset_96_get(swigCPtr, this, pos); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_downloading_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_downloading_alert.java new file mode 100644 index 0000000..a5ce9af --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_downloading_alert.java @@ -0,0 +1,65 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class block_downloading_alert extends peer_alert { + public final static int priority = libtorrent_jni.block_downloading_alert_priority_get(); + public final static int alert_type = libtorrent_jni.block_downloading_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.block_downloading_alert_static_category_get(), false); + private transient long swigCPtr; + + protected block_downloading_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.block_downloading_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(block_downloading_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_block_downloading_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.block_downloading_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.block_downloading_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.block_downloading_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.block_downloading_alert_message(swigCPtr, this); + } + + public int getBlock_index() { + return libtorrent_jni.block_downloading_alert_block_index_get(swigCPtr, this); + } + + public int getPiece_index() { + return libtorrent_jni.block_downloading_alert_piece_index_get(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_finished_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_finished_alert.java new file mode 100644 index 0000000..293b75e --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_finished_alert.java @@ -0,0 +1,65 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class block_finished_alert extends peer_alert { + public final static int priority = libtorrent_jni.block_finished_alert_priority_get(); + public final static int alert_type = libtorrent_jni.block_finished_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.block_finished_alert_static_category_get(), false); + private transient long swigCPtr; + + protected block_finished_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.block_finished_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(block_finished_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_block_finished_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.block_finished_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.block_finished_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.block_finished_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.block_finished_alert_message(swigCPtr, this); + } + + public int getBlock_index() { + return libtorrent_jni.block_finished_alert_block_index_get(swigCPtr, this); + } + + public int getPiece_index() { + return libtorrent_jni.block_finished_alert_piece_index_get(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_info.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_info.java new file mode 100644 index 0000000..12ea36b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_info.java @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class block_info { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected block_info(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public block_info() { + this(libtorrent_jni.new_block_info(), true); + } + + protected static long getCPtr(block_info obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_block_info(swigCPtr); + } + swigCPtr = 0; + } + } + + public tcp_endpoint peer() { + return new tcp_endpoint(libtorrent_jni.block_info_peer(swigCPtr, this), true); + } + + public long getBytes_progress() { + return libtorrent_jni.block_info_bytes_progress_get(swigCPtr, this); + } + + public void setBytes_progress(long value) { + libtorrent_jni.block_info_bytes_progress_set(swigCPtr, this, value); + } + + public long getBlock_size() { + return libtorrent_jni.block_info_block_size_get(swigCPtr, this); + } + + public void setBlock_size(long value) { + libtorrent_jni.block_info_block_size_set(swigCPtr, this, value); + } + + public long getState() { + return libtorrent_jni.block_info_state_get(swigCPtr, this); + } + + public void setState(long value) { + libtorrent_jni.block_info_state_set(swigCPtr, this, value); + } + + public long getNum_peers() { + return libtorrent_jni.block_info_num_peers_get(swigCPtr, this); + } + + public void setNum_peers(long value) { + libtorrent_jni.block_info_num_peers_set(swigCPtr, this, value); + } + + public final static class block_state_t { + public final static block_info.block_state_t none = new block_info.block_state_t("none"); + public final static block_info.block_state_t requested = new block_info.block_state_t("requested"); + public final static block_info.block_state_t writing = new block_info.block_state_t("writing"); + public final static block_info.block_state_t finished = new block_info.block_state_t("finished"); + private static final block_state_t[] swigValues = {none, requested, writing, finished}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private block_state_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private block_state_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private block_state_t(String swigName, block_state_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static block_state_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + block_state_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_info_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_info_vector.java new file mode 100644 index 0000000..3d66e86 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_info_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class block_info_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected block_info_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public block_info_vector() { + this(libtorrent_jni.new_block_info_vector(), true); + } + + protected static long getCPtr(block_info_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_block_info_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.block_info_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.block_info_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.block_info_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.block_info_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.block_info_vector_clear(swigCPtr, this); + } + + public void push_back(block_info x) { + libtorrent_jni.block_info_vector_push_back(swigCPtr, this, block_info.getCPtr(x), x); + } + + public block_info get(int i) { + return new block_info(libtorrent_jni.block_info_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, block_info val) { + libtorrent_jni.block_info_vector_set(swigCPtr, this, i, block_info.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_timeout_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_timeout_alert.java new file mode 100644 index 0000000..12322f9 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_timeout_alert.java @@ -0,0 +1,65 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class block_timeout_alert extends peer_alert { + public final static int priority = libtorrent_jni.block_timeout_alert_priority_get(); + public final static int alert_type = libtorrent_jni.block_timeout_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.block_timeout_alert_static_category_get(), false); + private transient long swigCPtr; + + protected block_timeout_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.block_timeout_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(block_timeout_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_block_timeout_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.block_timeout_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.block_timeout_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.block_timeout_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.block_timeout_alert_message(swigCPtr, this); + } + + public int getBlock_index() { + return libtorrent_jni.block_timeout_alert_block_index_get(swigCPtr, this); + } + + public int getPiece_index() { + return libtorrent_jni.block_timeout_alert_piece_index_get(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_uploaded_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_uploaded_alert.java new file mode 100644 index 0000000..e9ba2e6 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/block_uploaded_alert.java @@ -0,0 +1,65 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class block_uploaded_alert extends peer_alert { + public final static int priority = libtorrent_jni.block_uploaded_alert_priority_get(); + public final static int alert_type = libtorrent_jni.block_uploaded_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.block_uploaded_alert_static_category_get(), false); + private transient long swigCPtr; + + protected block_uploaded_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.block_uploaded_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(block_uploaded_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_block_uploaded_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.block_uploaded_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.block_uploaded_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.block_uploaded_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.block_uploaded_alert_message(swigCPtr, this); + } + + public int getBlock_index() { + return libtorrent_jni.block_uploaded_alert_block_index_get(swigCPtr, this); + } + + public int getPiece_index() { + return libtorrent_jni.block_uploaded_alert_piece_index_get(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bloom_filter_128.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bloom_filter_128.java new file mode 100644 index 0000000..0ca303a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bloom_filter_128.java @@ -0,0 +1,67 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class bloom_filter_128 { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected bloom_filter_128(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public bloom_filter_128() { + this(libtorrent_jni.new_bloom_filter_128(), true); + } + + protected static long getCPtr(bloom_filter_128 obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_bloom_filter_128(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean find(sha1_hash k) { + return libtorrent_jni.bloom_filter_128_find(swigCPtr, this, sha1_hash.getCPtr(k), k); + } + + public void set(sha1_hash k) { + libtorrent_jni.bloom_filter_128_set(swigCPtr, this, sha1_hash.getCPtr(k), k); + } + + public void clear() { + libtorrent_jni.bloom_filter_128_clear(swigCPtr, this); + } + + public float size() { + return libtorrent_jni.bloom_filter_128_size(swigCPtr, this); + } + + public byte_vector to_bytes() { + return new byte_vector(libtorrent_jni.bloom_filter_128_to_bytes(swigCPtr, this), true); + } + + public void from_bytes(byte_vector v) { + libtorrent_jni.bloom_filter_128_from_bytes(swigCPtr, this, byte_vector.getCPtr(v), v); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bloom_filter_256.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bloom_filter_256.java new file mode 100644 index 0000000..dfac55e --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bloom_filter_256.java @@ -0,0 +1,67 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class bloom_filter_256 { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected bloom_filter_256(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public bloom_filter_256() { + this(libtorrent_jni.new_bloom_filter_256(), true); + } + + protected static long getCPtr(bloom_filter_256 obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_bloom_filter_256(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean find(sha1_hash k) { + return libtorrent_jni.bloom_filter_256_find(swigCPtr, this, sha1_hash.getCPtr(k), k); + } + + public void set(sha1_hash k) { + libtorrent_jni.bloom_filter_256_set(swigCPtr, this, sha1_hash.getCPtr(k), k); + } + + public void clear() { + libtorrent_jni.bloom_filter_256_clear(swigCPtr, this); + } + + public float size() { + return libtorrent_jni.bloom_filter_256_size(swigCPtr, this); + } + + public byte_vector to_bytes() { + return new byte_vector(libtorrent_jni.bloom_filter_256_to_bytes(swigCPtr, this), true); + } + + public void from_bytes(byte_vector v) { + libtorrent_jni.bloom_filter_256_from_bytes(swigCPtr, this, byte_vector.getCPtr(v), v); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bt_peer_connection_handle.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bt_peer_connection_handle.java new file mode 100644 index 0000000..c3b980b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/bt_peer_connection_handle.java @@ -0,0 +1,55 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class bt_peer_connection_handle extends peer_connection_handle { + private transient long swigCPtr; + + protected bt_peer_connection_handle(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.bt_peer_connection_handle_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + public bt_peer_connection_handle(peer_connection_handle pc) { + this(libtorrent_jni.new_bt_peer_connection_handle(peer_connection_handle.getCPtr(pc), pc), true); + } + + protected static long getCPtr(bt_peer_connection_handle obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_bt_peer_connection_handle(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public boolean packet_finished() { + return libtorrent_jni.bt_peer_connection_handle_packet_finished(swigCPtr, this); + } + + public boolean support_extensions() { + return libtorrent_jni.bt_peer_connection_handle_support_extensions(swigCPtr, this); + } + + public boolean supports_encryption() { + return libtorrent_jni.bt_peer_connection_handle_supports_encryption(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/byte_const_span.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/byte_const_span.java new file mode 100644 index 0000000..78fec33 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/byte_const_span.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class byte_const_span { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected byte_const_span(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public byte_const_span() { + this(libtorrent_jni.new_byte_const_span(), true); + } + + protected static long getCPtr(byte_const_span obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_byte_const_span(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.byte_const_span_size(swigCPtr, this); + } + + public boolean empty() { + return libtorrent_jni.byte_const_span_empty(swigCPtr, this); + } + + public byte front() { + return libtorrent_jni.byte_const_span_front(swigCPtr, this); + } + + public byte back() { + return libtorrent_jni.byte_const_span_back(swigCPtr, this); + } + + public byte_const_span first(long n) { + return new byte_const_span(libtorrent_jni.byte_const_span_first(swigCPtr, this, n), true); + } + + public byte_const_span last(long n) { + return new byte_const_span(libtorrent_jni.byte_const_span_last(swigCPtr, this, n), true); + } + + public byte_const_span subspan(long offset) { + return new byte_const_span(libtorrent_jni.byte_const_span_subspan__SWIG_0(swigCPtr, this, offset), true); + } + + public byte_const_span subspan(long offset, long count) { + return new byte_const_span(libtorrent_jni.byte_const_span_subspan__SWIG_1(swigCPtr, this, offset, count), true); + } + + public byte get(long idx) { + return libtorrent_jni.byte_const_span_get(swigCPtr, this, idx); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/byte_span.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/byte_span.java new file mode 100644 index 0000000..1ea2ef7 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/byte_span.java @@ -0,0 +1,83 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class byte_span { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected byte_span(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public byte_span() { + this(libtorrent_jni.new_byte_span(), true); + } + + protected static long getCPtr(byte_span obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_byte_span(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.byte_span_size(swigCPtr, this); + } + + public boolean empty() { + return libtorrent_jni.byte_span_empty(swigCPtr, this); + } + + public byte front() { + return libtorrent_jni.byte_span_front(swigCPtr, this); + } + + public byte back() { + return libtorrent_jni.byte_span_back(swigCPtr, this); + } + + public byte_span first(long n) { + return new byte_span(libtorrent_jni.byte_span_first(swigCPtr, this, n), true); + } + + public byte_span last(long n) { + return new byte_span(libtorrent_jni.byte_span_last(swigCPtr, this, n), true); + } + + public byte_span subspan(long offset) { + return new byte_span(libtorrent_jni.byte_span_subspan__SWIG_0(swigCPtr, this, offset), true); + } + + public byte_span subspan(long offset, long count) { + return new byte_span(libtorrent_jni.byte_span_subspan__SWIG_1(swigCPtr, this, offset, count), true); + } + + public byte get(long idx) { + return libtorrent_jni.byte_span_get(swigCPtr, this, idx); + } + + public void set(long idx, byte val) { + libtorrent_jni.byte_span_set(swigCPtr, this, idx, val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/byte_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/byte_vector.java new file mode 100644 index 0000000..82cb71b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/byte_vector.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class byte_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected byte_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public byte_vector() { + this(libtorrent_jni.new_byte_vector(), true); + } + + protected static long getCPtr(byte_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_byte_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.byte_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.byte_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.byte_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.byte_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.byte_vector_clear(swigCPtr, this); + } + + public void push_back(byte x) { + libtorrent_jni.byte_vector_push_back(swigCPtr, this, x); + } + + public void resize(long count) { + libtorrent_jni.byte_vector_resize(swigCPtr, this, count); + } + + public byte get(int i) { + return libtorrent_jni.byte_vector_get(swigCPtr, this, i); + } + + public void set(int i, byte val) { + libtorrent_jni.byte_vector_set(swigCPtr, this, i, val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/byte_vectors_pair.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/byte_vectors_pair.java new file mode 100644 index 0000000..9268ea4 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/byte_vectors_pair.java @@ -0,0 +1,69 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class byte_vectors_pair { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected byte_vectors_pair(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public byte_vectors_pair() { + this(libtorrent_jni.new_byte_vectors_pair__SWIG_0(), true); + } + + public byte_vectors_pair(byte_vector first, byte_vector second) { + this(libtorrent_jni.new_byte_vectors_pair__SWIG_1(byte_vector.getCPtr(first), first, byte_vector.getCPtr(second), second), true); + } + + public byte_vectors_pair(byte_vectors_pair other) { + this(libtorrent_jni.new_byte_vectors_pair__SWIG_2(byte_vectors_pair.getCPtr(other), other), true); + } + + protected static long getCPtr(byte_vectors_pair obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_byte_vectors_pair(swigCPtr); + } + swigCPtr = 0; + } + } + + public byte_vector getFirst() { + long cPtr = libtorrent_jni.byte_vectors_pair_first_get(swigCPtr, this); + return (cPtr == 0) ? null : new byte_vector(cPtr, false); + } + + public void setFirst(byte_vector value) { + libtorrent_jni.byte_vectors_pair_first_set(swigCPtr, this, byte_vector.getCPtr(value), value); + } + + public byte_vector getSecond() { + long cPtr = libtorrent_jni.byte_vectors_pair_second_get(swigCPtr, this); + return (cPtr == 0) ? null : new byte_vector(cPtr, false); + } + + public void setSecond(byte_vector value) { + libtorrent_jni.byte_vectors_pair_second_set(swigCPtr, this, byte_vector.getCPtr(value), value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/cache_flushed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/cache_flushed_alert.java new file mode 100644 index 0000000..3a9b3e4 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/cache_flushed_alert.java @@ -0,0 +1,53 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class cache_flushed_alert extends torrent_alert { + public final static int priority = libtorrent_jni.cache_flushed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.cache_flushed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.cache_flushed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected cache_flushed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.cache_flushed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(cache_flushed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_cache_flushed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.cache_flushed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.cache_flushed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.cache_flushed_alert_what(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/close_reason_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/close_reason_t.java new file mode 100644 index 0000000..4d3cc1a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/close_reason_t.java @@ -0,0 +1,101 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public final class close_reason_t { + public final static close_reason_t none = new close_reason_t("none", libtorrent_jni.close_reason_t_none_get()); + public final static close_reason_t duplicate_peer_id = new close_reason_t("duplicate_peer_id"); + public final static close_reason_t torrent_removed = new close_reason_t("torrent_removed"); + public final static close_reason_t no_memory = new close_reason_t("no_memory"); + public final static close_reason_t port_blocked = new close_reason_t("port_blocked"); + public final static close_reason_t blocked = new close_reason_t("blocked"); + public final static close_reason_t upload_to_upload = new close_reason_t("upload_to_upload"); + public final static close_reason_t not_interested_upload_only = new close_reason_t("not_interested_upload_only"); + public final static close_reason_t timeout = new close_reason_t("timeout"); + public final static close_reason_t timed_out_interest = new close_reason_t("timed_out_interest"); + public final static close_reason_t timed_out_activity = new close_reason_t("timed_out_activity"); + public final static close_reason_t timed_out_handshake = new close_reason_t("timed_out_handshake"); + public final static close_reason_t timed_out_request = new close_reason_t("timed_out_request"); + public final static close_reason_t protocol_blocked = new close_reason_t("protocol_blocked"); + public final static close_reason_t peer_churn = new close_reason_t("peer_churn"); + public final static close_reason_t too_many_connections = new close_reason_t("too_many_connections"); + public final static close_reason_t too_many_files = new close_reason_t("too_many_files"); + public final static close_reason_t encryption_error = new close_reason_t("encryption_error", libtorrent_jni.close_reason_t_encryption_error_get()); + public final static close_reason_t invalid_info_hash = new close_reason_t("invalid_info_hash"); + public final static close_reason_t self_connection = new close_reason_t("self_connection"); + public final static close_reason_t invalid_metadata = new close_reason_t("invalid_metadata"); + public final static close_reason_t metadata_too_big = new close_reason_t("metadata_too_big"); + public final static close_reason_t message_too_big = new close_reason_t("message_too_big"); + public final static close_reason_t invalid_message_id = new close_reason_t("invalid_message_id"); + public final static close_reason_t invalid_message = new close_reason_t("invalid_message"); + public final static close_reason_t invalid_piece_message = new close_reason_t("invalid_piece_message"); + public final static close_reason_t invalid_have_message = new close_reason_t("invalid_have_message"); + public final static close_reason_t invalid_bitfield_message = new close_reason_t("invalid_bitfield_message"); + public final static close_reason_t invalid_choke_message = new close_reason_t("invalid_choke_message"); + public final static close_reason_t invalid_unchoke_message = new close_reason_t("invalid_unchoke_message"); + public final static close_reason_t invalid_interested_message = new close_reason_t("invalid_interested_message"); + public final static close_reason_t invalid_not_interested_message = new close_reason_t("invalid_not_interested_message"); + public final static close_reason_t invalid_request_message = new close_reason_t("invalid_request_message"); + public final static close_reason_t invalid_reject_message = new close_reason_t("invalid_reject_message"); + public final static close_reason_t invalid_allow_fast_message = new close_reason_t("invalid_allow_fast_message"); + public final static close_reason_t invalid_extended_message = new close_reason_t("invalid_extended_message"); + public final static close_reason_t invalid_cancel_message = new close_reason_t("invalid_cancel_message"); + public final static close_reason_t invalid_dht_port_message = new close_reason_t("invalid_dht_port_message"); + public final static close_reason_t invalid_suggest_message = new close_reason_t("invalid_suggest_message"); + public final static close_reason_t invalid_have_all_message = new close_reason_t("invalid_have_all_message"); + public final static close_reason_t invalid_dont_have_message = new close_reason_t("invalid_dont_have_message"); + public final static close_reason_t invalid_have_none_message = new close_reason_t("invalid_have_none_message"); + public final static close_reason_t invalid_pex_message = new close_reason_t("invalid_pex_message"); + public final static close_reason_t invalid_metadata_request_message = new close_reason_t("invalid_metadata_request_message"); + public final static close_reason_t invalid_metadata_message = new close_reason_t("invalid_metadata_message"); + public final static close_reason_t invalid_metadata_offset = new close_reason_t("invalid_metadata_offset"); + public final static close_reason_t request_when_choked = new close_reason_t("request_when_choked"); + public final static close_reason_t corrupt_pieces = new close_reason_t("corrupt_pieces"); + public final static close_reason_t pex_message_too_big = new close_reason_t("pex_message_too_big"); + public final static close_reason_t pex_too_frequent = new close_reason_t("pex_too_frequent"); + private static final close_reason_t[] swigValues = {none, duplicate_peer_id, torrent_removed, no_memory, port_blocked, blocked, upload_to_upload, not_interested_upload_only, timeout, timed_out_interest, timed_out_activity, timed_out_handshake, timed_out_request, protocol_blocked, peer_churn, too_many_connections, too_many_files, encryption_error, invalid_info_hash, self_connection, invalid_metadata, metadata_too_big, message_too_big, invalid_message_id, invalid_message, invalid_piece_message, invalid_have_message, invalid_bitfield_message, invalid_choke_message, invalid_unchoke_message, invalid_interested_message, invalid_not_interested_message, invalid_request_message, invalid_reject_message, invalid_allow_fast_message, invalid_extended_message, invalid_cancel_message, invalid_dht_port_message, invalid_suggest_message, invalid_have_all_message, invalid_dont_have_message, invalid_have_none_message, invalid_pex_message, invalid_metadata_request_message, invalid_metadata_message, invalid_metadata_offset, request_when_choked, corrupt_pieces, pex_message_too_big, pex_too_frequent}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private close_reason_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private close_reason_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private close_reason_t(String swigName, close_reason_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static close_reason_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + close_reason_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/connection_type.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/connection_type.java new file mode 100644 index 0000000..5ee60d0 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/connection_type.java @@ -0,0 +1,54 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public final class connection_type { + public final static connection_type bittorrent = new connection_type("bittorrent"); + public final static connection_type url_seed = new connection_type("url_seed"); + public final static connection_type http_seed = new connection_type("http_seed"); + private static final connection_type[] swigValues = {bittorrent, url_seed, http_seed}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private connection_type(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private connection_type(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private connection_type(String swigName, connection_type swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static connection_type swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + connection_type.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/create_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/create_flags_t.java new file mode 100644 index 0000000..921f875 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/create_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class create_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected create_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public create_flags_t() { + this(libtorrent_jni.new_create_flags_t(), true); + } + + protected static long getCPtr(create_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static create_flags_t all() { + return new create_flags_t(libtorrent_jni.create_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_create_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.create_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(create_flags_t f) { + return libtorrent_jni.create_flags_t_eq(swigCPtr, this, create_flags_t.getCPtr(f), f); + } + + public boolean ne(create_flags_t f) { + return libtorrent_jni.create_flags_t_ne(swigCPtr, this, create_flags_t.getCPtr(f), f); + } + + public create_flags_t or_(create_flags_t other) { + return new create_flags_t(libtorrent_jni.create_flags_t_or_(swigCPtr, this, create_flags_t.getCPtr(other), other), true); + } + + public create_flags_t and_(create_flags_t other) { + return new create_flags_t(libtorrent_jni.create_flags_t_and_(swigCPtr, this, create_flags_t.getCPtr(other), other), true); + } + + public create_flags_t xor(create_flags_t other) { + return new create_flags_t(libtorrent_jni.create_flags_t_xor(swigCPtr, this, create_flags_t.getCPtr(other), other), true); + } + + public create_flags_t inv() { + return new create_flags_t(libtorrent_jni.create_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.create_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/create_torrent.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/create_torrent.java new file mode 100644 index 0000000..56d1f76 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/create_torrent.java @@ -0,0 +1,143 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class create_torrent { + public final static create_flags_t optimize_alignment = new create_flags_t(libtorrent_jni.create_torrent_optimize_alignment_get(), false); + public final static create_flags_t merkle = new create_flags_t(libtorrent_jni.create_torrent_merkle_get(), false); + public final static create_flags_t modification_time = new create_flags_t(libtorrent_jni.create_torrent_modification_time_get(), false); + public final static create_flags_t symlinks = new create_flags_t(libtorrent_jni.create_torrent_symlinks_get(), false); + public final static create_flags_t mutable_torrent_support = new create_flags_t(libtorrent_jni.create_torrent_mutable_torrent_support_get(), false); + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected create_torrent(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public create_torrent(file_storage fs, int piece_size, int pad_file_limit, create_flags_t flags, int alignment) { + this(libtorrent_jni.new_create_torrent__SWIG_0(file_storage.getCPtr(fs), fs, piece_size, pad_file_limit, create_flags_t.getCPtr(flags), flags, alignment), true); + } + + public create_torrent(file_storage fs, int piece_size, int pad_file_limit, create_flags_t flags) { + this(libtorrent_jni.new_create_torrent__SWIG_1(file_storage.getCPtr(fs), fs, piece_size, pad_file_limit, create_flags_t.getCPtr(flags), flags), true); + } + + public create_torrent(file_storage fs, int piece_size, int pad_file_limit) { + this(libtorrent_jni.new_create_torrent__SWIG_2(file_storage.getCPtr(fs), fs, piece_size, pad_file_limit), true); + } + + public create_torrent(file_storage fs, int piece_size) { + this(libtorrent_jni.new_create_torrent__SWIG_3(file_storage.getCPtr(fs), fs, piece_size), true); + } + + public create_torrent(file_storage fs) { + this(libtorrent_jni.new_create_torrent__SWIG_4(file_storage.getCPtr(fs), fs), true); + } + + public create_torrent(torrent_info ti) { + this(libtorrent_jni.new_create_torrent__SWIG_5(torrent_info.getCPtr(ti), ti), true); + } + + protected static long getCPtr(create_torrent obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_create_torrent(swigCPtr); + } + swigCPtr = 0; + } + } + + public entry generate() { + return new entry(libtorrent_jni.create_torrent_generate(swigCPtr, this), true); + } + + public file_storage files() { + return new file_storage(libtorrent_jni.create_torrent_files(swigCPtr, this), false); + } + + public void set_comment(String str) { + libtorrent_jni.create_torrent_set_comment(swigCPtr, this, str); + } + + public void set_creator(String str) { + libtorrent_jni.create_torrent_set_creator(swigCPtr, this, str); + } + + public void set_hash(int index, sha1_hash h) { + libtorrent_jni.create_torrent_set_hash(swigCPtr, this, index, sha1_hash.getCPtr(h), h); + } + + public void set_file_hash(int index, sha1_hash h) { + libtorrent_jni.create_torrent_set_file_hash(swigCPtr, this, index, sha1_hash.getCPtr(h), h); + } + + public void add_node(string_int_pair node) { + libtorrent_jni.create_torrent_add_node(swigCPtr, this, string_int_pair.getCPtr(node), node); + } + + public void set_priv(boolean p) { + libtorrent_jni.create_torrent_set_priv(swigCPtr, this, p); + } + + public boolean priv() { + return libtorrent_jni.create_torrent_priv(swigCPtr, this); + } + + public int num_pieces() { + return libtorrent_jni.create_torrent_num_pieces(swigCPtr, this); + } + + public int piece_length() { + return libtorrent_jni.create_torrent_piece_length(swigCPtr, this); + } + + public int piece_size(int i) { + return libtorrent_jni.create_torrent_piece_size(swigCPtr, this, i); + } + + public sha1_hash_vector merkle_tree() { + return new sha1_hash_vector(libtorrent_jni.create_torrent_merkle_tree(swigCPtr, this), false); + } + + public void add_similar_torrent(sha1_hash ih) { + libtorrent_jni.create_torrent_add_similar_torrent(swigCPtr, this, sha1_hash.getCPtr(ih), ih); + } + + public void add_url_seed(String url) { + libtorrent_jni.create_torrent_add_url_seed(swigCPtr, this, url); + } + + public void add_http_seed(String url) { + libtorrent_jni.create_torrent_add_http_seed(swigCPtr, this, url); + } + + public void add_tracker(String url, int tier) { + libtorrent_jni.create_torrent_add_tracker(swigCPtr, this, url, tier); + } + + public void add_collection(String c) { + libtorrent_jni.create_torrent_add_collection(swigCPtr, this, c); + } + + public void set_root_cert2(byte_vector pem) { + libtorrent_jni.create_torrent_set_root_cert2(swigCPtr, this, byte_vector.getCPtr(pem), pem); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/deadline_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/deadline_flags_t.java new file mode 100644 index 0000000..661c570 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/deadline_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class deadline_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected deadline_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public deadline_flags_t() { + this(libtorrent_jni.new_deadline_flags_t(), true); + } + + protected static long getCPtr(deadline_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static deadline_flags_t all() { + return new deadline_flags_t(libtorrent_jni.deadline_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_deadline_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.deadline_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(deadline_flags_t f) { + return libtorrent_jni.deadline_flags_t_eq(swigCPtr, this, deadline_flags_t.getCPtr(f), f); + } + + public boolean ne(deadline_flags_t f) { + return libtorrent_jni.deadline_flags_t_ne(swigCPtr, this, deadline_flags_t.getCPtr(f), f); + } + + public deadline_flags_t or_(deadline_flags_t other) { + return new deadline_flags_t(libtorrent_jni.deadline_flags_t_or_(swigCPtr, this, deadline_flags_t.getCPtr(other), other), true); + } + + public deadline_flags_t and_(deadline_flags_t other) { + return new deadline_flags_t(libtorrent_jni.deadline_flags_t_and_(swigCPtr, this, deadline_flags_t.getCPtr(other), other), true); + } + + public deadline_flags_t xor(deadline_flags_t other) { + return new deadline_flags_t(libtorrent_jni.deadline_flags_t_xor(swigCPtr, this, deadline_flags_t.getCPtr(other), other), true); + } + + public deadline_flags_t inv() { + return new deadline_flags_t(libtorrent_jni.deadline_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.deadline_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_announce_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_announce_alert.java new file mode 100644 index 0000000..c32fa5f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_announce_alert.java @@ -0,0 +1,78 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_announce_alert extends alert { + public final static int priority = libtorrent_jni.dht_announce_alert_priority_get(); + public final static int alert_type = libtorrent_jni.dht_announce_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.dht_announce_alert_static_category_get(), false); + private transient long swigCPtr; + + protected dht_announce_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.dht_announce_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(dht_announce_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_announce_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.dht_announce_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.dht_announce_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.dht_announce_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.dht_announce_alert_message(swigCPtr, this); + } + + public int getPort() { + return libtorrent_jni.dht_announce_alert_port_get(swigCPtr, this); + } + + public void setPort(int value) { + libtorrent_jni.dht_announce_alert_port_set(swigCPtr, this, value); + } + + public sha1_hash getInfo_hash() { + long cPtr = libtorrent_jni.dht_announce_alert_info_hash_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setInfo_hash(sha1_hash value) { + libtorrent_jni.dht_announce_alert_info_hash_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } + + public address get_ip() { + return new address(libtorrent_jni.dht_announce_alert_get_ip(swigCPtr, this), true); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_bootstrap_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_bootstrap_alert.java new file mode 100644 index 0000000..5d6c61f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_bootstrap_alert.java @@ -0,0 +1,57 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_bootstrap_alert extends alert { + public final static int priority = libtorrent_jni.dht_bootstrap_alert_priority_get(); + public final static int alert_type = libtorrent_jni.dht_bootstrap_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.dht_bootstrap_alert_static_category_get(), false); + private transient long swigCPtr; + + protected dht_bootstrap_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.dht_bootstrap_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(dht_bootstrap_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_bootstrap_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.dht_bootstrap_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.dht_bootstrap_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.dht_bootstrap_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.dht_bootstrap_alert_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_direct_response_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_direct_response_alert.java new file mode 100644 index 0000000..19baf7d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_direct_response_alert.java @@ -0,0 +1,69 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_direct_response_alert extends alert { + public final static int priority = libtorrent_jni.dht_direct_response_alert_priority_get(); + public final static int alert_type = libtorrent_jni.dht_direct_response_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.dht_direct_response_alert_static_category_get(), false); + private transient long swigCPtr; + + protected dht_direct_response_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.dht_direct_response_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(dht_direct_response_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_direct_response_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.dht_direct_response_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.dht_direct_response_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.dht_direct_response_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.dht_direct_response_alert_message(swigCPtr, this); + } + + public bdecode_node response() { + return new bdecode_node(libtorrent_jni.dht_direct_response_alert_response(swigCPtr, this), true); + } + + public long get_userdata() { + return libtorrent_jni.dht_direct_response_alert_get_userdata(swigCPtr, this); + } + + public udp_endpoint get_endpoint() { + return new udp_endpoint(libtorrent_jni.dht_direct_response_alert_get_endpoint(swigCPtr, this), true); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_error_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_error_alert.java new file mode 100644 index 0000000..066613b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_error_alert.java @@ -0,0 +1,74 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_error_alert extends alert { + public final static int priority = libtorrent_jni.dht_error_alert_priority_get(); + public final static int alert_type = libtorrent_jni.dht_error_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.dht_error_alert_static_category_get(), false); + private transient long swigCPtr; + + protected dht_error_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.dht_error_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(dht_error_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_error_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.dht_error_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.dht_error_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.dht_error_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.dht_error_alert_message(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.dht_error_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public void setError(error_code value) { + libtorrent_jni.dht_error_alert_error_set(swigCPtr, this, error_code.getCPtr(value), value); + } + + public operation_t getOp() { + return operation_t.swigToEnum(libtorrent_jni.dht_error_alert_op_get(swigCPtr, this)); + } + + public void setOp(operation_t value) { + libtorrent_jni.dht_error_alert_op_set(swigCPtr, this, value.swigValue()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_get_peers_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_get_peers_alert.java new file mode 100644 index 0000000..06c3e4a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_get_peers_alert.java @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_get_peers_alert extends alert { + public final static int priority = libtorrent_jni.dht_get_peers_alert_priority_get(); + public final static int alert_type = libtorrent_jni.dht_get_peers_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.dht_get_peers_alert_static_category_get(), false); + private transient long swigCPtr; + + protected dht_get_peers_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.dht_get_peers_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(dht_get_peers_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_get_peers_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.dht_get_peers_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.dht_get_peers_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.dht_get_peers_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.dht_get_peers_alert_message(swigCPtr, this); + } + + public sha1_hash getInfo_hash() { + long cPtr = libtorrent_jni.dht_get_peers_alert_info_hash_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setInfo_hash(sha1_hash value) { + libtorrent_jni.dht_get_peers_alert_info_hash_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_get_peers_reply_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_get_peers_reply_alert.java new file mode 100644 index 0000000..999ebb3 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_get_peers_reply_alert.java @@ -0,0 +1,74 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_get_peers_reply_alert extends alert { + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.dht_get_peers_reply_alert_static_category_get(), false); + public final static int priority = libtorrent_jni.dht_get_peers_reply_alert_priority_get(); + public final static int alert_type = libtorrent_jni.dht_get_peers_reply_alert_alert_type_get(); + private transient long swigCPtr; + + protected dht_get_peers_reply_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.dht_get_peers_reply_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(dht_get_peers_reply_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_get_peers_reply_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.dht_get_peers_reply_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.dht_get_peers_reply_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.dht_get_peers_reply_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.dht_get_peers_reply_alert_message(swigCPtr, this); + } + + public sha1_hash getInfo_hash() { + long cPtr = libtorrent_jni.dht_get_peers_reply_alert_info_hash_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setInfo_hash(sha1_hash value) { + libtorrent_jni.dht_get_peers_reply_alert_info_hash_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } + + public int num_peers() { + return libtorrent_jni.dht_get_peers_reply_alert_num_peers(swigCPtr, this); + } + + public tcp_endpoint_vector peers() { + return new tcp_endpoint_vector(libtorrent_jni.dht_get_peers_reply_alert_peers(swigCPtr, this), true); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_immutable_item_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_immutable_item_alert.java new file mode 100644 index 0000000..c52f948 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_immutable_item_alert.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_immutable_item_alert extends alert { + public final static int priority = libtorrent_jni.dht_immutable_item_alert_priority_get(); + public final static int alert_type = libtorrent_jni.dht_immutable_item_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.dht_immutable_item_alert_static_category_get(), false); + private transient long swigCPtr; + + protected dht_immutable_item_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.dht_immutable_item_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(dht_immutable_item_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_immutable_item_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.dht_immutable_item_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.dht_immutable_item_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.dht_immutable_item_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.dht_immutable_item_alert_message(swigCPtr, this); + } + + public sha1_hash getTarget() { + long cPtr = libtorrent_jni.dht_immutable_item_alert_target_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setTarget(sha1_hash value) { + libtorrent_jni.dht_immutable_item_alert_target_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } + + public entry getItem() { + long cPtr = libtorrent_jni.dht_immutable_item_alert_item_get(swigCPtr, this); + return (cPtr == 0) ? null : new entry(cPtr, false); + } + + public void setItem(entry value) { + libtorrent_jni.dht_immutable_item_alert_item_set(swigCPtr, this, entry.getCPtr(value), value); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_live_nodes_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_live_nodes_alert.java new file mode 100644 index 0000000..9e364fd --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_live_nodes_alert.java @@ -0,0 +1,74 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_live_nodes_alert extends alert { + public final static int priority = libtorrent_jni.dht_live_nodes_alert_priority_get(); + public final static int alert_type = libtorrent_jni.dht_live_nodes_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.dht_live_nodes_alert_static_category_get(), false); + private transient long swigCPtr; + + protected dht_live_nodes_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.dht_live_nodes_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(dht_live_nodes_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_live_nodes_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.dht_live_nodes_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.dht_live_nodes_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.dht_live_nodes_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.dht_live_nodes_alert_message(swigCPtr, this); + } + + public sha1_hash getNode_id() { + long cPtr = libtorrent_jni.dht_live_nodes_alert_node_id_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setNode_id(sha1_hash value) { + libtorrent_jni.dht_live_nodes_alert_node_id_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } + + public int num_nodes() { + return libtorrent_jni.dht_live_nodes_alert_num_nodes(swigCPtr, this); + } + + public sha1_hash_udp_endpoint_pair_vector nodes() { + return new sha1_hash_udp_endpoint_pair_vector(libtorrent_jni.dht_live_nodes_alert_nodes(swigCPtr, this), true); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_log_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_log_alert.java new file mode 100644 index 0000000..ee7929b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_log_alert.java @@ -0,0 +1,115 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_log_alert extends alert { + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.dht_log_alert_static_category_get(), false); + public final static int priority = libtorrent_jni.dht_log_alert_priority_get(); + public final static int alert_type = libtorrent_jni.dht_log_alert_alert_type_get(); + private transient long swigCPtr; + + protected dht_log_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.dht_log_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(dht_log_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_log_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.dht_log_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.dht_log_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.dht_log_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.dht_log_alert_message(swigCPtr, this); + } + + public String log_message() { + return libtorrent_jni.dht_log_alert_log_message(swigCPtr, this); + } + + public dht_log_alert.dht_module_t getModule() { + return dht_log_alert.dht_module_t.swigToEnum(libtorrent_jni.dht_log_alert_module_get(swigCPtr, this)); + } + + public void setModule(dht_log_alert.dht_module_t value) { + libtorrent_jni.dht_log_alert_module_set(swigCPtr, this, value.swigValue()); + } + + public final static class dht_module_t { + public final static dht_log_alert.dht_module_t tracker = new dht_log_alert.dht_module_t("tracker"); + public final static dht_log_alert.dht_module_t node = new dht_log_alert.dht_module_t("node"); + public final static dht_log_alert.dht_module_t routing_table = new dht_log_alert.dht_module_t("routing_table"); + public final static dht_log_alert.dht_module_t rpc_manager = new dht_log_alert.dht_module_t("rpc_manager"); + public final static dht_log_alert.dht_module_t traversal = new dht_log_alert.dht_module_t("traversal"); + private static final dht_module_t[] swigValues = {tracker, node, routing_table, rpc_manager, traversal}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private dht_module_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private dht_module_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private dht_module_t(String swigName, dht_module_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static dht_module_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + dht_module_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_lookup.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_lookup.java new file mode 100644 index 0000000..2759516 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_lookup.java @@ -0,0 +1,112 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_lookup { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected dht_lookup(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public dht_lookup() { + this(libtorrent_jni.new_dht_lookup(), true); + } + + protected static long getCPtr(dht_lookup obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_lookup(swigCPtr); + } + swigCPtr = 0; + } + } + + public int getOutstanding_requests() { + return libtorrent_jni.dht_lookup_outstanding_requests_get(swigCPtr, this); + } + + public void setOutstanding_requests(int value) { + libtorrent_jni.dht_lookup_outstanding_requests_set(swigCPtr, this, value); + } + + public int getTimeouts() { + return libtorrent_jni.dht_lookup_timeouts_get(swigCPtr, this); + } + + public void setTimeouts(int value) { + libtorrent_jni.dht_lookup_timeouts_set(swigCPtr, this, value); + } + + public int getResponses() { + return libtorrent_jni.dht_lookup_responses_get(swigCPtr, this); + } + + public void setResponses(int value) { + libtorrent_jni.dht_lookup_responses_set(swigCPtr, this, value); + } + + public int getBranch_factor() { + return libtorrent_jni.dht_lookup_branch_factor_get(swigCPtr, this); + } + + public void setBranch_factor(int value) { + libtorrent_jni.dht_lookup_branch_factor_set(swigCPtr, this, value); + } + + public int getNodes_left() { + return libtorrent_jni.dht_lookup_nodes_left_get(swigCPtr, this); + } + + public void setNodes_left(int value) { + libtorrent_jni.dht_lookup_nodes_left_set(swigCPtr, this, value); + } + + public int getLast_sent() { + return libtorrent_jni.dht_lookup_last_sent_get(swigCPtr, this); + } + + public void setLast_sent(int value) { + libtorrent_jni.dht_lookup_last_sent_set(swigCPtr, this, value); + } + + public int getFirst_timeout() { + return libtorrent_jni.dht_lookup_first_timeout_get(swigCPtr, this); + } + + public void setFirst_timeout(int value) { + libtorrent_jni.dht_lookup_first_timeout_set(swigCPtr, this, value); + } + + public sha1_hash getTarget() { + long cPtr = libtorrent_jni.dht_lookup_target_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setTarget(sha1_hash value) { + libtorrent_jni.dht_lookup_target_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } + + public String get_type() { + return libtorrent_jni.dht_lookup_get_type(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_lookup_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_lookup_vector.java new file mode 100644 index 0000000..4c771f9 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_lookup_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_lookup_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected dht_lookup_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public dht_lookup_vector() { + this(libtorrent_jni.new_dht_lookup_vector(), true); + } + + protected static long getCPtr(dht_lookup_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_lookup_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.dht_lookup_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.dht_lookup_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.dht_lookup_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.dht_lookup_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.dht_lookup_vector_clear(swigCPtr, this); + } + + public void push_back(dht_lookup x) { + libtorrent_jni.dht_lookup_vector_push_back(swigCPtr, this, dht_lookup.getCPtr(x), x); + } + + public dht_lookup get(int i) { + return new dht_lookup(libtorrent_jni.dht_lookup_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, dht_lookup val) { + libtorrent_jni.dht_lookup_vector_set(swigCPtr, this, i, dht_lookup.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_mutable_item_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_mutable_item_alert.java new file mode 100644 index 0000000..6a539b2 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_mutable_item_alert.java @@ -0,0 +1,90 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_mutable_item_alert extends alert { + public final static int priority = libtorrent_jni.dht_mutable_item_alert_priority_get(); + public final static int alert_type = libtorrent_jni.dht_mutable_item_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.dht_mutable_item_alert_static_category_get(), false); + private transient long swigCPtr; + + protected dht_mutable_item_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.dht_mutable_item_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(dht_mutable_item_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_mutable_item_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.dht_mutable_item_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.dht_mutable_item_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.dht_mutable_item_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.dht_mutable_item_alert_message(swigCPtr, this); + } + + public entry getItem() { + long cPtr = libtorrent_jni.dht_mutable_item_alert_item_get(swigCPtr, this); + return (cPtr == 0) ? null : new entry(cPtr, false); + } + + public void setItem(entry value) { + libtorrent_jni.dht_mutable_item_alert_item_set(swigCPtr, this, entry.getCPtr(value), value); + } + + public boolean getAuthoritative() { + return libtorrent_jni.dht_mutable_item_alert_authoritative_get(swigCPtr, this); + } + + public void setAuthoritative(boolean value) { + libtorrent_jni.dht_mutable_item_alert_authoritative_set(swigCPtr, this, value); + } + + public byte_vector get_key() { + return new byte_vector(libtorrent_jni.dht_mutable_item_alert_get_key(swigCPtr, this), true); + } + + public byte_vector get_signature() { + return new byte_vector(libtorrent_jni.dht_mutable_item_alert_get_signature(swigCPtr, this), true); + } + + public long get_seq() { + return libtorrent_jni.dht_mutable_item_alert_get_seq(swigCPtr, this); + } + + public byte_vector get_salt() { + return new byte_vector(libtorrent_jni.dht_mutable_item_alert_get_salt(swigCPtr, this), true); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_outgoing_get_peers_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_outgoing_get_peers_alert.java new file mode 100644 index 0000000..6d10d84 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_outgoing_get_peers_alert.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_outgoing_get_peers_alert extends alert { + public final static int priority = libtorrent_jni.dht_outgoing_get_peers_alert_priority_get(); + public final static int alert_type = libtorrent_jni.dht_outgoing_get_peers_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.dht_outgoing_get_peers_alert_static_category_get(), false); + private transient long swigCPtr; + + protected dht_outgoing_get_peers_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.dht_outgoing_get_peers_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(dht_outgoing_get_peers_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_outgoing_get_peers_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.dht_outgoing_get_peers_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.dht_outgoing_get_peers_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.dht_outgoing_get_peers_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.dht_outgoing_get_peers_alert_message(swigCPtr, this); + } + + public sha1_hash getInfo_hash() { + long cPtr = libtorrent_jni.dht_outgoing_get_peers_alert_info_hash_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setInfo_hash(sha1_hash value) { + libtorrent_jni.dht_outgoing_get_peers_alert_info_hash_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } + + public sha1_hash getObfuscated_info_hash() { + long cPtr = libtorrent_jni.dht_outgoing_get_peers_alert_obfuscated_info_hash_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setObfuscated_info_hash(sha1_hash value) { + libtorrent_jni.dht_outgoing_get_peers_alert_obfuscated_info_hash_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } + + public udp_endpoint get_endpoint() { + return new udp_endpoint(libtorrent_jni.dht_outgoing_get_peers_alert_get_endpoint(swigCPtr, this), true); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_pkt_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_pkt_alert.java new file mode 100644 index 0000000..aeb41f4 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_pkt_alert.java @@ -0,0 +1,116 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_pkt_alert extends alert { + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.dht_pkt_alert_static_category_get(), false); + public final static int priority = libtorrent_jni.dht_pkt_alert_priority_get(); + public final static int alert_type = libtorrent_jni.dht_pkt_alert_alert_type_get(); + private transient long swigCPtr; + + protected dht_pkt_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.dht_pkt_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(dht_pkt_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_pkt_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.dht_pkt_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.dht_pkt_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.dht_pkt_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.dht_pkt_alert_message(swigCPtr, this); + } + + public byte_const_span pkt_buf() { + return new byte_const_span(libtorrent_jni.dht_pkt_alert_pkt_buf(swigCPtr, this), true); + } + + public dht_pkt_alert.direction_t getDirection() { + return dht_pkt_alert.direction_t.swigToEnum(libtorrent_jni.dht_pkt_alert_direction_get(swigCPtr, this)); + } + + public void setDirection(dht_pkt_alert.direction_t value) { + libtorrent_jni.dht_pkt_alert_direction_set(swigCPtr, this, value.swigValue()); + } + + public udp_endpoint get_node() { + return new udp_endpoint(libtorrent_jni.dht_pkt_alert_get_node(swigCPtr, this), true); + } + + public final static class direction_t { + public final static dht_pkt_alert.direction_t incoming = new dht_pkt_alert.direction_t("incoming"); + public final static dht_pkt_alert.direction_t outgoing = new dht_pkt_alert.direction_t("outgoing"); + private static final direction_t[] swigValues = {incoming, outgoing}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private direction_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private direction_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private direction_t(String swigName, direction_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static direction_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + direction_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_put_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_put_alert.java new file mode 100644 index 0000000..e147c28 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_put_alert.java @@ -0,0 +1,90 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_put_alert extends alert { + public final static int priority = libtorrent_jni.dht_put_alert_priority_get(); + public final static int alert_type = libtorrent_jni.dht_put_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.dht_put_alert_static_category_get(), false); + private transient long swigCPtr; + + protected dht_put_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.dht_put_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(dht_put_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_put_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.dht_put_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.dht_put_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.dht_put_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.dht_put_alert_message(swigCPtr, this); + } + + public sha1_hash getTarget() { + long cPtr = libtorrent_jni.dht_put_alert_target_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setTarget(sha1_hash value) { + libtorrent_jni.dht_put_alert_target_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } + + public int getNum_success() { + return libtorrent_jni.dht_put_alert_num_success_get(swigCPtr, this); + } + + public void setNum_success(int value) { + libtorrent_jni.dht_put_alert_num_success_set(swigCPtr, this, value); + } + + public byte_vector get_public_key() { + return new byte_vector(libtorrent_jni.dht_put_alert_get_public_key(swigCPtr, this), true); + } + + public byte_vector get_signature() { + return new byte_vector(libtorrent_jni.dht_put_alert_get_signature(swigCPtr, this), true); + } + + public byte_vector get_salt() { + return new byte_vector(libtorrent_jni.dht_put_alert_get_salt(swigCPtr, this), true); + } + + public long get_seq() { + return libtorrent_jni.dht_put_alert_get_seq(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_reply_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_reply_alert.java new file mode 100644 index 0000000..2acf16f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_reply_alert.java @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_reply_alert extends tracker_alert { + public final static int priority = libtorrent_jni.dht_reply_alert_priority_get(); + public final static int alert_type = libtorrent_jni.dht_reply_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.dht_reply_alert_static_category_get(), false); + private transient long swigCPtr; + + protected dht_reply_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.dht_reply_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(dht_reply_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_reply_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.dht_reply_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.dht_reply_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.dht_reply_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.dht_reply_alert_message(swigCPtr, this); + } + + public int getNum_peers() { + return libtorrent_jni.dht_reply_alert_num_peers_get(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_routing_bucket.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_routing_bucket.java new file mode 100644 index 0000000..3c8600d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_routing_bucket.java @@ -0,0 +1,67 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_routing_bucket { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected dht_routing_bucket(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public dht_routing_bucket() { + this(libtorrent_jni.new_dht_routing_bucket(), true); + } + + protected static long getCPtr(dht_routing_bucket obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_routing_bucket(swigCPtr); + } + swigCPtr = 0; + } + } + + public int getNum_nodes() { + return libtorrent_jni.dht_routing_bucket_num_nodes_get(swigCPtr, this); + } + + public void setNum_nodes(int value) { + libtorrent_jni.dht_routing_bucket_num_nodes_set(swigCPtr, this, value); + } + + public int getNum_replacements() { + return libtorrent_jni.dht_routing_bucket_num_replacements_get(swigCPtr, this); + } + + public void setNum_replacements(int value) { + libtorrent_jni.dht_routing_bucket_num_replacements_set(swigCPtr, this, value); + } + + public int getLast_active() { + return libtorrent_jni.dht_routing_bucket_last_active_get(swigCPtr, this); + } + + public void setLast_active(int value) { + libtorrent_jni.dht_routing_bucket_last_active_set(swigCPtr, this, value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_routing_bucket_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_routing_bucket_vector.java new file mode 100644 index 0000000..2ca1b68 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_routing_bucket_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_routing_bucket_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected dht_routing_bucket_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public dht_routing_bucket_vector() { + this(libtorrent_jni.new_dht_routing_bucket_vector(), true); + } + + protected static long getCPtr(dht_routing_bucket_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_routing_bucket_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.dht_routing_bucket_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.dht_routing_bucket_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.dht_routing_bucket_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.dht_routing_bucket_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.dht_routing_bucket_vector_clear(swigCPtr, this); + } + + public void push_back(dht_routing_bucket x) { + libtorrent_jni.dht_routing_bucket_vector_push_back(swigCPtr, this, dht_routing_bucket.getCPtr(x), x); + } + + public dht_routing_bucket get(int i) { + return new dht_routing_bucket(libtorrent_jni.dht_routing_bucket_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, dht_routing_bucket val) { + libtorrent_jni.dht_routing_bucket_vector_set(swigCPtr, this, i, dht_routing_bucket.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_sample_infohashes_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_sample_infohashes_alert.java new file mode 100644 index 0000000..7c5afd9 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_sample_infohashes_alert.java @@ -0,0 +1,85 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_sample_infohashes_alert extends alert { + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.dht_sample_infohashes_alert_static_category_get(), false); + public final static int priority = libtorrent_jni.dht_sample_infohashes_alert_priority_get(); + public final static int alert_type = libtorrent_jni.dht_sample_infohashes_alert_alert_type_get(); + private transient long swigCPtr; + + protected dht_sample_infohashes_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.dht_sample_infohashes_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(dht_sample_infohashes_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_sample_infohashes_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.dht_sample_infohashes_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.dht_sample_infohashes_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.dht_sample_infohashes_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.dht_sample_infohashes_alert_message(swigCPtr, this); + } + + public int getNum_infohashes() { + return libtorrent_jni.dht_sample_infohashes_alert_num_infohashes_get(swigCPtr, this); + } + + public int num_samples() { + return libtorrent_jni.dht_sample_infohashes_alert_num_samples(swigCPtr, this); + } + + public sha1_hash_vector samples() { + return new sha1_hash_vector(libtorrent_jni.dht_sample_infohashes_alert_samples(swigCPtr, this), true); + } + + public int num_nodes() { + return libtorrent_jni.dht_sample_infohashes_alert_num_nodes(swigCPtr, this); + } + + public sha1_hash_udp_endpoint_pair_vector nodes() { + return new sha1_hash_udp_endpoint_pair_vector(libtorrent_jni.dht_sample_infohashes_alert_nodes(swigCPtr, this), true); + } + + public udp_endpoint get_endpoint() { + return new udp_endpoint(libtorrent_jni.dht_sample_infohashes_alert_get_endpoint(swigCPtr, this), true); + } + + public long get_interval() { + return libtorrent_jni.dht_sample_infohashes_alert_get_interval(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_settings.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_settings.java new file mode 100644 index 0000000..84e02fd --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_settings.java @@ -0,0 +1,211 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_settings { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected dht_settings(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public dht_settings() { + this(libtorrent_jni.new_dht_settings(), true); + } + + protected static long getCPtr(dht_settings obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_settings(swigCPtr); + } + swigCPtr = 0; + } + } + + public int getMax_peers_reply() { + return libtorrent_jni.dht_settings_max_peers_reply_get(swigCPtr, this); + } + + public void setMax_peers_reply(int value) { + libtorrent_jni.dht_settings_max_peers_reply_set(swigCPtr, this, value); + } + + public int getSearch_branching() { + return libtorrent_jni.dht_settings_search_branching_get(swigCPtr, this); + } + + public void setSearch_branching(int value) { + libtorrent_jni.dht_settings_search_branching_set(swigCPtr, this, value); + } + + public int getMax_fail_count() { + return libtorrent_jni.dht_settings_max_fail_count_get(swigCPtr, this); + } + + public void setMax_fail_count(int value) { + libtorrent_jni.dht_settings_max_fail_count_set(swigCPtr, this, value); + } + + public int getMax_torrents() { + return libtorrent_jni.dht_settings_max_torrents_get(swigCPtr, this); + } + + public void setMax_torrents(int value) { + libtorrent_jni.dht_settings_max_torrents_set(swigCPtr, this, value); + } + + public int getMax_dht_items() { + return libtorrent_jni.dht_settings_max_dht_items_get(swigCPtr, this); + } + + public void setMax_dht_items(int value) { + libtorrent_jni.dht_settings_max_dht_items_set(swigCPtr, this, value); + } + + public int getMax_peers() { + return libtorrent_jni.dht_settings_max_peers_get(swigCPtr, this); + } + + public void setMax_peers(int value) { + libtorrent_jni.dht_settings_max_peers_set(swigCPtr, this, value); + } + + public int getMax_torrent_search_reply() { + return libtorrent_jni.dht_settings_max_torrent_search_reply_get(swigCPtr, this); + } + + public void setMax_torrent_search_reply(int value) { + libtorrent_jni.dht_settings_max_torrent_search_reply_set(swigCPtr, this, value); + } + + public boolean getRestrict_routing_ips() { + return libtorrent_jni.dht_settings_restrict_routing_ips_get(swigCPtr, this); + } + + public void setRestrict_routing_ips(boolean value) { + libtorrent_jni.dht_settings_restrict_routing_ips_set(swigCPtr, this, value); + } + + public boolean getRestrict_search_ips() { + return libtorrent_jni.dht_settings_restrict_search_ips_get(swigCPtr, this); + } + + public void setRestrict_search_ips(boolean value) { + libtorrent_jni.dht_settings_restrict_search_ips_set(swigCPtr, this, value); + } + + public boolean getExtended_routing_table() { + return libtorrent_jni.dht_settings_extended_routing_table_get(swigCPtr, this); + } + + public void setExtended_routing_table(boolean value) { + libtorrent_jni.dht_settings_extended_routing_table_set(swigCPtr, this, value); + } + + public boolean getAggressive_lookups() { + return libtorrent_jni.dht_settings_aggressive_lookups_get(swigCPtr, this); + } + + public void setAggressive_lookups(boolean value) { + libtorrent_jni.dht_settings_aggressive_lookups_set(swigCPtr, this, value); + } + + public boolean getPrivacy_lookups() { + return libtorrent_jni.dht_settings_privacy_lookups_get(swigCPtr, this); + } + + public void setPrivacy_lookups(boolean value) { + libtorrent_jni.dht_settings_privacy_lookups_set(swigCPtr, this, value); + } + + public boolean getEnforce_node_id() { + return libtorrent_jni.dht_settings_enforce_node_id_get(swigCPtr, this); + } + + public void setEnforce_node_id(boolean value) { + libtorrent_jni.dht_settings_enforce_node_id_set(swigCPtr, this, value); + } + + public boolean getIgnore_dark_internet() { + return libtorrent_jni.dht_settings_ignore_dark_internet_get(swigCPtr, this); + } + + public void setIgnore_dark_internet(boolean value) { + libtorrent_jni.dht_settings_ignore_dark_internet_set(swigCPtr, this, value); + } + + public int getBlock_timeout() { + return libtorrent_jni.dht_settings_block_timeout_get(swigCPtr, this); + } + + public void setBlock_timeout(int value) { + libtorrent_jni.dht_settings_block_timeout_set(swigCPtr, this, value); + } + + public int getBlock_ratelimit() { + return libtorrent_jni.dht_settings_block_ratelimit_get(swigCPtr, this); + } + + public void setBlock_ratelimit(int value) { + libtorrent_jni.dht_settings_block_ratelimit_set(swigCPtr, this, value); + } + + public boolean getRead_only() { + return libtorrent_jni.dht_settings_read_only_get(swigCPtr, this); + } + + public void setRead_only(boolean value) { + libtorrent_jni.dht_settings_read_only_set(swigCPtr, this, value); + } + + public int getItem_lifetime() { + return libtorrent_jni.dht_settings_item_lifetime_get(swigCPtr, this); + } + + public void setItem_lifetime(int value) { + libtorrent_jni.dht_settings_item_lifetime_set(swigCPtr, this, value); + } + + public int getUpload_rate_limit() { + return libtorrent_jni.dht_settings_upload_rate_limit_get(swigCPtr, this); + } + + public void setUpload_rate_limit(int value) { + libtorrent_jni.dht_settings_upload_rate_limit_set(swigCPtr, this, value); + } + + public int getSample_infohashes_interval() { + return libtorrent_jni.dht_settings_sample_infohashes_interval_get(swigCPtr, this); + } + + public void setSample_infohashes_interval(int value) { + libtorrent_jni.dht_settings_sample_infohashes_interval_set(swigCPtr, this, value); + } + + public int getMax_infohashes_sample_count() { + return libtorrent_jni.dht_settings_max_infohashes_sample_count_get(swigCPtr, this); + } + + public void setMax_infohashes_sample_count(int value) { + libtorrent_jni.dht_settings_max_infohashes_sample_count_set(swigCPtr, this, value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_state.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_state.java new file mode 100644 index 0000000..fc72dbe --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_state.java @@ -0,0 +1,74 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_state { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected dht_state(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public dht_state() { + this(libtorrent_jni.new_dht_state(), true); + } + + protected static long getCPtr(dht_state obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_state(swigCPtr); + } + swigCPtr = 0; + } + } + + public address_sha1_hash_pair_vector getNids() { + long cPtr = libtorrent_jni.dht_state_nids_get(swigCPtr, this); + return (cPtr == 0) ? null : new address_sha1_hash_pair_vector(cPtr, false); + } + + public void setNids(address_sha1_hash_pair_vector value) { + libtorrent_jni.dht_state_nids_set(swigCPtr, this, address_sha1_hash_pair_vector.getCPtr(value), value); + } + + public udp_endpoint_vector getNodes() { + long cPtr = libtorrent_jni.dht_state_nodes_get(swigCPtr, this); + return (cPtr == 0) ? null : new udp_endpoint_vector(cPtr, false); + } + + public void setNodes(udp_endpoint_vector value) { + libtorrent_jni.dht_state_nodes_set(swigCPtr, this, udp_endpoint_vector.getCPtr(value), value); + } + + public udp_endpoint_vector getNodes6() { + long cPtr = libtorrent_jni.dht_state_nodes6_get(swigCPtr, this); + return (cPtr == 0) ? null : new udp_endpoint_vector(cPtr, false); + } + + public void setNodes6(udp_endpoint_vector value) { + libtorrent_jni.dht_state_nodes6_set(swigCPtr, this, udp_endpoint_vector.getCPtr(value), value); + } + + public void clear() { + libtorrent_jni.dht_state_clear(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_stats_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_stats_alert.java new file mode 100644 index 0000000..fe24e06 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/dht_stats_alert.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class dht_stats_alert extends alert { + public final static int priority = libtorrent_jni.dht_stats_alert_priority_get(); + public final static int alert_type = libtorrent_jni.dht_stats_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.dht_stats_alert_static_category_get(), false); + private transient long swigCPtr; + + protected dht_stats_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.dht_stats_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(dht_stats_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_dht_stats_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.dht_stats_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.dht_stats_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.dht_stats_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.dht_stats_alert_message(swigCPtr, this); + } + + public dht_lookup_vector getActive_requests() { + long cPtr = libtorrent_jni.dht_stats_alert_active_requests_get(swigCPtr, this); + return (cPtr == 0) ? null : new dht_lookup_vector(cPtr, false); + } + + public void setActive_requests(dht_lookup_vector value) { + libtorrent_jni.dht_stats_alert_active_requests_set(swigCPtr, this, dht_lookup_vector.getCPtr(value), value); + } + + public dht_routing_bucket_vector getRouting_table() { + long cPtr = libtorrent_jni.dht_stats_alert_routing_table_get(swigCPtr, this); + return (cPtr == 0) ? null : new dht_routing_bucket_vector(cPtr, false); + } + + public void setRouting_table(dht_routing_bucket_vector value) { + libtorrent_jni.dht_stats_alert_routing_table_set(swigCPtr, this, dht_routing_bucket_vector.getCPtr(value), value); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/entry.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/entry.java new file mode 100644 index 0000000..154627f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/entry.java @@ -0,0 +1,191 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class entry { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected entry(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public entry(string_entry_map arg0) { + this(libtorrent_jni.new_entry__SWIG_0(string_entry_map.getCPtr(arg0), arg0), true); + } + + public entry(byte_const_span arg0) { + this(libtorrent_jni.new_entry__SWIG_1(byte_const_span.getCPtr(arg0), arg0), true); + } + + public entry(String arg0) { + this(libtorrent_jni.new_entry__SWIG_2(arg0), true); + } + + public entry(entry_vector arg0) { + this(libtorrent_jni.new_entry__SWIG_3(entry_vector.getCPtr(arg0), arg0), true); + } + + public entry(long arg0) { + this(libtorrent_jni.new_entry__SWIG_4(arg0), true); + } + + public entry(entry.data_type t) { + this(libtorrent_jni.new_entry__SWIG_5(t.swigValue()), true); + } + + public entry(entry e) { + this(libtorrent_jni.new_entry__SWIG_6(entry.getCPtr(e), e), true); + } + + public entry() { + this(libtorrent_jni.new_entry__SWIG_7(), true); + } + + protected static long getCPtr(entry obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static entry from_string_bytes(byte_vector string_bytes) { + return new entry(libtorrent_jni.entry_from_string_bytes(byte_vector.getCPtr(string_bytes), string_bytes), true); + } + + public static entry from_preformatted_bytes(byte_vector preformatted_bytes) { + return new entry(libtorrent_jni.entry_from_preformatted_bytes(byte_vector.getCPtr(preformatted_bytes), preformatted_bytes), true); + } + + public static entry bdecode(byte_vector buffer) { + return new entry(libtorrent_jni.entry_bdecode(byte_vector.getCPtr(buffer), buffer), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_entry(swigCPtr); + } + swigCPtr = 0; + } + } + + public entry.data_type type() { + return entry.data_type.swigToEnum(libtorrent_jni.entry_type(swigCPtr, this)); + } + + public long integer() { + return libtorrent_jni.entry_integer(swigCPtr, this); + } + + public String string() { + return libtorrent_jni.entry_string(swigCPtr, this); + } + + public entry_vector list() { + return new entry_vector(libtorrent_jni.entry_list(swigCPtr, this), false); + } + + public string_entry_map dict() { + return new string_entry_map(libtorrent_jni.entry_dict(swigCPtr, this), false); + } + + public entry find_key(string_view key) { + long cPtr = libtorrent_jni.entry_find_key(swigCPtr, this, string_view.getCPtr(key), key); + return (cPtr == 0) ? null : new entry(cPtr, false); + } + + public String to_string() { + return libtorrent_jni.entry_to_string(swigCPtr, this); + } + + public entry get(String key) { + return new entry(libtorrent_jni.entry_get(swigCPtr, this, key), false); + } + + public void set(String key, String value) { + libtorrent_jni.entry_set__SWIG_0(swigCPtr, this, key, value); + } + + public void set(String key, byte_vector value) { + libtorrent_jni.entry_set__SWIG_1(swigCPtr, this, key, byte_vector.getCPtr(value), value); + } + + public void set(String key, long value) { + libtorrent_jni.entry_set__SWIG_2(swigCPtr, this, key, value); + } + + public void set(String key, entry value) { + libtorrent_jni.entry_set__SWIG_3(swigCPtr, this, key, entry.getCPtr(value), value); + } + + public byte_vector string_bytes() { + return new byte_vector(libtorrent_jni.entry_string_bytes(swigCPtr, this), true); + } + + public byte_vector preformatted_bytes() { + return new byte_vector(libtorrent_jni.entry_preformatted_bytes(swigCPtr, this), true); + } + + public byte_vector bencode() { + return new byte_vector(libtorrent_jni.entry_bencode(swigCPtr, this), true); + } + + public final static class data_type { + public final static entry.data_type int_t = new entry.data_type("int_t"); + public final static entry.data_type string_t = new entry.data_type("string_t"); + public final static entry.data_type list_t = new entry.data_type("list_t"); + public final static entry.data_type dictionary_t = new entry.data_type("dictionary_t"); + public final static entry.data_type undefined_t = new entry.data_type("undefined_t"); + public final static entry.data_type preformatted_t = new entry.data_type("preformatted_t"); + private static final data_type[] swigValues = {int_t, string_t, list_t, dictionary_t, undefined_t, preformatted_t}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private data_type(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private data_type(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private data_type(String swigName, data_type swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static data_type swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + data_type.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/entry_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/entry_vector.java new file mode 100644 index 0000000..49133b4 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/entry_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class entry_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected entry_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public entry_vector() { + this(libtorrent_jni.new_entry_vector(), true); + } + + protected static long getCPtr(entry_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_entry_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.entry_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.entry_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.entry_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.entry_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.entry_vector_clear(swigCPtr, this); + } + + public void push_back(entry x) { + libtorrent_jni.entry_vector_push_back(swigCPtr, this, entry.getCPtr(x), x); + } + + public entry get(int i) { + return new entry(libtorrent_jni.entry_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, entry val) { + libtorrent_jni.entry_vector_set(swigCPtr, this, i, entry.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/errc_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/errc_t.java new file mode 100644 index 0000000..368584e --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/errc_t.java @@ -0,0 +1,130 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public final class errc_t { + public final static errc_t success = new errc_t("success", libtorrent_jni.success_get()); + public final static errc_t address_family_not_supported = new errc_t("address_family_not_supported", libtorrent_jni.address_family_not_supported_get()); + public final static errc_t address_in_use = new errc_t("address_in_use", libtorrent_jni.address_in_use_get()); + public final static errc_t address_not_available = new errc_t("address_not_available", libtorrent_jni.address_not_available_get()); + public final static errc_t already_connected = new errc_t("already_connected", libtorrent_jni.already_connected_get()); + public final static errc_t argument_list_too_long = new errc_t("argument_list_too_long", libtorrent_jni.argument_list_too_long_get()); + public final static errc_t argument_out_of_domain = new errc_t("argument_out_of_domain", libtorrent_jni.argument_out_of_domain_get()); + public final static errc_t bad_address = new errc_t("bad_address", libtorrent_jni.bad_address_get()); + public final static errc_t bad_file_descriptor = new errc_t("bad_file_descriptor", libtorrent_jni.bad_file_descriptor_get()); + public final static errc_t bad_message = new errc_t("bad_message", libtorrent_jni.bad_message_get()); + public final static errc_t broken_pipe = new errc_t("broken_pipe", libtorrent_jni.broken_pipe_get()); + public final static errc_t connection_aborted = new errc_t("connection_aborted", libtorrent_jni.connection_aborted_get()); + public final static errc_t connection_already_in_progress = new errc_t("connection_already_in_progress", libtorrent_jni.connection_already_in_progress_get()); + public final static errc_t connection_refused = new errc_t("connection_refused", libtorrent_jni.connection_refused_get()); + public final static errc_t connection_reset = new errc_t("connection_reset", libtorrent_jni.connection_reset_get()); + public final static errc_t cross_device_link = new errc_t("cross_device_link", libtorrent_jni.cross_device_link_get()); + public final static errc_t destination_address_required = new errc_t("destination_address_required", libtorrent_jni.destination_address_required_get()); + public final static errc_t device_or_resource_busy = new errc_t("device_or_resource_busy", libtorrent_jni.device_or_resource_busy_get()); + public final static errc_t directory_not_empty = new errc_t("directory_not_empty", libtorrent_jni.directory_not_empty_get()); + public final static errc_t executable_format_error = new errc_t("executable_format_error", libtorrent_jni.executable_format_error_get()); + public final static errc_t file_exists = new errc_t("file_exists", libtorrent_jni.file_exists_get()); + public final static errc_t file_too_large = new errc_t("file_too_large", libtorrent_jni.file_too_large_get()); + public final static errc_t filename_too_long = new errc_t("filename_too_long", libtorrent_jni.filename_too_long_get()); + public final static errc_t function_not_supported = new errc_t("function_not_supported", libtorrent_jni.function_not_supported_get()); + public final static errc_t host_unreachable = new errc_t("host_unreachable", libtorrent_jni.host_unreachable_get()); + public final static errc_t identifier_removed = new errc_t("identifier_removed", libtorrent_jni.identifier_removed_get()); + public final static errc_t illegal_byte_sequence = new errc_t("illegal_byte_sequence", libtorrent_jni.illegal_byte_sequence_get()); + public final static errc_t inappropriate_io_control_operation = new errc_t("inappropriate_io_control_operation", libtorrent_jni.inappropriate_io_control_operation_get()); + public final static errc_t interrupted = new errc_t("interrupted", libtorrent_jni.interrupted_get()); + public final static errc_t invalid_argument = new errc_t("invalid_argument", libtorrent_jni.invalid_argument_get()); + public final static errc_t invalid_seek = new errc_t("invalid_seek", libtorrent_jni.invalid_seek_get()); + public final static errc_t io_error = new errc_t("io_error", libtorrent_jni.io_error_get()); + public final static errc_t is_a_directory = new errc_t("is_a_directory", libtorrent_jni.is_a_directory_get()); + public final static errc_t message_size = new errc_t("message_size", libtorrent_jni.message_size_get()); + public final static errc_t network_down = new errc_t("network_down", libtorrent_jni.network_down_get()); + public final static errc_t network_reset = new errc_t("network_reset", libtorrent_jni.network_reset_get()); + public final static errc_t network_unreachable = new errc_t("network_unreachable", libtorrent_jni.network_unreachable_get()); + public final static errc_t no_buffer_space = new errc_t("no_buffer_space", libtorrent_jni.no_buffer_space_get()); + public final static errc_t no_child_process = new errc_t("no_child_process", libtorrent_jni.no_child_process_get()); + public final static errc_t no_link = new errc_t("no_link", libtorrent_jni.no_link_get()); + public final static errc_t no_lock_available = new errc_t("no_lock_available", libtorrent_jni.no_lock_available_get()); + public final static errc_t no_message_available = new errc_t("no_message_available", libtorrent_jni.no_message_available_get()); + public final static errc_t no_message = new errc_t("no_message", libtorrent_jni.no_message_get()); + public final static errc_t no_protocol_option = new errc_t("no_protocol_option", libtorrent_jni.no_protocol_option_get()); + public final static errc_t no_space_on_device = new errc_t("no_space_on_device", libtorrent_jni.no_space_on_device_get()); + public final static errc_t no_stream_resources = new errc_t("no_stream_resources", libtorrent_jni.no_stream_resources_get()); + public final static errc_t no_such_device_or_address = new errc_t("no_such_device_or_address", libtorrent_jni.no_such_device_or_address_get()); + public final static errc_t no_such_device = new errc_t("no_such_device", libtorrent_jni.no_such_device_get()); + public final static errc_t no_such_file_or_directory = new errc_t("no_such_file_or_directory", libtorrent_jni.no_such_file_or_directory_get()); + public final static errc_t no_such_process = new errc_t("no_such_process", libtorrent_jni.no_such_process_get()); + public final static errc_t not_a_directory = new errc_t("not_a_directory", libtorrent_jni.not_a_directory_get()); + public final static errc_t not_a_socket = new errc_t("not_a_socket", libtorrent_jni.not_a_socket_get()); + public final static errc_t not_a_stream = new errc_t("not_a_stream", libtorrent_jni.not_a_stream_get()); + public final static errc_t not_connected = new errc_t("not_connected", libtorrent_jni.not_connected_get()); + public final static errc_t not_enough_memory = new errc_t("not_enough_memory", libtorrent_jni.not_enough_memory_get()); + public final static errc_t not_supported = new errc_t("not_supported", libtorrent_jni.not_supported_get()); + public final static errc_t operation_canceled = new errc_t("operation_canceled", libtorrent_jni.operation_canceled_get()); + public final static errc_t operation_in_progress = new errc_t("operation_in_progress", libtorrent_jni.operation_in_progress_get()); + public final static errc_t operation_not_permitted = new errc_t("operation_not_permitted", libtorrent_jni.operation_not_permitted_get()); + public final static errc_t operation_not_supported = new errc_t("operation_not_supported", libtorrent_jni.operation_not_supported_get()); + public final static errc_t operation_would_block = new errc_t("operation_would_block", libtorrent_jni.operation_would_block_get()); + public final static errc_t owner_dead = new errc_t("owner_dead", libtorrent_jni.owner_dead_get()); + public final static errc_t permission_denied = new errc_t("permission_denied", libtorrent_jni.permission_denied_get()); + public final static errc_t protocol_error = new errc_t("protocol_error", libtorrent_jni.protocol_error_get()); + public final static errc_t protocol_not_supported = new errc_t("protocol_not_supported", libtorrent_jni.protocol_not_supported_get()); + public final static errc_t read_only_file_system = new errc_t("read_only_file_system", libtorrent_jni.read_only_file_system_get()); + public final static errc_t resource_deadlock_would_occur = new errc_t("resource_deadlock_would_occur", libtorrent_jni.resource_deadlock_would_occur_get()); + public final static errc_t resource_unavailable_try_again = new errc_t("resource_unavailable_try_again", libtorrent_jni.resource_unavailable_try_again_get()); + public final static errc_t result_out_of_range = new errc_t("result_out_of_range", libtorrent_jni.result_out_of_range_get()); + public final static errc_t state_not_recoverable = new errc_t("state_not_recoverable", libtorrent_jni.state_not_recoverable_get()); + public final static errc_t stream_timeout = new errc_t("stream_timeout", libtorrent_jni.stream_timeout_get()); + public final static errc_t text_file_busy = new errc_t("text_file_busy", libtorrent_jni.text_file_busy_get()); + public final static errc_t timed_out = new errc_t("timed_out", libtorrent_jni.timed_out_get()); + public final static errc_t too_many_files_open_in_system = new errc_t("too_many_files_open_in_system", libtorrent_jni.too_many_files_open_in_system_get()); + public final static errc_t too_many_files_open = new errc_t("too_many_files_open", libtorrent_jni.too_many_files_open_get()); + public final static errc_t too_many_links = new errc_t("too_many_links", libtorrent_jni.too_many_links_get()); + public final static errc_t too_many_symbolic_link_levels = new errc_t("too_many_symbolic_link_levels", libtorrent_jni.too_many_symbolic_link_levels_get()); + public final static errc_t value_too_large = new errc_t("value_too_large", libtorrent_jni.value_too_large_get()); + public final static errc_t wrong_protocol_type = new errc_t("wrong_protocol_type", libtorrent_jni.wrong_protocol_type_get()); + private static final errc_t[] swigValues = {success, address_family_not_supported, address_in_use, address_not_available, already_connected, argument_list_too_long, argument_out_of_domain, bad_address, bad_file_descriptor, bad_message, broken_pipe, connection_aborted, connection_already_in_progress, connection_refused, connection_reset, cross_device_link, destination_address_required, device_or_resource_busy, directory_not_empty, executable_format_error, file_exists, file_too_large, filename_too_long, function_not_supported, host_unreachable, identifier_removed, illegal_byte_sequence, inappropriate_io_control_operation, interrupted, invalid_argument, invalid_seek, io_error, is_a_directory, message_size, network_down, network_reset, network_unreachable, no_buffer_space, no_child_process, no_link, no_lock_available, no_message_available, no_message, no_protocol_option, no_space_on_device, no_stream_resources, no_such_device_or_address, no_such_device, no_such_file_or_directory, no_such_process, not_a_directory, not_a_socket, not_a_stream, not_connected, not_enough_memory, not_supported, operation_canceled, operation_in_progress, operation_not_permitted, operation_not_supported, operation_would_block, owner_dead, permission_denied, protocol_error, protocol_not_supported, read_only_file_system, resource_deadlock_would_occur, resource_unavailable_try_again, result_out_of_range, state_not_recoverable, stream_timeout, text_file_busy, timed_out, too_many_files_open_in_system, too_many_files_open, too_many_links, too_many_symbolic_link_levels, value_too_large, wrong_protocol_type}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private errc_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private errc_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private errc_t(String swigName, errc_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static errc_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + errc_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/error_code.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/error_code.java new file mode 100644 index 0000000..e1c2837 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/error_code.java @@ -0,0 +1,67 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class error_code { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected error_code(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public error_code() { + this(libtorrent_jni.new_error_code(), true); + } + + protected static long getCPtr(error_code obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_error_code(swigCPtr); + } + swigCPtr = 0; + } + } + + public void clear() { + libtorrent_jni.error_code_clear(swigCPtr, this); + } + + public int value() { + return libtorrent_jni.error_code_value(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.error_code_message__SWIG_0(swigCPtr, this); + } + + public String message(String buffer, long len) { + return libtorrent_jni.error_code_message__SWIG_1(swigCPtr, this, buffer, len); + } + + public boolean failed() { + return libtorrent_jni.error_code_failed(swigCPtr, this); + } + + public boolean op_bool() { + return libtorrent_jni.error_code_op_bool(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/external_ip_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/external_ip_alert.java new file mode 100644 index 0000000..b15a059 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/external_ip_alert.java @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class external_ip_alert extends alert { + public final static int priority = libtorrent_jni.external_ip_alert_priority_get(); + public final static int alert_type = libtorrent_jni.external_ip_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.external_ip_alert_static_category_get(), false); + private transient long swigCPtr; + + protected external_ip_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.external_ip_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(external_ip_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_external_ip_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.external_ip_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.external_ip_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.external_ip_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.external_ip_alert_message(swigCPtr, this); + } + + public address get_external_address() { + return new address(libtorrent_jni.external_ip_alert_get_external_address(swigCPtr, this), true); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/fastresume_rejected_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/fastresume_rejected_alert.java new file mode 100644 index 0000000..210e8fc --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/fastresume_rejected_alert.java @@ -0,0 +1,78 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class fastresume_rejected_alert extends torrent_alert { + public final static int priority = libtorrent_jni.fastresume_rejected_alert_priority_get(); + public final static int alert_type = libtorrent_jni.fastresume_rejected_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.fastresume_rejected_alert_static_category_get(), false); + private transient long swigCPtr; + + protected fastresume_rejected_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.fastresume_rejected_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(fastresume_rejected_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_fastresume_rejected_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.fastresume_rejected_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.fastresume_rejected_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.fastresume_rejected_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.fastresume_rejected_alert_message(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.fastresume_rejected_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public void setError(error_code value) { + libtorrent_jni.fastresume_rejected_alert_error_set(swigCPtr, this, error_code.getCPtr(value), value); + } + + public String file_path() { + return libtorrent_jni.fastresume_rejected_alert_file_path(swigCPtr, this); + } + + public operation_t getOp() { + return operation_t.swigToEnum(libtorrent_jni.fastresume_rejected_alert_op_get(swigCPtr, this)); + } + + public void setOp(operation_t value) { + libtorrent_jni.fastresume_rejected_alert_op_set(swigCPtr, this, value.swigValue()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_completed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_completed_alert.java new file mode 100644 index 0000000..3d17b0c --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_completed_alert.java @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class file_completed_alert extends torrent_alert { + public final static int priority = libtorrent_jni.file_completed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.file_completed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.file_completed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected file_completed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.file_completed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(file_completed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_file_completed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.file_completed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.file_completed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.file_completed_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.file_completed_alert_message(swigCPtr, this); + } + + public int getIndex() { + return libtorrent_jni.file_completed_alert_index_get(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_error_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_error_alert.java new file mode 100644 index 0000000..2506057 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_error_alert.java @@ -0,0 +1,74 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class file_error_alert extends torrent_alert { + public final static int priority = libtorrent_jni.file_error_alert_priority_get(); + public final static int alert_type = libtorrent_jni.file_error_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.file_error_alert_static_category_get(), false); + private transient long swigCPtr; + + protected file_error_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.file_error_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(file_error_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_file_error_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.file_error_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.file_error_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.file_error_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.file_error_alert_message(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.file_error_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public operation_t getOp() { + return operation_t.swigToEnum(libtorrent_jni.file_error_alert_op_get(swigCPtr, this)); + } + + public void setOp(operation_t value) { + libtorrent_jni.file_error_alert_op_set(swigCPtr, this, value.swigValue()); + } + + public String filename() { + return libtorrent_jni.file_error_alert_filename(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_flags_t.java new file mode 100644 index 0000000..26e5ca2 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class file_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected file_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public file_flags_t() { + this(libtorrent_jni.new_file_flags_t(), true); + } + + protected static long getCPtr(file_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static file_flags_t all() { + return new file_flags_t(libtorrent_jni.file_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_file_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.file_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(file_flags_t f) { + return libtorrent_jni.file_flags_t_eq(swigCPtr, this, file_flags_t.getCPtr(f), f); + } + + public boolean ne(file_flags_t f) { + return libtorrent_jni.file_flags_t_ne(swigCPtr, this, file_flags_t.getCPtr(f), f); + } + + public file_flags_t or_(file_flags_t other) { + return new file_flags_t(libtorrent_jni.file_flags_t_or_(swigCPtr, this, file_flags_t.getCPtr(other), other), true); + } + + public file_flags_t and_(file_flags_t other) { + return new file_flags_t(libtorrent_jni.file_flags_t_and_(swigCPtr, this, file_flags_t.getCPtr(other), other), true); + } + + public file_flags_t xor(file_flags_t other) { + return new file_flags_t(libtorrent_jni.file_flags_t_xor(swigCPtr, this, file_flags_t.getCPtr(other), other), true); + } + + public file_flags_t inv() { + return new file_flags_t(libtorrent_jni.file_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.file_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_index_string_map.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_index_string_map.java new file mode 100644 index 0000000..ec1121a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_index_string_map.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class file_index_string_map { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected file_index_string_map(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public file_index_string_map() { + this(libtorrent_jni.new_file_index_string_map__SWIG_0(), true); + } + + public file_index_string_map(file_index_string_map arg0) { + this(libtorrent_jni.new_file_index_string_map__SWIG_1(file_index_string_map.getCPtr(arg0), arg0), true); + } + + protected static long getCPtr(file_index_string_map obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_file_index_string_map(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.file_index_string_map_size(swigCPtr, this); + } + + public boolean empty() { + return libtorrent_jni.file_index_string_map_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.file_index_string_map_clear(swigCPtr, this); + } + + public String get(int key) { + return libtorrent_jni.file_index_string_map_get(swigCPtr, this, key); + } + + public void set(int key, String x) { + libtorrent_jni.file_index_string_map_set(swigCPtr, this, key, x); + } + + public void erase(int key) { + libtorrent_jni.file_index_string_map_erase(swigCPtr, this, key); + } + + public boolean has_key(int key) { + return libtorrent_jni.file_index_string_map_has_key(swigCPtr, this, key); + } + + public file_index_vector keys() { + return new file_index_vector(libtorrent_jni.file_index_string_map_keys(swigCPtr, this), true); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_index_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_index_vector.java new file mode 100644 index 0000000..8e0c230 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_index_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class file_index_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected file_index_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public file_index_vector() { + this(libtorrent_jni.new_file_index_vector(), true); + } + + protected static long getCPtr(file_index_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_file_index_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.file_index_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.file_index_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.file_index_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.file_index_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.file_index_vector_clear(swigCPtr, this); + } + + public void push_back(int x) { + libtorrent_jni.file_index_vector_push_back(swigCPtr, this, x); + } + + public int get(int i) { + return libtorrent_jni.file_index_vector_get(swigCPtr, this, i); + } + + public void set(int i, int val) { + libtorrent_jni.file_index_vector_set(swigCPtr, this, i, val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_rename_failed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_rename_failed_alert.java new file mode 100644 index 0000000..59edec9 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_rename_failed_alert.java @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class file_rename_failed_alert extends torrent_alert { + public final static int priority = libtorrent_jni.file_rename_failed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.file_rename_failed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.file_rename_failed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected file_rename_failed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.file_rename_failed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(file_rename_failed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_file_rename_failed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.file_rename_failed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.file_rename_failed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.file_rename_failed_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.file_rename_failed_alert_message(swigCPtr, this); + } + + public int getIndex() { + return libtorrent_jni.file_rename_failed_alert_index_get(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.file_rename_failed_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_renamed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_renamed_alert.java new file mode 100644 index 0000000..4ecb934 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_renamed_alert.java @@ -0,0 +1,65 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class file_renamed_alert extends torrent_alert { + public final static int priority = libtorrent_jni.file_renamed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.file_renamed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.file_renamed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected file_renamed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.file_renamed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(file_renamed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_file_renamed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.file_renamed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.file_renamed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.file_renamed_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.file_renamed_alert_message(swigCPtr, this); + } + + public String new_name() { + return libtorrent_jni.file_renamed_alert_new_name(swigCPtr, this); + } + + public int getIndex() { + return libtorrent_jni.file_renamed_alert_index_get(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_slice.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_slice.java new file mode 100644 index 0000000..be64134 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_slice.java @@ -0,0 +1,67 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class file_slice { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected file_slice(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public file_slice() { + this(libtorrent_jni.new_file_slice(), true); + } + + protected static long getCPtr(file_slice obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_file_slice(swigCPtr); + } + swigCPtr = 0; + } + } + + public int getFile_index() { + return libtorrent_jni.file_slice_file_index_get(swigCPtr, this); + } + + public void setFile_index(int value) { + libtorrent_jni.file_slice_file_index_set(swigCPtr, this, value); + } + + public long getOffset() { + return libtorrent_jni.file_slice_offset_get(swigCPtr, this); + } + + public void setOffset(long value) { + libtorrent_jni.file_slice_offset_set(swigCPtr, this, value); + } + + public long getSize() { + return libtorrent_jni.file_slice_size_get(swigCPtr, this); + } + + public void setSize(long value) { + libtorrent_jni.file_slice_size_set(swigCPtr, this, value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_slice_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_slice_vector.java new file mode 100644 index 0000000..d485c8f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_slice_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class file_slice_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected file_slice_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public file_slice_vector() { + this(libtorrent_jni.new_file_slice_vector(), true); + } + + protected static long getCPtr(file_slice_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_file_slice_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.file_slice_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.file_slice_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.file_slice_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.file_slice_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.file_slice_vector_clear(swigCPtr, this); + } + + public void push_back(file_slice x) { + libtorrent_jni.file_slice_vector_push_back(swigCPtr, this, file_slice.getCPtr(x), x); + } + + public file_slice get(int i) { + return new file_slice(libtorrent_jni.file_slice_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, file_slice val) { + libtorrent_jni.file_slice_vector_set(swigCPtr, this, i, file_slice.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_storage.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_storage.java new file mode 100644 index 0000000..5eaa71d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/file_storage.java @@ -0,0 +1,234 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class file_storage { + public final static file_flags_t flag_pad_file = new file_flags_t(libtorrent_jni.file_storage_flag_pad_file_get(), false); + public final static file_flags_t flag_hidden = new file_flags_t(libtorrent_jni.file_storage_flag_hidden_get(), false); + public final static file_flags_t flag_executable = new file_flags_t(libtorrent_jni.file_storage_flag_executable_get(), false); + public final static file_flags_t flag_symlink = new file_flags_t(libtorrent_jni.file_storage_flag_symlink_get(), false); + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected file_storage(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public file_storage() { + this(libtorrent_jni.new_file_storage__SWIG_0(), true); + } + + public file_storage(file_storage arg0) { + this(libtorrent_jni.new_file_storage__SWIG_1(file_storage.getCPtr(arg0), arg0), true); + } + + protected static long getCPtr(file_storage obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_file_storage(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean is_valid() { + return libtorrent_jni.file_storage_is_valid(swigCPtr, this); + } + + public void reserve(int num_files) { + libtorrent_jni.file_storage_reserve(swigCPtr, this, num_files); + } + + public void add_file_borrow(string_view filename, String path, long file_size, file_flags_t file_flags, String filehash, long mtime, string_view symlink_path) { + libtorrent_jni.file_storage_add_file_borrow__SWIG_0(swigCPtr, this, string_view.getCPtr(filename), filename, path, file_size, file_flags_t.getCPtr(file_flags), file_flags, filehash, mtime, string_view.getCPtr(symlink_path), symlink_path); + } + + public void add_file_borrow(string_view filename, String path, long file_size, file_flags_t file_flags, String filehash, long mtime) { + libtorrent_jni.file_storage_add_file_borrow__SWIG_1(swigCPtr, this, string_view.getCPtr(filename), filename, path, file_size, file_flags_t.getCPtr(file_flags), file_flags, filehash, mtime); + } + + public void add_file_borrow(string_view filename, String path, long file_size, file_flags_t file_flags, String filehash) { + libtorrent_jni.file_storage_add_file_borrow__SWIG_2(swigCPtr, this, string_view.getCPtr(filename), filename, path, file_size, file_flags_t.getCPtr(file_flags), file_flags, filehash); + } + + public void add_file_borrow(string_view filename, String path, long file_size, file_flags_t file_flags) { + libtorrent_jni.file_storage_add_file_borrow__SWIG_3(swigCPtr, this, string_view.getCPtr(filename), filename, path, file_size, file_flags_t.getCPtr(file_flags), file_flags); + } + + public void add_file_borrow(string_view filename, String path, long file_size) { + libtorrent_jni.file_storage_add_file_borrow__SWIG_4(swigCPtr, this, string_view.getCPtr(filename), filename, path, file_size); + } + + public void add_file(String path, long file_size, file_flags_t file_flags, long mtime, string_view symlink_path) { + libtorrent_jni.file_storage_add_file__SWIG_0(swigCPtr, this, path, file_size, file_flags_t.getCPtr(file_flags), file_flags, mtime, string_view.getCPtr(symlink_path), symlink_path); + } + + public void add_file(String path, long file_size, file_flags_t file_flags, long mtime) { + libtorrent_jni.file_storage_add_file__SWIG_1(swigCPtr, this, path, file_size, file_flags_t.getCPtr(file_flags), file_flags, mtime); + } + + public void add_file(String path, long file_size, file_flags_t file_flags) { + libtorrent_jni.file_storage_add_file__SWIG_2(swigCPtr, this, path, file_size, file_flags_t.getCPtr(file_flags), file_flags); + } + + public void add_file(String path, long file_size) { + libtorrent_jni.file_storage_add_file__SWIG_3(swigCPtr, this, path, file_size); + } + + public void rename_file(int index, String new_filename) { + libtorrent_jni.file_storage_rename_file(swigCPtr, this, index, new_filename); + } + + public file_slice_vector map_block(int piece, long offset, int size) { + return new file_slice_vector(libtorrent_jni.file_storage_map_block(swigCPtr, this, piece, offset, size), true); + } + + public peer_request map_file(int file, long offset, int size) { + return new peer_request(libtorrent_jni.file_storage_map_file(swigCPtr, this, file, offset, size), true); + } + + public int num_files() { + return libtorrent_jni.file_storage_num_files(swigCPtr, this); + } + + public int end_file() { + return libtorrent_jni.file_storage_end_file(swigCPtr, this); + } + + public long total_size() { + return libtorrent_jni.file_storage_total_size(swigCPtr, this); + } + + public void set_num_pieces(int n) { + libtorrent_jni.file_storage_set_num_pieces(swigCPtr, this, n); + } + + public int num_pieces() { + return libtorrent_jni.file_storage_num_pieces(swigCPtr, this); + } + + public int end_piece() { + return libtorrent_jni.file_storage_end_piece(swigCPtr, this); + } + + public int last_piece() { + return libtorrent_jni.file_storage_last_piece(swigCPtr, this); + } + + public void set_piece_length(int l) { + libtorrent_jni.file_storage_set_piece_length(swigCPtr, this, l); + } + + public int piece_length() { + return libtorrent_jni.file_storage_piece_length(swigCPtr, this); + } + + public int piece_size(int index) { + return libtorrent_jni.file_storage_piece_size(swigCPtr, this, index); + } + + public void set_name(String n) { + libtorrent_jni.file_storage_set_name(swigCPtr, this, n); + } + + public String name() { + return libtorrent_jni.file_storage_name(swigCPtr, this); + } + + public void swap(file_storage ti) { + libtorrent_jni.file_storage_swap(swigCPtr, this, file_storage.getCPtr(ti), ti); + } + + public void optimize(int pad_file_limit, int alignment, boolean tail_padding) { + libtorrent_jni.file_storage_optimize__SWIG_0(swigCPtr, this, pad_file_limit, alignment, tail_padding); + } + + public void optimize(int pad_file_limit, int alignment) { + libtorrent_jni.file_storage_optimize__SWIG_1(swigCPtr, this, pad_file_limit, alignment); + } + + public void optimize(int pad_file_limit) { + libtorrent_jni.file_storage_optimize__SWIG_2(swigCPtr, this, pad_file_limit); + } + + public void optimize() { + libtorrent_jni.file_storage_optimize__SWIG_3(swigCPtr, this); + } + + public sha1_hash hash(int index) { + return new sha1_hash(libtorrent_jni.file_storage_hash(swigCPtr, this, index), true); + } + + public String symlink(int index) { + return libtorrent_jni.file_storage_symlink(swigCPtr, this, index); + } + + public long mtime(int index) { + return libtorrent_jni.file_storage_mtime(swigCPtr, this, index); + } + + public String file_path(int index, String save_path) { + return libtorrent_jni.file_storage_file_path__SWIG_0(swigCPtr, this, index, save_path); + } + + public String file_path(int index) { + return libtorrent_jni.file_storage_file_path__SWIG_1(swigCPtr, this, index); + } + + public string_view file_name(int index) { + return new string_view(libtorrent_jni.file_storage_file_name(swigCPtr, this, index), true); + } + + public long file_size(int index) { + return libtorrent_jni.file_storage_file_size(swigCPtr, this, index); + } + + public boolean pad_file_at(int index) { + return libtorrent_jni.file_storage_pad_file_at(swigCPtr, this, index); + } + + public long file_offset(int index) { + return libtorrent_jni.file_storage_file_offset(swigCPtr, this, index); + } + + public string_vector paths() { + return new string_vector(libtorrent_jni.file_storage_paths(swigCPtr, this), false); + } + + public file_flags_t file_flags(int index) { + return new file_flags_t(libtorrent_jni.file_storage_file_flags(swigCPtr, this, index), true); + } + + public boolean file_absolute_path(int index) { + return libtorrent_jni.file_storage_file_absolute_path(swigCPtr, this, index); + } + + public int file_index_at_offset(long offset) { + return libtorrent_jni.file_storage_file_index_at_offset(swigCPtr, this, offset); + } + + public String internal_symlink(int index) { + return libtorrent_jni.file_storage_internal_symlink(swigCPtr, this, index); + } + + public void add_file(String path, long file_size, file_flags_t file_flags, long mtime, String symlink_path) { + libtorrent_jni.file_storage_add_file__SWIG_4(swigCPtr, this, path, file_size, file_flags_t.getCPtr(file_flags), file_flags, mtime, symlink_path); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/generic_error_category.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/generic_error_category.java new file mode 100644 index 0000000..1cfcaa3 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/generic_error_category.java @@ -0,0 +1,55 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class generic_error_category { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected generic_error_category(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public generic_error_category() { + this(libtorrent_jni.new_generic_error_category(), true); + } + + protected static long getCPtr(generic_error_category obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_generic_error_category(swigCPtr); + } + swigCPtr = 0; + } + } + + public String name() { + return libtorrent_jni.generic_error_category_name(swigCPtr, this); + } + + public String message(int ev) { + return libtorrent_jni.generic_error_category_message__SWIG_0(swigCPtr, this, ev); + } + + public String message(int ev, String buffer, long len) { + return libtorrent_jni.generic_error_category_message__SWIG_1(swigCPtr, this, ev, buffer, len); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/hash_failed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/hash_failed_alert.java new file mode 100644 index 0000000..6089e50 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/hash_failed_alert.java @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class hash_failed_alert extends torrent_alert { + public final static int priority = libtorrent_jni.hash_failed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.hash_failed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.hash_failed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected hash_failed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.hash_failed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(hash_failed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_hash_failed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.hash_failed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.hash_failed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.hash_failed_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.hash_failed_alert_message(swigCPtr, this); + } + + public int getPiece_index() { + return libtorrent_jni.hash_failed_alert_piece_index_get(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/http_errors.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/http_errors.java new file mode 100644 index 0000000..1cb5ec5 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/http_errors.java @@ -0,0 +1,68 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public final class http_errors { + public final static http_errors cont = new http_errors("cont", libtorrent_jni.cont_get()); + public final static http_errors ok = new http_errors("ok", libtorrent_jni.ok_get()); + public final static http_errors created = new http_errors("created", libtorrent_jni.created_get()); + public final static http_errors accepted = new http_errors("accepted", libtorrent_jni.accepted_get()); + public final static http_errors no_content = new http_errors("no_content", libtorrent_jni.no_content_get()); + public final static http_errors multiple_choices = new http_errors("multiple_choices", libtorrent_jni.multiple_choices_get()); + public final static http_errors moved_permanently = new http_errors("moved_permanently", libtorrent_jni.moved_permanently_get()); + public final static http_errors moved_temporarily = new http_errors("moved_temporarily", libtorrent_jni.moved_temporarily_get()); + public final static http_errors not_modified = new http_errors("not_modified", libtorrent_jni.not_modified_get()); + public final static http_errors bad_request = new http_errors("bad_request", libtorrent_jni.bad_request_get()); + public final static http_errors unauthorized = new http_errors("unauthorized", libtorrent_jni.unauthorized_get()); + public final static http_errors forbidden = new http_errors("forbidden", libtorrent_jni.forbidden_get()); + public final static http_errors not_found = new http_errors("not_found", libtorrent_jni.not_found_get()); + public final static http_errors internal_server_error = new http_errors("internal_server_error", libtorrent_jni.internal_server_error_get()); + public final static http_errors not_implemented = new http_errors("not_implemented", libtorrent_jni.not_implemented_get()); + public final static http_errors bad_gateway = new http_errors("bad_gateway", libtorrent_jni.bad_gateway_get()); + public final static http_errors service_unavailable = new http_errors("service_unavailable", libtorrent_jni.service_unavailable_get()); + private static final http_errors[] swigValues = {cont, ok, created, accepted, no_content, multiple_choices, moved_permanently, moved_temporarily, not_modified, bad_request, unauthorized, forbidden, not_found, internal_server_error, not_implemented, bad_gateway, service_unavailable}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private http_errors(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private http_errors(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private http_errors(String swigName, http_errors swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static http_errors swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + http_errors.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/i2p_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/i2p_alert.java new file mode 100644 index 0000000..673d86b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/i2p_alert.java @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class i2p_alert extends alert { + public final static int priority = libtorrent_jni.i2p_alert_priority_get(); + public final static int alert_type = libtorrent_jni.i2p_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.i2p_alert_static_category_get(), false); + private transient long swigCPtr; + + protected i2p_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.i2p_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(i2p_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_i2p_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.i2p_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.i2p_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.i2p_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.i2p_alert_message(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.i2p_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public void setError(error_code value) { + libtorrent_jni.i2p_alert_error_set(swigCPtr, this, error_code.getCPtr(value), value); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/incoming_connection_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/incoming_connection_alert.java new file mode 100644 index 0000000..0d529f8 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/incoming_connection_alert.java @@ -0,0 +1,65 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class incoming_connection_alert extends alert { + public final static int priority = libtorrent_jni.incoming_connection_alert_priority_get(); + public final static int alert_type = libtorrent_jni.incoming_connection_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.incoming_connection_alert_static_category_get(), false); + private transient long swigCPtr; + + protected incoming_connection_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.incoming_connection_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(incoming_connection_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_incoming_connection_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.incoming_connection_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.incoming_connection_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.incoming_connection_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.incoming_connection_alert_message(swigCPtr, this); + } + + public int getSocket_type() { + return libtorrent_jni.incoming_connection_alert_socket_type_get(swigCPtr, this); + } + + public tcp_endpoint get_endpoint() { + return new tcp_endpoint(libtorrent_jni.incoming_connection_alert_get_endpoint(swigCPtr, this), true); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/incoming_request_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/incoming_request_alert.java new file mode 100644 index 0000000..1d870dd --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/incoming_request_alert.java @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class incoming_request_alert extends peer_alert { + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.incoming_request_alert_static_category_get(), false); + public final static int priority = libtorrent_jni.incoming_request_alert_priority_get(); + public final static int alert_type = libtorrent_jni.incoming_request_alert_alert_type_get(); + private transient long swigCPtr; + + protected incoming_request_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.incoming_request_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(incoming_request_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_incoming_request_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.incoming_request_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.incoming_request_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.incoming_request_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.incoming_request_alert_message(swigCPtr, this); + } + + public peer_request getReq() { + long cPtr = libtorrent_jni.incoming_request_alert_req_get(swigCPtr, this); + return (cPtr == 0) ? null : new peer_request(cPtr, false); + } + + public void setReq(peer_request value) { + libtorrent_jni.incoming_request_alert_req_set(swigCPtr, this, peer_request.getCPtr(value), value); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/int64_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/int64_vector.java new file mode 100644 index 0000000..d53a8c1 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/int64_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class int64_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected int64_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public int64_vector() { + this(libtorrent_jni.new_int64_vector(), true); + } + + protected static long getCPtr(int64_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_int64_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.int64_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.int64_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.int64_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.int64_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.int64_vector_clear(swigCPtr, this); + } + + public void push_back(long x) { + libtorrent_jni.int64_vector_push_back(swigCPtr, this, x); + } + + public long get(int i) { + return libtorrent_jni.int64_vector_get(swigCPtr, this, i); + } + + public void set(int i, long val) { + libtorrent_jni.int64_vector_set(swigCPtr, this, i, val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/int_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/int_vector.java new file mode 100644 index 0000000..2236a39 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/int_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class int_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected int_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public int_vector() { + this(libtorrent_jni.new_int_vector(), true); + } + + protected static long getCPtr(int_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_int_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.int_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.int_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.int_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.int_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.int_vector_clear(swigCPtr, this); + } + + public void push_back(int x) { + libtorrent_jni.int_vector_push_back(swigCPtr, this, x); + } + + public int get(int i) { + return libtorrent_jni.int_vector_get(swigCPtr, this, i); + } + + public void set(int i, int val) { + libtorrent_jni.int_vector_set(swigCPtr, this, i, val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/invalid_request_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/invalid_request_alert.java new file mode 100644 index 0000000..06beef9 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/invalid_request_alert.java @@ -0,0 +1,74 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class invalid_request_alert extends peer_alert { + public final static int priority = libtorrent_jni.invalid_request_alert_priority_get(); + public final static int alert_type = libtorrent_jni.invalid_request_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.invalid_request_alert_static_category_get(), false); + private transient long swigCPtr; + + protected invalid_request_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.invalid_request_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(invalid_request_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_invalid_request_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.invalid_request_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.invalid_request_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.invalid_request_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.invalid_request_alert_message(swigCPtr, this); + } + + public peer_request getRequest() { + long cPtr = libtorrent_jni.invalid_request_alert_request_get(swigCPtr, this); + return (cPtr == 0) ? null : new peer_request(cPtr, false); + } + + public boolean getWe_have() { + return libtorrent_jni.invalid_request_alert_we_have_get(swigCPtr, this); + } + + public boolean getPeer_interested() { + return libtorrent_jni.invalid_request_alert_peer_interested_get(swigCPtr, this); + } + + public boolean getWithheld() { + return libtorrent_jni.invalid_request_alert_withheld_get(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/ip_filter.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/ip_filter.java new file mode 100644 index 0000000..81cdd5f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/ip_filter.java @@ -0,0 +1,93 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class ip_filter { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected ip_filter(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public ip_filter() { + this(libtorrent_jni.new_ip_filter(), true); + } + + protected static long getCPtr(ip_filter obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_ip_filter(swigCPtr); + } + swigCPtr = 0; + } + } + + public void add_rule(address first, address last, long flags) { + libtorrent_jni.ip_filter_add_rule(swigCPtr, this, address.getCPtr(first), first, address.getCPtr(last), last, flags); + } + + public long access(address addr) { + return libtorrent_jni.ip_filter_access(swigCPtr, this, address.getCPtr(addr), addr); + } + + public final static class access_flags { + public final static ip_filter.access_flags blocked = new ip_filter.access_flags("blocked", libtorrent_jni.ip_filter_blocked_get()); + private static final access_flags[] swigValues = {blocked}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private access_flags(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private access_flags(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private access_flags(String swigName, access_flags swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static access_flags swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + access_flags.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/ip_interface.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/ip_interface.java new file mode 100644 index 0000000..013c16b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/ip_interface.java @@ -0,0 +1,96 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class ip_interface { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected ip_interface(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public ip_interface() { + this(libtorrent_jni.new_ip_interface(), true); + } + + protected static long getCPtr(ip_interface obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_ip_interface(swigCPtr); + } + swigCPtr = 0; + } + } + + public address getInterface_address() { + long cPtr = libtorrent_jni.ip_interface_interface_address_get(swigCPtr, this); + return (cPtr == 0) ? null : new address(cPtr, false); + } + + public void setInterface_address(address value) { + libtorrent_jni.ip_interface_interface_address_set(swigCPtr, this, address.getCPtr(value), value); + } + + public address getNetmask() { + long cPtr = libtorrent_jni.ip_interface_netmask_get(swigCPtr, this); + return (cPtr == 0) ? null : new address(cPtr, false); + } + + public void setNetmask(address value) { + libtorrent_jni.ip_interface_netmask_set(swigCPtr, this, address.getCPtr(value), value); + } + + public byte_vector getName() { + long cPtr = libtorrent_jni.ip_interface_name_get(swigCPtr, this); + return (cPtr == 0) ? null : new byte_vector(cPtr, false); + } + + public void setName(byte_vector value) { + libtorrent_jni.ip_interface_name_set(swigCPtr, this, byte_vector.getCPtr(value), value); + } + + public byte_vector getFriendly_name() { + long cPtr = libtorrent_jni.ip_interface_friendly_name_get(swigCPtr, this); + return (cPtr == 0) ? null : new byte_vector(cPtr, false); + } + + public void setFriendly_name(byte_vector value) { + libtorrent_jni.ip_interface_friendly_name_set(swigCPtr, this, byte_vector.getCPtr(value), value); + } + + public byte_vector getDescription() { + long cPtr = libtorrent_jni.ip_interface_description_get(swigCPtr, this); + return (cPtr == 0) ? null : new byte_vector(cPtr, false); + } + + public void setDescription(byte_vector value) { + libtorrent_jni.ip_interface_description_set(swigCPtr, this, byte_vector.getCPtr(value), value); + } + + public boolean getPreferred() { + return libtorrent_jni.ip_interface_preferred_get(swigCPtr, this); + } + + public void setPreferred(boolean value) { + libtorrent_jni.ip_interface_preferred_set(swigCPtr, this, value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/ip_interface_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/ip_interface_vector.java new file mode 100644 index 0000000..38321be --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/ip_interface_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class ip_interface_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected ip_interface_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public ip_interface_vector() { + this(libtorrent_jni.new_ip_interface_vector(), true); + } + + protected static long getCPtr(ip_interface_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_ip_interface_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.ip_interface_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.ip_interface_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.ip_interface_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.ip_interface_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.ip_interface_vector_clear(swigCPtr, this); + } + + public void push_back(ip_interface x) { + libtorrent_jni.ip_interface_vector_push_back(swigCPtr, this, ip_interface.getCPtr(x), x); + } + + public ip_interface get(int i) { + return new ip_interface(libtorrent_jni.ip_interface_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, ip_interface val) { + libtorrent_jni.ip_interface_vector_set(swigCPtr, this, i, ip_interface.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/ip_route.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/ip_route.java new file mode 100644 index 0000000..6ba4a72 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/ip_route.java @@ -0,0 +1,96 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class ip_route { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected ip_route(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public ip_route() { + this(libtorrent_jni.new_ip_route(), true); + } + + protected static long getCPtr(ip_route obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_ip_route(swigCPtr); + } + swigCPtr = 0; + } + } + + public address getDestination() { + long cPtr = libtorrent_jni.ip_route_destination_get(swigCPtr, this); + return (cPtr == 0) ? null : new address(cPtr, false); + } + + public void setDestination(address value) { + libtorrent_jni.ip_route_destination_set(swigCPtr, this, address.getCPtr(value), value); + } + + public address getNetmask() { + long cPtr = libtorrent_jni.ip_route_netmask_get(swigCPtr, this); + return (cPtr == 0) ? null : new address(cPtr, false); + } + + public void setNetmask(address value) { + libtorrent_jni.ip_route_netmask_set(swigCPtr, this, address.getCPtr(value), value); + } + + public address getGateway() { + long cPtr = libtorrent_jni.ip_route_gateway_get(swigCPtr, this); + return (cPtr == 0) ? null : new address(cPtr, false); + } + + public void setGateway(address value) { + libtorrent_jni.ip_route_gateway_set(swigCPtr, this, address.getCPtr(value), value); + } + + public address getSource_hint() { + long cPtr = libtorrent_jni.ip_route_source_hint_get(swigCPtr, this); + return (cPtr == 0) ? null : new address(cPtr, false); + } + + public void setSource_hint(address value) { + libtorrent_jni.ip_route_source_hint_set(swigCPtr, this, address.getCPtr(value), value); + } + + public byte_vector getName() { + long cPtr = libtorrent_jni.ip_route_name_get(swigCPtr, this); + return (cPtr == 0) ? null : new byte_vector(cPtr, false); + } + + public void setName(byte_vector value) { + libtorrent_jni.ip_route_name_set(swigCPtr, this, byte_vector.getCPtr(value), value); + } + + public int getMtu() { + return libtorrent_jni.ip_route_mtu_get(swigCPtr, this); + } + + public void setMtu(int value) { + libtorrent_jni.ip_route_mtu_set(swigCPtr, this, value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/ip_route_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/ip_route_vector.java new file mode 100644 index 0000000..25fb698 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/ip_route_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class ip_route_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected ip_route_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public ip_route_vector() { + this(libtorrent_jni.new_ip_route_vector(), true); + } + + protected static long getCPtr(ip_route_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_ip_route_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.ip_route_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.ip_route_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.ip_route_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.ip_route_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.ip_route_vector_clear(swigCPtr, this); + } + + public void push_back(ip_route x) { + libtorrent_jni.ip_route_vector_push_back(swigCPtr, this, ip_route.getCPtr(x), x); + } + + public ip_route get(int i) { + return new ip_route(libtorrent_jni.ip_route_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, ip_route val) { + libtorrent_jni.ip_route_vector_set(swigCPtr, this, i, ip_route.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/libtorrent.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/libtorrent.java new file mode 100644 index 0000000..be6d031 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/libtorrent.java @@ -0,0 +1,439 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class libtorrent implements libtorrentConstants { + public static boolean failed_impl(int ev, SWIGTYPE_p_boost__system__error_category cat) { + return libtorrent_jni.failed_impl(ev, SWIGTYPE_p_boost__system__error_category.getCPtr(cat)); + } + + public static boolean op_eq(error_code lhs, error_code rhs) { + return libtorrent_jni.op_eq__SWIG_1(error_code.getCPtr(lhs), lhs, error_code.getCPtr(rhs), rhs); + } + + public static boolean op_lt(error_code lhs, error_code rhs) { + return libtorrent_jni.op_lt__SWIG_1(error_code.getCPtr(lhs), lhs, error_code.getCPtr(rhs), rhs); + } + + public static boolean op_ne(error_code lhs, error_code rhs) { + return libtorrent_jni.op_ne(error_code.getCPtr(lhs), lhs, error_code.getCPtr(rhs), rhs); + } + + public static error_code make_error_code(errc_t e) { + return new error_code(libtorrent_jni.make_error_code(e.swigValue()), true); + } + + public static String version() { + return libtorrent_jni.version(); + } + + public static String print_error(error_code arg0) { + return libtorrent_jni.print_error(error_code.getCPtr(arg0), arg0); + } + + public static torrent_flags_t getSeed_mode() { + long cPtr = libtorrent_jni.seed_mode_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getUpload_mode() { + long cPtr = libtorrent_jni.upload_mode_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getShare_mode() { + long cPtr = libtorrent_jni.share_mode_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getApply_ip_filter() { + long cPtr = libtorrent_jni.apply_ip_filter_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getPaused() { + long cPtr = libtorrent_jni.paused_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getAuto_managed() { + long cPtr = libtorrent_jni.auto_managed_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getDuplicate_is_error() { + long cPtr = libtorrent_jni.duplicate_is_error_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getUpdate_subscribe() { + long cPtr = libtorrent_jni.update_subscribe_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getSuper_seeding() { + long cPtr = libtorrent_jni.super_seeding_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getSequential_download() { + long cPtr = libtorrent_jni.sequential_download_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getStop_when_ready() { + long cPtr = libtorrent_jni.stop_when_ready_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getOverride_trackers() { + long cPtr = libtorrent_jni.override_trackers_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getOverride_web_seeds() { + long cPtr = libtorrent_jni.override_web_seeds_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getNeed_save_resume() { + long cPtr = libtorrent_jni.need_save_resume_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getDisable_dht() { + long cPtr = libtorrent_jni.disable_dht_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getDisable_lsd() { + long cPtr = libtorrent_jni.disable_lsd_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getDisable_pex() { + long cPtr = libtorrent_jni.disable_pex_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getNo_verify_files() { + long cPtr = libtorrent_jni.no_verify_files_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getAll() { + long cPtr = libtorrent_jni.all_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static torrent_flags_t getDefault_flags() { + long cPtr = libtorrent_jni.default_flags_get(); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public static pex_flags_t getPex_encryption() { + long cPtr = libtorrent_jni.pex_encryption_get(); + return (cPtr == 0) ? null : new pex_flags_t(cPtr, false); + } + + public static pex_flags_t getPex_seed() { + long cPtr = libtorrent_jni.pex_seed_get(); + return (cPtr == 0) ? null : new pex_flags_t(cPtr, false); + } + + public static pex_flags_t getPex_utp() { + long cPtr = libtorrent_jni.pex_utp_get(); + return (cPtr == 0) ? null : new pex_flags_t(cPtr, false); + } + + public static pex_flags_t getPex_holepunch() { + long cPtr = libtorrent_jni.pex_holepunch_get(); + return (cPtr == 0) ? null : new pex_flags_t(cPtr, false); + } + + public static String operation_name(operation_t op) { + return libtorrent_jni.operation_name(op.swigValue()); + } + + public static stats_metric_vector session_stats_metrics() { + return new stats_metric_vector(libtorrent_jni.session_stats_metrics(), true); + } + + public static alert_category_t getError() { + long cPtr = libtorrent_jni.error_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getPeer() { + long cPtr = libtorrent_jni.peer_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getPort_mapping() { + long cPtr = libtorrent_jni.port_mapping_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getStorage() { + long cPtr = libtorrent_jni.storage_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getTracker() { + long cPtr = libtorrent_jni.tracker_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getConnect() { + long cPtr = libtorrent_jni.connect_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getStatus() { + long cPtr = libtorrent_jni.status_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getIp_block() { + long cPtr = libtorrent_jni.ip_block_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getPerformance_warning() { + long cPtr = libtorrent_jni.performance_warning_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getDht() { + long cPtr = libtorrent_jni.dht_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getStats() { + long cPtr = libtorrent_jni.stats_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getSession_log() { + long cPtr = libtorrent_jni.session_log_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getTorrent_log() { + long cPtr = libtorrent_jni.torrent_log_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getPeer_log() { + long cPtr = libtorrent_jni.peer_log_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getIncoming_request() { + long cPtr = libtorrent_jni.incoming_request_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getDht_log() { + long cPtr = libtorrent_jni.dht_log_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getDht_operation() { + long cPtr = libtorrent_jni.dht_operation_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getPort_mapping_log() { + long cPtr = libtorrent_jni.port_mapping_log_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getPicker_log() { + long cPtr = libtorrent_jni.picker_log_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getFile_progress() { + long cPtr = libtorrent_jni.file_progress_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getPiece_progress() { + long cPtr = libtorrent_jni.piece_progress_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getUpload() { + long cPtr = libtorrent_jni.upload_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static alert_category_t getBlock_progress() { + long cPtr = libtorrent_jni.block_progress_get(); + return (cPtr == 0) ? null : new alert_category_t(cPtr, false); + } + + public static String alert_name(int alert_type) { + return libtorrent_jni.alert_name(alert_type); + } + + public static int getNum_alert_types() { + return libtorrent_jni.num_alert_types_get(); + } + + public static String performance_warning_str(performance_alert.performance_warning_t i) { + return libtorrent_jni.performance_warning_str(i.swigValue()); + } + + public static int default_int_value(int name) { + return libtorrent_jni.default_int_value(name); + } + + public static int setting_by_name(string_view name) { + return libtorrent_jni.setting_by_name(string_view.getCPtr(name), name); + } + + public static String name_for_setting(int s) { + return libtorrent_jni.name_for_setting(s); + } + + public static settings_pack default_settings() { + return new settings_pack(libtorrent_jni.default_settings(), true); + } + + public static boolean op_eq(peer_class_type_filter lhs, peer_class_type_filter rhs) { + return libtorrent_jni.op_eq__SWIG_0(peer_class_type_filter.getCPtr(lhs), lhs, peer_class_type_filter.getCPtr(rhs), rhs); + } + + public static boolean op_lte(address lhs, address rhs) { + return libtorrent_jni.op_lte(address.getCPtr(lhs), lhs, address.getCPtr(rhs), rhs); + } + + public static settings_pack min_memory_usage() { + return new settings_pack(libtorrent_jni.min_memory_usage(), true); + } + + public static settings_pack high_performance_seed() { + return new settings_pack(libtorrent_jni.high_performance_seed(), true); + } + + public static session_params read_session_params(bdecode_node e, save_state_flags_t flags) { + return new session_params(libtorrent_jni.read_session_params__SWIG_0(bdecode_node.getCPtr(e), e, save_state_flags_t.getCPtr(flags), flags), true); + } + + public static session_params read_session_params(bdecode_node e) { + return new session_params(libtorrent_jni.read_session_params__SWIG_1(bdecode_node.getCPtr(e), e), true); + } + + public static String make_magnet_uri(torrent_handle handle) { + return libtorrent_jni.make_magnet_uri__SWIG_0(torrent_handle.getCPtr(handle), handle); + } + + public static String make_magnet_uri(torrent_info info) { + return libtorrent_jni.make_magnet_uri__SWIG_1(torrent_info.getCPtr(info), info); + } + + public static void add_files(file_storage fs, String file, create_flags_t flags) { + libtorrent_jni.add_files__SWIG_0(file_storage.getCPtr(fs), fs, file, create_flags_t.getCPtr(flags), flags); + } + + public static void add_files(file_storage fs, String file) { + libtorrent_jni.add_files__SWIG_1(file_storage.getCPtr(fs), fs, file); + } + + public static void set_piece_hashes(create_torrent t, String p, error_code ec) { + libtorrent_jni.set_piece_hashes(create_torrent.getCPtr(t), t, p, error_code.getCPtr(ec), ec); + } + + public static String generate_fingerprint(String name, int major, int minor, int revision, int tag) { + return libtorrent_jni.generate_fingerprint(name, major, minor, revision, tag); + } + + public static byte_vector ed25519_create_seed() { + return new byte_vector(libtorrent_jni.ed25519_create_seed(), true); + } + + public static byte_vectors_pair ed25519_create_keypair(byte_vector seed) { + return new byte_vectors_pair(libtorrent_jni.ed25519_create_keypair(byte_vector.getCPtr(seed), seed), true); + } + + public static byte_vector ed25519_sign(byte_vector msg, byte_vector pk, byte_vector sk) { + return new byte_vector(libtorrent_jni.ed25519_sign(byte_vector.getCPtr(msg), msg, byte_vector.getCPtr(pk), pk, byte_vector.getCPtr(sk), sk), true); + } + + public static boolean ed25519_verify(byte_vector sig, byte_vector msg, byte_vector pk) { + return libtorrent_jni.ed25519_verify(byte_vector.getCPtr(sig), sig, byte_vector.getCPtr(msg), msg, byte_vector.getCPtr(pk), pk); + } + + public static byte_vector ed25519_add_scalar_public(byte_vector pk, byte_vector scalar) { + return new byte_vector(libtorrent_jni.ed25519_add_scalar_public(byte_vector.getCPtr(pk), pk, byte_vector.getCPtr(scalar), scalar), true); + } + + public static byte_vector ed25519_add_scalar_secret(byte_vector sk, byte_vector scalar) { + return new byte_vector(libtorrent_jni.ed25519_add_scalar_secret(byte_vector.getCPtr(sk), sk, byte_vector.getCPtr(scalar), scalar), true); + } + + public static byte_vector ed25519_key_exchange(byte_vector pk, byte_vector sk) { + return new byte_vector(libtorrent_jni.ed25519_key_exchange(byte_vector.getCPtr(pk), pk, byte_vector.getCPtr(sk), sk), true); + } + + public static void add_files_ex(file_storage fs, String file, add_files_listener listener, create_flags_t flags) { + libtorrent_jni.add_files_ex(file_storage.getCPtr(fs), fs, file, add_files_listener.getCPtr(listener), listener, create_flags_t.getCPtr(flags), flags); + } + + public static void set_piece_hashes_ex(create_torrent t, String p, set_piece_hashes_listener listener, error_code ec) { + libtorrent_jni.set_piece_hashes_ex(create_torrent.getCPtr(t), t, p, set_piece_hashes_listener.getCPtr(listener), listener, error_code.getCPtr(ec), ec); + } + + public static int boost_version() { + return libtorrent_jni.boost_version(); + } + + public static String boost_lib_version() { + return libtorrent_jni.boost_lib_version(); + } + + public static int openssl_version_number() { + return libtorrent_jni.openssl_version_number(); + } + + public static String openssl_version_text() { + return libtorrent_jni.openssl_version_text(); + } + + public static int find_metric_idx_s(String name) { + return libtorrent_jni.find_metric_idx_s(name); + } + + public static ip_interface_vector enum_net_interfaces(session s) { + return new ip_interface_vector(libtorrent_jni.enum_net_interfaces(session.getCPtr(s), s), true); + } + + public static ip_route_vector enum_routes(session s) { + return new ip_route_vector(libtorrent_jni.enum_routes(session.getCPtr(s), s), true); + } + + public static void copy_byte_vector_to_char_array(byte_vector source, String target, long target_size) { + libtorrent_jni.copy_byte_vector_to_char_array(byte_vector.getCPtr(source), source, target, target_size); + } + + public static address get_gateway(ip_interface iface, ip_route_vector routes) { + return new address(libtorrent_jni.get_gateway(ip_interface.getCPtr(iface), iface, ip_route_vector.getCPtr(routes), routes), true); + } + + public static boolean arm_neon_support() { + return libtorrent_jni.arm_neon_support(); + } + + public static void set_posix_wrapper(posix_wrapper obj) { + libtorrent_jni.set_posix_wrapper(posix_wrapper.getCPtr(obj), obj); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/libtorrentConstants.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/libtorrentConstants.java new file mode 100644 index 0000000..5251a72 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/libtorrentConstants.java @@ -0,0 +1,18 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public interface libtorrentConstants { + int LIBTORRENT_VERSION_MAJOR = libtorrent_jni.LIBTORRENT_VERSION_MAJOR_get(); + int LIBTORRENT_VERSION_MINOR = libtorrent_jni.LIBTORRENT_VERSION_MINOR_get(); + int LIBTORRENT_VERSION_TINY = libtorrent_jni.LIBTORRENT_VERSION_TINY_get(); + int LIBTORRENT_VERSION_NUM = libtorrent_jni.LIBTORRENT_VERSION_NUM_get(); + String LIBTORRENT_VERSION = libtorrent_jni.LIBTORRENT_VERSION_get(); + String LIBTORRENT_REVISION = libtorrent_jni.LIBTORRENT_REVISION_get(); +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/libtorrent_errors.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/libtorrent_errors.java new file mode 100644 index 0000000..5ffdeed --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/libtorrent_errors.java @@ -0,0 +1,200 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public final class libtorrent_errors { + public final static libtorrent_errors libtorrent_no_error = new libtorrent_errors("libtorrent_no_error", libtorrent_jni.libtorrent_no_error_get()); + public final static libtorrent_errors file_collision = new libtorrent_errors("file_collision"); + public final static libtorrent_errors failed_hash_check = new libtorrent_errors("failed_hash_check"); + public final static libtorrent_errors torrent_is_no_dict = new libtorrent_errors("torrent_is_no_dict"); + public final static libtorrent_errors torrent_missing_info = new libtorrent_errors("torrent_missing_info"); + public final static libtorrent_errors torrent_info_no_dict = new libtorrent_errors("torrent_info_no_dict"); + public final static libtorrent_errors torrent_missing_piece_length = new libtorrent_errors("torrent_missing_piece_length"); + public final static libtorrent_errors torrent_missing_name = new libtorrent_errors("torrent_missing_name"); + public final static libtorrent_errors torrent_invalid_name = new libtorrent_errors("torrent_invalid_name"); + public final static libtorrent_errors torrent_invalid_length = new libtorrent_errors("torrent_invalid_length"); + public final static libtorrent_errors torrent_file_parse_failed = new libtorrent_errors("torrent_file_parse_failed"); + public final static libtorrent_errors torrent_missing_pieces = new libtorrent_errors("torrent_missing_pieces"); + public final static libtorrent_errors torrent_invalid_hashes = new libtorrent_errors("torrent_invalid_hashes"); + public final static libtorrent_errors too_many_pieces_in_torrent = new libtorrent_errors("too_many_pieces_in_torrent"); + public final static libtorrent_errors invalid_swarm_metadata = new libtorrent_errors("invalid_swarm_metadata"); + public final static libtorrent_errors invalid_bencoding = new libtorrent_errors("invalid_bencoding"); + public final static libtorrent_errors no_files_in_torrent = new libtorrent_errors("no_files_in_torrent"); + public final static libtorrent_errors invalid_escaped_string = new libtorrent_errors("invalid_escaped_string"); + public final static libtorrent_errors session_is_closing = new libtorrent_errors("session_is_closing"); + public final static libtorrent_errors duplicate_torrent = new libtorrent_errors("duplicate_torrent"); + public final static libtorrent_errors invalid_torrent_handle = new libtorrent_errors("invalid_torrent_handle"); + public final static libtorrent_errors invalid_entry_type = new libtorrent_errors("invalid_entry_type"); + public final static libtorrent_errors missing_info_hash_in_uri = new libtorrent_errors("missing_info_hash_in_uri"); + public final static libtorrent_errors file_too_short = new libtorrent_errors("file_too_short"); + public final static libtorrent_errors unsupported_url_protocol = new libtorrent_errors("unsupported_url_protocol"); + public final static libtorrent_errors url_parse_error = new libtorrent_errors("url_parse_error"); + public final static libtorrent_errors peer_sent_empty_piece = new libtorrent_errors("peer_sent_empty_piece"); + public final static libtorrent_errors parse_failed = new libtorrent_errors("parse_failed"); + public final static libtorrent_errors invalid_file_tag = new libtorrent_errors("invalid_file_tag"); + public final static libtorrent_errors missing_info_hash = new libtorrent_errors("missing_info_hash"); + public final static libtorrent_errors mismatching_info_hash = new libtorrent_errors("mismatching_info_hash"); + public final static libtorrent_errors invalid_hostname = new libtorrent_errors("invalid_hostname"); + public final static libtorrent_errors invalid_port = new libtorrent_errors("invalid_port"); + public final static libtorrent_errors port_blocked = new libtorrent_errors("port_blocked"); + public final static libtorrent_errors expected_close_bracket_in_address = new libtorrent_errors("expected_close_bracket_in_address"); + public final static libtorrent_errors destructing_torrent = new libtorrent_errors("destructing_torrent"); + public final static libtorrent_errors timed_out = new libtorrent_errors("timed_out"); + public final static libtorrent_errors upload_upload_connection = new libtorrent_errors("upload_upload_connection"); + public final static libtorrent_errors uninteresting_upload_peer = new libtorrent_errors("uninteresting_upload_peer"); + public final static libtorrent_errors invalid_info_hash = new libtorrent_errors("invalid_info_hash"); + public final static libtorrent_errors torrent_paused = new libtorrent_errors("torrent_paused"); + public final static libtorrent_errors invalid_have = new libtorrent_errors("invalid_have"); + public final static libtorrent_errors invalid_bitfield_size = new libtorrent_errors("invalid_bitfield_size"); + public final static libtorrent_errors too_many_requests_when_choked = new libtorrent_errors("too_many_requests_when_choked"); + public final static libtorrent_errors invalid_piece = new libtorrent_errors("invalid_piece"); + public final static libtorrent_errors no_memory = new libtorrent_errors("no_memory"); + public final static libtorrent_errors torrent_aborted = new libtorrent_errors("torrent_aborted"); + public final static libtorrent_errors self_connection = new libtorrent_errors("self_connection"); + public final static libtorrent_errors invalid_piece_size = new libtorrent_errors("invalid_piece_size"); + public final static libtorrent_errors timed_out_no_interest = new libtorrent_errors("timed_out_no_interest"); + public final static libtorrent_errors timed_out_inactivity = new libtorrent_errors("timed_out_inactivity"); + public final static libtorrent_errors timed_out_no_handshake = new libtorrent_errors("timed_out_no_handshake"); + public final static libtorrent_errors timed_out_no_request = new libtorrent_errors("timed_out_no_request"); + public final static libtorrent_errors invalid_choke = new libtorrent_errors("invalid_choke"); + public final static libtorrent_errors invalid_unchoke = new libtorrent_errors("invalid_unchoke"); + public final static libtorrent_errors invalid_interested = new libtorrent_errors("invalid_interested"); + public final static libtorrent_errors invalid_not_interested = new libtorrent_errors("invalid_not_interested"); + public final static libtorrent_errors invalid_request = new libtorrent_errors("invalid_request"); + public final static libtorrent_errors invalid_hash_list = new libtorrent_errors("invalid_hash_list"); + public final static libtorrent_errors invalid_hash_piece = new libtorrent_errors("invalid_hash_piece"); + public final static libtorrent_errors invalid_cancel = new libtorrent_errors("invalid_cancel"); + public final static libtorrent_errors invalid_dht_port = new libtorrent_errors("invalid_dht_port"); + public final static libtorrent_errors invalid_suggest = new libtorrent_errors("invalid_suggest"); + public final static libtorrent_errors invalid_have_all = new libtorrent_errors("invalid_have_all"); + public final static libtorrent_errors invalid_have_none = new libtorrent_errors("invalid_have_none"); + public final static libtorrent_errors invalid_reject = new libtorrent_errors("invalid_reject"); + public final static libtorrent_errors invalid_allow_fast = new libtorrent_errors("invalid_allow_fast"); + public final static libtorrent_errors invalid_extended = new libtorrent_errors("invalid_extended"); + public final static libtorrent_errors invalid_message = new libtorrent_errors("invalid_message"); + public final static libtorrent_errors sync_hash_not_found = new libtorrent_errors("sync_hash_not_found"); + public final static libtorrent_errors invalid_encryption_constant = new libtorrent_errors("invalid_encryption_constant"); + public final static libtorrent_errors no_plaintext_mode = new libtorrent_errors("no_plaintext_mode"); + public final static libtorrent_errors no_rc4_mode = new libtorrent_errors("no_rc4_mode"); + public final static libtorrent_errors unsupported_encryption_mode = new libtorrent_errors("unsupported_encryption_mode"); + public final static libtorrent_errors unsupported_encryption_mode_selected = new libtorrent_errors("unsupported_encryption_mode_selected"); + public final static libtorrent_errors invalid_pad_size = new libtorrent_errors("invalid_pad_size"); + public final static libtorrent_errors invalid_encrypt_handshake = new libtorrent_errors("invalid_encrypt_handshake"); + public final static libtorrent_errors no_incoming_encrypted = new libtorrent_errors("no_incoming_encrypted"); + public final static libtorrent_errors no_incoming_regular = new libtorrent_errors("no_incoming_regular"); + public final static libtorrent_errors duplicate_peer_id = new libtorrent_errors("duplicate_peer_id"); + public final static libtorrent_errors torrent_removed = new libtorrent_errors("torrent_removed"); + public final static libtorrent_errors packet_too_large = new libtorrent_errors("packet_too_large"); + public final static libtorrent_errors reserved = new libtorrent_errors("reserved"); + public final static libtorrent_errors http_error = new libtorrent_errors("http_error"); + public final static libtorrent_errors missing_location = new libtorrent_errors("missing_location"); + public final static libtorrent_errors invalid_redirection = new libtorrent_errors("invalid_redirection"); + public final static libtorrent_errors redirecting = new libtorrent_errors("redirecting"); + public final static libtorrent_errors invalid_range = new libtorrent_errors("invalid_range"); + public final static libtorrent_errors no_content_length = new libtorrent_errors("no_content_length"); + public final static libtorrent_errors banned_by_ip_filter = new libtorrent_errors("banned_by_ip_filter"); + public final static libtorrent_errors too_many_connections = new libtorrent_errors("too_many_connections"); + public final static libtorrent_errors peer_banned = new libtorrent_errors("peer_banned"); + public final static libtorrent_errors stopping_torrent = new libtorrent_errors("stopping_torrent"); + public final static libtorrent_errors too_many_corrupt_pieces = new libtorrent_errors("too_many_corrupt_pieces"); + public final static libtorrent_errors torrent_not_ready = new libtorrent_errors("torrent_not_ready"); + public final static libtorrent_errors peer_not_constructed = new libtorrent_errors("peer_not_constructed"); + public final static libtorrent_errors session_closing = new libtorrent_errors("session_closing"); + public final static libtorrent_errors optimistic_disconnect = new libtorrent_errors("optimistic_disconnect"); + public final static libtorrent_errors torrent_finished = new libtorrent_errors("torrent_finished"); + public final static libtorrent_errors no_router = new libtorrent_errors("no_router"); + public final static libtorrent_errors metadata_too_large = new libtorrent_errors("metadata_too_large"); + public final static libtorrent_errors invalid_metadata_request = new libtorrent_errors("invalid_metadata_request"); + public final static libtorrent_errors invalid_metadata_size = new libtorrent_errors("invalid_metadata_size"); + public final static libtorrent_errors invalid_metadata_offset = new libtorrent_errors("invalid_metadata_offset"); + public final static libtorrent_errors invalid_metadata_message = new libtorrent_errors("invalid_metadata_message"); + public final static libtorrent_errors pex_message_too_large = new libtorrent_errors("pex_message_too_large"); + public final static libtorrent_errors invalid_pex_message = new libtorrent_errors("invalid_pex_message"); + public final static libtorrent_errors invalid_lt_tracker_message = new libtorrent_errors("invalid_lt_tracker_message"); + public final static libtorrent_errors too_frequent_pex = new libtorrent_errors("too_frequent_pex"); + public final static libtorrent_errors no_metadata = new libtorrent_errors("no_metadata"); + public final static libtorrent_errors invalid_dont_have = new libtorrent_errors("invalid_dont_have"); + public final static libtorrent_errors requires_ssl_connection = new libtorrent_errors("requires_ssl_connection"); + public final static libtorrent_errors invalid_ssl_cert = new libtorrent_errors("invalid_ssl_cert"); + public final static libtorrent_errors not_an_ssl_torrent = new libtorrent_errors("not_an_ssl_torrent"); + public final static libtorrent_errors banned_by_port_filter = new libtorrent_errors("banned_by_port_filter"); + public final static libtorrent_errors invalid_session_handle = new libtorrent_errors("invalid_session_handle"); + public final static libtorrent_errors invalid_listen_socket = new libtorrent_errors("invalid_listen_socket"); + public final static libtorrent_errors missing_file_sizes = new libtorrent_errors("missing_file_sizes", libtorrent_jni.missing_file_sizes_get()); + public final static libtorrent_errors no_files_in_resume_data = new libtorrent_errors("no_files_in_resume_data"); + public final static libtorrent_errors missing_pieces = new libtorrent_errors("missing_pieces"); + public final static libtorrent_errors mismatching_number_of_files = new libtorrent_errors("mismatching_number_of_files"); + public final static libtorrent_errors mismatching_file_size = new libtorrent_errors("mismatching_file_size"); + public final static libtorrent_errors mismatching_file_timestamp = new libtorrent_errors("mismatching_file_timestamp"); + public final static libtorrent_errors not_a_dictionary = new libtorrent_errors("not_a_dictionary"); + public final static libtorrent_errors invalid_blocks_per_piece = new libtorrent_errors("invalid_blocks_per_piece"); + public final static libtorrent_errors missing_slots = new libtorrent_errors("missing_slots"); + public final static libtorrent_errors too_many_slots = new libtorrent_errors("too_many_slots"); + public final static libtorrent_errors invalid_slot_list = new libtorrent_errors("invalid_slot_list"); + public final static libtorrent_errors invalid_piece_index = new libtorrent_errors("invalid_piece_index"); + public final static libtorrent_errors pieces_need_reorder = new libtorrent_errors("pieces_need_reorder"); + public final static libtorrent_errors resume_data_not_modified = new libtorrent_errors("resume_data_not_modified"); + public final static libtorrent_errors http_parse_error = new libtorrent_errors("http_parse_error", libtorrent_jni.http_parse_error_get()); + public final static libtorrent_errors http_missing_location = new libtorrent_errors("http_missing_location"); + public final static libtorrent_errors http_failed_decompress = new libtorrent_errors("http_failed_decompress"); + public final static libtorrent_errors no_i2p_router = new libtorrent_errors("no_i2p_router", libtorrent_jni.no_i2p_router_get()); + public final static libtorrent_errors no_i2p_endpoint = new libtorrent_errors("no_i2p_endpoint", libtorrent_jni.no_i2p_endpoint_get()); + public final static libtorrent_errors scrape_not_available = new libtorrent_errors("scrape_not_available", libtorrent_jni.scrape_not_available_get()); + public final static libtorrent_errors invalid_tracker_response = new libtorrent_errors("invalid_tracker_response"); + public final static libtorrent_errors invalid_peer_dict = new libtorrent_errors("invalid_peer_dict"); + public final static libtorrent_errors tracker_failure = new libtorrent_errors("tracker_failure"); + public final static libtorrent_errors invalid_files_entry = new libtorrent_errors("invalid_files_entry"); + public final static libtorrent_errors invalid_hash_entry = new libtorrent_errors("invalid_hash_entry"); + public final static libtorrent_errors invalid_peers_entry = new libtorrent_errors("invalid_peers_entry"); + public final static libtorrent_errors invalid_tracker_response_length = new libtorrent_errors("invalid_tracker_response_length"); + public final static libtorrent_errors invalid_tracker_transaction_id = new libtorrent_errors("invalid_tracker_transaction_id"); + public final static libtorrent_errors invalid_tracker_action = new libtorrent_errors("invalid_tracker_action"); + public final static libtorrent_errors announce_skipped = new libtorrent_errors("announce_skipped"); + public final static libtorrent_errors no_entropy = new libtorrent_errors("no_entropy", libtorrent_jni.no_entropy_get()); + public final static libtorrent_errors error_code_max = new libtorrent_errors("error_code_max"); + private static final libtorrent_errors[] swigValues = {libtorrent_no_error, file_collision, failed_hash_check, torrent_is_no_dict, torrent_missing_info, torrent_info_no_dict, torrent_missing_piece_length, torrent_missing_name, torrent_invalid_name, torrent_invalid_length, torrent_file_parse_failed, torrent_missing_pieces, torrent_invalid_hashes, too_many_pieces_in_torrent, invalid_swarm_metadata, invalid_bencoding, no_files_in_torrent, invalid_escaped_string, session_is_closing, duplicate_torrent, invalid_torrent_handle, invalid_entry_type, missing_info_hash_in_uri, file_too_short, unsupported_url_protocol, url_parse_error, peer_sent_empty_piece, parse_failed, invalid_file_tag, missing_info_hash, mismatching_info_hash, invalid_hostname, invalid_port, port_blocked, expected_close_bracket_in_address, destructing_torrent, timed_out, upload_upload_connection, uninteresting_upload_peer, invalid_info_hash, torrent_paused, invalid_have, invalid_bitfield_size, too_many_requests_when_choked, invalid_piece, no_memory, torrent_aborted, self_connection, invalid_piece_size, timed_out_no_interest, timed_out_inactivity, timed_out_no_handshake, timed_out_no_request, invalid_choke, invalid_unchoke, invalid_interested, invalid_not_interested, invalid_request, invalid_hash_list, invalid_hash_piece, invalid_cancel, invalid_dht_port, invalid_suggest, invalid_have_all, invalid_have_none, invalid_reject, invalid_allow_fast, invalid_extended, invalid_message, sync_hash_not_found, invalid_encryption_constant, no_plaintext_mode, no_rc4_mode, unsupported_encryption_mode, unsupported_encryption_mode_selected, invalid_pad_size, invalid_encrypt_handshake, no_incoming_encrypted, no_incoming_regular, duplicate_peer_id, torrent_removed, packet_too_large, reserved, http_error, missing_location, invalid_redirection, redirecting, invalid_range, no_content_length, banned_by_ip_filter, too_many_connections, peer_banned, stopping_torrent, too_many_corrupt_pieces, torrent_not_ready, peer_not_constructed, session_closing, optimistic_disconnect, torrent_finished, no_router, metadata_too_large, invalid_metadata_request, invalid_metadata_size, invalid_metadata_offset, invalid_metadata_message, pex_message_too_large, invalid_pex_message, invalid_lt_tracker_message, too_frequent_pex, no_metadata, invalid_dont_have, requires_ssl_connection, invalid_ssl_cert, not_an_ssl_torrent, banned_by_port_filter, invalid_session_handle, invalid_listen_socket, missing_file_sizes, no_files_in_resume_data, missing_pieces, mismatching_number_of_files, mismatching_file_size, mismatching_file_timestamp, not_a_dictionary, invalid_blocks_per_piece, missing_slots, too_many_slots, invalid_slot_list, invalid_piece_index, pieces_need_reorder, resume_data_not_modified, http_parse_error, http_missing_location, http_failed_decompress, no_i2p_router, no_i2p_endpoint, scrape_not_available, invalid_tracker_response, invalid_peer_dict, tracker_failure, invalid_files_entry, invalid_hash_entry, invalid_peers_entry, invalid_tracker_response_length, invalid_tracker_transaction_id, invalid_tracker_action, announce_skipped, no_entropy, error_code_max}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private libtorrent_errors(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private libtorrent_errors(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private libtorrent_errors(String swigName, libtorrent_errors swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static libtorrent_errors swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + libtorrent_errors.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/libtorrent_jni.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/libtorrent_jni.java new file mode 100644 index 0000000..3c8f38f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/libtorrent_jni.java @@ -0,0 +1,6585 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class libtorrent_jni { + + + static { + try { + String path = System.getProperty("jlibtorrent.jni.path", ""); + if ("".equals(path)) { + try { + System.loadLibrary("jlibtorrent-" + jlibtorrentVersion()); + } catch (LinkageError e) { + // give it a try to the name without version + System.loadLibrary("jlibtorrent"); + } + } else { + System.load(path); + } + } catch (LinkageError e) { + throw new LinkageError( + "Look for your architecture binary instructions at: https://github.com/frostwire/frostwire-jlibtorrent", e); + } + } + + static { + swig_module_init(); + } + + public static String jlibtorrentVersion() { + // extracted from the gradle with the run-swig step + return "1.2.12.0"; + } + + public static final native long directBufferAddress(java.nio.Buffer buffer); + + public static final native long directBufferCapacity(java.nio.Buffer buffer); + + public final static native long new_piece_index_int_pair__SWIG_0(); + + public final static native long new_piece_index_int_pair__SWIG_1(int jarg1, int jarg2); + + public final static native long new_piece_index_int_pair__SWIG_2(long jarg1, piece_index_int_pair jarg1_); + + public final static native void piece_index_int_pair_first_set(long jarg1, piece_index_int_pair jarg1_, int jarg2); + + public final static native int piece_index_int_pair_first_get(long jarg1, piece_index_int_pair jarg1_); + + public final static native void piece_index_int_pair_second_set(long jarg1, piece_index_int_pair jarg1_, int jarg2); + + public final static native int piece_index_int_pair_second_get(long jarg1, piece_index_int_pair jarg1_); + + public final static native void delete_piece_index_int_pair(long jarg1); + + public final static native long new_string_int_pair__SWIG_0(); + + public final static native long new_string_int_pair__SWIG_1(String jarg1, int jarg2); + + public final static native long new_string_int_pair__SWIG_2(long jarg1, string_int_pair jarg1_); + + public final static native void string_int_pair_first_set(long jarg1, string_int_pair jarg1_, String jarg2); + + public final static native String string_int_pair_first_get(long jarg1, string_int_pair jarg1_); + + public final static native void string_int_pair_second_set(long jarg1, string_int_pair jarg1_, int jarg2); + + public final static native int string_int_pair_second_get(long jarg1, string_int_pair jarg1_); + + public final static native void delete_string_int_pair(long jarg1); + + public final static native long new_string_string_pair__SWIG_0(); + + public final static native long new_string_string_pair__SWIG_1(String jarg1, String jarg2); + + public final static native long new_string_string_pair__SWIG_2(long jarg1, string_string_pair jarg1_); + + public final static native void string_string_pair_first_set(long jarg1, string_string_pair jarg1_, String jarg2); + + public final static native String string_string_pair_first_get(long jarg1, string_string_pair jarg1_); + + public final static native void string_string_pair_second_set(long jarg1, string_string_pair jarg1_, String jarg2); + + public final static native String string_string_pair_second_get(long jarg1, string_string_pair jarg1_); + + public final static native void delete_string_string_pair(long jarg1); + + public final static native long new_string_view_bdecode_node_pair__SWIG_0(); + + public final static native long new_string_view_bdecode_node_pair__SWIG_1(long jarg1, string_view jarg1_, long jarg2, bdecode_node jarg2_); + + public final static native long new_string_view_bdecode_node_pair__SWIG_2(long jarg1, string_view_bdecode_node_pair jarg1_); + + public final static native void string_view_bdecode_node_pair_first_set(long jarg1, string_view_bdecode_node_pair jarg1_, long jarg2, string_view jarg2_); + + public final static native long string_view_bdecode_node_pair_first_get(long jarg1, string_view_bdecode_node_pair jarg1_); + + public final static native void string_view_bdecode_node_pair_second_set(long jarg1, string_view_bdecode_node_pair jarg1_, long jarg2, bdecode_node jarg2_); + + public final static native long string_view_bdecode_node_pair_second_get(long jarg1, string_view_bdecode_node_pair jarg1_); + + public final static native void delete_string_view_bdecode_node_pair(long jarg1); + + public final static native long new_byte_vectors_pair__SWIG_0(); + + public final static native long new_byte_vectors_pair__SWIG_1(long jarg1, byte_vector jarg1_, long jarg2, byte_vector jarg2_); + + public final static native long new_byte_vectors_pair__SWIG_2(long jarg1, byte_vectors_pair jarg1_); + + public final static native void byte_vectors_pair_first_set(long jarg1, byte_vectors_pair jarg1_, long jarg2, byte_vector jarg2_); + + public final static native long byte_vectors_pair_first_get(long jarg1, byte_vectors_pair jarg1_); + + public final static native void byte_vectors_pair_second_set(long jarg1, byte_vectors_pair jarg1_, long jarg2, byte_vector jarg2_); + + public final static native long byte_vectors_pair_second_get(long jarg1, byte_vectors_pair jarg1_); + + public final static native void delete_byte_vectors_pair(long jarg1); + + public final static native long new_sha1_hash_udp_endpoint_pair__SWIG_0(); + + public final static native long new_sha1_hash_udp_endpoint_pair__SWIG_1(long jarg1, sha1_hash jarg1_, long jarg2, udp_endpoint jarg2_); + + public final static native long new_sha1_hash_udp_endpoint_pair__SWIG_2(long jarg1, sha1_hash_udp_endpoint_pair jarg1_); + + public final static native void sha1_hash_udp_endpoint_pair_first_set(long jarg1, sha1_hash_udp_endpoint_pair jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long sha1_hash_udp_endpoint_pair_first_get(long jarg1, sha1_hash_udp_endpoint_pair jarg1_); + + public final static native void sha1_hash_udp_endpoint_pair_second_set(long jarg1, sha1_hash_udp_endpoint_pair jarg1_, long jarg2, udp_endpoint jarg2_); + + public final static native long sha1_hash_udp_endpoint_pair_second_get(long jarg1, sha1_hash_udp_endpoint_pair jarg1_); + + public final static native void delete_sha1_hash_udp_endpoint_pair(long jarg1); + + public final static native long new_address_sha1_hash_pair__SWIG_0(); + + public final static native long new_address_sha1_hash_pair__SWIG_1(long jarg1, address jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long new_address_sha1_hash_pair__SWIG_2(long jarg1, address_sha1_hash_pair jarg1_); + + public final static native void address_sha1_hash_pair_first_set(long jarg1, address_sha1_hash_pair jarg1_, long jarg2, address jarg2_); + + public final static native long address_sha1_hash_pair_first_get(long jarg1, address_sha1_hash_pair jarg1_); + + public final static native void address_sha1_hash_pair_second_set(long jarg1, address_sha1_hash_pair jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long address_sha1_hash_pair_second_get(long jarg1, address_sha1_hash_pair jarg1_); + + public final static native void delete_address_sha1_hash_pair(long jarg1); + + public final static native long new_byte_vector(); + + public final static native long byte_vector_size(long jarg1, byte_vector jarg1_); + + public final static native long byte_vector_capacity(long jarg1, byte_vector jarg1_); + + public final static native void byte_vector_reserve(long jarg1, byte_vector jarg1_, long jarg2); + + public final static native boolean byte_vector_empty(long jarg1, byte_vector jarg1_); + + public final static native void byte_vector_clear(long jarg1, byte_vector jarg1_); + + public final static native void byte_vector_push_back(long jarg1, byte_vector jarg1_, byte jarg2); + + public final static native void byte_vector_resize(long jarg1, byte_vector jarg1_, long jarg2); + + public final static native byte byte_vector_get(long jarg1, byte_vector jarg1_, int jarg2); + + public final static native void byte_vector_set(long jarg1, byte_vector jarg1_, int jarg2, byte jarg3); + + public final static native void delete_byte_vector(long jarg1); + + public final static native long new_string_vector(); + + public final static native long string_vector_size(long jarg1, string_vector jarg1_); + + public final static native long string_vector_capacity(long jarg1, string_vector jarg1_); + + public final static native void string_vector_reserve(long jarg1, string_vector jarg1_, long jarg2); + + public final static native boolean string_vector_empty(long jarg1, string_vector jarg1_); + + public final static native void string_vector_clear(long jarg1, string_vector jarg1_); + + public final static native void string_vector_push_back(long jarg1, string_vector jarg1_, String jarg2); + + public final static native String string_vector_get(long jarg1, string_vector jarg1_, int jarg2); + + public final static native void string_vector_set(long jarg1, string_vector jarg1_, int jarg2, String jarg3); + + public final static native void delete_string_vector(long jarg1); + + public final static native long new_string_int_pair_vector(); + + public final static native long string_int_pair_vector_size(long jarg1, string_int_pair_vector jarg1_); + + public final static native long string_int_pair_vector_capacity(long jarg1, string_int_pair_vector jarg1_); + + public final static native void string_int_pair_vector_reserve(long jarg1, string_int_pair_vector jarg1_, long jarg2); + + public final static native boolean string_int_pair_vector_empty(long jarg1, string_int_pair_vector jarg1_); + + public final static native void string_int_pair_vector_clear(long jarg1, string_int_pair_vector jarg1_); + + public final static native void string_int_pair_vector_push_back(long jarg1, string_int_pair_vector jarg1_, long jarg2, string_int_pair jarg2_); + + public final static native long string_int_pair_vector_get(long jarg1, string_int_pair_vector jarg1_, int jarg2); + + public final static native void string_int_pair_vector_set(long jarg1, string_int_pair_vector jarg1_, int jarg2, long jarg3, string_int_pair jarg3_); + + public final static native void delete_string_int_pair_vector(long jarg1); + + public final static native long new_string_string_pair_vector(); + + public final static native long string_string_pair_vector_size(long jarg1, string_string_pair_vector jarg1_); + + public final static native long string_string_pair_vector_capacity(long jarg1, string_string_pair_vector jarg1_); + + public final static native void string_string_pair_vector_reserve(long jarg1, string_string_pair_vector jarg1_, long jarg2); + + public final static native boolean string_string_pair_vector_empty(long jarg1, string_string_pair_vector jarg1_); + + public final static native void string_string_pair_vector_clear(long jarg1, string_string_pair_vector jarg1_); + + public final static native void string_string_pair_vector_push_back(long jarg1, string_string_pair_vector jarg1_, long jarg2, string_string_pair jarg2_); + + public final static native long string_string_pair_vector_get(long jarg1, string_string_pair_vector jarg1_, int jarg2); + + public final static native void string_string_pair_vector_set(long jarg1, string_string_pair_vector jarg1_, int jarg2, long jarg3, string_string_pair jarg3_); + + public final static native void delete_string_string_pair_vector(long jarg1); + + public final static native long new_piece_index_int_pair_vector(); + + public final static native long piece_index_int_pair_vector_size(long jarg1, piece_index_int_pair_vector jarg1_); + + public final static native long piece_index_int_pair_vector_capacity(long jarg1, piece_index_int_pair_vector jarg1_); + + public final static native void piece_index_int_pair_vector_reserve(long jarg1, piece_index_int_pair_vector jarg1_, long jarg2); + + public final static native boolean piece_index_int_pair_vector_empty(long jarg1, piece_index_int_pair_vector jarg1_); + + public final static native void piece_index_int_pair_vector_clear(long jarg1, piece_index_int_pair_vector jarg1_); + + public final static native void piece_index_int_pair_vector_push_back(long jarg1, piece_index_int_pair_vector jarg1_, long jarg2, piece_index_int_pair jarg2_); + + public final static native long piece_index_int_pair_vector_get(long jarg1, piece_index_int_pair_vector jarg1_, int jarg2); + + public final static native void piece_index_int_pair_vector_set(long jarg1, piece_index_int_pair_vector jarg1_, int jarg2, long jarg3, piece_index_int_pair jarg3_); + + public final static native void delete_piece_index_int_pair_vector(long jarg1); + + public final static native long new_int_vector(); + + public final static native long int_vector_size(long jarg1, int_vector jarg1_); + + public final static native long int_vector_capacity(long jarg1, int_vector jarg1_); + + public final static native void int_vector_reserve(long jarg1, int_vector jarg1_, long jarg2); + + public final static native boolean int_vector_empty(long jarg1, int_vector jarg1_); + + public final static native void int_vector_clear(long jarg1, int_vector jarg1_); + + public final static native void int_vector_push_back(long jarg1, int_vector jarg1_, int jarg2); + + public final static native int int_vector_get(long jarg1, int_vector jarg1_, int jarg2); + + public final static native void int_vector_set(long jarg1, int_vector jarg1_, int jarg2, int jarg3); + + public final static native void delete_int_vector(long jarg1); + + public final static native long new_int64_vector(); + + public final static native long int64_vector_size(long jarg1, int64_vector jarg1_); + + public final static native long int64_vector_capacity(long jarg1, int64_vector jarg1_); + + public final static native void int64_vector_reserve(long jarg1, int64_vector jarg1_, long jarg2); + + public final static native boolean int64_vector_empty(long jarg1, int64_vector jarg1_); + + public final static native void int64_vector_clear(long jarg1, int64_vector jarg1_); + + public final static native void int64_vector_push_back(long jarg1, int64_vector jarg1_, long jarg2); + + public final static native long int64_vector_get(long jarg1, int64_vector jarg1_, int jarg2); + + public final static native void int64_vector_set(long jarg1, int64_vector jarg1_, int jarg2, long jarg3); + + public final static native void delete_int64_vector(long jarg1); + + public final static native long new_sha1_hash_vector(); + + public final static native long sha1_hash_vector_size(long jarg1, sha1_hash_vector jarg1_); + + public final static native long sha1_hash_vector_capacity(long jarg1, sha1_hash_vector jarg1_); + + public final static native void sha1_hash_vector_reserve(long jarg1, sha1_hash_vector jarg1_, long jarg2); + + public final static native boolean sha1_hash_vector_empty(long jarg1, sha1_hash_vector jarg1_); + + public final static native void sha1_hash_vector_clear(long jarg1, sha1_hash_vector jarg1_); + + public final static native void sha1_hash_vector_push_back(long jarg1, sha1_hash_vector jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long sha1_hash_vector_get(long jarg1, sha1_hash_vector jarg1_, int jarg2); + + public final static native void sha1_hash_vector_set(long jarg1, sha1_hash_vector jarg1_, int jarg2, long jarg3, sha1_hash jarg3_); + + public final static native void delete_sha1_hash_vector(long jarg1); + + public final static native long new_torrent_status_vector(); + + public final static native long torrent_status_vector_size(long jarg1, torrent_status_vector jarg1_); + + public final static native long torrent_status_vector_capacity(long jarg1, torrent_status_vector jarg1_); + + public final static native void torrent_status_vector_reserve(long jarg1, torrent_status_vector jarg1_, long jarg2); + + public final static native boolean torrent_status_vector_empty(long jarg1, torrent_status_vector jarg1_); + + public final static native void torrent_status_vector_clear(long jarg1, torrent_status_vector jarg1_); + + public final static native void torrent_status_vector_push_back(long jarg1, torrent_status_vector jarg1_, long jarg2, torrent_status jarg2_); + + public final static native long torrent_status_vector_get(long jarg1, torrent_status_vector jarg1_, int jarg2); + + public final static native void torrent_status_vector_set(long jarg1, torrent_status_vector jarg1_, int jarg2, long jarg3, torrent_status jarg3_); + + public final static native void delete_torrent_status_vector(long jarg1); + + public final static native long new_torrent_handle_vector(); + + public final static native long torrent_handle_vector_size(long jarg1, torrent_handle_vector jarg1_); + + public final static native long torrent_handle_vector_capacity(long jarg1, torrent_handle_vector jarg1_); + + public final static native void torrent_handle_vector_reserve(long jarg1, torrent_handle_vector jarg1_, long jarg2); + + public final static native boolean torrent_handle_vector_empty(long jarg1, torrent_handle_vector jarg1_); + + public final static native void torrent_handle_vector_clear(long jarg1, torrent_handle_vector jarg1_); + + public final static native void torrent_handle_vector_push_back(long jarg1, torrent_handle_vector jarg1_, long jarg2, torrent_handle jarg2_); + + public final static native long torrent_handle_vector_get(long jarg1, torrent_handle_vector jarg1_, int jarg2); + + public final static native void torrent_handle_vector_set(long jarg1, torrent_handle_vector jarg1_, int jarg2, long jarg3, torrent_handle jarg3_); + + public final static native void delete_torrent_handle_vector(long jarg1); + + public final static native long new_file_slice_vector(); + + public final static native long file_slice_vector_size(long jarg1, file_slice_vector jarg1_); + + public final static native long file_slice_vector_capacity(long jarg1, file_slice_vector jarg1_); + + public final static native void file_slice_vector_reserve(long jarg1, file_slice_vector jarg1_, long jarg2); + + public final static native boolean file_slice_vector_empty(long jarg1, file_slice_vector jarg1_); + + public final static native void file_slice_vector_clear(long jarg1, file_slice_vector jarg1_); + + public final static native void file_slice_vector_push_back(long jarg1, file_slice_vector jarg1_, long jarg2, file_slice jarg2_); + + public final static native long file_slice_vector_get(long jarg1, file_slice_vector jarg1_, int jarg2); + + public final static native void file_slice_vector_set(long jarg1, file_slice_vector jarg1_, int jarg2, long jarg3, file_slice jarg3_); + + public final static native void delete_file_slice_vector(long jarg1); + + public final static native long new_dht_routing_bucket_vector(); + + public final static native long dht_routing_bucket_vector_size(long jarg1, dht_routing_bucket_vector jarg1_); + + public final static native long dht_routing_bucket_vector_capacity(long jarg1, dht_routing_bucket_vector jarg1_); + + public final static native void dht_routing_bucket_vector_reserve(long jarg1, dht_routing_bucket_vector jarg1_, long jarg2); + + public final static native boolean dht_routing_bucket_vector_empty(long jarg1, dht_routing_bucket_vector jarg1_); + + public final static native void dht_routing_bucket_vector_clear(long jarg1, dht_routing_bucket_vector jarg1_); + + public final static native void dht_routing_bucket_vector_push_back(long jarg1, dht_routing_bucket_vector jarg1_, long jarg2, dht_routing_bucket jarg2_); + + public final static native long dht_routing_bucket_vector_get(long jarg1, dht_routing_bucket_vector jarg1_, int jarg2); + + public final static native void dht_routing_bucket_vector_set(long jarg1, dht_routing_bucket_vector jarg1_, int jarg2, long jarg3, dht_routing_bucket jarg3_); + + public final static native void delete_dht_routing_bucket_vector(long jarg1); + + public final static native long new_dht_lookup_vector(); + + public final static native long dht_lookup_vector_size(long jarg1, dht_lookup_vector jarg1_); + + public final static native long dht_lookup_vector_capacity(long jarg1, dht_lookup_vector jarg1_); + + public final static native void dht_lookup_vector_reserve(long jarg1, dht_lookup_vector jarg1_, long jarg2); + + public final static native boolean dht_lookup_vector_empty(long jarg1, dht_lookup_vector jarg1_); + + public final static native void dht_lookup_vector_clear(long jarg1, dht_lookup_vector jarg1_); + + public final static native void dht_lookup_vector_push_back(long jarg1, dht_lookup_vector jarg1_, long jarg2, dht_lookup jarg2_); + + public final static native long dht_lookup_vector_get(long jarg1, dht_lookup_vector jarg1_, int jarg2); + + public final static native void dht_lookup_vector_set(long jarg1, dht_lookup_vector jarg1_, int jarg2, long jarg3, dht_lookup jarg3_); + + public final static native void delete_dht_lookup_vector(long jarg1); + + public final static native long new_block_info_vector(); + + public final static native long block_info_vector_size(long jarg1, block_info_vector jarg1_); + + public final static native long block_info_vector_capacity(long jarg1, block_info_vector jarg1_); + + public final static native void block_info_vector_reserve(long jarg1, block_info_vector jarg1_, long jarg2); + + public final static native boolean block_info_vector_empty(long jarg1, block_info_vector jarg1_); + + public final static native void block_info_vector_clear(long jarg1, block_info_vector jarg1_); + + public final static native void block_info_vector_push_back(long jarg1, block_info_vector jarg1_, long jarg2, block_info jarg2_); + + public final static native long block_info_vector_get(long jarg1, block_info_vector jarg1_, int jarg2); + + public final static native void block_info_vector_set(long jarg1, block_info_vector jarg1_, int jarg2, long jarg3, block_info jarg3_); + + public final static native void delete_block_info_vector(long jarg1); + + public final static native long new_partial_piece_info_vector(); + + public final static native long partial_piece_info_vector_size(long jarg1, partial_piece_info_vector jarg1_); + + public final static native long partial_piece_info_vector_capacity(long jarg1, partial_piece_info_vector jarg1_); + + public final static native void partial_piece_info_vector_reserve(long jarg1, partial_piece_info_vector jarg1_, long jarg2); + + public final static native boolean partial_piece_info_vector_empty(long jarg1, partial_piece_info_vector jarg1_); + + public final static native void partial_piece_info_vector_clear(long jarg1, partial_piece_info_vector jarg1_); + + public final static native void partial_piece_info_vector_push_back(long jarg1, partial_piece_info_vector jarg1_, long jarg2, partial_piece_info jarg2_); + + public final static native long partial_piece_info_vector_get(long jarg1, partial_piece_info_vector jarg1_, int jarg2); + + public final static native void partial_piece_info_vector_set(long jarg1, partial_piece_info_vector jarg1_, int jarg2, long jarg3, partial_piece_info jarg3_); + + public final static native void delete_partial_piece_info_vector(long jarg1); + + public final static native long new_peer_info_vector(); + + public final static native long peer_info_vector_size(long jarg1, peer_info_vector jarg1_); + + public final static native long peer_info_vector_capacity(long jarg1, peer_info_vector jarg1_); + + public final static native void peer_info_vector_reserve(long jarg1, peer_info_vector jarg1_, long jarg2); + + public final static native boolean peer_info_vector_empty(long jarg1, peer_info_vector jarg1_); + + public final static native void peer_info_vector_clear(long jarg1, peer_info_vector jarg1_); + + public final static native void peer_info_vector_push_back(long jarg1, peer_info_vector jarg1_, long jarg2, peer_info jarg2_); + + public final static native long peer_info_vector_get(long jarg1, peer_info_vector jarg1_, int jarg2); + + public final static native void peer_info_vector_set(long jarg1, peer_info_vector jarg1_, int jarg2, long jarg3, peer_info jarg3_); + + public final static native void delete_peer_info_vector(long jarg1); + + public final static native long new_stats_metric_vector(); + + public final static native long stats_metric_vector_size(long jarg1, stats_metric_vector jarg1_); + + public final static native long stats_metric_vector_capacity(long jarg1, stats_metric_vector jarg1_); + + public final static native void stats_metric_vector_reserve(long jarg1, stats_metric_vector jarg1_, long jarg2); + + public final static native boolean stats_metric_vector_empty(long jarg1, stats_metric_vector jarg1_); + + public final static native void stats_metric_vector_clear(long jarg1, stats_metric_vector jarg1_); + + public final static native void stats_metric_vector_push_back(long jarg1, stats_metric_vector jarg1_, long jarg2, stats_metric jarg2_); + + public final static native long stats_metric_vector_get(long jarg1, stats_metric_vector jarg1_, int jarg2); + + public final static native void stats_metric_vector_set(long jarg1, stats_metric_vector jarg1_, int jarg2, long jarg3, stats_metric jarg3_); + + public final static native void delete_stats_metric_vector(long jarg1); + + public final static native long new_entry_vector(); + + public final static native long entry_vector_size(long jarg1, entry_vector jarg1_); + + public final static native long entry_vector_capacity(long jarg1, entry_vector jarg1_); + + public final static native void entry_vector_reserve(long jarg1, entry_vector jarg1_, long jarg2); + + public final static native boolean entry_vector_empty(long jarg1, entry_vector jarg1_); + + public final static native void entry_vector_clear(long jarg1, entry_vector jarg1_); + + public final static native void entry_vector_push_back(long jarg1, entry_vector jarg1_, long jarg2, entry jarg2_); + + public final static native long entry_vector_get(long jarg1, entry_vector jarg1_, int jarg2); + + public final static native void entry_vector_set(long jarg1, entry_vector jarg1_, int jarg2, long jarg3, entry jarg3_); + + public final static native void delete_entry_vector(long jarg1); + + public final static native long new_web_seed_entry_vector(); + + public final static native long web_seed_entry_vector_size(long jarg1, web_seed_entry_vector jarg1_); + + public final static native long web_seed_entry_vector_capacity(long jarg1, web_seed_entry_vector jarg1_); + + public final static native void web_seed_entry_vector_reserve(long jarg1, web_seed_entry_vector jarg1_, long jarg2); + + public final static native boolean web_seed_entry_vector_empty(long jarg1, web_seed_entry_vector jarg1_); + + public final static native void web_seed_entry_vector_clear(long jarg1, web_seed_entry_vector jarg1_); + + public final static native void web_seed_entry_vector_push_back(long jarg1, web_seed_entry_vector jarg1_, long jarg2, web_seed_entry jarg2_); + + public final static native long web_seed_entry_vector_get(long jarg1, web_seed_entry_vector jarg1_, int jarg2); + + public final static native void web_seed_entry_vector_set(long jarg1, web_seed_entry_vector jarg1_, int jarg2, long jarg3, web_seed_entry jarg3_); + + public final static native void delete_web_seed_entry_vector(long jarg1); + + public final static native long new_announce_endpoint_vector(); + + public final static native long announce_endpoint_vector_size(long jarg1, announce_endpoint_vector jarg1_); + + public final static native long announce_endpoint_vector_capacity(long jarg1, announce_endpoint_vector jarg1_); + + public final static native void announce_endpoint_vector_reserve(long jarg1, announce_endpoint_vector jarg1_, long jarg2); + + public final static native boolean announce_endpoint_vector_empty(long jarg1, announce_endpoint_vector jarg1_); + + public final static native void announce_endpoint_vector_clear(long jarg1, announce_endpoint_vector jarg1_); + + public final static native void announce_endpoint_vector_push_back(long jarg1, announce_endpoint_vector jarg1_, long jarg2, announce_endpoint jarg2_); + + public final static native long announce_endpoint_vector_get(long jarg1, announce_endpoint_vector jarg1_, int jarg2); + + public final static native void announce_endpoint_vector_set(long jarg1, announce_endpoint_vector jarg1_, int jarg2, long jarg3, announce_endpoint jarg3_); + + public final static native void delete_announce_endpoint_vector(long jarg1); + + public final static native long new_announce_entry_vector(); + + public final static native long announce_entry_vector_size(long jarg1, announce_entry_vector jarg1_); + + public final static native long announce_entry_vector_capacity(long jarg1, announce_entry_vector jarg1_); + + public final static native void announce_entry_vector_reserve(long jarg1, announce_entry_vector jarg1_, long jarg2); + + public final static native boolean announce_entry_vector_empty(long jarg1, announce_entry_vector jarg1_); + + public final static native void announce_entry_vector_clear(long jarg1, announce_entry_vector jarg1_); + + public final static native void announce_entry_vector_push_back(long jarg1, announce_entry_vector jarg1_, long jarg2, announce_entry jarg2_); + + public final static native long announce_entry_vector_get(long jarg1, announce_entry_vector jarg1_, int jarg2); + + public final static native void announce_entry_vector_set(long jarg1, announce_entry_vector jarg1_, int jarg2, long jarg3, announce_entry jarg3_); + + public final static native void delete_announce_entry_vector(long jarg1); + + public final static native long new_tcp_endpoint_vector(); + + public final static native long tcp_endpoint_vector_size(long jarg1, tcp_endpoint_vector jarg1_); + + public final static native long tcp_endpoint_vector_capacity(long jarg1, tcp_endpoint_vector jarg1_); + + public final static native void tcp_endpoint_vector_reserve(long jarg1, tcp_endpoint_vector jarg1_, long jarg2); + + public final static native boolean tcp_endpoint_vector_empty(long jarg1, tcp_endpoint_vector jarg1_); + + public final static native void tcp_endpoint_vector_clear(long jarg1, tcp_endpoint_vector jarg1_); + + public final static native void tcp_endpoint_vector_push_back(long jarg1, tcp_endpoint_vector jarg1_, long jarg2, tcp_endpoint jarg2_); + + public final static native long tcp_endpoint_vector_get(long jarg1, tcp_endpoint_vector jarg1_, int jarg2); + + public final static native void tcp_endpoint_vector_set(long jarg1, tcp_endpoint_vector jarg1_, int jarg2, long jarg3, tcp_endpoint jarg3_); + + public final static native void delete_tcp_endpoint_vector(long jarg1); + + public final static native long new_udp_endpoint_vector(); + + public final static native long udp_endpoint_vector_size(long jarg1, udp_endpoint_vector jarg1_); + + public final static native long udp_endpoint_vector_capacity(long jarg1, udp_endpoint_vector jarg1_); + + public final static native void udp_endpoint_vector_reserve(long jarg1, udp_endpoint_vector jarg1_, long jarg2); + + public final static native boolean udp_endpoint_vector_empty(long jarg1, udp_endpoint_vector jarg1_); + + public final static native void udp_endpoint_vector_clear(long jarg1, udp_endpoint_vector jarg1_); + + public final static native void udp_endpoint_vector_push_back(long jarg1, udp_endpoint_vector jarg1_, long jarg2, udp_endpoint jarg2_); + + public final static native long udp_endpoint_vector_get(long jarg1, udp_endpoint_vector jarg1_, int jarg2); + + public final static native void udp_endpoint_vector_set(long jarg1, udp_endpoint_vector jarg1_, int jarg2, long jarg3, udp_endpoint jarg3_); + + public final static native void delete_udp_endpoint_vector(long jarg1); + + public final static native long new_piece_index_vector(); + + public final static native long piece_index_vector_size(long jarg1, piece_index_vector jarg1_); + + public final static native long piece_index_vector_capacity(long jarg1, piece_index_vector jarg1_); + + public final static native void piece_index_vector_reserve(long jarg1, piece_index_vector jarg1_, long jarg2); + + public final static native boolean piece_index_vector_empty(long jarg1, piece_index_vector jarg1_); + + public final static native void piece_index_vector_clear(long jarg1, piece_index_vector jarg1_); + + public final static native void piece_index_vector_push_back(long jarg1, piece_index_vector jarg1_, int jarg2); + + public final static native int piece_index_vector_get(long jarg1, piece_index_vector jarg1_, int jarg2); + + public final static native void piece_index_vector_set(long jarg1, piece_index_vector jarg1_, int jarg2, int jarg3); + + public final static native void delete_piece_index_vector(long jarg1); + + public final static native long new_file_index_vector(); + + public final static native long file_index_vector_size(long jarg1, file_index_vector jarg1_); + + public final static native long file_index_vector_capacity(long jarg1, file_index_vector jarg1_); + + public final static native void file_index_vector_reserve(long jarg1, file_index_vector jarg1_, long jarg2); + + public final static native boolean file_index_vector_empty(long jarg1, file_index_vector jarg1_); + + public final static native void file_index_vector_clear(long jarg1, file_index_vector jarg1_); + + public final static native void file_index_vector_push_back(long jarg1, file_index_vector jarg1_, int jarg2); + + public final static native int file_index_vector_get(long jarg1, file_index_vector jarg1_, int jarg2); + + public final static native void file_index_vector_set(long jarg1, file_index_vector jarg1_, int jarg2, int jarg3); + + public final static native void delete_file_index_vector(long jarg1); + + public final static native long new_sha1_hash_udp_endpoint_pair_vector(); + + public final static native long sha1_hash_udp_endpoint_pair_vector_size(long jarg1, sha1_hash_udp_endpoint_pair_vector jarg1_); + + public final static native long sha1_hash_udp_endpoint_pair_vector_capacity(long jarg1, sha1_hash_udp_endpoint_pair_vector jarg1_); + + public final static native void sha1_hash_udp_endpoint_pair_vector_reserve(long jarg1, sha1_hash_udp_endpoint_pair_vector jarg1_, long jarg2); + + public final static native boolean sha1_hash_udp_endpoint_pair_vector_empty(long jarg1, sha1_hash_udp_endpoint_pair_vector jarg1_); + + public final static native void sha1_hash_udp_endpoint_pair_vector_clear(long jarg1, sha1_hash_udp_endpoint_pair_vector jarg1_); + + public final static native void sha1_hash_udp_endpoint_pair_vector_push_back(long jarg1, sha1_hash_udp_endpoint_pair_vector jarg1_, long jarg2, sha1_hash_udp_endpoint_pair jarg2_); + + public final static native long sha1_hash_udp_endpoint_pair_vector_get(long jarg1, sha1_hash_udp_endpoint_pair_vector jarg1_, int jarg2); + + public final static native void sha1_hash_udp_endpoint_pair_vector_set(long jarg1, sha1_hash_udp_endpoint_pair_vector jarg1_, int jarg2, long jarg3, sha1_hash_udp_endpoint_pair jarg3_); + + public final static native void delete_sha1_hash_udp_endpoint_pair_vector(long jarg1); + + public final static native long new_address_sha1_hash_pair_vector(); + + public final static native long address_sha1_hash_pair_vector_size(long jarg1, address_sha1_hash_pair_vector jarg1_); + + public final static native long address_sha1_hash_pair_vector_capacity(long jarg1, address_sha1_hash_pair_vector jarg1_); + + public final static native void address_sha1_hash_pair_vector_reserve(long jarg1, address_sha1_hash_pair_vector jarg1_, long jarg2); + + public final static native boolean address_sha1_hash_pair_vector_empty(long jarg1, address_sha1_hash_pair_vector jarg1_); + + public final static native void address_sha1_hash_pair_vector_clear(long jarg1, address_sha1_hash_pair_vector jarg1_); + + public final static native void address_sha1_hash_pair_vector_push_back(long jarg1, address_sha1_hash_pair_vector jarg1_, long jarg2, address_sha1_hash_pair jarg2_); + + public final static native long address_sha1_hash_pair_vector_get(long jarg1, address_sha1_hash_pair_vector jarg1_, int jarg2); + + public final static native void address_sha1_hash_pair_vector_set(long jarg1, address_sha1_hash_pair_vector jarg1_, int jarg2, long jarg3, address_sha1_hash_pair jarg3_); + + public final static native void delete_address_sha1_hash_pair_vector(long jarg1); + + public final static native long new_file_index_string_map__SWIG_0(); + + public final static native long new_file_index_string_map__SWIG_1(long jarg1, file_index_string_map jarg1_); + + public final static native long file_index_string_map_size(long jarg1, file_index_string_map jarg1_); + + public final static native boolean file_index_string_map_empty(long jarg1, file_index_string_map jarg1_); + + public final static native void file_index_string_map_clear(long jarg1, file_index_string_map jarg1_); + + public final static native String file_index_string_map_get(long jarg1, file_index_string_map jarg1_, int jarg2); + + public final static native void file_index_string_map_set(long jarg1, file_index_string_map jarg1_, int jarg2, String jarg3); + + public final static native void file_index_string_map_erase(long jarg1, file_index_string_map jarg1_, int jarg2); + + public final static native boolean file_index_string_map_has_key(long jarg1, file_index_string_map jarg1_, int jarg2); + + public final static native long file_index_string_map_keys(long jarg1, file_index_string_map jarg1_); + + public final static native void delete_file_index_string_map(long jarg1); + + public final static native long new_string_long_map__SWIG_0(); + + public final static native long new_string_long_map__SWIG_1(long jarg1, string_long_map jarg1_); + + public final static native long string_long_map_size(long jarg1, string_long_map jarg1_); + + public final static native boolean string_long_map_empty(long jarg1, string_long_map jarg1_); + + public final static native void string_long_map_clear(long jarg1, string_long_map jarg1_); + + public final static native int string_long_map_get(long jarg1, string_long_map jarg1_, String jarg2); + + public final static native void string_long_map_set(long jarg1, string_long_map jarg1_, String jarg2, int jarg3); + + public final static native void string_long_map_erase(long jarg1, string_long_map jarg1_, String jarg2); + + public final static native boolean string_long_map_has_key(long jarg1, string_long_map jarg1_, String jarg2); + + public final static native long string_long_map_keys(long jarg1, string_long_map jarg1_); + + public final static native void delete_string_long_map(long jarg1); + + public final static native long new_string_entry_map__SWIG_0(); + + public final static native long new_string_entry_map__SWIG_1(long jarg1, string_entry_map jarg1_); + + public final static native long string_entry_map_size(long jarg1, string_entry_map jarg1_); + + public final static native boolean string_entry_map_empty(long jarg1, string_entry_map jarg1_); + + public final static native void string_entry_map_clear(long jarg1, string_entry_map jarg1_); + + public final static native long string_entry_map_get(long jarg1, string_entry_map jarg1_, String jarg2); + + public final static native void string_entry_map_set(long jarg1, string_entry_map jarg1_, String jarg2, long jarg3, entry jarg3_); + + public final static native void string_entry_map_erase(long jarg1, string_entry_map jarg1_, String jarg2); + + public final static native boolean string_entry_map_has_key(long jarg1, string_entry_map jarg1_, String jarg2); + + public final static native long string_entry_map_keys(long jarg1, string_entry_map jarg1_); + + public final static native void delete_string_entry_map(long jarg1); + + public final static native long new_alert_ptr_vector(); + + public final static native long alert_ptr_vector_size(long jarg1, alert_ptr_vector jarg1_); + + public final static native long alert_ptr_vector_capacity(long jarg1, alert_ptr_vector jarg1_); + + public final static native void alert_ptr_vector_reserve(long jarg1, alert_ptr_vector jarg1_, long jarg2); + + public final static native boolean alert_ptr_vector_empty(long jarg1, alert_ptr_vector jarg1_); + + public final static native void alert_ptr_vector_clear(long jarg1, alert_ptr_vector jarg1_); + + public final static native void alert_ptr_vector_push_back(long jarg1, alert_ptr_vector jarg1_, long jarg2, alert jarg2_); + + public final static native long alert_ptr_vector_get(long jarg1, alert_ptr_vector jarg1_, int jarg2); + + public final static native void alert_ptr_vector_set(long jarg1, alert_ptr_vector jarg1_, int jarg2, long jarg3, alert jarg3_); + + public final static native void delete_alert_ptr_vector(long jarg1); + + public final static native long new_ip_interface_vector(); + + public final static native long ip_interface_vector_size(long jarg1, ip_interface_vector jarg1_); + + public final static native long ip_interface_vector_capacity(long jarg1, ip_interface_vector jarg1_); + + public final static native void ip_interface_vector_reserve(long jarg1, ip_interface_vector jarg1_, long jarg2); + + public final static native boolean ip_interface_vector_empty(long jarg1, ip_interface_vector jarg1_); + + public final static native void ip_interface_vector_clear(long jarg1, ip_interface_vector jarg1_); + + public final static native void ip_interface_vector_push_back(long jarg1, ip_interface_vector jarg1_, long jarg2, ip_interface jarg2_); + + public final static native long ip_interface_vector_get(long jarg1, ip_interface_vector jarg1_, int jarg2); + + public final static native void ip_interface_vector_set(long jarg1, ip_interface_vector jarg1_, int jarg2, long jarg3, ip_interface jarg3_); + + public final static native void delete_ip_interface_vector(long jarg1); + + public final static native long new_ip_route_vector(); + + public final static native long ip_route_vector_size(long jarg1, ip_route_vector jarg1_); + + public final static native long ip_route_vector_capacity(long jarg1, ip_route_vector jarg1_); + + public final static native void ip_route_vector_reserve(long jarg1, ip_route_vector jarg1_, long jarg2); + + public final static native boolean ip_route_vector_empty(long jarg1, ip_route_vector jarg1_); + + public final static native void ip_route_vector_clear(long jarg1, ip_route_vector jarg1_); + + public final static native void ip_route_vector_push_back(long jarg1, ip_route_vector jarg1_, long jarg2, ip_route jarg2_); + + public final static native long ip_route_vector_get(long jarg1, ip_route_vector jarg1_, int jarg2); + + public final static native void ip_route_vector_set(long jarg1, ip_route_vector jarg1_, int jarg2, long jarg3, ip_route jarg3_); + + public final static native void delete_ip_route_vector(long jarg1); + + public final static native long new_port_mapping_t_vector(); + + public final static native long port_mapping_t_vector_size(long jarg1, port_mapping_t_vector jarg1_); + + public final static native long port_mapping_t_vector_capacity(long jarg1, port_mapping_t_vector jarg1_); + + public final static native void port_mapping_t_vector_reserve(long jarg1, port_mapping_t_vector jarg1_, long jarg2); + + public final static native boolean port_mapping_t_vector_empty(long jarg1, port_mapping_t_vector jarg1_); + + public final static native void port_mapping_t_vector_clear(long jarg1, port_mapping_t_vector jarg1_); + + public final static native void port_mapping_t_vector_push_back(long jarg1, port_mapping_t_vector jarg1_, int jarg2); + + public final static native int port_mapping_t_vector_get(long jarg1, port_mapping_t_vector jarg1_, int jarg2); + + public final static native void port_mapping_t_vector_set(long jarg1, port_mapping_t_vector jarg1_, int jarg2, int jarg3); + + public final static native void delete_port_mapping_t_vector(long jarg1); + + public final static native boolean bitset_96_test(long jarg1, bitset_96 jarg1_, long jarg2); + + public final static native boolean bitset_96_all(long jarg1, bitset_96 jarg1_); + + public final static native boolean bitset_96_any(long jarg1, bitset_96 jarg1_); + + public final static native boolean bitset_96_none(long jarg1, bitset_96 jarg1_); + + public final static native long bitset_96_count(long jarg1, bitset_96 jarg1_); + + public final static native long bitset_96_size(long jarg1, bitset_96 jarg1_); + + public final static native boolean bitset_96_get(long jarg1, bitset_96 jarg1_, long jarg2); + + public final static native long new_bitset_96(); + + public final static native void delete_bitset_96(long jarg1); + + public final static native long alert_category_t_all(); + + public final static native boolean alert_category_t_nonZero(long jarg1, alert_category_t jarg1_); + + public final static native boolean alert_category_t_eq(long jarg1, alert_category_t jarg1_, long jarg2, alert_category_t jarg2_); + + public final static native boolean alert_category_t_ne(long jarg1, alert_category_t jarg1_, long jarg2, alert_category_t jarg2_); + + public final static native long alert_category_t_or_(long jarg1, alert_category_t jarg1_, long jarg2, alert_category_t jarg2_); + + public final static native long alert_category_t_and_(long jarg1, alert_category_t jarg1_, long jarg2, alert_category_t jarg2_); + + public final static native long alert_category_t_xor(long jarg1, alert_category_t jarg1_, long jarg2, alert_category_t jarg2_); + + public final static native long alert_category_t_inv(long jarg1, alert_category_t jarg1_); + + public final static native int alert_category_t_to_int(long jarg1, alert_category_t jarg1_); + + public final static native long new_alert_category_t(); + + public final static native void delete_alert_category_t(long jarg1); + + public final static native long add_piece_flags_t_all(); + + public final static native boolean add_piece_flags_t_nonZero(long jarg1, add_piece_flags_t jarg1_); + + public final static native boolean add_piece_flags_t_eq(long jarg1, add_piece_flags_t jarg1_, long jarg2, add_piece_flags_t jarg2_); + + public final static native boolean add_piece_flags_t_ne(long jarg1, add_piece_flags_t jarg1_, long jarg2, add_piece_flags_t jarg2_); + + public final static native long add_piece_flags_t_or_(long jarg1, add_piece_flags_t jarg1_, long jarg2, add_piece_flags_t jarg2_); + + public final static native long add_piece_flags_t_and_(long jarg1, add_piece_flags_t jarg1_, long jarg2, add_piece_flags_t jarg2_); + + public final static native long add_piece_flags_t_xor(long jarg1, add_piece_flags_t jarg1_, long jarg2, add_piece_flags_t jarg2_); + + public final static native long add_piece_flags_t_inv(long jarg1, add_piece_flags_t jarg1_); + + public final static native int add_piece_flags_t_to_int(long jarg1, add_piece_flags_t jarg1_); + + public final static native long new_add_piece_flags_t(); + + public final static native void delete_add_piece_flags_t(long jarg1); + + public final static native long status_flags_t_all(); + + public final static native boolean status_flags_t_nonZero(long jarg1, status_flags_t jarg1_); + + public final static native boolean status_flags_t_eq(long jarg1, status_flags_t jarg1_, long jarg2, status_flags_t jarg2_); + + public final static native boolean status_flags_t_ne(long jarg1, status_flags_t jarg1_, long jarg2, status_flags_t jarg2_); + + public final static native long status_flags_t_or_(long jarg1, status_flags_t jarg1_, long jarg2, status_flags_t jarg2_); + + public final static native long status_flags_t_and_(long jarg1, status_flags_t jarg1_, long jarg2, status_flags_t jarg2_); + + public final static native long status_flags_t_xor(long jarg1, status_flags_t jarg1_, long jarg2, status_flags_t jarg2_); + + public final static native long status_flags_t_inv(long jarg1, status_flags_t jarg1_); + + public final static native int status_flags_t_to_int(long jarg1, status_flags_t jarg1_); + + public final static native long new_status_flags_t(); + + public final static native void delete_status_flags_t(long jarg1); + + public final static native long deadline_flags_t_all(); + + public final static native boolean deadline_flags_t_nonZero(long jarg1, deadline_flags_t jarg1_); + + public final static native boolean deadline_flags_t_eq(long jarg1, deadline_flags_t jarg1_, long jarg2, deadline_flags_t jarg2_); + + public final static native boolean deadline_flags_t_ne(long jarg1, deadline_flags_t jarg1_, long jarg2, deadline_flags_t jarg2_); + + public final static native long deadline_flags_t_or_(long jarg1, deadline_flags_t jarg1_, long jarg2, deadline_flags_t jarg2_); + + public final static native long deadline_flags_t_and_(long jarg1, deadline_flags_t jarg1_, long jarg2, deadline_flags_t jarg2_); + + public final static native long deadline_flags_t_xor(long jarg1, deadline_flags_t jarg1_, long jarg2, deadline_flags_t jarg2_); + + public final static native long deadline_flags_t_inv(long jarg1, deadline_flags_t jarg1_); + + public final static native int deadline_flags_t_to_int(long jarg1, deadline_flags_t jarg1_); + + public final static native long new_deadline_flags_t(); + + public final static native void delete_deadline_flags_t(long jarg1); + + public final static native long session_flags_t_all(); + + public final static native boolean session_flags_t_nonZero(long jarg1, session_flags_t jarg1_); + + public final static native boolean session_flags_t_eq(long jarg1, session_flags_t jarg1_, long jarg2, session_flags_t jarg2_); + + public final static native boolean session_flags_t_ne(long jarg1, session_flags_t jarg1_, long jarg2, session_flags_t jarg2_); + + public final static native long session_flags_t_or_(long jarg1, session_flags_t jarg1_, long jarg2, session_flags_t jarg2_); + + public final static native long session_flags_t_and_(long jarg1, session_flags_t jarg1_, long jarg2, session_flags_t jarg2_); + + public final static native long session_flags_t_xor(long jarg1, session_flags_t jarg1_, long jarg2, session_flags_t jarg2_); + + public final static native long session_flags_t_inv(long jarg1, session_flags_t jarg1_); + + public final static native int session_flags_t_to_int(long jarg1, session_flags_t jarg1_); + + public final static native long new_session_flags_t(); + + public final static native void delete_session_flags_t(long jarg1); + + public final static native long pause_flags_t_all(); + + public final static native boolean pause_flags_t_nonZero(long jarg1, pause_flags_t jarg1_); + + public final static native boolean pause_flags_t_eq(long jarg1, pause_flags_t jarg1_, long jarg2, pause_flags_t jarg2_); + + public final static native boolean pause_flags_t_ne(long jarg1, pause_flags_t jarg1_, long jarg2, pause_flags_t jarg2_); + + public final static native long pause_flags_t_or_(long jarg1, pause_flags_t jarg1_, long jarg2, pause_flags_t jarg2_); + + public final static native long pause_flags_t_and_(long jarg1, pause_flags_t jarg1_, long jarg2, pause_flags_t jarg2_); + + public final static native long pause_flags_t_xor(long jarg1, pause_flags_t jarg1_, long jarg2, pause_flags_t jarg2_); + + public final static native long pause_flags_t_inv(long jarg1, pause_flags_t jarg1_); + + public final static native int pause_flags_t_to_int(long jarg1, pause_flags_t jarg1_); + + public final static native long new_pause_flags_t(); + + public final static native void delete_pause_flags_t(long jarg1); + + public final static native long resume_data_flags_t_all(); + + public final static native boolean resume_data_flags_t_nonZero(long jarg1, resume_data_flags_t jarg1_); + + public final static native boolean resume_data_flags_t_eq(long jarg1, resume_data_flags_t jarg1_, long jarg2, resume_data_flags_t jarg2_); + + public final static native boolean resume_data_flags_t_ne(long jarg1, resume_data_flags_t jarg1_, long jarg2, resume_data_flags_t jarg2_); + + public final static native long resume_data_flags_t_or_(long jarg1, resume_data_flags_t jarg1_, long jarg2, resume_data_flags_t jarg2_); + + public final static native long resume_data_flags_t_and_(long jarg1, resume_data_flags_t jarg1_, long jarg2, resume_data_flags_t jarg2_); + + public final static native long resume_data_flags_t_xor(long jarg1, resume_data_flags_t jarg1_, long jarg2, resume_data_flags_t jarg2_); + + public final static native long resume_data_flags_t_inv(long jarg1, resume_data_flags_t jarg1_); + + public final static native int resume_data_flags_t_to_int(long jarg1, resume_data_flags_t jarg1_); + + public final static native long new_resume_data_flags_t(); + + public final static native void delete_resume_data_flags_t(long jarg1); + + public final static native long picker_flags_t_all(); + + public final static native boolean picker_flags_t_nonZero(long jarg1, picker_flags_t jarg1_); + + public final static native boolean picker_flags_t_eq(long jarg1, picker_flags_t jarg1_, long jarg2, picker_flags_t jarg2_); + + public final static native boolean picker_flags_t_ne(long jarg1, picker_flags_t jarg1_, long jarg2, picker_flags_t jarg2_); + + public final static native long picker_flags_t_or_(long jarg1, picker_flags_t jarg1_, long jarg2, picker_flags_t jarg2_); + + public final static native long picker_flags_t_and_(long jarg1, picker_flags_t jarg1_, long jarg2, picker_flags_t jarg2_); + + public final static native long picker_flags_t_xor(long jarg1, picker_flags_t jarg1_, long jarg2, picker_flags_t jarg2_); + + public final static native long picker_flags_t_inv(long jarg1, picker_flags_t jarg1_); + + public final static native int picker_flags_t_to_int(long jarg1, picker_flags_t jarg1_); + + public final static native long new_picker_flags_t(); + + public final static native void delete_picker_flags_t(long jarg1); + + public final static native long remove_flags_t_all(); + + public final static native boolean remove_flags_t_nonZero(long jarg1, remove_flags_t jarg1_); + + public final static native boolean remove_flags_t_eq(long jarg1, remove_flags_t jarg1_, long jarg2, remove_flags_t jarg2_); + + public final static native boolean remove_flags_t_ne(long jarg1, remove_flags_t jarg1_, long jarg2, remove_flags_t jarg2_); + + public final static native long remove_flags_t_or_(long jarg1, remove_flags_t jarg1_, long jarg2, remove_flags_t jarg2_); + + public final static native long remove_flags_t_and_(long jarg1, remove_flags_t jarg1_, long jarg2, remove_flags_t jarg2_); + + public final static native long remove_flags_t_xor(long jarg1, remove_flags_t jarg1_, long jarg2, remove_flags_t jarg2_); + + public final static native long remove_flags_t_inv(long jarg1, remove_flags_t jarg1_); + + public final static native int remove_flags_t_to_int(long jarg1, remove_flags_t jarg1_); + + public final static native long new_remove_flags_t(); + + public final static native void delete_remove_flags_t(long jarg1); + + public final static native long save_state_flags_t_all(); + + public final static native boolean save_state_flags_t_nonZero(long jarg1, save_state_flags_t jarg1_); + + public final static native boolean save_state_flags_t_eq(long jarg1, save_state_flags_t jarg1_, long jarg2, save_state_flags_t jarg2_); + + public final static native boolean save_state_flags_t_ne(long jarg1, save_state_flags_t jarg1_, long jarg2, save_state_flags_t jarg2_); + + public final static native long save_state_flags_t_or_(long jarg1, save_state_flags_t jarg1_, long jarg2, save_state_flags_t jarg2_); + + public final static native long save_state_flags_t_and_(long jarg1, save_state_flags_t jarg1_, long jarg2, save_state_flags_t jarg2_); + + public final static native long save_state_flags_t_xor(long jarg1, save_state_flags_t jarg1_, long jarg2, save_state_flags_t jarg2_); + + public final static native long save_state_flags_t_inv(long jarg1, save_state_flags_t jarg1_); + + public final static native int save_state_flags_t_to_int(long jarg1, save_state_flags_t jarg1_); + + public final static native long new_save_state_flags_t(); + + public final static native void delete_save_state_flags_t(long jarg1); + + public final static native long torrent_flags_t_all(); + + public final static native boolean torrent_flags_t_nonZero(long jarg1, torrent_flags_t jarg1_); + + public final static native boolean torrent_flags_t_eq(long jarg1, torrent_flags_t jarg1_, long jarg2, torrent_flags_t jarg2_); + + public final static native boolean torrent_flags_t_ne(long jarg1, torrent_flags_t jarg1_, long jarg2, torrent_flags_t jarg2_); + + public final static native long torrent_flags_t_or_(long jarg1, torrent_flags_t jarg1_, long jarg2, torrent_flags_t jarg2_); + + public final static native long torrent_flags_t_and_(long jarg1, torrent_flags_t jarg1_, long jarg2, torrent_flags_t jarg2_); + + public final static native long torrent_flags_t_xor(long jarg1, torrent_flags_t jarg1_, long jarg2, torrent_flags_t jarg2_); + + public final static native long torrent_flags_t_inv(long jarg1, torrent_flags_t jarg1_); + + public final static native int torrent_flags_t_to_int(long jarg1, torrent_flags_t jarg1_); + + public final static native long new_torrent_flags_t(); + + public final static native void delete_torrent_flags_t(long jarg1); + + public final static native long peer_flags_t_all(); + + public final static native boolean peer_flags_t_nonZero(long jarg1, peer_flags_t jarg1_); + + public final static native boolean peer_flags_t_eq(long jarg1, peer_flags_t jarg1_, long jarg2, peer_flags_t jarg2_); + + public final static native boolean peer_flags_t_ne(long jarg1, peer_flags_t jarg1_, long jarg2, peer_flags_t jarg2_); + + public final static native long peer_flags_t_or_(long jarg1, peer_flags_t jarg1_, long jarg2, peer_flags_t jarg2_); + + public final static native long peer_flags_t_and_(long jarg1, peer_flags_t jarg1_, long jarg2, peer_flags_t jarg2_); + + public final static native long peer_flags_t_xor(long jarg1, peer_flags_t jarg1_, long jarg2, peer_flags_t jarg2_); + + public final static native long peer_flags_t_inv(long jarg1, peer_flags_t jarg1_); + + public final static native int peer_flags_t_to_int(long jarg1, peer_flags_t jarg1_); + + public final static native long new_peer_flags_t(); + + public final static native void delete_peer_flags_t(long jarg1); + + public final static native long peer_source_flags_t_all(); + + public final static native boolean peer_source_flags_t_nonZero(long jarg1, peer_source_flags_t jarg1_); + + public final static native boolean peer_source_flags_t_eq(long jarg1, peer_source_flags_t jarg1_, long jarg2, peer_source_flags_t jarg2_); + + public final static native boolean peer_source_flags_t_ne(long jarg1, peer_source_flags_t jarg1_, long jarg2, peer_source_flags_t jarg2_); + + public final static native long peer_source_flags_t_or_(long jarg1, peer_source_flags_t jarg1_, long jarg2, peer_source_flags_t jarg2_); + + public final static native long peer_source_flags_t_and_(long jarg1, peer_source_flags_t jarg1_, long jarg2, peer_source_flags_t jarg2_); + + public final static native long peer_source_flags_t_xor(long jarg1, peer_source_flags_t jarg1_, long jarg2, peer_source_flags_t jarg2_); + + public final static native long peer_source_flags_t_inv(long jarg1, peer_source_flags_t jarg1_); + + public final static native int peer_source_flags_t_to_int(long jarg1, peer_source_flags_t jarg1_); + + public final static native long new_peer_source_flags_t(); + + public final static native void delete_peer_source_flags_t(long jarg1); + + public final static native long pex_flags_t_all(); + + public final static native boolean pex_flags_t_nonZero(long jarg1, pex_flags_t jarg1_); + + public final static native boolean pex_flags_t_eq(long jarg1, pex_flags_t jarg1_, long jarg2, pex_flags_t jarg2_); + + public final static native boolean pex_flags_t_ne(long jarg1, pex_flags_t jarg1_, long jarg2, pex_flags_t jarg2_); + + public final static native long pex_flags_t_or_(long jarg1, pex_flags_t jarg1_, long jarg2, pex_flags_t jarg2_); + + public final static native long pex_flags_t_and_(long jarg1, pex_flags_t jarg1_, long jarg2, pex_flags_t jarg2_); + + public final static native long pex_flags_t_xor(long jarg1, pex_flags_t jarg1_, long jarg2, pex_flags_t jarg2_); + + public final static native long pex_flags_t_inv(long jarg1, pex_flags_t jarg1_); + + public final static native int pex_flags_t_to_int(long jarg1, pex_flags_t jarg1_); + + public final static native long new_pex_flags_t(); + + public final static native void delete_pex_flags_t(long jarg1); + + public final static native long bandwidth_state_flags_t_all(); + + public final static native boolean bandwidth_state_flags_t_nonZero(long jarg1, bandwidth_state_flags_t jarg1_); + + public final static native boolean bandwidth_state_flags_t_eq(long jarg1, bandwidth_state_flags_t jarg1_, long jarg2, bandwidth_state_flags_t jarg2_); + + public final static native boolean bandwidth_state_flags_t_ne(long jarg1, bandwidth_state_flags_t jarg1_, long jarg2, bandwidth_state_flags_t jarg2_); + + public final static native long bandwidth_state_flags_t_or_(long jarg1, bandwidth_state_flags_t jarg1_, long jarg2, bandwidth_state_flags_t jarg2_); + + public final static native long bandwidth_state_flags_t_and_(long jarg1, bandwidth_state_flags_t jarg1_, long jarg2, bandwidth_state_flags_t jarg2_); + + public final static native long bandwidth_state_flags_t_xor(long jarg1, bandwidth_state_flags_t jarg1_, long jarg2, bandwidth_state_flags_t jarg2_); + + public final static native long bandwidth_state_flags_t_inv(long jarg1, bandwidth_state_flags_t jarg1_); + + public final static native int bandwidth_state_flags_t_to_int(long jarg1, bandwidth_state_flags_t jarg1_); + + public final static native long new_bandwidth_state_flags_t(); + + public final static native void delete_bandwidth_state_flags_t(long jarg1); + + public final static native long file_flags_t_all(); + + public final static native boolean file_flags_t_nonZero(long jarg1, file_flags_t jarg1_); + + public final static native boolean file_flags_t_eq(long jarg1, file_flags_t jarg1_, long jarg2, file_flags_t jarg2_); + + public final static native boolean file_flags_t_ne(long jarg1, file_flags_t jarg1_, long jarg2, file_flags_t jarg2_); + + public final static native long file_flags_t_or_(long jarg1, file_flags_t jarg1_, long jarg2, file_flags_t jarg2_); + + public final static native long file_flags_t_and_(long jarg1, file_flags_t jarg1_, long jarg2, file_flags_t jarg2_); + + public final static native long file_flags_t_xor(long jarg1, file_flags_t jarg1_, long jarg2, file_flags_t jarg2_); + + public final static native long file_flags_t_inv(long jarg1, file_flags_t jarg1_); + + public final static native int file_flags_t_to_int(long jarg1, file_flags_t jarg1_); + + public final static native long new_file_flags_t(); + + public final static native void delete_file_flags_t(long jarg1); + + public final static native long create_flags_t_all(); + + public final static native boolean create_flags_t_nonZero(long jarg1, create_flags_t jarg1_); + + public final static native boolean create_flags_t_eq(long jarg1, create_flags_t jarg1_, long jarg2, create_flags_t jarg2_); + + public final static native boolean create_flags_t_ne(long jarg1, create_flags_t jarg1_, long jarg2, create_flags_t jarg2_); + + public final static native long create_flags_t_or_(long jarg1, create_flags_t jarg1_, long jarg2, create_flags_t jarg2_); + + public final static native long create_flags_t_and_(long jarg1, create_flags_t jarg1_, long jarg2, create_flags_t jarg2_); + + public final static native long create_flags_t_xor(long jarg1, create_flags_t jarg1_, long jarg2, create_flags_t jarg2_); + + public final static native long create_flags_t_inv(long jarg1, create_flags_t jarg1_); + + public final static native int create_flags_t_to_int(long jarg1, create_flags_t jarg1_); + + public final static native long new_create_flags_t(); + + public final static native void delete_create_flags_t(long jarg1); + + public final static native long reopen_network_flags_t_all(); + + public final static native boolean reopen_network_flags_t_nonZero(long jarg1, reopen_network_flags_t jarg1_); + + public final static native boolean reopen_network_flags_t_eq(long jarg1, reopen_network_flags_t jarg1_, long jarg2, reopen_network_flags_t jarg2_); + + public final static native boolean reopen_network_flags_t_ne(long jarg1, reopen_network_flags_t jarg1_, long jarg2, reopen_network_flags_t jarg2_); + + public final static native long reopen_network_flags_t_or_(long jarg1, reopen_network_flags_t jarg1_, long jarg2, reopen_network_flags_t jarg2_); + + public final static native long reopen_network_flags_t_and_(long jarg1, reopen_network_flags_t jarg1_, long jarg2, reopen_network_flags_t jarg2_); + + public final static native long reopen_network_flags_t_xor(long jarg1, reopen_network_flags_t jarg1_, long jarg2, reopen_network_flags_t jarg2_); + + public final static native long reopen_network_flags_t_inv(long jarg1, reopen_network_flags_t jarg1_); + + public final static native int reopen_network_flags_t_to_int(long jarg1, reopen_network_flags_t jarg1_); + + public final static native long new_reopen_network_flags_t(); + + public final static native void delete_reopen_network_flags_t(long jarg1); + + public final static native long reannounce_flags_t_all(); + + public final static native boolean reannounce_flags_t_nonZero(long jarg1, reannounce_flags_t jarg1_); + + public final static native boolean reannounce_flags_t_eq(long jarg1, reannounce_flags_t jarg1_, long jarg2, reannounce_flags_t jarg2_); + + public final static native boolean reannounce_flags_t_ne(long jarg1, reannounce_flags_t jarg1_, long jarg2, reannounce_flags_t jarg2_); + + public final static native long reannounce_flags_t_or_(long jarg1, reannounce_flags_t jarg1_, long jarg2, reannounce_flags_t jarg2_); + + public final static native long reannounce_flags_t_and_(long jarg1, reannounce_flags_t jarg1_, long jarg2, reannounce_flags_t jarg2_); + + public final static native long reannounce_flags_t_xor(long jarg1, reannounce_flags_t jarg1_, long jarg2, reannounce_flags_t jarg2_); + + public final static native long reannounce_flags_t_inv(long jarg1, reannounce_flags_t jarg1_); + + public final static native int reannounce_flags_t_to_int(long jarg1, reannounce_flags_t jarg1_); + + public final static native long new_reannounce_flags_t(); + + public final static native void delete_reannounce_flags_t(long jarg1); + + public final static native long new_byte_span(); + + public final static native long byte_span_size(long jarg1, byte_span jarg1_); + + public final static native boolean byte_span_empty(long jarg1, byte_span jarg1_); + + public final static native byte byte_span_front(long jarg1, byte_span jarg1_); + + public final static native byte byte_span_back(long jarg1, byte_span jarg1_); + + public final static native long byte_span_first(long jarg1, byte_span jarg1_, long jarg2); + + public final static native long byte_span_last(long jarg1, byte_span jarg1_, long jarg2); + + public final static native long byte_span_subspan__SWIG_0(long jarg1, byte_span jarg1_, long jarg2); + + public final static native long byte_span_subspan__SWIG_1(long jarg1, byte_span jarg1_, long jarg2, long jarg3); + + public final static native byte byte_span_get(long jarg1, byte_span jarg1_, long jarg2); + + public final static native void byte_span_set(long jarg1, byte_span jarg1_, long jarg2, byte jarg3); + + public final static native void delete_byte_span(long jarg1); + + public final static native long new_byte_const_span(); + + public final static native long byte_const_span_size(long jarg1, byte_const_span jarg1_); + + public final static native boolean byte_const_span_empty(long jarg1, byte_const_span jarg1_); + + public final static native byte byte_const_span_front(long jarg1, byte_const_span jarg1_); + + public final static native byte byte_const_span_back(long jarg1, byte_const_span jarg1_); + + public final static native long byte_const_span_first(long jarg1, byte_const_span jarg1_, long jarg2); + + public final static native long byte_const_span_last(long jarg1, byte_const_span jarg1_, long jarg2); + + public final static native long byte_const_span_subspan__SWIG_0(long jarg1, byte_const_span jarg1_, long jarg2); + + public final static native long byte_const_span_subspan__SWIG_1(long jarg1, byte_const_span jarg1_, long jarg2, long jarg3); + + public final static native byte byte_const_span_get(long jarg1, byte_const_span jarg1_, long jarg2); + + public final static native void delete_byte_const_span(long jarg1); + + public final static native long sha1_hash_size(); + + public final static native long new_sha1_hash__SWIG_0(); + + public final static native long new_sha1_hash__SWIG_1(long jarg1, sha1_hash jarg1_); + + public final static native long sha1_hash_max(); + + public final static native long sha1_hash_min(); + + public final static native void sha1_hash_clear(long jarg1, sha1_hash jarg1_); + + public final static native boolean sha1_hash_is_all_zeros(long jarg1, sha1_hash jarg1_); + + public final static native int sha1_hash_count_leading_zeroes(long jarg1, sha1_hash jarg1_); + + public final static native long new_sha1_hash__SWIG_2(long jarg1, byte_vector jarg1_); + + public final static native int sha1_hash_hash_code(long jarg1, sha1_hash jarg1_); + + public final static native long sha1_hash_to_bytes(long jarg1, sha1_hash jarg1_); + + public final static native String sha1_hash_to_hex(long jarg1, sha1_hash jarg1_); + + public final static native boolean sha1_hash_op_eq(long jarg1, sha1_hash jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native boolean sha1_hash_op_ne(long jarg1, sha1_hash jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native boolean sha1_hash_op_lt(long jarg1, sha1_hash jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native int sha1_hash_compare(long jarg1, sha1_hash jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native void delete_sha1_hash(long jarg1); + + public final static native boolean bloom_filter_128_find(long jarg1, bloom_filter_128 jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native void bloom_filter_128_set(long jarg1, bloom_filter_128 jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native void bloom_filter_128_clear(long jarg1, bloom_filter_128 jarg1_); + + public final static native float bloom_filter_128_size(long jarg1, bloom_filter_128 jarg1_); + + public final static native long new_bloom_filter_128(); + + public final static native long bloom_filter_128_to_bytes(long jarg1, bloom_filter_128 jarg1_); + + public final static native void bloom_filter_128_from_bytes(long jarg1, bloom_filter_128 jarg1_, long jarg2, byte_vector jarg2_); + + public final static native void delete_bloom_filter_128(long jarg1); + + public final static native boolean bloom_filter_256_find(long jarg1, bloom_filter_256 jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native void bloom_filter_256_set(long jarg1, bloom_filter_256 jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native void bloom_filter_256_clear(long jarg1, bloom_filter_256 jarg1_); + + public final static native float bloom_filter_256_size(long jarg1, bloom_filter_256 jarg1_); + + public final static native long new_bloom_filter_256(); + + public final static native long bloom_filter_256_to_bytes(long jarg1, bloom_filter_256 jarg1_); + + public final static native void bloom_filter_256_from_bytes(long jarg1, bloom_filter_256 jarg1_, long jarg2, byte_vector jarg2_); + + public final static native void delete_bloom_filter_256(long jarg1); + + public final static native long string_view_to_bytes(long jarg1, string_view jarg1_); + + public final static native long new_string_view(); + + public final static native void delete_string_view(long jarg1); + + public final static native long new_address__SWIG_0(); + + public final static native long new_address__SWIG_1(long jarg1, address jarg1_); + + public final static native boolean address_is_v4(long jarg1, address jarg1_); + + public final static native boolean address_is_v6(long jarg1, address jarg1_); + + public final static native String address_to_string(long jarg1, address jarg1_, long jarg2, error_code jarg2_); + + public final static native boolean address_is_loopback(long jarg1, address jarg1_); + + public final static native boolean address_is_unspecified(long jarg1, address jarg1_); + + public final static native boolean address_is_multicast(long jarg1, address jarg1_); + + public final static native boolean address_op_lt(long jarg1, address jarg1_, long jarg2, address jarg2_); + + public final static native int address_compare(long jarg1, address jarg1_, long jarg2, address jarg2_); + + public final static native long address_from_string(String jarg1, long jarg2, error_code jarg2_); + + public final static native void delete_address(long jarg1); + + public final static native long new_tcp_endpoint__SWIG_0(); + + public final static native long new_tcp_endpoint__SWIG_1(long jarg1, address jarg1_, int jarg2); + + public final static native long new_tcp_endpoint__SWIG_2(long jarg1, tcp_endpoint jarg1_); + + public final static native int tcp_endpoint_port(long jarg1, tcp_endpoint jarg1_); + + public final static native long tcp_endpoint_address(long jarg1, tcp_endpoint jarg1_); + + public final static native void delete_tcp_endpoint(long jarg1); + + public final static native long new_udp_endpoint__SWIG_0(); + + public final static native long new_udp_endpoint__SWIG_1(long jarg1, address jarg1_, int jarg2); + + public final static native long new_udp_endpoint__SWIG_2(long jarg1, udp_endpoint jarg1_); + + public final static native int udp_endpoint_port(long jarg1, udp_endpoint jarg1_); + + public final static native long udp_endpoint_address(long jarg1, udp_endpoint jarg1_); + + public final static native void delete_udp_endpoint(long jarg1); + + public final static native int entry_type(long jarg1, entry jarg1_); + + public final static native long new_entry__SWIG_0(long jarg1, string_entry_map jarg1_); + + public final static native long new_entry__SWIG_1(long jarg1, byte_const_span jarg1_); + + public final static native long new_entry__SWIG_2(String jarg1); + + public final static native long new_entry__SWIG_3(long jarg1, entry_vector jarg1_); + + public final static native long new_entry__SWIG_4(long jarg1); + + public final static native long new_entry__SWIG_5(int jarg1); + + public final static native long new_entry__SWIG_6(long jarg1, entry jarg1_); + + public final static native long new_entry__SWIG_7(); + + public final static native long entry_integer(long jarg1, entry jarg1_); + + public final static native String entry_string(long jarg1, entry jarg1_); + + public final static native long entry_list(long jarg1, entry jarg1_); + + public final static native long entry_dict(long jarg1, entry jarg1_); + + public final static native long entry_find_key(long jarg1, entry jarg1_, long jarg2, string_view jarg2_); + + public final static native String entry_to_string(long jarg1, entry jarg1_); + + public final static native long entry_get(long jarg1, entry jarg1_, String jarg2); + + public final static native void entry_set__SWIG_0(long jarg1, entry jarg1_, String jarg2, String jarg3); + + public final static native void entry_set__SWIG_1(long jarg1, entry jarg1_, String jarg2, long jarg3, byte_vector jarg3_); + + public final static native void entry_set__SWIG_2(long jarg1, entry jarg1_, String jarg2, long jarg3); + + public final static native void entry_set__SWIG_3(long jarg1, entry jarg1_, String jarg2, long jarg3, entry jarg3_); + + public final static native long entry_string_bytes(long jarg1, entry jarg1_); + + public final static native long entry_preformatted_bytes(long jarg1, entry jarg1_); + + public final static native long entry_bencode(long jarg1, entry jarg1_); + + public final static native long entry_from_string_bytes(long jarg1, byte_vector jarg1_); + + public final static native long entry_from_preformatted_bytes(long jarg1, byte_vector jarg1_); + + public final static native long entry_bdecode(long jarg1, byte_vector jarg1_); + + public final static native void delete_entry(long jarg1); + + public final static native long new_piece_index_bitfield__SWIG_0(); + + public final static native long new_piece_index_bitfield__SWIG_1(int jarg1); + + public final static native long new_piece_index_bitfield__SWIG_2(int jarg1, boolean jarg2); + + public final static native long new_piece_index_bitfield__SWIG_3(long jarg1, piece_index_bitfield jarg1_); + + public final static native boolean piece_index_bitfield_get_bit(long jarg1, piece_index_bitfield jarg1_, int jarg2); + + public final static native void piece_index_bitfield_clear_bit(long jarg1, piece_index_bitfield jarg1_, int jarg2); + + public final static native void piece_index_bitfield_set_bit(long jarg1, piece_index_bitfield jarg1_, int jarg2); + + public final static native int piece_index_bitfield_end_index(long jarg1, piece_index_bitfield jarg1_); + + public final static native boolean piece_index_bitfield_all_set(long jarg1, piece_index_bitfield jarg1_); + + public final static native boolean piece_index_bitfield_none_set(long jarg1, piece_index_bitfield jarg1_); + + public final static native int piece_index_bitfield_size(long jarg1, piece_index_bitfield jarg1_); + + public final static native int piece_index_bitfield_num_words(long jarg1, piece_index_bitfield jarg1_); + + public final static native boolean piece_index_bitfield_empty(long jarg1, piece_index_bitfield jarg1_); + + public final static native int piece_index_bitfield_count(long jarg1, piece_index_bitfield jarg1_); + + public final static native int piece_index_bitfield_find_first_set(long jarg1, piece_index_bitfield jarg1_); + + public final static native int piece_index_bitfield_find_last_clear(long jarg1, piece_index_bitfield jarg1_); + + public final static native void piece_index_bitfield_resize__SWIG_0(long jarg1, piece_index_bitfield jarg1_, int jarg2, boolean jarg3); + + public final static native void piece_index_bitfield_resize__SWIG_1(long jarg1, piece_index_bitfield jarg1_, int jarg2); + + public final static native void piece_index_bitfield_set_all(long jarg1, piece_index_bitfield jarg1_); + + public final static native void piece_index_bitfield_clear_all(long jarg1, piece_index_bitfield jarg1_); + + public final static native void piece_index_bitfield_clear(long jarg1, piece_index_bitfield jarg1_); + + public final static native void delete_piece_index_bitfield(long jarg1); + + public final static native void peer_class_info_ignore_unchoke_slots_set(long jarg1, peer_class_info jarg1_, boolean jarg2); + + public final static native boolean peer_class_info_ignore_unchoke_slots_get(long jarg1, peer_class_info jarg1_); + + public final static native void peer_class_info_connection_limit_factor_set(long jarg1, peer_class_info jarg1_, int jarg2); + + public final static native int peer_class_info_connection_limit_factor_get(long jarg1, peer_class_info jarg1_); + + public final static native void peer_class_info_label_set(long jarg1, peer_class_info jarg1_, String jarg2); + + public final static native String peer_class_info_label_get(long jarg1, peer_class_info jarg1_); + + public final static native void peer_class_info_upload_limit_set(long jarg1, peer_class_info jarg1_, int jarg2); + + public final static native int peer_class_info_upload_limit_get(long jarg1, peer_class_info jarg1_); + + public final static native void peer_class_info_download_limit_set(long jarg1, peer_class_info jarg1_, int jarg2); + + public final static native int peer_class_info_download_limit_get(long jarg1, peer_class_info jarg1_); + + public final static native void peer_class_info_upload_priority_set(long jarg1, peer_class_info jarg1_, int jarg2); + + public final static native int peer_class_info_upload_priority_get(long jarg1, peer_class_info jarg1_); + + public final static native void peer_class_info_download_priority_set(long jarg1, peer_class_info jarg1_, int jarg2); + + public final static native int peer_class_info_download_priority_get(long jarg1, peer_class_info jarg1_); + + public final static native long new_peer_class_info(); + + public final static native void delete_peer_class_info(long jarg1); + + public final static native void announce_endpoint_last_error_set(long jarg1, announce_endpoint jarg1_, long jarg2, error_code jarg2_); + + public final static native long announce_endpoint_last_error_get(long jarg1, announce_endpoint jarg1_); + + public final static native void announce_endpoint_local_endpoint_set(long jarg1, announce_endpoint jarg1_, long jarg2, tcp_endpoint jarg2_); + + public final static native long announce_endpoint_local_endpoint_get(long jarg1, announce_endpoint jarg1_); + + public final static native void announce_endpoint_scrape_incomplete_set(long jarg1, announce_endpoint jarg1_, int jarg2); + + public final static native int announce_endpoint_scrape_incomplete_get(long jarg1, announce_endpoint jarg1_); + + public final static native void announce_endpoint_scrape_complete_set(long jarg1, announce_endpoint jarg1_, int jarg2); + + public final static native int announce_endpoint_scrape_complete_get(long jarg1, announce_endpoint jarg1_); + + public final static native void announce_endpoint_scrape_downloaded_set(long jarg1, announce_endpoint jarg1_, int jarg2); + + public final static native int announce_endpoint_scrape_downloaded_get(long jarg1, announce_endpoint jarg1_); + + public final static native void announce_endpoint_fails_set(long jarg1, announce_endpoint jarg1_, short jarg2); + + public final static native short announce_endpoint_fails_get(long jarg1, announce_endpoint jarg1_); + + public final static native void announce_endpoint_updating_set(long jarg1, announce_endpoint jarg1_, boolean jarg2); + + public final static native boolean announce_endpoint_updating_get(long jarg1, announce_endpoint jarg1_); + + public final static native boolean announce_endpoint_is_working(long jarg1, announce_endpoint jarg1_); + + public final static native long announce_endpoint_get_message(long jarg1, announce_endpoint jarg1_); + + public final static native long announce_endpoint_get_next_announce(long jarg1, announce_endpoint jarg1_); + + public final static native long announce_endpoint_get_min_announce(long jarg1, announce_endpoint jarg1_); + + public final static native void delete_announce_endpoint(long jarg1); + + public final static native void announce_entry_endpoints_set(long jarg1, announce_entry jarg1_, long jarg2, announce_endpoint_vector jarg2_); + + public final static native long announce_entry_endpoints_get(long jarg1, announce_entry jarg1_); + + public final static native void announce_entry_tier_set(long jarg1, announce_entry jarg1_, short jarg2); + + public final static native short announce_entry_tier_get(long jarg1, announce_entry jarg1_); + + public final static native void announce_entry_fail_limit_set(long jarg1, announce_entry jarg1_, short jarg2); + + public final static native short announce_entry_fail_limit_get(long jarg1, announce_entry jarg1_); + + public final static native int announce_entry_source_torrent_get(); + + public final static native int announce_entry_source_client_get(); + + public final static native int announce_entry_source_magnet_link_get(); + + public final static native int announce_entry_source_tex_get(); + + public final static native void announce_entry_source_set(long jarg1, announce_entry jarg1_, short jarg2); + + public final static native short announce_entry_source_get(long jarg1, announce_entry jarg1_); + + public final static native void announce_entry_verified_set(long jarg1, announce_entry jarg1_, boolean jarg2); + + public final static native boolean announce_entry_verified_get(long jarg1, announce_entry jarg1_); + + public final static native long new_announce_entry(long jarg1, byte_vector jarg1_); + + public final static native long announce_entry_get_url(long jarg1, announce_entry jarg1_); + + public final static native void announce_entry_set_url(long jarg1, announce_entry jarg1_, long jarg2, byte_vector jarg2_); + + public final static native long announce_entry_get_trackerid(long jarg1, announce_entry jarg1_); + + public final static native void announce_entry_set_trackerid(long jarg1, announce_entry jarg1_, long jarg2, byte_vector jarg2_); + + public final static native void delete_announce_entry(long jarg1); + + public final static native int success_get(); + + public final static native int address_family_not_supported_get(); + + public final static native int address_in_use_get(); + + public final static native int address_not_available_get(); + + public final static native int already_connected_get(); + + public final static native int argument_list_too_long_get(); + + public final static native int argument_out_of_domain_get(); + + public final static native int bad_address_get(); + + public final static native int bad_file_descriptor_get(); + + public final static native int bad_message_get(); + + public final static native int broken_pipe_get(); + + public final static native int connection_aborted_get(); + + public final static native int connection_already_in_progress_get(); + + public final static native int connection_refused_get(); + + public final static native int connection_reset_get(); + + public final static native int cross_device_link_get(); + + public final static native int destination_address_required_get(); + + public final static native int device_or_resource_busy_get(); + + public final static native int directory_not_empty_get(); + + public final static native int executable_format_error_get(); + + public final static native int file_exists_get(); + + public final static native int file_too_large_get(); + + public final static native int filename_too_long_get(); + + public final static native int function_not_supported_get(); + + public final static native int host_unreachable_get(); + + public final static native int identifier_removed_get(); + + public final static native int illegal_byte_sequence_get(); + + public final static native int inappropriate_io_control_operation_get(); + + public final static native int interrupted_get(); + + public final static native int invalid_argument_get(); + + public final static native int invalid_seek_get(); + + public final static native int io_error_get(); + + public final static native int is_a_directory_get(); + + public final static native int message_size_get(); + + public final static native int network_down_get(); + + public final static native int network_reset_get(); + + public final static native int network_unreachable_get(); + + public final static native int no_buffer_space_get(); + + public final static native int no_child_process_get(); + + public final static native int no_link_get(); + + public final static native int no_lock_available_get(); + + public final static native int no_message_available_get(); + + public final static native int no_message_get(); + + public final static native int no_protocol_option_get(); + + public final static native int no_space_on_device_get(); + + public final static native int no_stream_resources_get(); + + public final static native int no_such_device_or_address_get(); + + public final static native int no_such_device_get(); + + public final static native int no_such_file_or_directory_get(); + + public final static native int no_such_process_get(); + + public final static native int not_a_directory_get(); + + public final static native int not_a_socket_get(); + + public final static native int not_a_stream_get(); + + public final static native int not_connected_get(); + + public final static native int not_enough_memory_get(); + + public final static native int not_supported_get(); + + public final static native int operation_canceled_get(); + + public final static native int operation_in_progress_get(); + + public final static native int operation_not_permitted_get(); + + public final static native int operation_not_supported_get(); + + public final static native int operation_would_block_get(); + + public final static native int owner_dead_get(); + + public final static native int permission_denied_get(); + + public final static native int protocol_error_get(); + + public final static native int protocol_not_supported_get(); + + public final static native int read_only_file_system_get(); + + public final static native int resource_deadlock_would_occur_get(); + + public final static native int resource_unavailable_try_again_get(); + + public final static native int result_out_of_range_get(); + + public final static native int state_not_recoverable_get(); + + public final static native int stream_timeout_get(); + + public final static native int text_file_busy_get(); + + public final static native int timed_out_get(); + + public final static native int too_many_files_open_in_system_get(); + + public final static native int too_many_files_open_get(); + + public final static native int too_many_links_get(); + + public final static native int too_many_symbolic_link_levels_get(); + + public final static native int value_too_large_get(); + + public final static native int wrong_protocol_type_get(); + + public final static native long new_generic_error_category(); + + public final static native String generic_error_category_name(long jarg1, generic_error_category jarg1_); + + public final static native String generic_error_category_message__SWIG_0(long jarg1, generic_error_category jarg1_, int jarg2); + + public final static native String generic_error_category_message__SWIG_1(long jarg1, generic_error_category jarg1_, int jarg2, String jarg3, long jarg4); + + public final static native void delete_generic_error_category(long jarg1); + + public final static native long new_system_error_category(); + + public final static native String system_error_category_name(long jarg1, system_error_category jarg1_); + + public final static native long system_error_category_default_error_condition(long jarg1, system_error_category jarg1_, int jarg2); + + public final static native String system_error_category_message__SWIG_0(long jarg1, system_error_category jarg1_, int jarg2); + + public final static native String system_error_category_message__SWIG_1(long jarg1, system_error_category jarg1_, int jarg2, String jarg3, long jarg4); + + public final static native void delete_system_error_category(long jarg1); + + public final static native boolean failed_impl(int jarg1, long jarg2); + + public final static native long new_error_code(); + + public final static native void error_code_clear(long jarg1, error_code jarg1_); + + public final static native int error_code_value(long jarg1, error_code jarg1_); + + public final static native String error_code_message__SWIG_0(long jarg1, error_code jarg1_); + + public final static native String error_code_message__SWIG_1(long jarg1, error_code jarg1_, String jarg2, long jarg3); + + public final static native boolean error_code_failed(long jarg1, error_code jarg1_); + + public final static native boolean error_code_op_bool(long jarg1, error_code jarg1_); + + public final static native boolean op_eq__SWIG_1(long jarg1, error_code jarg1_, long jarg2, error_code jarg2_); + + public final static native boolean op_lt__SWIG_1(long jarg1, error_code jarg1_, long jarg2, error_code jarg2_); + + public final static native void delete_error_code(long jarg1); + + public final static native boolean op_ne(long jarg1, error_code jarg1_, long jarg2, error_code jarg2_); + + public final static native long make_error_code(int jarg1); + + public final static native int LIBTORRENT_VERSION_MAJOR_get(); + + public final static native int LIBTORRENT_VERSION_MINOR_get(); + + public final static native int LIBTORRENT_VERSION_TINY_get(); + + public final static native int LIBTORRENT_VERSION_NUM_get(); + + public final static native String LIBTORRENT_VERSION_get(); + + public final static native String LIBTORRENT_REVISION_get(); + + public final static native String version(); + + public final static native int libtorrent_no_error_get(); + + public final static native int missing_file_sizes_get(); + + public final static native int http_parse_error_get(); + + public final static native int no_i2p_router_get(); + + public final static native int no_i2p_endpoint_get(); + + public final static native int scrape_not_available_get(); + + public final static native int no_entropy_get(); + + public final static native int cont_get(); + + public final static native int ok_get(); + + public final static native int created_get(); + + public final static native int accepted_get(); + + public final static native int no_content_get(); + + public final static native int multiple_choices_get(); + + public final static native int moved_permanently_get(); + + public final static native int moved_temporarily_get(); + + public final static native int not_modified_get(); + + public final static native int bad_request_get(); + + public final static native int unauthorized_get(); + + public final static native int forbidden_get(); + + public final static native int not_found_get(); + + public final static native int internal_server_error_get(); + + public final static native int not_implemented_get(); + + public final static native int bad_gateway_get(); + + public final static native int service_unavailable_get(); + + public final static native String print_error(long jarg1, error_code jarg1_); + + public final static native void peer_request_piece_set(long jarg1, peer_request jarg1_, int jarg2); + + public final static native int peer_request_piece_get(long jarg1, peer_request jarg1_); + + public final static native void peer_request_start_set(long jarg1, peer_request jarg1_, int jarg2); + + public final static native int peer_request_start_get(long jarg1, peer_request jarg1_); + + public final static native void peer_request_length_set(long jarg1, peer_request jarg1_, int jarg2); + + public final static native int peer_request_length_get(long jarg1, peer_request jarg1_); + + public final static native boolean peer_request_op_eq(long jarg1, peer_request jarg1_, long jarg2, peer_request jarg2_); + + public final static native long new_peer_request(); + + public final static native void delete_peer_request(long jarg1); + + public final static native void file_slice_file_index_set(long jarg1, file_slice jarg1_, int jarg2); + + public final static native int file_slice_file_index_get(long jarg1, file_slice jarg1_); + + public final static native void file_slice_offset_set(long jarg1, file_slice jarg1_, long jarg2); + + public final static native long file_slice_offset_get(long jarg1, file_slice jarg1_); + + public final static native void file_slice_size_set(long jarg1, file_slice jarg1_, long jarg2); + + public final static native long file_slice_size_get(long jarg1, file_slice jarg1_); + + public final static native long new_file_slice(); + + public final static native void delete_file_slice(long jarg1); + + public final static native long new_file_storage__SWIG_0(); + + public final static native void delete_file_storage(long jarg1); + + public final static native long new_file_storage__SWIG_1(long jarg1, file_storage jarg1_); + + public final static native boolean file_storage_is_valid(long jarg1, file_storage jarg1_); + + public final static native void file_storage_reserve(long jarg1, file_storage jarg1_, int jarg2); + + public final static native void file_storage_add_file_borrow__SWIG_0(long jarg1, file_storage jarg1_, long jarg2, string_view jarg2_, String jarg3, long jarg4, long jarg5, file_flags_t jarg5_, String jarg6, long jarg7, long jarg8, string_view jarg8_); + + public final static native void file_storage_add_file_borrow__SWIG_1(long jarg1, file_storage jarg1_, long jarg2, string_view jarg2_, String jarg3, long jarg4, long jarg5, file_flags_t jarg5_, String jarg6, long jarg7); + + public final static native void file_storage_add_file_borrow__SWIG_2(long jarg1, file_storage jarg1_, long jarg2, string_view jarg2_, String jarg3, long jarg4, long jarg5, file_flags_t jarg5_, String jarg6); + + public final static native void file_storage_add_file_borrow__SWIG_3(long jarg1, file_storage jarg1_, long jarg2, string_view jarg2_, String jarg3, long jarg4, long jarg5, file_flags_t jarg5_); + + public final static native void file_storage_add_file_borrow__SWIG_4(long jarg1, file_storage jarg1_, long jarg2, string_view jarg2_, String jarg3, long jarg4); + + public final static native void file_storage_add_file__SWIG_0(long jarg1, file_storage jarg1_, String jarg2, long jarg3, long jarg4, file_flags_t jarg4_, long jarg5, long jarg6, string_view jarg6_); + + public final static native void file_storage_add_file__SWIG_1(long jarg1, file_storage jarg1_, String jarg2, long jarg3, long jarg4, file_flags_t jarg4_, long jarg5); + + public final static native void file_storage_add_file__SWIG_2(long jarg1, file_storage jarg1_, String jarg2, long jarg3, long jarg4, file_flags_t jarg4_); + + public final static native void file_storage_add_file__SWIG_3(long jarg1, file_storage jarg1_, String jarg2, long jarg3); + + public final static native void file_storage_rename_file(long jarg1, file_storage jarg1_, int jarg2, String jarg3); + + public final static native long file_storage_map_block(long jarg1, file_storage jarg1_, int jarg2, long jarg3, int jarg4); + + public final static native long file_storage_map_file(long jarg1, file_storage jarg1_, int jarg2, long jarg3, int jarg4); + + public final static native int file_storage_num_files(long jarg1, file_storage jarg1_); + + public final static native int file_storage_end_file(long jarg1, file_storage jarg1_); + + public final static native long file_storage_total_size(long jarg1, file_storage jarg1_); + + public final static native void file_storage_set_num_pieces(long jarg1, file_storage jarg1_, int jarg2); + + public final static native int file_storage_num_pieces(long jarg1, file_storage jarg1_); + + public final static native int file_storage_end_piece(long jarg1, file_storage jarg1_); + + public final static native int file_storage_last_piece(long jarg1, file_storage jarg1_); + + public final static native void file_storage_set_piece_length(long jarg1, file_storage jarg1_, int jarg2); + + public final static native int file_storage_piece_length(long jarg1, file_storage jarg1_); + + public final static native int file_storage_piece_size(long jarg1, file_storage jarg1_, int jarg2); + + public final static native void file_storage_set_name(long jarg1, file_storage jarg1_, String jarg2); + + public final static native String file_storage_name(long jarg1, file_storage jarg1_); + + public final static native void file_storage_swap(long jarg1, file_storage jarg1_, long jarg2, file_storage jarg2_); + + public final static native void file_storage_optimize__SWIG_0(long jarg1, file_storage jarg1_, int jarg2, int jarg3, boolean jarg4); + + public final static native void file_storage_optimize__SWIG_1(long jarg1, file_storage jarg1_, int jarg2, int jarg3); + + public final static native void file_storage_optimize__SWIG_2(long jarg1, file_storage jarg1_, int jarg2); + + public final static native void file_storage_optimize__SWIG_3(long jarg1, file_storage jarg1_); + + public final static native long file_storage_hash(long jarg1, file_storage jarg1_, int jarg2); + + public final static native String file_storage_symlink(long jarg1, file_storage jarg1_, int jarg2); + + public final static native long file_storage_mtime(long jarg1, file_storage jarg1_, int jarg2); + + public final static native String file_storage_file_path__SWIG_0(long jarg1, file_storage jarg1_, int jarg2, String jarg3); + + public final static native String file_storage_file_path__SWIG_1(long jarg1, file_storage jarg1_, int jarg2); + + public final static native long file_storage_file_name(long jarg1, file_storage jarg1_, int jarg2); + + public final static native long file_storage_file_size(long jarg1, file_storage jarg1_, int jarg2); + + public final static native boolean file_storage_pad_file_at(long jarg1, file_storage jarg1_, int jarg2); + + public final static native long file_storage_file_offset(long jarg1, file_storage jarg1_, int jarg2); + + public final static native long file_storage_flag_pad_file_get(); + + public final static native long file_storage_flag_hidden_get(); + + public final static native long file_storage_flag_executable_get(); + + public final static native long file_storage_flag_symlink_get(); + + public final static native long file_storage_paths(long jarg1, file_storage jarg1_); + + public final static native long file_storage_file_flags(long jarg1, file_storage jarg1_, int jarg2); + + public final static native boolean file_storage_file_absolute_path(long jarg1, file_storage jarg1_, int jarg2); + + public final static native int file_storage_file_index_at_offset(long jarg1, file_storage jarg1_, long jarg2); + + public final static native String file_storage_internal_symlink(long jarg1, file_storage jarg1_, int jarg2); + + public final static native void file_storage_add_file__SWIG_4(long jarg1, file_storage jarg1_, String jarg2, long jarg3, long jarg4, file_flags_t jarg4_, long jarg5, String jarg6); + + public final static native int bdecode_no_error_get(); + + public final static native long new_bdecode_node__SWIG_0(); + + public final static native long new_bdecode_node__SWIG_1(long jarg1, bdecode_node jarg1_); + + public final static native int bdecode_node_type(long jarg1, bdecode_node jarg1_); + + public final static native boolean bdecode_node_op_bool(long jarg1, bdecode_node jarg1_); + + public final static native long bdecode_node_list_at(long jarg1, bdecode_node jarg1_, int jarg2); + + public final static native long bdecode_node_list_int_value_at__SWIG_0(long jarg1, bdecode_node jarg1_, int jarg2, long jarg3); + + public final static native long bdecode_node_list_int_value_at__SWIG_1(long jarg1, bdecode_node jarg1_, int jarg2); + + public final static native int bdecode_node_list_size(long jarg1, bdecode_node jarg1_); + + public final static native long bdecode_node_dict_at(long jarg1, bdecode_node jarg1_, int jarg2); + + public final static native int bdecode_node_dict_size(long jarg1, bdecode_node jarg1_); + + public final static native long bdecode_node_int_value(long jarg1, bdecode_node jarg1_); + + public final static native int bdecode_node_string_length(long jarg1, bdecode_node jarg1_); + + public final static native void bdecode_node_clear(long jarg1, bdecode_node jarg1_); + + public final static native String bdecode_node_list_string_value_at_s__SWIG_0(long jarg1, bdecode_node jarg1_, int jarg2, String jarg3); + + public final static native String bdecode_node_list_string_value_at_s__SWIG_1(long jarg1, bdecode_node jarg1_, int jarg2); + + public final static native long bdecode_node_dict_find_s(long jarg1, bdecode_node jarg1_, String jarg2); + + public final static native long bdecode_node_dict_find_dict_s(long jarg1, bdecode_node jarg1_, String jarg2); + + public final static native long bdecode_node_dict_find_list_s(long jarg1, bdecode_node jarg1_, String jarg2); + + public final static native long bdecode_node_dict_find_string_s(long jarg1, bdecode_node jarg1_, String jarg2); + + public final static native long bdecode_node_dict_find_int_s(long jarg1, bdecode_node jarg1_, String jarg2); + + public final static native String bdecode_node_dict_find_string_value_s__SWIG_0(long jarg1, bdecode_node jarg1_, String jarg2, String jarg3); + + public final static native String bdecode_node_dict_find_string_value_s__SWIG_1(long jarg1, bdecode_node jarg1_, String jarg2); + + public final static native long bdecode_node_dict_find_int_value_s__SWIG_0(long jarg1, bdecode_node jarg1_, String jarg2, long jarg3); + + public final static native long bdecode_node_dict_find_int_value_s__SWIG_1(long jarg1, bdecode_node jarg1_, String jarg2); + + public final static native String bdecode_node_string_value_s(long jarg1, bdecode_node jarg1_); + + public final static native String bdecode_node_to_string(long jarg1, bdecode_node jarg1_, boolean jarg2, int jarg3); + + public final static native int bdecode_node_bdecode(long jarg1, byte_vector jarg1_, long jarg2, bdecode_node jarg2_, long jarg3, error_code jarg3_); + + public final static native void delete_bdecode_node(long jarg1); + + public final static native long new_peer_info__SWIG_0(); + + public final static native void delete_peer_info(long jarg1); + + public final static native long new_peer_info__SWIG_1(long jarg1, peer_info jarg1_); + + public final static native void peer_info_pieces_set(long jarg1, peer_info jarg1_, long jarg2, piece_index_bitfield jarg2_); + + public final static native long peer_info_pieces_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_total_download_set(long jarg1, peer_info jarg1_, long jarg2); + + public final static native long peer_info_total_download_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_total_upload_set(long jarg1, peer_info jarg1_, long jarg2); + + public final static native long peer_info_total_upload_get(long jarg1, peer_info jarg1_); + + public final static native long peer_info_interesting_get(); + + public final static native long peer_info_choked_get(); + + public final static native long peer_info_remote_interested_get(); + + public final static native long peer_info_remote_choked_get(); + + public final static native long peer_info_supports_extensions_get(); + + public final static native long peer_info_local_connection_get(); + + public final static native long peer_info_handshake_get(); + + public final static native long peer_info_connecting_get(); + + public final static native long peer_info_on_parole_get(); + + public final static native long peer_info_seed_get(); + + public final static native long peer_info_optimistic_unchoke_get(); + + public final static native long peer_info_snubbed_get(); + + public final static native long peer_info_upload_only_get(); + + public final static native long peer_info_endgame_mode_get(); + + public final static native long peer_info_holepunched_get(); + + public final static native long peer_info_i2p_socket_get(); + + public final static native long peer_info_utp_socket_get(); + + public final static native long peer_info_ssl_socket_get(); + + public final static native long peer_info_rc4_encrypted_get(); + + public final static native long peer_info_plaintext_encrypted_get(); + + public final static native void peer_info_flags_set(long jarg1, peer_info jarg1_, long jarg2, peer_flags_t jarg2_); + + public final static native long peer_info_flags_get(long jarg1, peer_info jarg1_); + + public final static native long peer_info_tracker_get(); + + public final static native long peer_info_dht_get(); + + public final static native long peer_info_pex_get(); + + public final static native long peer_info_lsd_get(); + + public final static native long peer_info_resume_data_get(); + + public final static native long peer_info_incoming_get(); + + public final static native void peer_info_source_set(long jarg1, peer_info jarg1_, long jarg2, peer_source_flags_t jarg2_); + + public final static native long peer_info_source_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_up_speed_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_up_speed_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_down_speed_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_down_speed_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_payload_up_speed_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_payload_up_speed_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_payload_down_speed_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_payload_down_speed_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_pid_set(long jarg1, peer_info jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long peer_info_pid_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_queue_bytes_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_queue_bytes_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_request_timeout_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_request_timeout_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_send_buffer_size_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_send_buffer_size_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_used_send_buffer_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_used_send_buffer_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_receive_buffer_size_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_receive_buffer_size_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_used_receive_buffer_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_used_receive_buffer_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_receive_buffer_watermark_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_receive_buffer_watermark_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_num_hashfails_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_num_hashfails_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_download_queue_length_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_download_queue_length_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_timed_out_requests_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_timed_out_requests_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_busy_requests_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_busy_requests_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_requests_in_buffer_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_requests_in_buffer_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_target_dl_queue_length_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_target_dl_queue_length_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_upload_queue_length_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_upload_queue_length_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_failcount_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_failcount_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_downloading_piece_index_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_downloading_piece_index_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_downloading_block_index_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_downloading_block_index_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_downloading_progress_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_downloading_progress_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_downloading_total_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_downloading_total_get(long jarg1, peer_info jarg1_); + + public final static native int peer_info_standard_bittorrent_get(); + + public final static native int peer_info_web_seed_get(); + + public final static native int peer_info_http_seed_get(); + + public final static native void peer_info_connection_type_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_connection_type_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_pending_disk_bytes_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_pending_disk_bytes_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_pending_disk_read_bytes_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_pending_disk_read_bytes_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_send_quota_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_send_quota_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_receive_quota_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_receive_quota_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_rtt_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_rtt_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_num_pieces_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_num_pieces_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_download_rate_peak_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_download_rate_peak_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_upload_rate_peak_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_upload_rate_peak_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_progress_set(long jarg1, peer_info jarg1_, float jarg2); + + public final static native float peer_info_progress_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_progress_ppm_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_progress_ppm_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_deprecated_estimated_reciprocation_rate_set(long jarg1, peer_info jarg1_, int jarg2); + + public final static native int peer_info_deprecated_estimated_reciprocation_rate_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_ip_set(long jarg1, peer_info jarg1_, long jarg2, tcp_endpoint jarg2_); + + public final static native long peer_info_ip_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_local_endpoint_set(long jarg1, peer_info jarg1_, long jarg2, tcp_endpoint jarg2_); + + public final static native long peer_info_local_endpoint_get(long jarg1, peer_info jarg1_); + + public final static native long peer_info_bw_idle_get(); + + public final static native long peer_info_bw_limit_get(); + + public final static native long peer_info_bw_network_get(); + + public final static native long peer_info_bw_disk_get(); + + public final static native void peer_info_read_state_set(long jarg1, peer_info jarg1_, long jarg2, bandwidth_state_flags_t jarg2_); + + public final static native long peer_info_read_state_get(long jarg1, peer_info jarg1_); + + public final static native void peer_info_write_state_set(long jarg1, peer_info jarg1_, long jarg2, bandwidth_state_flags_t jarg2_); + + public final static native long peer_info_write_state_get(long jarg1, peer_info jarg1_); + + public final static native long peer_info_get_client(long jarg1, peer_info jarg1_); + + public final static native long peer_info_get_last_request(long jarg1, peer_info jarg1_); + + public final static native long peer_info_get_last_active(long jarg1, peer_info jarg1_); + + public final static native long peer_info_get_download_queue_time(long jarg1, peer_info jarg1_); + + public final static native int peer_info_get_flags(long jarg1, peer_info jarg1_); + + public final static native byte peer_info_get_source(long jarg1, peer_info jarg1_); + + public final static native byte peer_info_get_read_state(long jarg1, peer_info jarg1_); + + public final static native byte peer_info_get_write_state(long jarg1, peer_info jarg1_); + + public final static native long seed_mode_get(); + + public final static native long upload_mode_get(); + + public final static native long share_mode_get(); + + public final static native long apply_ip_filter_get(); + + public final static native long paused_get(); + + public final static native long auto_managed_get(); + + public final static native long duplicate_is_error_get(); + + public final static native long update_subscribe_get(); + + public final static native long super_seeding_get(); + + public final static native long sequential_download_get(); + + public final static native long stop_when_ready_get(); + + public final static native long override_trackers_get(); + + public final static native long override_web_seeds_get(); + + public final static native long need_save_resume_get(); + + public final static native long disable_dht_get(); + + public final static native long disable_lsd_get(); + + public final static native long disable_pex_get(); + + public final static native long no_verify_files_get(); + + public final static native long all_get(); + + public final static native long default_flags_get(); + + public final static native long new_web_seed_entry__SWIG_0(String jarg1, int jarg2, String jarg3, long jarg4, string_string_pair_vector jarg4_); + + public final static native long new_web_seed_entry__SWIG_1(String jarg1, int jarg2, String jarg3); + + public final static native long new_web_seed_entry__SWIG_2(String jarg1, int jarg2); + + public final static native boolean web_seed_entry_op_eq(long jarg1, web_seed_entry jarg1_, long jarg2, web_seed_entry jarg2_); + + public final static native boolean web_seed_entry_op_lt(long jarg1, web_seed_entry jarg1_, long jarg2, web_seed_entry jarg2_); + + public final static native void web_seed_entry_url_set(long jarg1, web_seed_entry jarg1_, String jarg2); + + public final static native String web_seed_entry_url_get(long jarg1, web_seed_entry jarg1_); + + public final static native void web_seed_entry_auth_set(long jarg1, web_seed_entry jarg1_, String jarg2); + + public final static native String web_seed_entry_auth_get(long jarg1, web_seed_entry jarg1_); + + public final static native void web_seed_entry_extra_headers_set(long jarg1, web_seed_entry jarg1_, long jarg2, string_string_pair_vector jarg2_); + + public final static native long web_seed_entry_extra_headers_get(long jarg1, web_seed_entry jarg1_); + + public final static native void web_seed_entry_type_set(long jarg1, web_seed_entry jarg1_, short jarg2); + + public final static native short web_seed_entry_type_get(long jarg1, web_seed_entry jarg1_); + + public final static native void delete_web_seed_entry(long jarg1); + + public final static native void load_torrent_limits_max_buffer_size_set(long jarg1, load_torrent_limits jarg1_, int jarg2); + + public final static native int load_torrent_limits_max_buffer_size_get(long jarg1, load_torrent_limits jarg1_); + + public final static native void load_torrent_limits_max_pieces_set(long jarg1, load_torrent_limits jarg1_, int jarg2); + + public final static native int load_torrent_limits_max_pieces_get(long jarg1, load_torrent_limits jarg1_); + + public final static native void load_torrent_limits_max_decode_depth_set(long jarg1, load_torrent_limits jarg1_, int jarg2); + + public final static native int load_torrent_limits_max_decode_depth_get(long jarg1, load_torrent_limits jarg1_); + + public final static native void load_torrent_limits_max_decode_tokens_set(long jarg1, load_torrent_limits jarg1_, int jarg2); + + public final static native int load_torrent_limits_max_decode_tokens_get(long jarg1, load_torrent_limits jarg1_); + + public final static native long new_load_torrent_limits(); + + public final static native void delete_load_torrent_limits(long jarg1); + + public final static native long new_torrent_info__SWIG_0(long jarg1, torrent_info jarg1_); + + public final static native long new_torrent_info__SWIG_1(long jarg1, sha1_hash jarg1_); + + public final static native long new_torrent_info__SWIG_2(long jarg1, bdecode_node jarg1_, long jarg2, error_code jarg2_); + + public final static native long new_torrent_info__SWIG_3(String jarg1, long jarg2, error_code jarg2_); + + public final static native void delete_torrent_info(long jarg1); + + public final static native long torrent_info_files(long jarg1, torrent_info jarg1_); + + public final static native long torrent_info_orig_files(long jarg1, torrent_info jarg1_); + + public final static native void torrent_info_rename_file(long jarg1, torrent_info jarg1_, int jarg2, String jarg3); + + public final static native void torrent_info_remap_files(long jarg1, torrent_info jarg1_, long jarg2, file_storage jarg2_); + + public final static native void torrent_info_add_tracker__SWIG_0(long jarg1, torrent_info jarg1_, String jarg2, int jarg3); + + public final static native void torrent_info_add_tracker__SWIG_1(long jarg1, torrent_info jarg1_, String jarg2); + + public final static native void torrent_info_add_tracker__SWIG_2(long jarg1, torrent_info jarg1_, String jarg2, int jarg3, int jarg4); + + public final static native long torrent_info_trackers(long jarg1, torrent_info jarg1_); + + public final static native long torrent_info_similar_torrents(long jarg1, torrent_info jarg1_); + + public final static native long torrent_info_collections(long jarg1, torrent_info jarg1_); + + public final static native void torrent_info_add_url_seed__SWIG_0(long jarg1, torrent_info jarg1_, String jarg2, String jarg3, long jarg4, string_string_pair_vector jarg4_); + + public final static native void torrent_info_add_url_seed__SWIG_1(long jarg1, torrent_info jarg1_, String jarg2, String jarg3); + + public final static native void torrent_info_add_url_seed__SWIG_2(long jarg1, torrent_info jarg1_, String jarg2); + + public final static native void torrent_info_add_http_seed__SWIG_0(long jarg1, torrent_info jarg1_, String jarg2, String jarg3, long jarg4, string_string_pair_vector jarg4_); + + public final static native void torrent_info_add_http_seed__SWIG_1(long jarg1, torrent_info jarg1_, String jarg2, String jarg3); + + public final static native void torrent_info_add_http_seed__SWIG_2(long jarg1, torrent_info jarg1_, String jarg2); + + public final static native long torrent_info_web_seeds(long jarg1, torrent_info jarg1_); + + public final static native void torrent_info_set_web_seeds(long jarg1, torrent_info jarg1_, long jarg2, web_seed_entry_vector jarg2_); + + public final static native long torrent_info_total_size(long jarg1, torrent_info jarg1_); + + public final static native int torrent_info_piece_length(long jarg1, torrent_info jarg1_); + + public final static native int torrent_info_num_pieces(long jarg1, torrent_info jarg1_); + + public final static native int torrent_info_last_piece(long jarg1, torrent_info jarg1_); + + public final static native int torrent_info_end_piece(long jarg1, torrent_info jarg1_); + + public final static native long torrent_info_info_hash(long jarg1, torrent_info jarg1_); + + public final static native int torrent_info_num_files(long jarg1, torrent_info jarg1_); + + public final static native long torrent_info_map_block(long jarg1, torrent_info jarg1_, int jarg2, long jarg3, int jarg4); + + public final static native long torrent_info_map_file(long jarg1, torrent_info jarg1_, int jarg2, long jarg3, int jarg4); + + public final static native long torrent_info_ssl_cert(long jarg1, torrent_info jarg1_); + + public final static native boolean torrent_info_is_valid(long jarg1, torrent_info jarg1_); + + public final static native boolean torrent_info_priv(long jarg1, torrent_info jarg1_); + + public final static native boolean torrent_info_is_i2p(long jarg1, torrent_info jarg1_); + + public final static native int torrent_info_piece_size(long jarg1, torrent_info jarg1_, int jarg2); + + public final static native long torrent_info_hash_for_piece(long jarg1, torrent_info jarg1_, int jarg2); + + public final static native boolean torrent_info_is_loaded(long jarg1, torrent_info jarg1_); + + public final static native long torrent_info_merkle_tree(long jarg1, torrent_info jarg1_); + + public final static native void torrent_info_set_merkle_tree(long jarg1, torrent_info jarg1_, long jarg2, sha1_hash_vector jarg2_); + + public final static native String torrent_info_name(long jarg1, torrent_info jarg1_); + + public final static native long torrent_info_creation_date(long jarg1, torrent_info jarg1_); + + public final static native String torrent_info_creator(long jarg1, torrent_info jarg1_); + + public final static native String torrent_info_comment(long jarg1, torrent_info jarg1_); + + public final static native long torrent_info_nodes(long jarg1, torrent_info jarg1_); + + public final static native void torrent_info_add_node(long jarg1, torrent_info jarg1_, long jarg2, string_int_pair jarg2_); + + public final static native long torrent_info_info(long jarg1, torrent_info jarg1_, String jarg2); + + public final static native int torrent_info_metadata_size(long jarg1, torrent_info jarg1_); + + public final static native boolean torrent_info_is_merkle_torrent(long jarg1, torrent_info jarg1_); + + public final static native long new_torrent_info__SWIG_4(long jarg1, int jarg2, long jarg3, error_code jarg3_); + + public final static native long pex_encryption_get(); + + public final static native long pex_seed_get(); + + public final static native long pex_utp_get(); + + public final static native long pex_holepunch_get(); + + public final static native long new_torrent_status__SWIG_0(); + + public final static native void delete_torrent_status(long jarg1); + + public final static native long new_torrent_status__SWIG_1(long jarg1, torrent_status jarg1_); + + public final static native boolean torrent_status_op_eq(long jarg1, torrent_status jarg1_, long jarg2, torrent_status jarg2_); + + public final static native void torrent_status_handle_set(long jarg1, torrent_status jarg1_, long jarg2, torrent_handle jarg2_); + + public final static native long torrent_status_handle_get(long jarg1, torrent_status jarg1_); + + public final static native int torrent_status_checking_files_get(); + + public final static native int torrent_status_checking_resume_data_get(); + + public final static native void torrent_status_errc_set(long jarg1, torrent_status jarg1_, long jarg2, error_code jarg2_); + + public final static native long torrent_status_errc_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_error_file_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_error_file_get(long jarg1, torrent_status jarg1_); + + public final static native int torrent_status_error_file_none_get(); + + public final static native int torrent_status_error_file_ssl_ctx_get(); + + public final static native int torrent_status_error_file_metadata_get(); + + public final static native int torrent_status_error_file_exception_get(); + + public final static native int torrent_status_error_file_partfile_get(); + + public final static native void torrent_status_save_path_set(long jarg1, torrent_status jarg1_, String jarg2); + + public final static native String torrent_status_save_path_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_name_set(long jarg1, torrent_status jarg1_, String jarg2); + + public final static native String torrent_status_name_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_current_tracker_set(long jarg1, torrent_status jarg1_, String jarg2); + + public final static native String torrent_status_current_tracker_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_total_download_set(long jarg1, torrent_status jarg1_, long jarg2); + + public final static native long torrent_status_total_download_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_total_upload_set(long jarg1, torrent_status jarg1_, long jarg2); + + public final static native long torrent_status_total_upload_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_total_payload_download_set(long jarg1, torrent_status jarg1_, long jarg2); + + public final static native long torrent_status_total_payload_download_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_total_payload_upload_set(long jarg1, torrent_status jarg1_, long jarg2); + + public final static native long torrent_status_total_payload_upload_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_total_failed_bytes_set(long jarg1, torrent_status jarg1_, long jarg2); + + public final static native long torrent_status_total_failed_bytes_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_total_redundant_bytes_set(long jarg1, torrent_status jarg1_, long jarg2); + + public final static native long torrent_status_total_redundant_bytes_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_pieces_set(long jarg1, torrent_status jarg1_, long jarg2, piece_index_bitfield jarg2_); + + public final static native long torrent_status_pieces_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_verified_pieces_set(long jarg1, torrent_status jarg1_, long jarg2, piece_index_bitfield jarg2_); + + public final static native long torrent_status_verified_pieces_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_total_done_set(long jarg1, torrent_status jarg1_, long jarg2); + + public final static native long torrent_status_total_done_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_total_set(long jarg1, torrent_status jarg1_, long jarg2); + + public final static native long torrent_status_total_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_total_wanted_done_set(long jarg1, torrent_status jarg1_, long jarg2); + + public final static native long torrent_status_total_wanted_done_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_total_wanted_set(long jarg1, torrent_status jarg1_, long jarg2); + + public final static native long torrent_status_total_wanted_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_all_time_upload_set(long jarg1, torrent_status jarg1_, long jarg2); + + public final static native long torrent_status_all_time_upload_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_all_time_download_set(long jarg1, torrent_status jarg1_, long jarg2); + + public final static native long torrent_status_all_time_download_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_added_time_set(long jarg1, torrent_status jarg1_, long jarg2); + + public final static native long torrent_status_added_time_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_completed_time_set(long jarg1, torrent_status jarg1_, long jarg2); + + public final static native long torrent_status_completed_time_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_last_seen_complete_set(long jarg1, torrent_status jarg1_, long jarg2); + + public final static native long torrent_status_last_seen_complete_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_storage_mode_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_storage_mode_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_progress_set(long jarg1, torrent_status jarg1_, float jarg2); + + public final static native float torrent_status_progress_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_progress_ppm_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_progress_ppm_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_download_rate_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_download_rate_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_upload_rate_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_upload_rate_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_download_payload_rate_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_download_payload_rate_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_upload_payload_rate_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_upload_payload_rate_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_num_seeds_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_num_seeds_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_num_peers_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_num_peers_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_num_complete_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_num_complete_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_num_incomplete_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_num_incomplete_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_list_seeds_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_list_seeds_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_list_peers_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_list_peers_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_connect_candidates_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_connect_candidates_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_num_pieces_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_num_pieces_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_distributed_full_copies_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_distributed_full_copies_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_distributed_fraction_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_distributed_fraction_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_distributed_copies_set(long jarg1, torrent_status jarg1_, float jarg2); + + public final static native float torrent_status_distributed_copies_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_block_size_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_block_size_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_num_uploads_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_num_uploads_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_num_connections_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_num_connections_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_uploads_limit_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_uploads_limit_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_connections_limit_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_connections_limit_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_up_bandwidth_queue_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_up_bandwidth_queue_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_down_bandwidth_queue_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_down_bandwidth_queue_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_seed_rank_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_seed_rank_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_state_set(long jarg1, torrent_status jarg1_, int jarg2); + + public final static native int torrent_status_state_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_need_save_resume_set(long jarg1, torrent_status jarg1_, boolean jarg2); + + public final static native boolean torrent_status_need_save_resume_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_is_seeding_set(long jarg1, torrent_status jarg1_, boolean jarg2); + + public final static native boolean torrent_status_is_seeding_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_is_finished_set(long jarg1, torrent_status jarg1_, boolean jarg2); + + public final static native boolean torrent_status_is_finished_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_has_metadata_set(long jarg1, torrent_status jarg1_, boolean jarg2); + + public final static native boolean torrent_status_has_metadata_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_has_incoming_set(long jarg1, torrent_status jarg1_, boolean jarg2); + + public final static native boolean torrent_status_has_incoming_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_moving_storage_set(long jarg1, torrent_status jarg1_, boolean jarg2); + + public final static native boolean torrent_status_moving_storage_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_announcing_to_trackers_set(long jarg1, torrent_status jarg1_, boolean jarg2); + + public final static native boolean torrent_status_announcing_to_trackers_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_announcing_to_lsd_set(long jarg1, torrent_status jarg1_, boolean jarg2); + + public final static native boolean torrent_status_announcing_to_lsd_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_announcing_to_dht_set(long jarg1, torrent_status jarg1_, boolean jarg2); + + public final static native boolean torrent_status_announcing_to_dht_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_info_hash_set(long jarg1, torrent_status jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long torrent_status_info_hash_get(long jarg1, torrent_status jarg1_); + + public final static native void torrent_status_flags_set(long jarg1, torrent_status jarg1_, long jarg2, torrent_flags_t jarg2_); + + public final static native long torrent_status_flags_get(long jarg1, torrent_status jarg1_); + + public final static native long torrent_status_torrent_file_ptr(long jarg1, torrent_status jarg1_); + + public final static native long torrent_status_get_next_announce(long jarg1, torrent_status jarg1_); + + public final static native long torrent_status_get_last_upload(long jarg1, torrent_status jarg1_); + + public final static native long torrent_status_get_last_download(long jarg1, torrent_status jarg1_); + + public final static native long torrent_status_get_active_duration(long jarg1, torrent_status jarg1_); + + public final static native long torrent_status_get_finished_duration(long jarg1, torrent_status jarg1_); + + public final static native long torrent_status_get_seeding_duration(long jarg1, torrent_status jarg1_); + + public final static native int torrent_status_get_queue_position(long jarg1, torrent_status jarg1_); + + public final static native long block_info_peer(long jarg1, block_info jarg1_); + + public final static native void block_info_bytes_progress_set(long jarg1, block_info jarg1_, long jarg2); + + public final static native long block_info_bytes_progress_get(long jarg1, block_info jarg1_); + + public final static native void block_info_block_size_set(long jarg1, block_info jarg1_, long jarg2); + + public final static native long block_info_block_size_get(long jarg1, block_info jarg1_); + + public final static native void block_info_state_set(long jarg1, block_info jarg1_, long jarg2); + + public final static native long block_info_state_get(long jarg1, block_info jarg1_); + + public final static native void block_info_num_peers_set(long jarg1, block_info jarg1_, long jarg2); + + public final static native long block_info_num_peers_get(long jarg1, block_info jarg1_); + + public final static native long new_block_info(); + + public final static native void delete_block_info(long jarg1); + + public final static native void partial_piece_info_piece_index_set(long jarg1, partial_piece_info jarg1_, int jarg2); + + public final static native int partial_piece_info_piece_index_get(long jarg1, partial_piece_info jarg1_); + + public final static native void partial_piece_info_blocks_in_piece_set(long jarg1, partial_piece_info jarg1_, int jarg2); + + public final static native int partial_piece_info_blocks_in_piece_get(long jarg1, partial_piece_info jarg1_); + + public final static native void partial_piece_info_finished_set(long jarg1, partial_piece_info jarg1_, int jarg2); + + public final static native int partial_piece_info_finished_get(long jarg1, partial_piece_info jarg1_); + + public final static native void partial_piece_info_writing_set(long jarg1, partial_piece_info jarg1_, int jarg2); + + public final static native int partial_piece_info_writing_get(long jarg1, partial_piece_info jarg1_); + + public final static native void partial_piece_info_requested_set(long jarg1, partial_piece_info jarg1_, int jarg2); + + public final static native int partial_piece_info_requested_get(long jarg1, partial_piece_info jarg1_); + + public final static native long new_partial_piece_info(); + + public final static native void delete_partial_piece_info(long jarg1); + + public final static native long torrent_handle_overwrite_existing_get(); + + public final static native void torrent_handle_read_piece(long jarg1, torrent_handle jarg1_, int jarg2); + + public final static native boolean torrent_handle_have_piece(long jarg1, torrent_handle jarg1_, int jarg2); + + public final static native void torrent_handle_get_peer_info(long jarg1, torrent_handle jarg1_, long jarg2, peer_info_vector jarg2_); + + public final static native long torrent_handle_query_distributed_copies_get(); + + public final static native long torrent_handle_query_accurate_download_counters_get(); + + public final static native long torrent_handle_query_last_seen_complete_get(); + + public final static native long torrent_handle_query_pieces_get(); + + public final static native long torrent_handle_query_verified_pieces_get(); + + public final static native long torrent_handle_query_torrent_file_get(); + + public final static native long torrent_handle_query_name_get(); + + public final static native long torrent_handle_query_save_path_get(); + + public final static native long torrent_handle_status__SWIG_0(long jarg1, torrent_handle jarg1_, long jarg2, status_flags_t jarg2_); + + public final static native long torrent_handle_status__SWIG_1(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_get_download_queue(long jarg1, torrent_handle jarg1_, long jarg2, partial_piece_info_vector jarg2_); + + public final static native long torrent_handle_alert_when_available_get(); + + public final static native void torrent_handle_set_piece_deadline__SWIG_0(long jarg1, torrent_handle jarg1_, int jarg2, int jarg3, long jarg4, deadline_flags_t jarg4_); + + public final static native void torrent_handle_set_piece_deadline__SWIG_1(long jarg1, torrent_handle jarg1_, int jarg2, int jarg3); + + public final static native void torrent_handle_reset_piece_deadline(long jarg1, torrent_handle jarg1_, int jarg2); + + public final static native void torrent_handle_clear_piece_deadlines(long jarg1, torrent_handle jarg1_); + + public final static native int torrent_handle_piece_granularity_get(); + + public final static native void torrent_handle_file_progress__SWIG_0(long jarg1, torrent_handle jarg1_, long jarg2, int64_vector jarg2_, int jarg3); + + public final static native void torrent_handle_file_progress__SWIG_1(long jarg1, torrent_handle jarg1_, long jarg2, int64_vector jarg2_); + + public final static native void torrent_handle_clear_error(long jarg1, torrent_handle jarg1_); + + public final static native long torrent_handle_trackers(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_replace_trackers(long jarg1, torrent_handle jarg1_, long jarg2, announce_entry_vector jarg2_); + + public final static native void torrent_handle_add_tracker(long jarg1, torrent_handle jarg1_, long jarg2, announce_entry jarg2_); + + public final static native void torrent_handle_add_url_seed(long jarg1, torrent_handle jarg1_, String jarg2); + + public final static native void torrent_handle_remove_url_seed(long jarg1, torrent_handle jarg1_, String jarg2); + + public final static native void torrent_handle_add_http_seed(long jarg1, torrent_handle jarg1_, String jarg2); + + public final static native void torrent_handle_remove_http_seed(long jarg1, torrent_handle jarg1_, String jarg2); + + public final static native boolean torrent_handle_is_valid(long jarg1, torrent_handle jarg1_); + + public final static native long torrent_handle_graceful_pause_get(); + + public final static native long torrent_handle_clear_disk_cache_get(); + + public final static native void torrent_handle_pause__SWIG_0(long jarg1, torrent_handle jarg1_, long jarg2, pause_flags_t jarg2_); + + public final static native void torrent_handle_pause__SWIG_1(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_resume(long jarg1, torrent_handle jarg1_); + + public final static native long torrent_handle_flags(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_set_flags__SWIG_0(long jarg1, torrent_handle jarg1_, long jarg2, torrent_flags_t jarg2_, long jarg3, torrent_flags_t jarg3_); + + public final static native void torrent_handle_set_flags__SWIG_1(long jarg1, torrent_handle jarg1_, long jarg2, torrent_flags_t jarg2_); + + public final static native void torrent_handle_unset_flags(long jarg1, torrent_handle jarg1_, long jarg2, torrent_flags_t jarg2_); + + public final static native void torrent_handle_flush_cache(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_force_recheck(long jarg1, torrent_handle jarg1_); + + public final static native long torrent_handle_flush_disk_cache_get(); + + public final static native long torrent_handle_save_info_dict_get(); + + public final static native long torrent_handle_only_if_modified_get(); + + public final static native void torrent_handle_save_resume_data__SWIG_0(long jarg1, torrent_handle jarg1_, long jarg2, resume_data_flags_t jarg2_); + + public final static native void torrent_handle_save_resume_data__SWIG_1(long jarg1, torrent_handle jarg1_); + + public final static native boolean torrent_handle_need_save_resume_data(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_queue_position_up(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_queue_position_down(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_queue_position_top(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_queue_position_bottom(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_set_ssl_certificate__SWIG_0(long jarg1, torrent_handle jarg1_, String jarg2, String jarg3, String jarg4, String jarg5); + + public final static native void torrent_handle_set_ssl_certificate__SWIG_1(long jarg1, torrent_handle jarg1_, String jarg2, String jarg3, String jarg4); + + public final static native void torrent_handle_piece_availability(long jarg1, torrent_handle jarg1_, long jarg2, int_vector jarg2_); + + public final static native long torrent_handle_ignore_min_interval_get(); + + public final static native void torrent_handle_force_reannounce__SWIG_0(long jarg1, torrent_handle jarg1_, int jarg2, int jarg3, long jarg4, reannounce_flags_t jarg4_); + + public final static native void torrent_handle_force_reannounce__SWIG_1(long jarg1, torrent_handle jarg1_, int jarg2, int jarg3); + + public final static native void torrent_handle_force_reannounce__SWIG_2(long jarg1, torrent_handle jarg1_, int jarg2); + + public final static native void torrent_handle_force_reannounce__SWIG_3(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_force_dht_announce(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_scrape_tracker__SWIG_0(long jarg1, torrent_handle jarg1_, int jarg2); + + public final static native void torrent_handle_scrape_tracker__SWIG_1(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_set_upload_limit(long jarg1, torrent_handle jarg1_, int jarg2); + + public final static native int torrent_handle_upload_limit(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_set_download_limit(long jarg1, torrent_handle jarg1_, int jarg2); + + public final static native int torrent_handle_download_limit(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_connect_peer__SWIG_0(long jarg1, torrent_handle jarg1_, long jarg2, tcp_endpoint jarg2_, long jarg3, peer_source_flags_t jarg3_, long jarg4, pex_flags_t jarg4_); + + public final static native void torrent_handle_connect_peer__SWIG_1(long jarg1, torrent_handle jarg1_, long jarg2, tcp_endpoint jarg2_, long jarg3, peer_source_flags_t jarg3_); + + public final static native void torrent_handle_connect_peer__SWIG_2(long jarg1, torrent_handle jarg1_, long jarg2, tcp_endpoint jarg2_); + + public final static native void torrent_handle_clear_peers(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_set_max_uploads(long jarg1, torrent_handle jarg1_, int jarg2); + + public final static native int torrent_handle_max_uploads(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_set_max_connections(long jarg1, torrent_handle jarg1_, int jarg2); + + public final static native int torrent_handle_max_connections(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_move_storage__SWIG_0(long jarg1, torrent_handle jarg1_, String jarg2, int jarg3); + + public final static native void torrent_handle_move_storage__SWIG_1(long jarg1, torrent_handle jarg1_, String jarg2); + + public final static native void torrent_handle_rename_file(long jarg1, torrent_handle jarg1_, int jarg2, String jarg3); + + public final static native long torrent_handle_info_hash(long jarg1, torrent_handle jarg1_); + + public final static native boolean torrent_handle_op_eq(long jarg1, torrent_handle jarg1_, long jarg2, torrent_handle jarg2_); + + public final static native boolean torrent_handle_op_ne(long jarg1, torrent_handle jarg1_, long jarg2, torrent_handle jarg2_); + + public final static native boolean torrent_handle_op_lt(long jarg1, torrent_handle jarg1_, long jarg2, torrent_handle jarg2_); + + public final static native long torrent_handle_id(long jarg1, torrent_handle jarg1_); + + public final static native boolean torrent_handle_in_session(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_add_piece_bytes__SWIG_0(long jarg1, torrent_handle jarg1_, int jarg2, long jarg3, byte_vector jarg3_, long jarg4, add_piece_flags_t jarg4_); + + public final static native void torrent_handle_add_piece_bytes__SWIG_1(long jarg1, torrent_handle jarg1_, int jarg2, long jarg3, byte_vector jarg3_); + + public final static native long torrent_handle_torrent_file_ptr(long jarg1, torrent_handle jarg1_); + + public final static native long torrent_handle_get_url_seeds(long jarg1, torrent_handle jarg1_); + + public final static native long torrent_handle_get_http_seeds(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_set_ssl_certificate_buffer2(long jarg1, torrent_handle jarg1_, long jarg2, byte_vector jarg2_, long jarg3, byte_vector jarg3_, long jarg4, byte_vector jarg4_); + + public final static native int torrent_handle_queue_position2(long jarg1, torrent_handle jarg1_); + + public final static native void torrent_handle_queue_position_set2(long jarg1, torrent_handle jarg1_, int jarg2); + + public final static native int torrent_handle_piece_priority2__SWIG_0(long jarg1, torrent_handle jarg1_, int jarg2); + + public final static native void torrent_handle_piece_priority2__SWIG_1(long jarg1, torrent_handle jarg1_, int jarg2, int jarg3); + + public final static native void torrent_handle_prioritize_pieces2__SWIG_0(long jarg1, torrent_handle jarg1_, long jarg2, int_vector jarg2_); + + public final static native void torrent_handle_prioritize_pieces2__SWIG_1(long jarg1, torrent_handle jarg1_, long jarg2, piece_index_int_pair_vector jarg2_); + + public final static native long torrent_handle_get_piece_priorities2(long jarg1, torrent_handle jarg1_); + + public final static native int torrent_handle_file_priority2__SWIG_0(long jarg1, torrent_handle jarg1_, int jarg2); + + public final static native void torrent_handle_file_priority2__SWIG_1(long jarg1, torrent_handle jarg1_, int jarg2, int jarg3); + + public final static native void torrent_handle_prioritize_files2(long jarg1, torrent_handle jarg1_, long jarg2, int_vector jarg2_); + + public final static native long torrent_handle_get_file_priorities2(long jarg1, torrent_handle jarg1_); + + public final static native void delete_torrent_handle(long jarg1); + + public final static native void add_torrent_params_version_set(long jarg1, add_torrent_params jarg1_, int jarg2); + + public final static native int add_torrent_params_version_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_name_set(long jarg1, add_torrent_params jarg1_, String jarg2); + + public final static native String add_torrent_params_name_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_save_path_set(long jarg1, add_torrent_params jarg1_, String jarg2); + + public final static native String add_torrent_params_save_path_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_storage_mode_set(long jarg1, add_torrent_params jarg1_, int jarg2); + + public final static native int add_torrent_params_storage_mode_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_trackerid_set(long jarg1, add_torrent_params jarg1_, String jarg2); + + public final static native String add_torrent_params_trackerid_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_flags_set(long jarg1, add_torrent_params jarg1_, long jarg2, torrent_flags_t jarg2_); + + public final static native long add_torrent_params_flags_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_info_hash_set(long jarg1, add_torrent_params jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long add_torrent_params_info_hash_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_max_uploads_set(long jarg1, add_torrent_params jarg1_, int jarg2); + + public final static native int add_torrent_params_max_uploads_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_max_connections_set(long jarg1, add_torrent_params jarg1_, int jarg2); + + public final static native int add_torrent_params_max_connections_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_upload_limit_set(long jarg1, add_torrent_params jarg1_, int jarg2); + + public final static native int add_torrent_params_upload_limit_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_download_limit_set(long jarg1, add_torrent_params jarg1_, int jarg2); + + public final static native int add_torrent_params_download_limit_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_total_uploaded_set(long jarg1, add_torrent_params jarg1_, long jarg2); + + public final static native long add_torrent_params_total_uploaded_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_total_downloaded_set(long jarg1, add_torrent_params jarg1_, long jarg2); + + public final static native long add_torrent_params_total_downloaded_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_active_time_set(long jarg1, add_torrent_params jarg1_, int jarg2); + + public final static native int add_torrent_params_active_time_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_finished_time_set(long jarg1, add_torrent_params jarg1_, int jarg2); + + public final static native int add_torrent_params_finished_time_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_seeding_time_set(long jarg1, add_torrent_params jarg1_, int jarg2); + + public final static native int add_torrent_params_seeding_time_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_added_time_set(long jarg1, add_torrent_params jarg1_, long jarg2); + + public final static native long add_torrent_params_added_time_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_completed_time_set(long jarg1, add_torrent_params jarg1_, long jarg2); + + public final static native long add_torrent_params_completed_time_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_last_seen_complete_set(long jarg1, add_torrent_params jarg1_, long jarg2); + + public final static native long add_torrent_params_last_seen_complete_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_num_complete_set(long jarg1, add_torrent_params jarg1_, int jarg2); + + public final static native int add_torrent_params_num_complete_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_num_incomplete_set(long jarg1, add_torrent_params jarg1_, int jarg2); + + public final static native int add_torrent_params_num_incomplete_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_num_downloaded_set(long jarg1, add_torrent_params jarg1_, int jarg2); + + public final static native int add_torrent_params_num_downloaded_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_have_pieces_set(long jarg1, add_torrent_params jarg1_, long jarg2, piece_index_bitfield jarg2_); + + public final static native long add_torrent_params_have_pieces_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_verified_pieces_set(long jarg1, add_torrent_params jarg1_, long jarg2, piece_index_bitfield jarg2_); + + public final static native long add_torrent_params_verified_pieces_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_last_download_set(long jarg1, add_torrent_params jarg1_, long jarg2); + + public final static native long add_torrent_params_last_download_get(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_last_upload_set(long jarg1, add_torrent_params jarg1_, long jarg2); + + public final static native long add_torrent_params_last_upload_get(long jarg1, add_torrent_params jarg1_); + + public final static native long add_torrent_params_ti_ptr(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_set_ti(long jarg1, add_torrent_params jarg1_, long jarg2, torrent_info jarg2_); + + public final static native void add_torrent_params_set_renamed_files(long jarg1, add_torrent_params jarg1_, long jarg2, file_index_string_map jarg2_); + + public final static native long add_torrent_params_get_tracker_tiers(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_set_tracker_tiers(long jarg1, add_torrent_params jarg1_, long jarg2, int_vector jarg2_); + + public final static native void add_torrent_params_set_merkle_tree(long jarg1, add_torrent_params jarg1_, long jarg2, sha1_hash_vector jarg2_); + + public final static native long add_torrent_params_get_banned_peers(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_set_banned_peers(long jarg1, add_torrent_params jarg1_, long jarg2, tcp_endpoint_vector jarg2_); + + public final static native long add_torrent_params_get_peers(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_set_peers(long jarg1, add_torrent_params jarg1_, long jarg2, tcp_endpoint_vector jarg2_); + + public final static native void add_torrent_params_set_file_priorities2(long jarg1, add_torrent_params jarg1_, long jarg2, byte_vector jarg2_); + + public final static native long add_torrent_params_get_dht_nodes(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_set_dht_nodes(long jarg1, add_torrent_params jarg1_, long jarg2, string_int_pair_vector jarg2_); + + public final static native void add_torrent_params_set_http_seeds(long jarg1, add_torrent_params jarg1_, long jarg2, string_vector jarg2_); + + public final static native long add_torrent_params_get_url_seeds(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_set_url_seeds(long jarg1, add_torrent_params jarg1_, long jarg2, string_vector jarg2_); + + public final static native long add_torrent_params_get_trackers(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_set_trackers(long jarg1, add_torrent_params jarg1_, long jarg2, string_vector jarg2_); + + public final static native void add_torrent_params_set_piece_priorities2(long jarg1, add_torrent_params jarg1_, long jarg2, byte_vector jarg2_); + + public final static native long add_torrent_params_create_instance(); + + public final static native long add_torrent_params_create_instance_disabled_storage(); + + public final static native long add_torrent_params_create_instance_zero_storage(); + + public final static native void add_torrent_params_set_default_storage(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_set_disabled_storage(long jarg1, add_torrent_params jarg1_); + + public final static native void add_torrent_params_set_zero_storage(long jarg1, add_torrent_params jarg1_); + + public final static native long add_torrent_params_read_resume_data__SWIG_0(long jarg1, bdecode_node jarg1_, long jarg2, error_code jarg2_); + + public final static native long add_torrent_params_read_resume_data__SWIG_1(long jarg1, byte_vector jarg1_, long jarg2, error_code jarg2_); + + public final static native long add_torrent_params_write_resume_data(long jarg1, add_torrent_params jarg1_); + + public final static native long add_torrent_params_write_resume_data_buf(long jarg1, add_torrent_params jarg1_); + + public final static native long add_torrent_params_parse_magnet_uri(String jarg1, long jarg2, error_code jarg2_); + + public final static native void delete_add_torrent_params(long jarg1); + + public final static native String operation_name(int jarg1); + + public final static native void stats_metric_value_index_set(long jarg1, stats_metric jarg1_, int jarg2); + + public final static native int stats_metric_value_index_get(long jarg1, stats_metric jarg1_); + + public final static native void stats_metric_type_set(long jarg1, stats_metric jarg1_, int jarg2); + + public final static native int stats_metric_type_get(long jarg1, stats_metric jarg1_); + + public final static native String stats_metric_get_name(long jarg1, stats_metric jarg1_); + + public final static native long new_stats_metric(); + + public final static native void delete_stats_metric(long jarg1); + + public final static native long session_stats_metrics(); + + public final static native int close_reason_t_none_get(); + + public final static native int close_reason_t_encryption_error_get(); + + public final static native long error_get(); + + public final static native long peer_get(); + + public final static native long port_mapping_get(); + + public final static native long storage_get(); + + public final static native long tracker_get(); + + public final static native long connect_get(); + + public final static native long status_get(); + + public final static native long ip_block_get(); + + public final static native long performance_warning_get(); + + public final static native long dht_get(); + + public final static native long stats_get(); + + public final static native long session_log_get(); + + public final static native long torrent_log_get(); + + public final static native long peer_log_get(); + + public final static native long incoming_request_get(); + + public final static native long dht_log_get(); + + public final static native long dht_operation_get(); + + public final static native long port_mapping_log_get(); + + public final static native long picker_log_get(); + + public final static native long file_progress_get(); + + public final static native long piece_progress_get(); + + public final static native long upload_get(); + + public final static native long block_progress_get(); + + public final static native long alert_error_notification_get(); + + public final static native long alert_peer_notification_get(); + + public final static native long alert_port_mapping_notification_get(); + + public final static native long alert_storage_notification_get(); + + public final static native long alert_tracker_notification_get(); + + public final static native long alert_connect_notification_get(); + + public final static native long alert_status_notification_get(); + + public final static native long alert_ip_block_notification_get(); + + public final static native long alert_performance_warning_get(); + + public final static native long alert_dht_notification_get(); + + public final static native long alert_stats_notification_get(); + + public final static native long alert_session_log_notification_get(); + + public final static native long alert_torrent_log_notification_get(); + + public final static native long alert_peer_log_notification_get(); + + public final static native long alert_incoming_request_notification_get(); + + public final static native long alert_dht_log_notification_get(); + + public final static native long alert_dht_operation_notification_get(); + + public final static native long alert_port_mapping_log_notification_get(); + + public final static native long alert_picker_log_notification_get(); + + public final static native long alert_file_progress_notification_get(); + + public final static native long alert_piece_progress_notification_get(); + + public final static native long alert_upload_notification_get(); + + public final static native long alert_block_progress_notification_get(); + + public final static native long alert_all_categories_get(); + + public final static native void delete_alert(long jarg1); + + public final static native int alert_type(long jarg1, alert jarg1_); + + public final static native String alert_what(long jarg1, alert jarg1_); + + public final static native String alert_message(long jarg1, alert jarg1_); + + public final static native long alert_category(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_torrent_removed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_read_piece_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_file_completed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_file_renamed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_file_rename_failed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_performance_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_state_changed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_tracker_error_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_tracker_warning_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_scrape_reply_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_scrape_failed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_tracker_reply_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_dht_reply_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_tracker_announce_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_hash_failed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_peer_ban_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_peer_unsnubbed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_peer_snubbed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_peer_error_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_peer_connect_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_peer_disconnected_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_invalid_request_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_torrent_finished_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_piece_finished_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_request_dropped_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_block_timeout_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_block_finished_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_block_downloading_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_unwanted_block_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_storage_moved_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_storage_moved_failed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_torrent_deleted_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_torrent_delete_failed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_save_resume_data_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_save_resume_data_failed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_torrent_paused_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_torrent_resumed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_torrent_checked_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_url_seed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_file_error_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_metadata_failed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_metadata_received_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_udp_error_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_external_ip_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_listen_failed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_listen_succeeded_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_portmap_error_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_portmap_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_portmap_log_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_fastresume_rejected_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_peer_blocked_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_dht_announce_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_dht_get_peers_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_stats_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_cache_flushed_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_lsd_peer_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_trackerid_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_dht_bootstrap_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_torrent_error_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_torrent_need_cert_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_incoming_connection_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_add_torrent_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_state_update_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_session_stats_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_dht_error_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_dht_immutable_item_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_dht_mutable_item_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_dht_put_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_i2p_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_dht_outgoing_get_peers_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_log_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_torrent_log_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_peer_log_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_lsd_error_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_dht_stats_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_incoming_request_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_dht_log_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_dht_pkt_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_dht_get_peers_reply_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_dht_direct_response_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_picker_log_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_session_error_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_dht_live_nodes_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_session_stats_header_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_dht_sample_infohashes_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_block_uploaded_alert(long jarg1, alert jarg1_); + + public final static native long alert_cast_to_alerts_dropped_alert(long jarg1, alert jarg1_); + + public final static native long alert_get_timestamp(long jarg1, alert jarg1_); + + public final static native String alert_name(int jarg1); + + public final static native int num_alert_types_get(); + + public final static native int alert_priority_normal_get(); + + public final static native void dht_routing_bucket_num_nodes_set(long jarg1, dht_routing_bucket jarg1_, int jarg2); + + public final static native int dht_routing_bucket_num_nodes_get(long jarg1, dht_routing_bucket jarg1_); + + public final static native void dht_routing_bucket_num_replacements_set(long jarg1, dht_routing_bucket jarg1_, int jarg2); + + public final static native int dht_routing_bucket_num_replacements_get(long jarg1, dht_routing_bucket jarg1_); + + public final static native void dht_routing_bucket_last_active_set(long jarg1, dht_routing_bucket jarg1_, int jarg2); + + public final static native int dht_routing_bucket_last_active_get(long jarg1, dht_routing_bucket jarg1_); + + public final static native long new_dht_routing_bucket(); + + public final static native void delete_dht_routing_bucket(long jarg1); + + public final static native String torrent_alert_message(long jarg1, torrent_alert jarg1_); + + public final static native void torrent_alert_handle_set(long jarg1, torrent_alert jarg1_, long jarg2, torrent_handle jarg2_); + + public final static native long torrent_alert_handle_get(long jarg1, torrent_alert jarg1_); + + public final static native String torrent_alert_torrent_name(long jarg1, torrent_alert jarg1_); + + public final static native void delete_torrent_alert(long jarg1); + + public final static native String peer_alert_message(long jarg1, peer_alert jarg1_); + + public final static native void peer_alert_pid_set(long jarg1, peer_alert jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long peer_alert_pid_get(long jarg1, peer_alert jarg1_); + + public final static native long peer_alert_get_endpoint(long jarg1, peer_alert jarg1_); + + public final static native void delete_peer_alert(long jarg1); + + public final static native String tracker_alert_message(long jarg1, tracker_alert jarg1_); + + public final static native String tracker_alert_tracker_url(long jarg1, tracker_alert jarg1_); + + public final static native long tracker_alert_get_local_endpoint(long jarg1, tracker_alert jarg1_); + + public final static native void delete_tracker_alert(long jarg1); + + public final static native int torrent_removed_alert_priority_get(); + + public final static native int torrent_removed_alert_alert_type_get(); + + public final static native int torrent_removed_alert_type(long jarg1, torrent_removed_alert jarg1_); + + public final static native long torrent_removed_alert_category(long jarg1, torrent_removed_alert jarg1_); + + public final static native String torrent_removed_alert_what(long jarg1, torrent_removed_alert jarg1_); + + public final static native long torrent_removed_alert_static_category_get(); + + public final static native String torrent_removed_alert_message(long jarg1, torrent_removed_alert jarg1_); + + public final static native void torrent_removed_alert_info_hash_set(long jarg1, torrent_removed_alert jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long torrent_removed_alert_info_hash_get(long jarg1, torrent_removed_alert jarg1_); + + public final static native void delete_torrent_removed_alert(long jarg1); + + public final static native int read_piece_alert_priority_get(); + + public final static native int read_piece_alert_alert_type_get(); + + public final static native int read_piece_alert_type(long jarg1, read_piece_alert jarg1_); + + public final static native long read_piece_alert_category(long jarg1, read_piece_alert jarg1_); + + public final static native String read_piece_alert_what(long jarg1, read_piece_alert jarg1_); + + public final static native long read_piece_alert_static_category_get(); + + public final static native String read_piece_alert_message(long jarg1, read_piece_alert jarg1_); + + public final static native long read_piece_alert_error_get(long jarg1, read_piece_alert jarg1_); + + public final static native int read_piece_alert_piece_get(long jarg1, read_piece_alert jarg1_); + + public final static native int read_piece_alert_size_get(long jarg1, read_piece_alert jarg1_); + + public final static native long read_piece_alert_buffer_ptr(long jarg1, read_piece_alert jarg1_); + + public final static native void delete_read_piece_alert(long jarg1); + + public final static native int file_completed_alert_priority_get(); + + public final static native int file_completed_alert_alert_type_get(); + + public final static native int file_completed_alert_type(long jarg1, file_completed_alert jarg1_); + + public final static native long file_completed_alert_category(long jarg1, file_completed_alert jarg1_); + + public final static native String file_completed_alert_what(long jarg1, file_completed_alert jarg1_); + + public final static native long file_completed_alert_static_category_get(); + + public final static native String file_completed_alert_message(long jarg1, file_completed_alert jarg1_); + + public final static native int file_completed_alert_index_get(long jarg1, file_completed_alert jarg1_); + + public final static native void delete_file_completed_alert(long jarg1); + + public final static native int file_renamed_alert_priority_get(); + + public final static native int file_renamed_alert_alert_type_get(); + + public final static native int file_renamed_alert_type(long jarg1, file_renamed_alert jarg1_); + + public final static native long file_renamed_alert_category(long jarg1, file_renamed_alert jarg1_); + + public final static native String file_renamed_alert_what(long jarg1, file_renamed_alert jarg1_); + + public final static native long file_renamed_alert_static_category_get(); + + public final static native String file_renamed_alert_message(long jarg1, file_renamed_alert jarg1_); + + public final static native String file_renamed_alert_new_name(long jarg1, file_renamed_alert jarg1_); + + public final static native int file_renamed_alert_index_get(long jarg1, file_renamed_alert jarg1_); + + public final static native void delete_file_renamed_alert(long jarg1); + + public final static native int file_rename_failed_alert_priority_get(); + + public final static native int file_rename_failed_alert_alert_type_get(); + + public final static native int file_rename_failed_alert_type(long jarg1, file_rename_failed_alert jarg1_); + + public final static native long file_rename_failed_alert_category(long jarg1, file_rename_failed_alert jarg1_); + + public final static native String file_rename_failed_alert_what(long jarg1, file_rename_failed_alert jarg1_); + + public final static native long file_rename_failed_alert_static_category_get(); + + public final static native String file_rename_failed_alert_message(long jarg1, file_rename_failed_alert jarg1_); + + public final static native int file_rename_failed_alert_index_get(long jarg1, file_rename_failed_alert jarg1_); + + public final static native long file_rename_failed_alert_error_get(long jarg1, file_rename_failed_alert jarg1_); + + public final static native void delete_file_rename_failed_alert(long jarg1); + + public final static native int performance_alert_too_few_outgoing_ports_get(); + + public final static native int performance_alert_priority_get(); + + public final static native int performance_alert_alert_type_get(); + + public final static native int performance_alert_type(long jarg1, performance_alert jarg1_); + + public final static native long performance_alert_category(long jarg1, performance_alert jarg1_); + + public final static native String performance_alert_what(long jarg1, performance_alert jarg1_); + + public final static native long performance_alert_static_category_get(); + + public final static native String performance_alert_message(long jarg1, performance_alert jarg1_); + + public final static native int performance_alert_warning_code_get(long jarg1, performance_alert jarg1_); + + public final static native void delete_performance_alert(long jarg1); + + public final static native int state_changed_alert_priority_get(); + + public final static native int state_changed_alert_alert_type_get(); + + public final static native int state_changed_alert_type(long jarg1, state_changed_alert jarg1_); + + public final static native long state_changed_alert_category(long jarg1, state_changed_alert jarg1_); + + public final static native String state_changed_alert_what(long jarg1, state_changed_alert jarg1_); + + public final static native long state_changed_alert_static_category_get(); + + public final static native String state_changed_alert_message(long jarg1, state_changed_alert jarg1_); + + public final static native int state_changed_alert_state_get(long jarg1, state_changed_alert jarg1_); + + public final static native int state_changed_alert_prev_state_get(long jarg1, state_changed_alert jarg1_); + + public final static native void delete_state_changed_alert(long jarg1); + + public final static native int tracker_error_alert_priority_get(); + + public final static native int tracker_error_alert_alert_type_get(); + + public final static native int tracker_error_alert_type(long jarg1, tracker_error_alert jarg1_); + + public final static native long tracker_error_alert_category(long jarg1, tracker_error_alert jarg1_); + + public final static native String tracker_error_alert_what(long jarg1, tracker_error_alert jarg1_); + + public final static native long tracker_error_alert_static_category_get(); + + public final static native String tracker_error_alert_message(long jarg1, tracker_error_alert jarg1_); + + public final static native int tracker_error_alert_times_in_row_get(long jarg1, tracker_error_alert jarg1_); + + public final static native long tracker_error_alert_error_get(long jarg1, tracker_error_alert jarg1_); + + public final static native String tracker_error_alert_error_message(long jarg1, tracker_error_alert jarg1_); + + public final static native void delete_tracker_error_alert(long jarg1); + + public final static native int tracker_warning_alert_priority_get(); + + public final static native int tracker_warning_alert_alert_type_get(); + + public final static native int tracker_warning_alert_type(long jarg1, tracker_warning_alert jarg1_); + + public final static native long tracker_warning_alert_category(long jarg1, tracker_warning_alert jarg1_); + + public final static native String tracker_warning_alert_what(long jarg1, tracker_warning_alert jarg1_); + + public final static native long tracker_warning_alert_static_category_get(); + + public final static native String tracker_warning_alert_message(long jarg1, tracker_warning_alert jarg1_); + + public final static native String tracker_warning_alert_warning_message(long jarg1, tracker_warning_alert jarg1_); + + public final static native void delete_tracker_warning_alert(long jarg1); + + public final static native int scrape_reply_alert_priority_get(); + + public final static native int scrape_reply_alert_alert_type_get(); + + public final static native int scrape_reply_alert_type(long jarg1, scrape_reply_alert jarg1_); + + public final static native long scrape_reply_alert_category(long jarg1, scrape_reply_alert jarg1_); + + public final static native String scrape_reply_alert_what(long jarg1, scrape_reply_alert jarg1_); + + public final static native long scrape_reply_alert_static_category_get(); + + public final static native String scrape_reply_alert_message(long jarg1, scrape_reply_alert jarg1_); + + public final static native int scrape_reply_alert_incomplete_get(long jarg1, scrape_reply_alert jarg1_); + + public final static native int scrape_reply_alert_complete_get(long jarg1, scrape_reply_alert jarg1_); + + public final static native void delete_scrape_reply_alert(long jarg1); + + public final static native int scrape_failed_alert_priority_get(); + + public final static native int scrape_failed_alert_alert_type_get(); + + public final static native int scrape_failed_alert_type(long jarg1, scrape_failed_alert jarg1_); + + public final static native long scrape_failed_alert_category(long jarg1, scrape_failed_alert jarg1_); + + public final static native String scrape_failed_alert_what(long jarg1, scrape_failed_alert jarg1_); + + public final static native long scrape_failed_alert_static_category_get(); + + public final static native String scrape_failed_alert_message(long jarg1, scrape_failed_alert jarg1_); + + public final static native long scrape_failed_alert_error_get(long jarg1, scrape_failed_alert jarg1_); + + public final static native String scrape_failed_alert_error_message(long jarg1, scrape_failed_alert jarg1_); + + public final static native void delete_scrape_failed_alert(long jarg1); + + public final static native int tracker_reply_alert_priority_get(); + + public final static native int tracker_reply_alert_alert_type_get(); + + public final static native int tracker_reply_alert_type(long jarg1, tracker_reply_alert jarg1_); + + public final static native long tracker_reply_alert_category(long jarg1, tracker_reply_alert jarg1_); + + public final static native String tracker_reply_alert_what(long jarg1, tracker_reply_alert jarg1_); + + public final static native long tracker_reply_alert_static_category_get(); + + public final static native String tracker_reply_alert_message(long jarg1, tracker_reply_alert jarg1_); + + public final static native int tracker_reply_alert_num_peers_get(long jarg1, tracker_reply_alert jarg1_); + + public final static native void delete_tracker_reply_alert(long jarg1); + + public final static native int dht_reply_alert_priority_get(); + + public final static native int dht_reply_alert_alert_type_get(); + + public final static native int dht_reply_alert_type(long jarg1, dht_reply_alert jarg1_); + + public final static native long dht_reply_alert_category(long jarg1, dht_reply_alert jarg1_); + + public final static native String dht_reply_alert_what(long jarg1, dht_reply_alert jarg1_); + + public final static native long dht_reply_alert_static_category_get(); + + public final static native String dht_reply_alert_message(long jarg1, dht_reply_alert jarg1_); + + public final static native int dht_reply_alert_num_peers_get(long jarg1, dht_reply_alert jarg1_); + + public final static native void delete_dht_reply_alert(long jarg1); + + public final static native int tracker_announce_alert_priority_get(); + + public final static native int tracker_announce_alert_alert_type_get(); + + public final static native int tracker_announce_alert_type(long jarg1, tracker_announce_alert jarg1_); + + public final static native long tracker_announce_alert_category(long jarg1, tracker_announce_alert jarg1_); + + public final static native String tracker_announce_alert_what(long jarg1, tracker_announce_alert jarg1_); + + public final static native long tracker_announce_alert_static_category_get(); + + public final static native String tracker_announce_alert_message(long jarg1, tracker_announce_alert jarg1_); + + public final static native int tracker_announce_alert_event_get(long jarg1, tracker_announce_alert jarg1_); + + public final static native void delete_tracker_announce_alert(long jarg1); + + public final static native int hash_failed_alert_priority_get(); + + public final static native int hash_failed_alert_alert_type_get(); + + public final static native int hash_failed_alert_type(long jarg1, hash_failed_alert jarg1_); + + public final static native long hash_failed_alert_category(long jarg1, hash_failed_alert jarg1_); + + public final static native String hash_failed_alert_what(long jarg1, hash_failed_alert jarg1_); + + public final static native long hash_failed_alert_static_category_get(); + + public final static native String hash_failed_alert_message(long jarg1, hash_failed_alert jarg1_); + + public final static native int hash_failed_alert_piece_index_get(long jarg1, hash_failed_alert jarg1_); + + public final static native void delete_hash_failed_alert(long jarg1); + + public final static native int peer_ban_alert_priority_get(); + + public final static native int peer_ban_alert_alert_type_get(); + + public final static native int peer_ban_alert_type(long jarg1, peer_ban_alert jarg1_); + + public final static native long peer_ban_alert_category(long jarg1, peer_ban_alert jarg1_); + + public final static native String peer_ban_alert_what(long jarg1, peer_ban_alert jarg1_); + + public final static native long peer_ban_alert_static_category_get(); + + public final static native String peer_ban_alert_message(long jarg1, peer_ban_alert jarg1_); + + public final static native void delete_peer_ban_alert(long jarg1); + + public final static native int peer_unsnubbed_alert_priority_get(); + + public final static native int peer_unsnubbed_alert_alert_type_get(); + + public final static native int peer_unsnubbed_alert_type(long jarg1, peer_unsnubbed_alert jarg1_); + + public final static native long peer_unsnubbed_alert_category(long jarg1, peer_unsnubbed_alert jarg1_); + + public final static native String peer_unsnubbed_alert_what(long jarg1, peer_unsnubbed_alert jarg1_); + + public final static native long peer_unsnubbed_alert_static_category_get(); + + public final static native String peer_unsnubbed_alert_message(long jarg1, peer_unsnubbed_alert jarg1_); + + public final static native void delete_peer_unsnubbed_alert(long jarg1); + + public final static native int peer_snubbed_alert_priority_get(); + + public final static native int peer_snubbed_alert_alert_type_get(); + + public final static native int peer_snubbed_alert_type(long jarg1, peer_snubbed_alert jarg1_); + + public final static native long peer_snubbed_alert_category(long jarg1, peer_snubbed_alert jarg1_); + + public final static native String peer_snubbed_alert_what(long jarg1, peer_snubbed_alert jarg1_); + + public final static native long peer_snubbed_alert_static_category_get(); + + public final static native String peer_snubbed_alert_message(long jarg1, peer_snubbed_alert jarg1_); + + public final static native void delete_peer_snubbed_alert(long jarg1); + + public final static native int peer_error_alert_priority_get(); + + public final static native int peer_error_alert_alert_type_get(); + + public final static native int peer_error_alert_type(long jarg1, peer_error_alert jarg1_); + + public final static native long peer_error_alert_category(long jarg1, peer_error_alert jarg1_); + + public final static native String peer_error_alert_what(long jarg1, peer_error_alert jarg1_); + + public final static native long peer_error_alert_static_category_get(); + + public final static native String peer_error_alert_message(long jarg1, peer_error_alert jarg1_); + + public final static native void peer_error_alert_op_set(long jarg1, peer_error_alert jarg1_, int jarg2); + + public final static native int peer_error_alert_op_get(long jarg1, peer_error_alert jarg1_); + + public final static native long peer_error_alert_error_get(long jarg1, peer_error_alert jarg1_); + + public final static native void delete_peer_error_alert(long jarg1); + + public final static native int peer_connect_alert_priority_get(); + + public final static native int peer_connect_alert_alert_type_get(); + + public final static native int peer_connect_alert_type(long jarg1, peer_connect_alert jarg1_); + + public final static native long peer_connect_alert_category(long jarg1, peer_connect_alert jarg1_); + + public final static native String peer_connect_alert_what(long jarg1, peer_connect_alert jarg1_); + + public final static native long peer_connect_alert_static_category_get(); + + public final static native String peer_connect_alert_message(long jarg1, peer_connect_alert jarg1_); + + public final static native int peer_connect_alert_socket_type_get(long jarg1, peer_connect_alert jarg1_); + + public final static native void delete_peer_connect_alert(long jarg1); + + public final static native int peer_disconnected_alert_priority_get(); + + public final static native int peer_disconnected_alert_alert_type_get(); + + public final static native int peer_disconnected_alert_type(long jarg1, peer_disconnected_alert jarg1_); + + public final static native long peer_disconnected_alert_category(long jarg1, peer_disconnected_alert jarg1_); + + public final static native String peer_disconnected_alert_what(long jarg1, peer_disconnected_alert jarg1_); + + public final static native long peer_disconnected_alert_static_category_get(); + + public final static native String peer_disconnected_alert_message(long jarg1, peer_disconnected_alert jarg1_); + + public final static native int peer_disconnected_alert_socket_type_get(long jarg1, peer_disconnected_alert jarg1_); + + public final static native int peer_disconnected_alert_op_get(long jarg1, peer_disconnected_alert jarg1_); + + public final static native long peer_disconnected_alert_error_get(long jarg1, peer_disconnected_alert jarg1_); + + public final static native int peer_disconnected_alert_reason_get(long jarg1, peer_disconnected_alert jarg1_); + + public final static native void delete_peer_disconnected_alert(long jarg1); + + public final static native int invalid_request_alert_priority_get(); + + public final static native int invalid_request_alert_alert_type_get(); + + public final static native int invalid_request_alert_type(long jarg1, invalid_request_alert jarg1_); + + public final static native long invalid_request_alert_category(long jarg1, invalid_request_alert jarg1_); + + public final static native String invalid_request_alert_what(long jarg1, invalid_request_alert jarg1_); + + public final static native long invalid_request_alert_static_category_get(); + + public final static native String invalid_request_alert_message(long jarg1, invalid_request_alert jarg1_); + + public final static native long invalid_request_alert_request_get(long jarg1, invalid_request_alert jarg1_); + + public final static native boolean invalid_request_alert_we_have_get(long jarg1, invalid_request_alert jarg1_); + + public final static native boolean invalid_request_alert_peer_interested_get(long jarg1, invalid_request_alert jarg1_); + + public final static native boolean invalid_request_alert_withheld_get(long jarg1, invalid_request_alert jarg1_); + + public final static native void delete_invalid_request_alert(long jarg1); + + public final static native int torrent_finished_alert_priority_get(); + + public final static native int torrent_finished_alert_alert_type_get(); + + public final static native int torrent_finished_alert_type(long jarg1, torrent_finished_alert jarg1_); + + public final static native long torrent_finished_alert_category(long jarg1, torrent_finished_alert jarg1_); + + public final static native String torrent_finished_alert_what(long jarg1, torrent_finished_alert jarg1_); + + public final static native long torrent_finished_alert_static_category_get(); + + public final static native String torrent_finished_alert_message(long jarg1, torrent_finished_alert jarg1_); + + public final static native void delete_torrent_finished_alert(long jarg1); + + public final static native int piece_finished_alert_priority_get(); + + public final static native int piece_finished_alert_alert_type_get(); + + public final static native int piece_finished_alert_type(long jarg1, piece_finished_alert jarg1_); + + public final static native long piece_finished_alert_category(long jarg1, piece_finished_alert jarg1_); + + public final static native String piece_finished_alert_what(long jarg1, piece_finished_alert jarg1_); + + public final static native long piece_finished_alert_static_category_get(); + + public final static native String piece_finished_alert_message(long jarg1, piece_finished_alert jarg1_); + + public final static native int piece_finished_alert_piece_index_get(long jarg1, piece_finished_alert jarg1_); + + public final static native void delete_piece_finished_alert(long jarg1); + + public final static native int request_dropped_alert_priority_get(); + + public final static native int request_dropped_alert_alert_type_get(); + + public final static native int request_dropped_alert_type(long jarg1, request_dropped_alert jarg1_); + + public final static native long request_dropped_alert_category(long jarg1, request_dropped_alert jarg1_); + + public final static native String request_dropped_alert_what(long jarg1, request_dropped_alert jarg1_); + + public final static native long request_dropped_alert_static_category_get(); + + public final static native String request_dropped_alert_message(long jarg1, request_dropped_alert jarg1_); + + public final static native int request_dropped_alert_block_index_get(long jarg1, request_dropped_alert jarg1_); + + public final static native int request_dropped_alert_piece_index_get(long jarg1, request_dropped_alert jarg1_); + + public final static native void delete_request_dropped_alert(long jarg1); + + public final static native int block_timeout_alert_priority_get(); + + public final static native int block_timeout_alert_alert_type_get(); + + public final static native int block_timeout_alert_type(long jarg1, block_timeout_alert jarg1_); + + public final static native long block_timeout_alert_category(long jarg1, block_timeout_alert jarg1_); + + public final static native String block_timeout_alert_what(long jarg1, block_timeout_alert jarg1_); + + public final static native long block_timeout_alert_static_category_get(); + + public final static native String block_timeout_alert_message(long jarg1, block_timeout_alert jarg1_); + + public final static native int block_timeout_alert_block_index_get(long jarg1, block_timeout_alert jarg1_); + + public final static native int block_timeout_alert_piece_index_get(long jarg1, block_timeout_alert jarg1_); + + public final static native void delete_block_timeout_alert(long jarg1); + + public final static native int block_finished_alert_priority_get(); + + public final static native int block_finished_alert_alert_type_get(); + + public final static native int block_finished_alert_type(long jarg1, block_finished_alert jarg1_); + + public final static native long block_finished_alert_category(long jarg1, block_finished_alert jarg1_); + + public final static native String block_finished_alert_what(long jarg1, block_finished_alert jarg1_); + + public final static native long block_finished_alert_static_category_get(); + + public final static native String block_finished_alert_message(long jarg1, block_finished_alert jarg1_); + + public final static native int block_finished_alert_block_index_get(long jarg1, block_finished_alert jarg1_); + + public final static native int block_finished_alert_piece_index_get(long jarg1, block_finished_alert jarg1_); + + public final static native void delete_block_finished_alert(long jarg1); + + public final static native int block_downloading_alert_priority_get(); + + public final static native int block_downloading_alert_alert_type_get(); + + public final static native int block_downloading_alert_type(long jarg1, block_downloading_alert jarg1_); + + public final static native long block_downloading_alert_category(long jarg1, block_downloading_alert jarg1_); + + public final static native String block_downloading_alert_what(long jarg1, block_downloading_alert jarg1_); + + public final static native long block_downloading_alert_static_category_get(); + + public final static native String block_downloading_alert_message(long jarg1, block_downloading_alert jarg1_); + + public final static native int block_downloading_alert_block_index_get(long jarg1, block_downloading_alert jarg1_); + + public final static native int block_downloading_alert_piece_index_get(long jarg1, block_downloading_alert jarg1_); + + public final static native void delete_block_downloading_alert(long jarg1); + + public final static native int unwanted_block_alert_priority_get(); + + public final static native int unwanted_block_alert_alert_type_get(); + + public final static native int unwanted_block_alert_type(long jarg1, unwanted_block_alert jarg1_); + + public final static native long unwanted_block_alert_category(long jarg1, unwanted_block_alert jarg1_); + + public final static native String unwanted_block_alert_what(long jarg1, unwanted_block_alert jarg1_); + + public final static native long unwanted_block_alert_static_category_get(); + + public final static native String unwanted_block_alert_message(long jarg1, unwanted_block_alert jarg1_); + + public final static native int unwanted_block_alert_block_index_get(long jarg1, unwanted_block_alert jarg1_); + + public final static native int unwanted_block_alert_piece_index_get(long jarg1, unwanted_block_alert jarg1_); + + public final static native void delete_unwanted_block_alert(long jarg1); + + public final static native int storage_moved_alert_priority_get(); + + public final static native int storage_moved_alert_alert_type_get(); + + public final static native int storage_moved_alert_type(long jarg1, storage_moved_alert jarg1_); + + public final static native long storage_moved_alert_category(long jarg1, storage_moved_alert jarg1_); + + public final static native String storage_moved_alert_what(long jarg1, storage_moved_alert jarg1_); + + public final static native long storage_moved_alert_static_category_get(); + + public final static native String storage_moved_alert_message(long jarg1, storage_moved_alert jarg1_); + + public final static native String storage_moved_alert_storage_path(long jarg1, storage_moved_alert jarg1_); + + public final static native void delete_storage_moved_alert(long jarg1); + + public final static native int storage_moved_failed_alert_priority_get(); + + public final static native int storage_moved_failed_alert_alert_type_get(); + + public final static native int storage_moved_failed_alert_type(long jarg1, storage_moved_failed_alert jarg1_); + + public final static native long storage_moved_failed_alert_category(long jarg1, storage_moved_failed_alert jarg1_); + + public final static native String storage_moved_failed_alert_what(long jarg1, storage_moved_failed_alert jarg1_); + + public final static native long storage_moved_failed_alert_static_category_get(); + + public final static native String storage_moved_failed_alert_message(long jarg1, storage_moved_failed_alert jarg1_); + + public final static native long storage_moved_failed_alert_error_get(long jarg1, storage_moved_failed_alert jarg1_); + + public final static native String storage_moved_failed_alert_file_path(long jarg1, storage_moved_failed_alert jarg1_); + + public final static native void storage_moved_failed_alert_op_set(long jarg1, storage_moved_failed_alert jarg1_, int jarg2); + + public final static native int storage_moved_failed_alert_op_get(long jarg1, storage_moved_failed_alert jarg1_); + + public final static native void delete_storage_moved_failed_alert(long jarg1); + + public final static native int torrent_deleted_alert_priority_get(); + + public final static native int torrent_deleted_alert_alert_type_get(); + + public final static native int torrent_deleted_alert_type(long jarg1, torrent_deleted_alert jarg1_); + + public final static native long torrent_deleted_alert_category(long jarg1, torrent_deleted_alert jarg1_); + + public final static native String torrent_deleted_alert_what(long jarg1, torrent_deleted_alert jarg1_); + + public final static native long torrent_deleted_alert_static_category_get(); + + public final static native String torrent_deleted_alert_message(long jarg1, torrent_deleted_alert jarg1_); + + public final static native void torrent_deleted_alert_info_hash_set(long jarg1, torrent_deleted_alert jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long torrent_deleted_alert_info_hash_get(long jarg1, torrent_deleted_alert jarg1_); + + public final static native void delete_torrent_deleted_alert(long jarg1); + + public final static native int torrent_delete_failed_alert_priority_get(); + + public final static native int torrent_delete_failed_alert_alert_type_get(); + + public final static native int torrent_delete_failed_alert_type(long jarg1, torrent_delete_failed_alert jarg1_); + + public final static native long torrent_delete_failed_alert_category(long jarg1, torrent_delete_failed_alert jarg1_); + + public final static native String torrent_delete_failed_alert_what(long jarg1, torrent_delete_failed_alert jarg1_); + + public final static native long torrent_delete_failed_alert_static_category_get(); + + public final static native String torrent_delete_failed_alert_message(long jarg1, torrent_delete_failed_alert jarg1_); + + public final static native long torrent_delete_failed_alert_error_get(long jarg1, torrent_delete_failed_alert jarg1_); + + public final static native void torrent_delete_failed_alert_info_hash_set(long jarg1, torrent_delete_failed_alert jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long torrent_delete_failed_alert_info_hash_get(long jarg1, torrent_delete_failed_alert jarg1_); + + public final static native void delete_torrent_delete_failed_alert(long jarg1); + + public final static native int save_resume_data_alert_priority_get(); + + public final static native int save_resume_data_alert_alert_type_get(); + + public final static native int save_resume_data_alert_type(long jarg1, save_resume_data_alert jarg1_); + + public final static native long save_resume_data_alert_category(long jarg1, save_resume_data_alert jarg1_); + + public final static native String save_resume_data_alert_what(long jarg1, save_resume_data_alert jarg1_); + + public final static native long save_resume_data_alert_static_category_get(); + + public final static native String save_resume_data_alert_message(long jarg1, save_resume_data_alert jarg1_); + + public final static native void save_resume_data_alert_params_set(long jarg1, save_resume_data_alert jarg1_, long jarg2, add_torrent_params jarg2_); + + public final static native long save_resume_data_alert_params_get(long jarg1, save_resume_data_alert jarg1_); + + public final static native void delete_save_resume_data_alert(long jarg1); + + public final static native int save_resume_data_failed_alert_priority_get(); + + public final static native int save_resume_data_failed_alert_alert_type_get(); + + public final static native int save_resume_data_failed_alert_type(long jarg1, save_resume_data_failed_alert jarg1_); + + public final static native long save_resume_data_failed_alert_category(long jarg1, save_resume_data_failed_alert jarg1_); + + public final static native String save_resume_data_failed_alert_what(long jarg1, save_resume_data_failed_alert jarg1_); + + public final static native long save_resume_data_failed_alert_static_category_get(); + + public final static native String save_resume_data_failed_alert_message(long jarg1, save_resume_data_failed_alert jarg1_); + + public final static native long save_resume_data_failed_alert_error_get(long jarg1, save_resume_data_failed_alert jarg1_); + + public final static native void delete_save_resume_data_failed_alert(long jarg1); + + public final static native int torrent_paused_alert_priority_get(); + + public final static native int torrent_paused_alert_alert_type_get(); + + public final static native int torrent_paused_alert_type(long jarg1, torrent_paused_alert jarg1_); + + public final static native long torrent_paused_alert_category(long jarg1, torrent_paused_alert jarg1_); + + public final static native String torrent_paused_alert_what(long jarg1, torrent_paused_alert jarg1_); + + public final static native long torrent_paused_alert_static_category_get(); + + public final static native String torrent_paused_alert_message(long jarg1, torrent_paused_alert jarg1_); + + public final static native void delete_torrent_paused_alert(long jarg1); + + public final static native int torrent_resumed_alert_priority_get(); + + public final static native int torrent_resumed_alert_alert_type_get(); + + public final static native int torrent_resumed_alert_type(long jarg1, torrent_resumed_alert jarg1_); + + public final static native long torrent_resumed_alert_category(long jarg1, torrent_resumed_alert jarg1_); + + public final static native String torrent_resumed_alert_what(long jarg1, torrent_resumed_alert jarg1_); + + public final static native long torrent_resumed_alert_static_category_get(); + + public final static native String torrent_resumed_alert_message(long jarg1, torrent_resumed_alert jarg1_); + + public final static native void delete_torrent_resumed_alert(long jarg1); + + public final static native int torrent_checked_alert_priority_get(); + + public final static native int torrent_checked_alert_alert_type_get(); + + public final static native int torrent_checked_alert_type(long jarg1, torrent_checked_alert jarg1_); + + public final static native long torrent_checked_alert_category(long jarg1, torrent_checked_alert jarg1_); + + public final static native String torrent_checked_alert_what(long jarg1, torrent_checked_alert jarg1_); + + public final static native long torrent_checked_alert_static_category_get(); + + public final static native String torrent_checked_alert_message(long jarg1, torrent_checked_alert jarg1_); + + public final static native void delete_torrent_checked_alert(long jarg1); + + public final static native int url_seed_alert_priority_get(); + + public final static native int url_seed_alert_alert_type_get(); + + public final static native int url_seed_alert_type(long jarg1, url_seed_alert jarg1_); + + public final static native long url_seed_alert_category(long jarg1, url_seed_alert jarg1_); + + public final static native String url_seed_alert_what(long jarg1, url_seed_alert jarg1_); + + public final static native long url_seed_alert_static_category_get(); + + public final static native String url_seed_alert_message(long jarg1, url_seed_alert jarg1_); + + public final static native long url_seed_alert_error_get(long jarg1, url_seed_alert jarg1_); + + public final static native String url_seed_alert_server_url(long jarg1, url_seed_alert jarg1_); + + public final static native String url_seed_alert_error_message(long jarg1, url_seed_alert jarg1_); + + public final static native void delete_url_seed_alert(long jarg1); + + public final static native int file_error_alert_priority_get(); + + public final static native int file_error_alert_alert_type_get(); + + public final static native int file_error_alert_type(long jarg1, file_error_alert jarg1_); + + public final static native long file_error_alert_category(long jarg1, file_error_alert jarg1_); + + public final static native String file_error_alert_what(long jarg1, file_error_alert jarg1_); + + public final static native long file_error_alert_static_category_get(); + + public final static native String file_error_alert_message(long jarg1, file_error_alert jarg1_); + + public final static native long file_error_alert_error_get(long jarg1, file_error_alert jarg1_); + + public final static native void file_error_alert_op_set(long jarg1, file_error_alert jarg1_, int jarg2); + + public final static native int file_error_alert_op_get(long jarg1, file_error_alert jarg1_); + + public final static native String file_error_alert_filename(long jarg1, file_error_alert jarg1_); + + public final static native void delete_file_error_alert(long jarg1); + + public final static native int metadata_failed_alert_priority_get(); + + public final static native int metadata_failed_alert_alert_type_get(); + + public final static native int metadata_failed_alert_type(long jarg1, metadata_failed_alert jarg1_); + + public final static native long metadata_failed_alert_category(long jarg1, metadata_failed_alert jarg1_); + + public final static native String metadata_failed_alert_what(long jarg1, metadata_failed_alert jarg1_); + + public final static native long metadata_failed_alert_static_category_get(); + + public final static native String metadata_failed_alert_message(long jarg1, metadata_failed_alert jarg1_); + + public final static native long metadata_failed_alert_error_get(long jarg1, metadata_failed_alert jarg1_); + + public final static native void delete_metadata_failed_alert(long jarg1); + + public final static native int metadata_received_alert_priority_get(); + + public final static native int metadata_received_alert_alert_type_get(); + + public final static native int metadata_received_alert_type(long jarg1, metadata_received_alert jarg1_); + + public final static native long metadata_received_alert_category(long jarg1, metadata_received_alert jarg1_); + + public final static native String metadata_received_alert_what(long jarg1, metadata_received_alert jarg1_); + + public final static native long metadata_received_alert_static_category_get(); + + public final static native String metadata_received_alert_message(long jarg1, metadata_received_alert jarg1_); + + public final static native void delete_metadata_received_alert(long jarg1); + + public final static native int udp_error_alert_priority_get(); + + public final static native int udp_error_alert_alert_type_get(); + + public final static native int udp_error_alert_type(long jarg1, udp_error_alert jarg1_); + + public final static native long udp_error_alert_category(long jarg1, udp_error_alert jarg1_); + + public final static native String udp_error_alert_what(long jarg1, udp_error_alert jarg1_); + + public final static native long udp_error_alert_static_category_get(); + + public final static native String udp_error_alert_message(long jarg1, udp_error_alert jarg1_); + + public final static native void udp_error_alert_operation_set(long jarg1, udp_error_alert jarg1_, int jarg2); + + public final static native int udp_error_alert_operation_get(long jarg1, udp_error_alert jarg1_); + + public final static native long udp_error_alert_error_get(long jarg1, udp_error_alert jarg1_); + + public final static native long udp_error_alert_get_endpoint(long jarg1, udp_error_alert jarg1_); + + public final static native void delete_udp_error_alert(long jarg1); + + public final static native int external_ip_alert_priority_get(); + + public final static native int external_ip_alert_alert_type_get(); + + public final static native int external_ip_alert_type(long jarg1, external_ip_alert jarg1_); + + public final static native long external_ip_alert_category(long jarg1, external_ip_alert jarg1_); + + public final static native String external_ip_alert_what(long jarg1, external_ip_alert jarg1_); + + public final static native long external_ip_alert_static_category_get(); + + public final static native String external_ip_alert_message(long jarg1, external_ip_alert jarg1_); + + public final static native long external_ip_alert_get_external_address(long jarg1, external_ip_alert jarg1_); + + public final static native void delete_external_ip_alert(long jarg1); + + public final static native int listen_failed_alert_priority_get(); + + public final static native int listen_failed_alert_alert_type_get(); + + public final static native int listen_failed_alert_type(long jarg1, listen_failed_alert jarg1_); + + public final static native long listen_failed_alert_category(long jarg1, listen_failed_alert jarg1_); + + public final static native String listen_failed_alert_what(long jarg1, listen_failed_alert jarg1_); + + public final static native long listen_failed_alert_static_category_get(); + + public final static native String listen_failed_alert_message(long jarg1, listen_failed_alert jarg1_); + + public final static native String listen_failed_alert_listen_interface(long jarg1, listen_failed_alert jarg1_); + + public final static native long listen_failed_alert_error_get(long jarg1, listen_failed_alert jarg1_); + + public final static native void listen_failed_alert_op_set(long jarg1, listen_failed_alert jarg1_, int jarg2); + + public final static native int listen_failed_alert_op_get(long jarg1, listen_failed_alert jarg1_); + + public final static native int listen_failed_alert_socket_type_get(long jarg1, listen_failed_alert jarg1_); + + public final static native int listen_failed_alert_port_get(long jarg1, listen_failed_alert jarg1_); + + public final static native long listen_failed_alert_get_address(long jarg1, listen_failed_alert jarg1_); + + public final static native void delete_listen_failed_alert(long jarg1); + + public final static native int listen_succeeded_alert_priority_get(); + + public final static native int listen_succeeded_alert_alert_type_get(); + + public final static native int listen_succeeded_alert_type(long jarg1, listen_succeeded_alert jarg1_); + + public final static native long listen_succeeded_alert_category(long jarg1, listen_succeeded_alert jarg1_); + + public final static native String listen_succeeded_alert_what(long jarg1, listen_succeeded_alert jarg1_); + + public final static native long listen_succeeded_alert_static_category_get(); + + public final static native String listen_succeeded_alert_message(long jarg1, listen_succeeded_alert jarg1_); + + public final static native int listen_succeeded_alert_port_get(long jarg1, listen_succeeded_alert jarg1_); + + public final static native int listen_succeeded_alert_socket_type_get(long jarg1, listen_succeeded_alert jarg1_); + + public final static native long listen_succeeded_alert_get_address(long jarg1, listen_succeeded_alert jarg1_); + + public final static native void delete_listen_succeeded_alert(long jarg1); + + public final static native int portmap_error_alert_priority_get(); + + public final static native int portmap_error_alert_alert_type_get(); + + public final static native int portmap_error_alert_type(long jarg1, portmap_error_alert jarg1_); + + public final static native long portmap_error_alert_category(long jarg1, portmap_error_alert jarg1_); + + public final static native String portmap_error_alert_what(long jarg1, portmap_error_alert jarg1_); + + public final static native long portmap_error_alert_static_category_get(); + + public final static native String portmap_error_alert_message(long jarg1, portmap_error_alert jarg1_); + + public final static native int portmap_error_alert_mapping_get(long jarg1, portmap_error_alert jarg1_); + + public final static native void portmap_error_alert_map_transport_set(long jarg1, portmap_error_alert jarg1_, int jarg2); + + public final static native int portmap_error_alert_map_transport_get(long jarg1, portmap_error_alert jarg1_); + + public final static native long portmap_error_alert_error_get(long jarg1, portmap_error_alert jarg1_); + + public final static native void delete_portmap_error_alert(long jarg1); + + public final static native int portmap_alert_priority_get(); + + public final static native int portmap_alert_alert_type_get(); + + public final static native int portmap_alert_type(long jarg1, portmap_alert jarg1_); + + public final static native long portmap_alert_category(long jarg1, portmap_alert jarg1_); + + public final static native String portmap_alert_what(long jarg1, portmap_alert jarg1_); + + public final static native long portmap_alert_static_category_get(); + + public final static native String portmap_alert_message(long jarg1, portmap_alert jarg1_); + + public final static native int portmap_alert_mapping_get(long jarg1, portmap_alert jarg1_); + + public final static native int portmap_alert_external_port_get(long jarg1, portmap_alert jarg1_); + + public final static native int portmap_alert_map_protocol_get(long jarg1, portmap_alert jarg1_); + + public final static native int portmap_alert_map_transport_get(long jarg1, portmap_alert jarg1_); + + public final static native void delete_portmap_alert(long jarg1); + + public final static native int portmap_log_alert_priority_get(); + + public final static native int portmap_log_alert_alert_type_get(); + + public final static native int portmap_log_alert_type(long jarg1, portmap_log_alert jarg1_); + + public final static native long portmap_log_alert_category(long jarg1, portmap_log_alert jarg1_); + + public final static native String portmap_log_alert_what(long jarg1, portmap_log_alert jarg1_); + + public final static native long portmap_log_alert_static_category_get(); + + public final static native String portmap_log_alert_message(long jarg1, portmap_log_alert jarg1_); + + public final static native int portmap_log_alert_map_transport_get(long jarg1, portmap_log_alert jarg1_); + + public final static native String portmap_log_alert_log_message(long jarg1, portmap_log_alert jarg1_); + + public final static native void delete_portmap_log_alert(long jarg1); + + public final static native int fastresume_rejected_alert_priority_get(); + + public final static native int fastresume_rejected_alert_alert_type_get(); + + public final static native int fastresume_rejected_alert_type(long jarg1, fastresume_rejected_alert jarg1_); + + public final static native long fastresume_rejected_alert_category(long jarg1, fastresume_rejected_alert jarg1_); + + public final static native String fastresume_rejected_alert_what(long jarg1, fastresume_rejected_alert jarg1_); + + public final static native long fastresume_rejected_alert_static_category_get(); + + public final static native String fastresume_rejected_alert_message(long jarg1, fastresume_rejected_alert jarg1_); + + public final static native void fastresume_rejected_alert_error_set(long jarg1, fastresume_rejected_alert jarg1_, long jarg2, error_code jarg2_); + + public final static native long fastresume_rejected_alert_error_get(long jarg1, fastresume_rejected_alert jarg1_); + + public final static native String fastresume_rejected_alert_file_path(long jarg1, fastresume_rejected_alert jarg1_); + + public final static native void fastresume_rejected_alert_op_set(long jarg1, fastresume_rejected_alert jarg1_, int jarg2); + + public final static native int fastresume_rejected_alert_op_get(long jarg1, fastresume_rejected_alert jarg1_); + + public final static native void delete_fastresume_rejected_alert(long jarg1); + + public final static native int peer_blocked_alert_priority_get(); + + public final static native int peer_blocked_alert_alert_type_get(); + + public final static native int peer_blocked_alert_type(long jarg1, peer_blocked_alert jarg1_); + + public final static native long peer_blocked_alert_category(long jarg1, peer_blocked_alert jarg1_); + + public final static native String peer_blocked_alert_what(long jarg1, peer_blocked_alert jarg1_); + + public final static native long peer_blocked_alert_static_category_get(); + + public final static native String peer_blocked_alert_message(long jarg1, peer_blocked_alert jarg1_); + + public final static native int peer_blocked_alert_reason_get(long jarg1, peer_blocked_alert jarg1_); + + public final static native void delete_peer_blocked_alert(long jarg1); + + public final static native int dht_announce_alert_priority_get(); + + public final static native int dht_announce_alert_alert_type_get(); + + public final static native int dht_announce_alert_type(long jarg1, dht_announce_alert jarg1_); + + public final static native long dht_announce_alert_category(long jarg1, dht_announce_alert jarg1_); + + public final static native String dht_announce_alert_what(long jarg1, dht_announce_alert jarg1_); + + public final static native long dht_announce_alert_static_category_get(); + + public final static native String dht_announce_alert_message(long jarg1, dht_announce_alert jarg1_); + + public final static native void dht_announce_alert_port_set(long jarg1, dht_announce_alert jarg1_, int jarg2); + + public final static native int dht_announce_alert_port_get(long jarg1, dht_announce_alert jarg1_); + + public final static native void dht_announce_alert_info_hash_set(long jarg1, dht_announce_alert jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long dht_announce_alert_info_hash_get(long jarg1, dht_announce_alert jarg1_); + + public final static native long dht_announce_alert_get_ip(long jarg1, dht_announce_alert jarg1_); + + public final static native void delete_dht_announce_alert(long jarg1); + + public final static native int dht_get_peers_alert_priority_get(); + + public final static native int dht_get_peers_alert_alert_type_get(); + + public final static native int dht_get_peers_alert_type(long jarg1, dht_get_peers_alert jarg1_); + + public final static native long dht_get_peers_alert_category(long jarg1, dht_get_peers_alert jarg1_); + + public final static native String dht_get_peers_alert_what(long jarg1, dht_get_peers_alert jarg1_); + + public final static native long dht_get_peers_alert_static_category_get(); + + public final static native String dht_get_peers_alert_message(long jarg1, dht_get_peers_alert jarg1_); + + public final static native void dht_get_peers_alert_info_hash_set(long jarg1, dht_get_peers_alert jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long dht_get_peers_alert_info_hash_get(long jarg1, dht_get_peers_alert jarg1_); + + public final static native void delete_dht_get_peers_alert(long jarg1); + + public final static native int stats_alert_priority_get(); + + public final static native int stats_alert_alert_type_get(); + + public final static native int stats_alert_type(long jarg1, stats_alert jarg1_); + + public final static native long stats_alert_category(long jarg1, stats_alert jarg1_); + + public final static native String stats_alert_what(long jarg1, stats_alert jarg1_); + + public final static native long stats_alert_static_category_get(); + + public final static native String stats_alert_message(long jarg1, stats_alert jarg1_); + + public final static native int stats_alert_download_ip_protocol_get(); + + public final static native int stats_alert_num_channels_get(); + + public final static native int stats_alert_interval_get(long jarg1, stats_alert jarg1_); + + public final static native int stats_alert_get_transferred(long jarg1, stats_alert jarg1_, int jarg2); + + public final static native void delete_stats_alert(long jarg1); + + public final static native int cache_flushed_alert_priority_get(); + + public final static native int cache_flushed_alert_alert_type_get(); + + public final static native int cache_flushed_alert_type(long jarg1, cache_flushed_alert jarg1_); + + public final static native long cache_flushed_alert_category(long jarg1, cache_flushed_alert jarg1_); + + public final static native String cache_flushed_alert_what(long jarg1, cache_flushed_alert jarg1_); + + public final static native long cache_flushed_alert_static_category_get(); + + public final static native void delete_cache_flushed_alert(long jarg1); + + public final static native int lsd_peer_alert_priority_get(); + + public final static native int lsd_peer_alert_alert_type_get(); + + public final static native int lsd_peer_alert_type(long jarg1, lsd_peer_alert jarg1_); + + public final static native long lsd_peer_alert_category(long jarg1, lsd_peer_alert jarg1_); + + public final static native String lsd_peer_alert_what(long jarg1, lsd_peer_alert jarg1_); + + public final static native long lsd_peer_alert_static_category_get(); + + public final static native String lsd_peer_alert_message(long jarg1, lsd_peer_alert jarg1_); + + public final static native void delete_lsd_peer_alert(long jarg1); + + public final static native int trackerid_alert_priority_get(); + + public final static native int trackerid_alert_alert_type_get(); + + public final static native int trackerid_alert_type(long jarg1, trackerid_alert jarg1_); + + public final static native long trackerid_alert_category(long jarg1, trackerid_alert jarg1_); + + public final static native String trackerid_alert_what(long jarg1, trackerid_alert jarg1_); + + public final static native long trackerid_alert_static_category_get(); + + public final static native String trackerid_alert_message(long jarg1, trackerid_alert jarg1_); + + public final static native String trackerid_alert_tracker_id(long jarg1, trackerid_alert jarg1_); + + public final static native void delete_trackerid_alert(long jarg1); + + public final static native int dht_bootstrap_alert_priority_get(); + + public final static native int dht_bootstrap_alert_alert_type_get(); + + public final static native int dht_bootstrap_alert_type(long jarg1, dht_bootstrap_alert jarg1_); + + public final static native long dht_bootstrap_alert_category(long jarg1, dht_bootstrap_alert jarg1_); + + public final static native String dht_bootstrap_alert_what(long jarg1, dht_bootstrap_alert jarg1_); + + public final static native long dht_bootstrap_alert_static_category_get(); + + public final static native String dht_bootstrap_alert_message(long jarg1, dht_bootstrap_alert jarg1_); + + public final static native void delete_dht_bootstrap_alert(long jarg1); + + public final static native int torrent_error_alert_priority_get(); + + public final static native int torrent_error_alert_alert_type_get(); + + public final static native int torrent_error_alert_type(long jarg1, torrent_error_alert jarg1_); + + public final static native long torrent_error_alert_category(long jarg1, torrent_error_alert jarg1_); + + public final static native String torrent_error_alert_what(long jarg1, torrent_error_alert jarg1_); + + public final static native long torrent_error_alert_static_category_get(); + + public final static native String torrent_error_alert_message(long jarg1, torrent_error_alert jarg1_); + + public final static native long torrent_error_alert_error_get(long jarg1, torrent_error_alert jarg1_); + + public final static native String torrent_error_alert_filename(long jarg1, torrent_error_alert jarg1_); + + public final static native void delete_torrent_error_alert(long jarg1); + + public final static native int torrent_need_cert_alert_priority_get(); + + public final static native int torrent_need_cert_alert_alert_type_get(); + + public final static native int torrent_need_cert_alert_type(long jarg1, torrent_need_cert_alert jarg1_); + + public final static native long torrent_need_cert_alert_category(long jarg1, torrent_need_cert_alert jarg1_); + + public final static native String torrent_need_cert_alert_what(long jarg1, torrent_need_cert_alert jarg1_); + + public final static native long torrent_need_cert_alert_static_category_get(); + + public final static native String torrent_need_cert_alert_message(long jarg1, torrent_need_cert_alert jarg1_); + + public final static native void delete_torrent_need_cert_alert(long jarg1); + + public final static native int incoming_connection_alert_priority_get(); + + public final static native int incoming_connection_alert_alert_type_get(); + + public final static native int incoming_connection_alert_type(long jarg1, incoming_connection_alert jarg1_); + + public final static native long incoming_connection_alert_category(long jarg1, incoming_connection_alert jarg1_); + + public final static native String incoming_connection_alert_what(long jarg1, incoming_connection_alert jarg1_); + + public final static native long incoming_connection_alert_static_category_get(); + + public final static native String incoming_connection_alert_message(long jarg1, incoming_connection_alert jarg1_); + + public final static native int incoming_connection_alert_socket_type_get(long jarg1, incoming_connection_alert jarg1_); + + public final static native long incoming_connection_alert_get_endpoint(long jarg1, incoming_connection_alert jarg1_); + + public final static native void delete_incoming_connection_alert(long jarg1); + + public final static native int add_torrent_alert_priority_get(); + + public final static native int add_torrent_alert_alert_type_get(); + + public final static native int add_torrent_alert_type(long jarg1, add_torrent_alert jarg1_); + + public final static native long add_torrent_alert_category(long jarg1, add_torrent_alert jarg1_); + + public final static native String add_torrent_alert_what(long jarg1, add_torrent_alert jarg1_); + + public final static native long add_torrent_alert_static_category_get(); + + public final static native String add_torrent_alert_message(long jarg1, add_torrent_alert jarg1_); + + public final static native void add_torrent_alert_params_set(long jarg1, add_torrent_alert jarg1_, long jarg2, add_torrent_params jarg2_); + + public final static native long add_torrent_alert_params_get(long jarg1, add_torrent_alert jarg1_); + + public final static native void add_torrent_alert_error_set(long jarg1, add_torrent_alert jarg1_, long jarg2, error_code jarg2_); + + public final static native long add_torrent_alert_error_get(long jarg1, add_torrent_alert jarg1_); + + public final static native void delete_add_torrent_alert(long jarg1); + + public final static native int state_update_alert_priority_get(); + + public final static native int state_update_alert_alert_type_get(); + + public final static native int state_update_alert_type(long jarg1, state_update_alert jarg1_); + + public final static native long state_update_alert_category(long jarg1, state_update_alert jarg1_); + + public final static native String state_update_alert_what(long jarg1, state_update_alert jarg1_); + + public final static native long state_update_alert_static_category_get(); + + public final static native String state_update_alert_message(long jarg1, state_update_alert jarg1_); + + public final static native void state_update_alert_status_set(long jarg1, state_update_alert jarg1_, long jarg2, torrent_status_vector jarg2_); + + public final static native long state_update_alert_status_get(long jarg1, state_update_alert jarg1_); + + public final static native void delete_state_update_alert(long jarg1); + + public final static native int session_stats_alert_priority_get(); + + public final static native int session_stats_alert_alert_type_get(); + + public final static native int session_stats_alert_type(long jarg1, session_stats_alert jarg1_); + + public final static native long session_stats_alert_category(long jarg1, session_stats_alert jarg1_); + + public final static native String session_stats_alert_what(long jarg1, session_stats_alert jarg1_); + + public final static native long session_stats_alert_static_category_get(); + + public final static native String session_stats_alert_message(long jarg1, session_stats_alert jarg1_); + + public final static native long session_stats_alert_get_value(long jarg1, session_stats_alert jarg1_, int jarg2); + + public final static native void delete_session_stats_alert(long jarg1); + + public final static native int dht_error_alert_priority_get(); + + public final static native int dht_error_alert_alert_type_get(); + + public final static native int dht_error_alert_type(long jarg1, dht_error_alert jarg1_); + + public final static native long dht_error_alert_category(long jarg1, dht_error_alert jarg1_); + + public final static native String dht_error_alert_what(long jarg1, dht_error_alert jarg1_); + + public final static native long dht_error_alert_static_category_get(); + + public final static native String dht_error_alert_message(long jarg1, dht_error_alert jarg1_); + + public final static native void dht_error_alert_error_set(long jarg1, dht_error_alert jarg1_, long jarg2, error_code jarg2_); + + public final static native long dht_error_alert_error_get(long jarg1, dht_error_alert jarg1_); + + public final static native void dht_error_alert_op_set(long jarg1, dht_error_alert jarg1_, int jarg2); + + public final static native int dht_error_alert_op_get(long jarg1, dht_error_alert jarg1_); + + public final static native void delete_dht_error_alert(long jarg1); + + public final static native int dht_immutable_item_alert_priority_get(); + + public final static native int dht_immutable_item_alert_alert_type_get(); + + public final static native int dht_immutable_item_alert_type(long jarg1, dht_immutable_item_alert jarg1_); + + public final static native long dht_immutable_item_alert_category(long jarg1, dht_immutable_item_alert jarg1_); + + public final static native String dht_immutable_item_alert_what(long jarg1, dht_immutable_item_alert jarg1_); + + public final static native long dht_immutable_item_alert_static_category_get(); + + public final static native String dht_immutable_item_alert_message(long jarg1, dht_immutable_item_alert jarg1_); + + public final static native void dht_immutable_item_alert_target_set(long jarg1, dht_immutable_item_alert jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long dht_immutable_item_alert_target_get(long jarg1, dht_immutable_item_alert jarg1_); + + public final static native void dht_immutable_item_alert_item_set(long jarg1, dht_immutable_item_alert jarg1_, long jarg2, entry jarg2_); + + public final static native long dht_immutable_item_alert_item_get(long jarg1, dht_immutable_item_alert jarg1_); + + public final static native void delete_dht_immutable_item_alert(long jarg1); + + public final static native int dht_mutable_item_alert_priority_get(); + + public final static native int dht_mutable_item_alert_alert_type_get(); + + public final static native int dht_mutable_item_alert_type(long jarg1, dht_mutable_item_alert jarg1_); + + public final static native long dht_mutable_item_alert_category(long jarg1, dht_mutable_item_alert jarg1_); + + public final static native String dht_mutable_item_alert_what(long jarg1, dht_mutable_item_alert jarg1_); + + public final static native long dht_mutable_item_alert_static_category_get(); + + public final static native String dht_mutable_item_alert_message(long jarg1, dht_mutable_item_alert jarg1_); + + public final static native void dht_mutable_item_alert_item_set(long jarg1, dht_mutable_item_alert jarg1_, long jarg2, entry jarg2_); + + public final static native long dht_mutable_item_alert_item_get(long jarg1, dht_mutable_item_alert jarg1_); + + public final static native void dht_mutable_item_alert_authoritative_set(long jarg1, dht_mutable_item_alert jarg1_, boolean jarg2); + + public final static native boolean dht_mutable_item_alert_authoritative_get(long jarg1, dht_mutable_item_alert jarg1_); + + public final static native long dht_mutable_item_alert_get_key(long jarg1, dht_mutable_item_alert jarg1_); + + public final static native long dht_mutable_item_alert_get_signature(long jarg1, dht_mutable_item_alert jarg1_); + + public final static native long dht_mutable_item_alert_get_seq(long jarg1, dht_mutable_item_alert jarg1_); + + public final static native long dht_mutable_item_alert_get_salt(long jarg1, dht_mutable_item_alert jarg1_); + + public final static native void delete_dht_mutable_item_alert(long jarg1); + + public final static native int dht_put_alert_priority_get(); + + public final static native int dht_put_alert_alert_type_get(); + + public final static native int dht_put_alert_type(long jarg1, dht_put_alert jarg1_); + + public final static native long dht_put_alert_category(long jarg1, dht_put_alert jarg1_); + + public final static native String dht_put_alert_what(long jarg1, dht_put_alert jarg1_); + + public final static native long dht_put_alert_static_category_get(); + + public final static native String dht_put_alert_message(long jarg1, dht_put_alert jarg1_); + + public final static native void dht_put_alert_target_set(long jarg1, dht_put_alert jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long dht_put_alert_target_get(long jarg1, dht_put_alert jarg1_); + + public final static native void dht_put_alert_num_success_set(long jarg1, dht_put_alert jarg1_, int jarg2); + + public final static native int dht_put_alert_num_success_get(long jarg1, dht_put_alert jarg1_); + + public final static native long dht_put_alert_get_public_key(long jarg1, dht_put_alert jarg1_); + + public final static native long dht_put_alert_get_signature(long jarg1, dht_put_alert jarg1_); + + public final static native long dht_put_alert_get_salt(long jarg1, dht_put_alert jarg1_); + + public final static native long dht_put_alert_get_seq(long jarg1, dht_put_alert jarg1_); + + public final static native void delete_dht_put_alert(long jarg1); + + public final static native int i2p_alert_priority_get(); + + public final static native int i2p_alert_alert_type_get(); + + public final static native int i2p_alert_type(long jarg1, i2p_alert jarg1_); + + public final static native long i2p_alert_category(long jarg1, i2p_alert jarg1_); + + public final static native String i2p_alert_what(long jarg1, i2p_alert jarg1_); + + public final static native long i2p_alert_static_category_get(); + + public final static native String i2p_alert_message(long jarg1, i2p_alert jarg1_); + + public final static native void i2p_alert_error_set(long jarg1, i2p_alert jarg1_, long jarg2, error_code jarg2_); + + public final static native long i2p_alert_error_get(long jarg1, i2p_alert jarg1_); + + public final static native void delete_i2p_alert(long jarg1); + + public final static native int dht_outgoing_get_peers_alert_priority_get(); + + public final static native int dht_outgoing_get_peers_alert_alert_type_get(); + + public final static native int dht_outgoing_get_peers_alert_type(long jarg1, dht_outgoing_get_peers_alert jarg1_); + + public final static native long dht_outgoing_get_peers_alert_category(long jarg1, dht_outgoing_get_peers_alert jarg1_); + + public final static native String dht_outgoing_get_peers_alert_what(long jarg1, dht_outgoing_get_peers_alert jarg1_); + + public final static native long dht_outgoing_get_peers_alert_static_category_get(); + + public final static native String dht_outgoing_get_peers_alert_message(long jarg1, dht_outgoing_get_peers_alert jarg1_); + + public final static native void dht_outgoing_get_peers_alert_info_hash_set(long jarg1, dht_outgoing_get_peers_alert jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long dht_outgoing_get_peers_alert_info_hash_get(long jarg1, dht_outgoing_get_peers_alert jarg1_); + + public final static native void dht_outgoing_get_peers_alert_obfuscated_info_hash_set(long jarg1, dht_outgoing_get_peers_alert jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long dht_outgoing_get_peers_alert_obfuscated_info_hash_get(long jarg1, dht_outgoing_get_peers_alert jarg1_); + + public final static native long dht_outgoing_get_peers_alert_get_endpoint(long jarg1, dht_outgoing_get_peers_alert jarg1_); + + public final static native void delete_dht_outgoing_get_peers_alert(long jarg1); + + public final static native int log_alert_priority_get(); + + public final static native int log_alert_alert_type_get(); + + public final static native int log_alert_type(long jarg1, log_alert jarg1_); + + public final static native long log_alert_category(long jarg1, log_alert jarg1_); + + public final static native String log_alert_what(long jarg1, log_alert jarg1_); + + public final static native long log_alert_static_category_get(); + + public final static native String log_alert_message(long jarg1, log_alert jarg1_); + + public final static native String log_alert_log_message(long jarg1, log_alert jarg1_); + + public final static native void delete_log_alert(long jarg1); + + public final static native int torrent_log_alert_priority_get(); + + public final static native int torrent_log_alert_alert_type_get(); + + public final static native int torrent_log_alert_type(long jarg1, torrent_log_alert jarg1_); + + public final static native long torrent_log_alert_category(long jarg1, torrent_log_alert jarg1_); + + public final static native String torrent_log_alert_what(long jarg1, torrent_log_alert jarg1_); + + public final static native long torrent_log_alert_static_category_get(); + + public final static native String torrent_log_alert_message(long jarg1, torrent_log_alert jarg1_); + + public final static native String torrent_log_alert_log_message(long jarg1, torrent_log_alert jarg1_); + + public final static native void delete_torrent_log_alert(long jarg1); + + public final static native int peer_log_alert_priority_get(); + + public final static native int peer_log_alert_alert_type_get(); + + public final static native int peer_log_alert_type(long jarg1, peer_log_alert jarg1_); + + public final static native long peer_log_alert_category(long jarg1, peer_log_alert jarg1_); + + public final static native String peer_log_alert_what(long jarg1, peer_log_alert jarg1_); + + public final static native long peer_log_alert_static_category_get(); + + public final static native String peer_log_alert_message(long jarg1, peer_log_alert jarg1_); + + public final static native void peer_log_alert_direction_set(long jarg1, peer_log_alert jarg1_, int jarg2); + + public final static native int peer_log_alert_direction_get(long jarg1, peer_log_alert jarg1_); + + public final static native String peer_log_alert_log_message(long jarg1, peer_log_alert jarg1_); + + public final static native String peer_log_alert_get_event_type(long jarg1, peer_log_alert jarg1_); + + public final static native void delete_peer_log_alert(long jarg1); + + public final static native int lsd_error_alert_priority_get(); + + public final static native int lsd_error_alert_alert_type_get(); + + public final static native int lsd_error_alert_type(long jarg1, lsd_error_alert jarg1_); + + public final static native long lsd_error_alert_category(long jarg1, lsd_error_alert jarg1_); + + public final static native String lsd_error_alert_what(long jarg1, lsd_error_alert jarg1_); + + public final static native long lsd_error_alert_static_category_get(); + + public final static native String lsd_error_alert_message(long jarg1, lsd_error_alert jarg1_); + + public final static native void lsd_error_alert_error_set(long jarg1, lsd_error_alert jarg1_, long jarg2, error_code jarg2_); + + public final static native long lsd_error_alert_error_get(long jarg1, lsd_error_alert jarg1_); + + public final static native void delete_lsd_error_alert(long jarg1); + + public final static native void dht_lookup_outstanding_requests_set(long jarg1, dht_lookup jarg1_, int jarg2); + + public final static native int dht_lookup_outstanding_requests_get(long jarg1, dht_lookup jarg1_); + + public final static native void dht_lookup_timeouts_set(long jarg1, dht_lookup jarg1_, int jarg2); + + public final static native int dht_lookup_timeouts_get(long jarg1, dht_lookup jarg1_); + + public final static native void dht_lookup_responses_set(long jarg1, dht_lookup jarg1_, int jarg2); + + public final static native int dht_lookup_responses_get(long jarg1, dht_lookup jarg1_); + + public final static native void dht_lookup_branch_factor_set(long jarg1, dht_lookup jarg1_, int jarg2); + + public final static native int dht_lookup_branch_factor_get(long jarg1, dht_lookup jarg1_); + + public final static native void dht_lookup_nodes_left_set(long jarg1, dht_lookup jarg1_, int jarg2); + + public final static native int dht_lookup_nodes_left_get(long jarg1, dht_lookup jarg1_); + + public final static native void dht_lookup_last_sent_set(long jarg1, dht_lookup jarg1_, int jarg2); + + public final static native int dht_lookup_last_sent_get(long jarg1, dht_lookup jarg1_); + + public final static native void dht_lookup_first_timeout_set(long jarg1, dht_lookup jarg1_, int jarg2); + + public final static native int dht_lookup_first_timeout_get(long jarg1, dht_lookup jarg1_); + + public final static native void dht_lookup_target_set(long jarg1, dht_lookup jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long dht_lookup_target_get(long jarg1, dht_lookup jarg1_); + + public final static native String dht_lookup_get_type(long jarg1, dht_lookup jarg1_); + + public final static native long new_dht_lookup(); + + public final static native void delete_dht_lookup(long jarg1); + + public final static native int dht_stats_alert_priority_get(); + + public final static native int dht_stats_alert_alert_type_get(); + + public final static native int dht_stats_alert_type(long jarg1, dht_stats_alert jarg1_); + + public final static native long dht_stats_alert_category(long jarg1, dht_stats_alert jarg1_); + + public final static native String dht_stats_alert_what(long jarg1, dht_stats_alert jarg1_); + + public final static native long dht_stats_alert_static_category_get(); + + public final static native String dht_stats_alert_message(long jarg1, dht_stats_alert jarg1_); + + public final static native void dht_stats_alert_active_requests_set(long jarg1, dht_stats_alert jarg1_, long jarg2, dht_lookup_vector jarg2_); + + public final static native long dht_stats_alert_active_requests_get(long jarg1, dht_stats_alert jarg1_); + + public final static native void dht_stats_alert_routing_table_set(long jarg1, dht_stats_alert jarg1_, long jarg2, dht_routing_bucket_vector jarg2_); + + public final static native long dht_stats_alert_routing_table_get(long jarg1, dht_stats_alert jarg1_); + + public final static native void delete_dht_stats_alert(long jarg1); + + public final static native long incoming_request_alert_static_category_get(); + + public final static native int incoming_request_alert_priority_get(); + + public final static native int incoming_request_alert_alert_type_get(); + + public final static native int incoming_request_alert_type(long jarg1, incoming_request_alert jarg1_); + + public final static native long incoming_request_alert_category(long jarg1, incoming_request_alert jarg1_); + + public final static native String incoming_request_alert_what(long jarg1, incoming_request_alert jarg1_); + + public final static native String incoming_request_alert_message(long jarg1, incoming_request_alert jarg1_); + + public final static native void incoming_request_alert_req_set(long jarg1, incoming_request_alert jarg1_, long jarg2, peer_request jarg2_); + + public final static native long incoming_request_alert_req_get(long jarg1, incoming_request_alert jarg1_); + + public final static native void delete_incoming_request_alert(long jarg1); + + public final static native long dht_log_alert_static_category_get(); + + public final static native int dht_log_alert_priority_get(); + + public final static native int dht_log_alert_alert_type_get(); + + public final static native int dht_log_alert_type(long jarg1, dht_log_alert jarg1_); + + public final static native long dht_log_alert_category(long jarg1, dht_log_alert jarg1_); + + public final static native String dht_log_alert_what(long jarg1, dht_log_alert jarg1_); + + public final static native String dht_log_alert_message(long jarg1, dht_log_alert jarg1_); + + public final static native String dht_log_alert_log_message(long jarg1, dht_log_alert jarg1_); + + public final static native void dht_log_alert_module_set(long jarg1, dht_log_alert jarg1_, int jarg2); + + public final static native int dht_log_alert_module_get(long jarg1, dht_log_alert jarg1_); + + public final static native void delete_dht_log_alert(long jarg1); + + public final static native long dht_pkt_alert_static_category_get(); + + public final static native int dht_pkt_alert_priority_get(); + + public final static native int dht_pkt_alert_alert_type_get(); + + public final static native int dht_pkt_alert_type(long jarg1, dht_pkt_alert jarg1_); + + public final static native long dht_pkt_alert_category(long jarg1, dht_pkt_alert jarg1_); + + public final static native String dht_pkt_alert_what(long jarg1, dht_pkt_alert jarg1_); + + public final static native String dht_pkt_alert_message(long jarg1, dht_pkt_alert jarg1_); + + public final static native long dht_pkt_alert_pkt_buf(long jarg1, dht_pkt_alert jarg1_); + + public final static native void dht_pkt_alert_direction_set(long jarg1, dht_pkt_alert jarg1_, int jarg2); + + public final static native int dht_pkt_alert_direction_get(long jarg1, dht_pkt_alert jarg1_); + + public final static native long dht_pkt_alert_get_node(long jarg1, dht_pkt_alert jarg1_); + + public final static native void delete_dht_pkt_alert(long jarg1); + + public final static native long dht_get_peers_reply_alert_static_category_get(); + + public final static native int dht_get_peers_reply_alert_priority_get(); + + public final static native int dht_get_peers_reply_alert_alert_type_get(); + + public final static native int dht_get_peers_reply_alert_type(long jarg1, dht_get_peers_reply_alert jarg1_); + + public final static native long dht_get_peers_reply_alert_category(long jarg1, dht_get_peers_reply_alert jarg1_); + + public final static native String dht_get_peers_reply_alert_what(long jarg1, dht_get_peers_reply_alert jarg1_); + + public final static native String dht_get_peers_reply_alert_message(long jarg1, dht_get_peers_reply_alert jarg1_); + + public final static native void dht_get_peers_reply_alert_info_hash_set(long jarg1, dht_get_peers_reply_alert jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long dht_get_peers_reply_alert_info_hash_get(long jarg1, dht_get_peers_reply_alert jarg1_); + + public final static native int dht_get_peers_reply_alert_num_peers(long jarg1, dht_get_peers_reply_alert jarg1_); + + public final static native long dht_get_peers_reply_alert_peers(long jarg1, dht_get_peers_reply_alert jarg1_); + + public final static native void delete_dht_get_peers_reply_alert(long jarg1); + + public final static native int dht_direct_response_alert_priority_get(); + + public final static native int dht_direct_response_alert_alert_type_get(); + + public final static native int dht_direct_response_alert_type(long jarg1, dht_direct_response_alert jarg1_); + + public final static native long dht_direct_response_alert_category(long jarg1, dht_direct_response_alert jarg1_); + + public final static native String dht_direct_response_alert_what(long jarg1, dht_direct_response_alert jarg1_); + + public final static native long dht_direct_response_alert_static_category_get(); + + public final static native String dht_direct_response_alert_message(long jarg1, dht_direct_response_alert jarg1_); + + public final static native long dht_direct_response_alert_response(long jarg1, dht_direct_response_alert jarg1_); + + public final static native long dht_direct_response_alert_get_userdata(long jarg1, dht_direct_response_alert jarg1_); + + public final static native long dht_direct_response_alert_get_endpoint(long jarg1, dht_direct_response_alert jarg1_); + + public final static native void delete_dht_direct_response_alert(long jarg1); + + public final static native int picker_log_alert_priority_get(); + + public final static native int picker_log_alert_alert_type_get(); + + public final static native int picker_log_alert_type(long jarg1, picker_log_alert jarg1_); + + public final static native long picker_log_alert_category(long jarg1, picker_log_alert jarg1_); + + public final static native String picker_log_alert_what(long jarg1, picker_log_alert jarg1_); + + public final static native long picker_log_alert_static_category_get(); + + public final static native String picker_log_alert_message(long jarg1, picker_log_alert jarg1_); + + public final static native long picker_log_alert_partial_ratio_get(); + + public final static native long picker_log_alert_prioritize_partials_get(); + + public final static native long picker_log_alert_rarest_first_partials_get(); + + public final static native long picker_log_alert_rarest_first_get(); + + public final static native long picker_log_alert_reverse_rarest_first_get(); + + public final static native long picker_log_alert_suggested_pieces_get(); + + public final static native long picker_log_alert_prio_sequential_pieces_get(); + + public final static native long picker_log_alert_sequential_pieces_get(); + + public final static native long picker_log_alert_reverse_pieces_get(); + + public final static native long picker_log_alert_time_critical_get(); + + public final static native long picker_log_alert_random_pieces_get(); + + public final static native long picker_log_alert_prefer_contiguous_get(); + + public final static native long picker_log_alert_reverse_sequential_get(); + + public final static native long picker_log_alert_backup1_get(); + + public final static native long picker_log_alert_backup2_get(); + + public final static native long picker_log_alert_end_game_get(); + + public final static native long picker_log_alert_extent_affinity_get(); + + public final static native long picker_log_alert_picker_flags_get(long jarg1, picker_log_alert jarg1_); + + public final static native void delete_picker_log_alert(long jarg1); + + public final static native int session_error_alert_priority_get(); + + public final static native int session_error_alert_alert_type_get(); + + public final static native int session_error_alert_type(long jarg1, session_error_alert jarg1_); + + public final static native long session_error_alert_category(long jarg1, session_error_alert jarg1_); + + public final static native String session_error_alert_what(long jarg1, session_error_alert jarg1_); + + public final static native long session_error_alert_static_category_get(); + + public final static native String session_error_alert_message(long jarg1, session_error_alert jarg1_); + + public final static native long session_error_alert_error_get(long jarg1, session_error_alert jarg1_); + + public final static native void delete_session_error_alert(long jarg1); + + public final static native int dht_live_nodes_alert_priority_get(); + + public final static native int dht_live_nodes_alert_alert_type_get(); + + public final static native int dht_live_nodes_alert_type(long jarg1, dht_live_nodes_alert jarg1_); + + public final static native long dht_live_nodes_alert_category(long jarg1, dht_live_nodes_alert jarg1_); + + public final static native String dht_live_nodes_alert_what(long jarg1, dht_live_nodes_alert jarg1_); + + public final static native long dht_live_nodes_alert_static_category_get(); + + public final static native String dht_live_nodes_alert_message(long jarg1, dht_live_nodes_alert jarg1_); + + public final static native void dht_live_nodes_alert_node_id_set(long jarg1, dht_live_nodes_alert jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long dht_live_nodes_alert_node_id_get(long jarg1, dht_live_nodes_alert jarg1_); + + public final static native int dht_live_nodes_alert_num_nodes(long jarg1, dht_live_nodes_alert jarg1_); + + public final static native long dht_live_nodes_alert_nodes(long jarg1, dht_live_nodes_alert jarg1_); + + public final static native void delete_dht_live_nodes_alert(long jarg1); + + public final static native int session_stats_header_alert_priority_get(); + + public final static native int session_stats_header_alert_alert_type_get(); + + public final static native int session_stats_header_alert_type(long jarg1, session_stats_header_alert jarg1_); + + public final static native long session_stats_header_alert_category(long jarg1, session_stats_header_alert jarg1_); + + public final static native String session_stats_header_alert_what(long jarg1, session_stats_header_alert jarg1_); + + public final static native long session_stats_header_alert_static_category_get(); + + public final static native String session_stats_header_alert_message(long jarg1, session_stats_header_alert jarg1_); + + public final static native void delete_session_stats_header_alert(long jarg1); + + public final static native long dht_sample_infohashes_alert_static_category_get(); + + public final static native int dht_sample_infohashes_alert_priority_get(); + + public final static native int dht_sample_infohashes_alert_alert_type_get(); + + public final static native int dht_sample_infohashes_alert_type(long jarg1, dht_sample_infohashes_alert jarg1_); + + public final static native long dht_sample_infohashes_alert_category(long jarg1, dht_sample_infohashes_alert jarg1_); + + public final static native String dht_sample_infohashes_alert_what(long jarg1, dht_sample_infohashes_alert jarg1_); + + public final static native String dht_sample_infohashes_alert_message(long jarg1, dht_sample_infohashes_alert jarg1_); + + public final static native int dht_sample_infohashes_alert_num_infohashes_get(long jarg1, dht_sample_infohashes_alert jarg1_); + + public final static native int dht_sample_infohashes_alert_num_samples(long jarg1, dht_sample_infohashes_alert jarg1_); + + public final static native long dht_sample_infohashes_alert_samples(long jarg1, dht_sample_infohashes_alert jarg1_); + + public final static native int dht_sample_infohashes_alert_num_nodes(long jarg1, dht_sample_infohashes_alert jarg1_); + + public final static native long dht_sample_infohashes_alert_nodes(long jarg1, dht_sample_infohashes_alert jarg1_); + + public final static native long dht_sample_infohashes_alert_get_endpoint(long jarg1, dht_sample_infohashes_alert jarg1_); + + public final static native long dht_sample_infohashes_alert_get_interval(long jarg1, dht_sample_infohashes_alert jarg1_); + + public final static native void delete_dht_sample_infohashes_alert(long jarg1); + + public final static native int block_uploaded_alert_priority_get(); + + public final static native int block_uploaded_alert_alert_type_get(); + + public final static native int block_uploaded_alert_type(long jarg1, block_uploaded_alert jarg1_); + + public final static native long block_uploaded_alert_category(long jarg1, block_uploaded_alert jarg1_); + + public final static native String block_uploaded_alert_what(long jarg1, block_uploaded_alert jarg1_); + + public final static native long block_uploaded_alert_static_category_get(); + + public final static native String block_uploaded_alert_message(long jarg1, block_uploaded_alert jarg1_); + + public final static native int block_uploaded_alert_block_index_get(long jarg1, block_uploaded_alert jarg1_); + + public final static native int block_uploaded_alert_piece_index_get(long jarg1, block_uploaded_alert jarg1_); + + public final static native void delete_block_uploaded_alert(long jarg1); + + public final static native int alerts_dropped_alert_priority_get(); + + public final static native int alerts_dropped_alert_alert_type_get(); + + public final static native int alerts_dropped_alert_type(long jarg1, alerts_dropped_alert jarg1_); + + public final static native long alerts_dropped_alert_category(long jarg1, alerts_dropped_alert jarg1_); + + public final static native String alerts_dropped_alert_what(long jarg1, alerts_dropped_alert jarg1_); + + public final static native long alerts_dropped_alert_static_category_get(); + + public final static native String alerts_dropped_alert_message(long jarg1, alerts_dropped_alert jarg1_); + + public final static native void alerts_dropped_alert_dropped_alerts_set(long jarg1, alerts_dropped_alert jarg1_, long jarg2); + + public final static native long alerts_dropped_alert_dropped_alerts_get(long jarg1, alerts_dropped_alert jarg1_); + + public final static native void delete_alerts_dropped_alert(long jarg1); + + public final static native int socks5_alert_priority_get(); + + public final static native int socks5_alert_alert_type_get(); + + public final static native int socks5_alert_type(long jarg1, socks5_alert jarg1_); + + public final static native long socks5_alert_category(long jarg1, socks5_alert jarg1_); + + public final static native String socks5_alert_what(long jarg1, socks5_alert jarg1_); + + public final static native long socks5_alert_static_category_get(); + + public final static native String socks5_alert_message(long jarg1, socks5_alert jarg1_); + + public final static native void socks5_alert_error_set(long jarg1, socks5_alert jarg1_, long jarg2, error_code jarg2_); + + public final static native long socks5_alert_error_get(long jarg1, socks5_alert jarg1_); + + public final static native void socks5_alert_op_set(long jarg1, socks5_alert jarg1_, int jarg2); + + public final static native int socks5_alert_op_get(long jarg1, socks5_alert jarg1_); + + public final static native void socks5_alert_ip_set(long jarg1, socks5_alert jarg1_, long jarg2); + + public final static native long socks5_alert_ip_get(long jarg1, socks5_alert jarg1_); + + public final static native void delete_socks5_alert(long jarg1); + + public final static native String performance_warning_str(int jarg1); + + public final static native int default_int_value(int jarg1); + + public final static native int setting_by_name(long jarg1, string_view jarg1_); + + public final static native String name_for_setting(int jarg1); + + public final static native long default_settings(); + + public final static native long new_settings_pack__SWIG_0(); + + public final static native long new_settings_pack__SWIG_1(long jarg1, settings_pack jarg1_); + + public final static native void settings_pack_set_str(long jarg1, settings_pack jarg1_, int jarg2, String jarg3); + + public final static native void settings_pack_set_int(long jarg1, settings_pack jarg1_, int jarg2, int jarg3); + + public final static native void settings_pack_set_bool(long jarg1, settings_pack jarg1_, int jarg2, boolean jarg3); + + public final static native boolean settings_pack_has_val(long jarg1, settings_pack jarg1_, int jarg2); + + public final static native void settings_pack_clear__SWIG_0(long jarg1, settings_pack jarg1_); + + public final static native void settings_pack_clear__SWIG_1(long jarg1, settings_pack jarg1_, int jarg2); + + public final static native String settings_pack_get_str(long jarg1, settings_pack jarg1_, int jarg2); + + public final static native int settings_pack_get_int(long jarg1, settings_pack jarg1_, int jarg2); + + public final static native boolean settings_pack_get_bool(long jarg1, settings_pack jarg1_, int jarg2); + + public final static native int settings_pack_string_type_base_get(); + + public final static native int settings_pack_int_type_base_get(); + + public final static native int settings_pack_bool_type_base_get(); + + public final static native int settings_pack_type_mask_get(); + + public final static native int settings_pack_index_mask_get(); + + public final static native int settings_pack_user_agent_get(); + + public final static native int settings_pack_handshake_client_version_get(); + + public final static native int settings_pack_allow_multiple_connections_per_ip_get(); + + public final static native int settings_pack_send_redundant_have_get(); + + public final static native int settings_pack_use_dht_as_fallback_get(); + + public final static native int settings_pack_coalesce_reads_get(); + + public final static native int settings_pack_disable_hash_checks_get(); + + public final static native int settings_pack_volatile_read_cache_get(); + + public final static native int settings_pack_no_atime_storage_get(); + + public final static native int settings_pack_enable_outgoing_utp_get(); + + public final static native int settings_pack_no_recheck_incomplete_resume_get(); + + public final static native int settings_pack_seeding_outgoing_connections_get(); + + public final static native int settings_pack_ban_web_seeds_get(); + + public final static native int settings_pack_support_share_mode_get(); + + public final static native int settings_pack_announce_crypto_support_get(); + + public final static native int settings_pack_tracker_completion_timeout_get(); + + public final static native int settings_pack_cache_expiry_get(); + + public final static native int settings_pack_auto_manage_interval_get(); + + public final static native int settings_pack_read_cache_line_size_get(); + + public final static native int settings_pack_num_optimistic_unchoke_slots_get(); + + public final static native int settings_pack_dht_upload_rate_limit_get(); + + public final static native int settings_pack_connections_limit_get(); + + public final static native int settings_pack_utp_loss_multiplier_get(); + + public final static native int settings_pack_checking_mem_usage_get(); + + public final static native int settings_pack_tracker_backoff_get(); + + public final static native int settings_pack_num_string_settings_get(); + + public final static native int settings_pack_num_bool_settings_get(); + + public final static native int settings_pack_num_int_settings_get(); + + public final static native int settings_pack_no_piece_suggestions_get(); + + public final static native int settings_pack_suggest_read_cache_get(); + + public final static native int settings_pack_fixed_slots_choker_get(); + + public final static native int settings_pack_rate_based_choker_get(); + + public final static native int settings_pack_enable_os_cache_get(); + + public final static native int settings_pack_deprecated_disable_os_cache_for_aligned_files_get(); + + public final static native int settings_pack_disable_os_cache_get(); + + public final static native int settings_pack_prefer_tcp_get(); + + public final static native int settings_pack_peer_proportional_get(); + + public final static native int settings_pack_pe_plaintext_get(); + + public final static native int settings_pack_pe_rc4_get(); + + public final static native int settings_pack_pe_both_get(); + + public final static native void delete_settings_pack(long jarg1); + + public final static native long new_peer_class_type_filter(); + + public final static native int peer_class_type_filter_tcp_socket_get(); + + public final static native void peer_class_type_filter_add(long jarg1, peer_class_type_filter jarg1_, int jarg2, int jarg3); + + public final static native void peer_class_type_filter_remove(long jarg1, peer_class_type_filter jarg1_, int jarg2, int jarg3); + + public final static native void peer_class_type_filter_disallow(long jarg1, peer_class_type_filter jarg1_, int jarg2, int jarg3); + + public final static native void peer_class_type_filter_allow(long jarg1, peer_class_type_filter jarg1_, int jarg2, int jarg3); + + public final static native long peer_class_type_filter_apply(long jarg1, peer_class_type_filter jarg1_, int jarg2, long jarg3); + + public final static native boolean op_eq__SWIG_0(long jarg1, peer_class_type_filter jarg1_, long jarg2, peer_class_type_filter jarg2_); + + public final static native void delete_peer_class_type_filter(long jarg1); + + public final static native boolean op_lte(long jarg1, address jarg1_, long jarg2, address jarg2_); + + public final static native int ip_filter_blocked_get(); + + public final static native void ip_filter_add_rule(long jarg1, ip_filter jarg1_, long jarg2, address jarg2_, long jarg3, address jarg3_, long jarg4); + + public final static native long ip_filter_access(long jarg1, ip_filter jarg1_, long jarg2, address jarg2_); + + public final static native long new_ip_filter(); + + public final static native void delete_ip_filter(long jarg1); + + public final static native int port_filter_blocked_get(); + + public final static native void port_filter_add_rule(long jarg1, port_filter jarg1_, int jarg2, int jarg3, long jarg4); + + public final static native long port_filter_access(long jarg1, port_filter jarg1_, int jarg2); + + public final static native long new_port_filter(); + + public final static native void delete_port_filter(long jarg1); + + public final static native long new_session_handle__SWIG_0(); + + public final static native long new_session_handle__SWIG_1(long jarg1, session_handle jarg1_); + + public final static native boolean session_handle_is_valid(long jarg1, session_handle jarg1_); + + public final static native long session_handle_save_settings_get(); + + public final static native long session_handle_save_dht_settings_get(); + + public final static native long session_handle_save_dht_state_get(); + + public final static native void session_handle_save_state__SWIG_0(long jarg1, session_handle jarg1_, long jarg2, entry jarg2_, long jarg3, save_state_flags_t jarg3_); + + public final static native void session_handle_save_state__SWIG_1(long jarg1, session_handle jarg1_, long jarg2, entry jarg2_); + + public final static native void session_handle_load_state__SWIG_0(long jarg1, session_handle jarg1_, long jarg2, bdecode_node jarg2_, long jarg3, save_state_flags_t jarg3_); + + public final static native void session_handle_load_state__SWIG_1(long jarg1, session_handle jarg1_, long jarg2, bdecode_node jarg2_); + + public final static native void session_handle_refresh_torrent_status__SWIG_0(long jarg1, session_handle jarg1_, long jarg2, torrent_status_vector jarg2_, long jarg3, status_flags_t jarg3_); + + public final static native void session_handle_refresh_torrent_status__SWIG_1(long jarg1, session_handle jarg1_, long jarg2, torrent_status_vector jarg2_); + + public final static native void session_handle_post_torrent_updates__SWIG_0(long jarg1, session_handle jarg1_, long jarg2, status_flags_t jarg2_); + + public final static native void session_handle_post_torrent_updates__SWIG_1(long jarg1, session_handle jarg1_); + + public final static native void session_handle_post_session_stats(long jarg1, session_handle jarg1_); + + public final static native void session_handle_post_dht_stats(long jarg1, session_handle jarg1_); + + public final static native long session_handle_find_torrent(long jarg1, session_handle jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long session_handle_get_torrents(long jarg1, session_handle jarg1_); + + public final static native long session_handle_add_torrent(long jarg1, session_handle jarg1_, long jarg2, add_torrent_params jarg2_, long jarg3, error_code jarg3_); + + public final static native void session_handle_async_add_torrent(long jarg1, session_handle jarg1_, long jarg2, add_torrent_params jarg2_); + + public final static native void session_handle_pause(long jarg1, session_handle jarg1_); + + public final static native void session_handle_resume(long jarg1, session_handle jarg1_); + + public final static native boolean session_handle_is_paused(long jarg1, session_handle jarg1_); + + public final static native int session_handle_disk_cache_no_pieces_get(); + + public final static native void session_handle_set_dht_settings(long jarg1, session_handle jarg1_, long jarg2, dht_settings jarg2_); + + public final static native boolean session_handle_is_dht_running(long jarg1, session_handle jarg1_); + + public final static native long session_handle_get_dht_settings(long jarg1, session_handle jarg1_); + + public final static native void session_handle_add_dht_node(long jarg1, session_handle jarg1_, long jarg2, string_int_pair jarg2_); + + public final static native void session_handle_dht_get_item__SWIG_0(long jarg1, session_handle jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native long session_handle_dht_put_item__SWIG_0(long jarg1, session_handle jarg1_, long jarg2, entry jarg2_); + + public final static native void session_handle_dht_get_peers(long jarg1, session_handle jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native void session_handle_dht_announce__SWIG_0(long jarg1, session_handle jarg1_, long jarg2, sha1_hash jarg2_, int jarg3, int jarg4); + + public final static native void session_handle_dht_announce__SWIG_1(long jarg1, session_handle jarg1_, long jarg2, sha1_hash jarg2_, int jarg3); + + public final static native void session_handle_dht_announce__SWIG_2(long jarg1, session_handle jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native void session_handle_dht_live_nodes(long jarg1, session_handle jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native void session_handle_dht_sample_infohashes(long jarg1, session_handle jarg1_, long jarg2, udp_endpoint jarg2_, long jarg3, sha1_hash jarg3_); + + public final static native void session_handle_dht_direct_request__SWIG_0(long jarg1, session_handle jarg1_, long jarg2, udp_endpoint jarg2_, long jarg3, entry jarg3_); + + public final static native void session_handle_set_ip_filter(long jarg1, session_handle jarg1_, long jarg2, ip_filter jarg2_); + + public final static native long session_handle_get_ip_filter(long jarg1, session_handle jarg1_); + + public final static native void session_handle_set_port_filter(long jarg1, session_handle jarg1_, long jarg2, port_filter jarg2_); + + public final static native int session_handle_global_peer_class_id_get(); + + public final static native int session_handle_tcp_peer_class_id_get(); + + public final static native int session_handle_local_peer_class_id_get(); + + public final static native int session_handle_listen_port(long jarg1, session_handle jarg1_); + + public final static native int session_handle_ssl_listen_port(long jarg1, session_handle jarg1_); + + public final static native boolean session_handle_is_listening(long jarg1, session_handle jarg1_); + + public final static native void session_handle_set_peer_class_filter(long jarg1, session_handle jarg1_, long jarg2, ip_filter jarg2_); + + public final static native long session_handle_get_peer_class_filter(long jarg1, session_handle jarg1_); + + public final static native void session_handle_set_peer_class_type_filter(long jarg1, session_handle jarg1_, long jarg2, peer_class_type_filter jarg2_); + + public final static native long session_handle_get_peer_class_type_filter(long jarg1, session_handle jarg1_); + + public final static native int session_handle_create_peer_class(long jarg1, session_handle jarg1_, String jarg2); + + public final static native void session_handle_delete_peer_class(long jarg1, session_handle jarg1_, int jarg2); + + public final static native long session_handle_get_peer_class(long jarg1, session_handle jarg1_, int jarg2); + + public final static native void session_handle_set_peer_class(long jarg1, session_handle jarg1_, int jarg2, long jarg3, peer_class_info jarg3_); + + public final static native long session_handle_delete_files_get(); + + public final static native long session_handle_delete_partfile_get(); + + public final static native long session_handle_paused_get(); + + public final static native void session_handle_remove_torrent__SWIG_0(long jarg1, session_handle jarg1_, long jarg2, torrent_handle jarg2_, long jarg3, remove_flags_t jarg3_); + + public final static native void session_handle_remove_torrent__SWIG_1(long jarg1, session_handle jarg1_, long jarg2, torrent_handle jarg2_); + + public final static native void session_handle_apply_settings(long jarg1, session_handle jarg1_, long jarg2, settings_pack jarg2_); + + public final static native long session_handle_get_settings(long jarg1, session_handle jarg1_); + + public final static native void session_handle_pop_alerts(long jarg1, session_handle jarg1_, long jarg2, alert_ptr_vector jarg2_); + + public final static native int session_handle_udp_get(); + + public final static native int session_handle_tcp_get(); + + public final static native long session_handle_add_port_mapping(long jarg1, session_handle jarg1_, int jarg2, int jarg3, int jarg4); + + public final static native void session_handle_delete_port_mapping(long jarg1, session_handle jarg1_, int jarg2); + + public final static native long session_handle_reopen_map_ports_get(); + + public final static native void session_handle_reopen_network_sockets__SWIG_0(long jarg1, session_handle jarg1_, long jarg2, reopen_network_flags_t jarg2_); + + public final static native void session_handle_reopen_network_sockets__SWIG_1(long jarg1, session_handle jarg1_); + + public final static native void session_handle_dht_get_item__SWIG_1(long jarg1, session_handle jarg1_, long jarg2, byte_vector jarg2_, long jarg3, byte_vector jarg3_); + + public final static native void session_handle_dht_put_item__SWIG_1(long jarg1, session_handle jarg1_, long jarg2, byte_vector jarg2_, long jarg3, byte_vector jarg3_, long jarg4, entry jarg4_, long jarg5, byte_vector jarg5_); + + public final static native void session_handle_dht_direct_request__SWIG_1(long jarg1, session_handle jarg1_, long jarg2, udp_endpoint jarg2_, long jarg3, entry jarg3_, long jarg4); + + public final static native long session_handle_wait_for_alert_ms(long jarg1, session_handle jarg1_, long jarg2); + + public final static native void session_handle_set_alert_notify_callback(long jarg1, session_handle jarg1_, long jarg2, alert_notify_callback jarg2_); + + public final static native void session_handle_add_extension(long jarg1, session_handle jarg1_, long jarg2, swig_plugin jarg2_); + + public final static native void delete_session_handle(long jarg1); + + public final static native void dht_state_nids_set(long jarg1, dht_state jarg1_, long jarg2, address_sha1_hash_pair_vector jarg2_); + + public final static native long dht_state_nids_get(long jarg1, dht_state jarg1_); + + public final static native void dht_state_nodes_set(long jarg1, dht_state jarg1_, long jarg2, udp_endpoint_vector jarg2_); + + public final static native long dht_state_nodes_get(long jarg1, dht_state jarg1_); + + public final static native void dht_state_nodes6_set(long jarg1, dht_state jarg1_, long jarg2, udp_endpoint_vector jarg2_); + + public final static native long dht_state_nodes6_get(long jarg1, dht_state jarg1_); + + public final static native void dht_state_clear(long jarg1, dht_state jarg1_); + + public final static native long new_dht_state(); + + public final static native void delete_dht_state(long jarg1); + + public final static native void dht_settings_max_peers_reply_set(long jarg1, dht_settings jarg1_, int jarg2); + + public final static native int dht_settings_max_peers_reply_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_search_branching_set(long jarg1, dht_settings jarg1_, int jarg2); + + public final static native int dht_settings_search_branching_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_max_fail_count_set(long jarg1, dht_settings jarg1_, int jarg2); + + public final static native int dht_settings_max_fail_count_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_max_torrents_set(long jarg1, dht_settings jarg1_, int jarg2); + + public final static native int dht_settings_max_torrents_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_max_dht_items_set(long jarg1, dht_settings jarg1_, int jarg2); + + public final static native int dht_settings_max_dht_items_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_max_peers_set(long jarg1, dht_settings jarg1_, int jarg2); + + public final static native int dht_settings_max_peers_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_max_torrent_search_reply_set(long jarg1, dht_settings jarg1_, int jarg2); + + public final static native int dht_settings_max_torrent_search_reply_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_restrict_routing_ips_set(long jarg1, dht_settings jarg1_, boolean jarg2); + + public final static native boolean dht_settings_restrict_routing_ips_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_restrict_search_ips_set(long jarg1, dht_settings jarg1_, boolean jarg2); + + public final static native boolean dht_settings_restrict_search_ips_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_extended_routing_table_set(long jarg1, dht_settings jarg1_, boolean jarg2); + + public final static native boolean dht_settings_extended_routing_table_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_aggressive_lookups_set(long jarg1, dht_settings jarg1_, boolean jarg2); + + public final static native boolean dht_settings_aggressive_lookups_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_privacy_lookups_set(long jarg1, dht_settings jarg1_, boolean jarg2); + + public final static native boolean dht_settings_privacy_lookups_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_enforce_node_id_set(long jarg1, dht_settings jarg1_, boolean jarg2); + + public final static native boolean dht_settings_enforce_node_id_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_ignore_dark_internet_set(long jarg1, dht_settings jarg1_, boolean jarg2); + + public final static native boolean dht_settings_ignore_dark_internet_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_block_timeout_set(long jarg1, dht_settings jarg1_, int jarg2); + + public final static native int dht_settings_block_timeout_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_block_ratelimit_set(long jarg1, dht_settings jarg1_, int jarg2); + + public final static native int dht_settings_block_ratelimit_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_read_only_set(long jarg1, dht_settings jarg1_, boolean jarg2); + + public final static native boolean dht_settings_read_only_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_item_lifetime_set(long jarg1, dht_settings jarg1_, int jarg2); + + public final static native int dht_settings_item_lifetime_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_upload_rate_limit_set(long jarg1, dht_settings jarg1_, int jarg2); + + public final static native int dht_settings_upload_rate_limit_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_sample_infohashes_interval_set(long jarg1, dht_settings jarg1_, int jarg2); + + public final static native int dht_settings_sample_infohashes_interval_get(long jarg1, dht_settings jarg1_); + + public final static native void dht_settings_max_infohashes_sample_count_set(long jarg1, dht_settings jarg1_, int jarg2); + + public final static native int dht_settings_max_infohashes_sample_count_get(long jarg1, dht_settings jarg1_); + + public final static native long new_dht_settings(); + + public final static native void delete_dht_settings(long jarg1); + + public final static native void settings_prefer_verified_node_ids_set(long jarg1, settings jarg1_, boolean jarg2); + + public final static native boolean settings_prefer_verified_node_ids_get(long jarg1, settings jarg1_); + + public final static native long new_settings(); + + public final static native void delete_settings(long jarg1); + + public final static native long min_memory_usage(); + + public final static native long high_performance_seed(); + + public final static native long new_session_proxy__SWIG_0(); + + public final static native void delete_session_proxy(long jarg1); + + public final static native long new_session_proxy__SWIG_1(long jarg1, session_proxy jarg1_); + + public final static native long new_session_params__SWIG_0(long jarg1, settings_pack jarg1_); + + public final static native long new_session_params__SWIG_1(); + + public final static native long new_session_params__SWIG_2(long jarg1, session_params jarg1_); + + public final static native void session_params_settings_set(long jarg1, session_params jarg1_, long jarg2, settings_pack jarg2_); + + public final static native long session_params_settings_get(long jarg1, session_params jarg1_); + + public final static native void session_params_dht_settings_set(long jarg1, session_params jarg1_, long jarg2, dht_settings jarg2_); + + public final static native long session_params_dht_settings_get(long jarg1, session_params jarg1_); + + public final static native void session_params_dht_state_set(long jarg1, session_params jarg1_, long jarg2, dht_state jarg2_); + + public final static native long session_params_dht_state_get(long jarg1, session_params jarg1_); + + public final static native void delete_session_params(long jarg1); + + public final static native long read_session_params__SWIG_0(long jarg1, bdecode_node jarg1_, long jarg2, save_state_flags_t jarg2_); + + public final static native long read_session_params__SWIG_1(long jarg1, bdecode_node jarg1_); + + public final static native long new_session__SWIG_0(long jarg1, session_params jarg1_); + + public final static native long new_session__SWIG_1(long jarg1, session_params jarg1_, long jarg2, session_flags_t jarg2_); + + public final static native long new_session__SWIG_3(); + + public final static native long new_session__SWIG_4(long jarg1, settings_pack jarg1_, long jarg2, session_flags_t jarg2_); + + public final static native long new_session__SWIG_5(long jarg1, settings_pack jarg1_); + + public final static native long new_session__SWIG_6(long jarg1, session jarg1_); + + public final static native void delete_session(long jarg1); + + public final static native long session_abort(long jarg1, session jarg1_); + + public final static native int peer_connection_handle_type(long jarg1, peer_connection_handle jarg1_); + + public final static native boolean peer_connection_handle_is_seed(long jarg1, peer_connection_handle jarg1_); + + public final static native boolean peer_connection_handle_upload_only(long jarg1, peer_connection_handle jarg1_); + + public final static native long peer_connection_handle_pid(long jarg1, peer_connection_handle jarg1_); + + public final static native boolean peer_connection_handle_has_piece(long jarg1, peer_connection_handle jarg1_, int jarg2); + + public final static native boolean peer_connection_handle_is_interesting(long jarg1, peer_connection_handle jarg1_); + + public final static native boolean peer_connection_handle_is_choked(long jarg1, peer_connection_handle jarg1_); + + public final static native boolean peer_connection_handle_is_peer_interested(long jarg1, peer_connection_handle jarg1_); + + public final static native boolean peer_connection_handle_has_peer_choked(long jarg1, peer_connection_handle jarg1_); + + public final static native void peer_connection_handle_choke_this_peer(long jarg1, peer_connection_handle jarg1_); + + public final static native void peer_connection_handle_maybe_unchoke_this_peer(long jarg1, peer_connection_handle jarg1_); + + public final static native void peer_connection_handle_get_peer_info(long jarg1, peer_connection_handle jarg1_, long jarg2, peer_info jarg2_); + + public final static native long peer_connection_handle_associated_torrent(long jarg1, peer_connection_handle jarg1_); + + public final static native long peer_connection_handle_remote(long jarg1, peer_connection_handle jarg1_); + + public final static native long peer_connection_handle_local_endpoint(long jarg1, peer_connection_handle jarg1_); + + public final static native void peer_connection_handle_disconnect__SWIG_0(long jarg1, peer_connection_handle jarg1_, long jarg2, error_code jarg2_, int jarg3, int jarg4); + + public final static native void peer_connection_handle_disconnect__SWIG_1(long jarg1, peer_connection_handle jarg1_, long jarg2, error_code jarg2_, int jarg3); + + public final static native boolean peer_connection_handle_is_disconnecting(long jarg1, peer_connection_handle jarg1_); + + public final static native boolean peer_connection_handle_is_connecting(long jarg1, peer_connection_handle jarg1_); + + public final static native boolean peer_connection_handle_is_outgoing(long jarg1, peer_connection_handle jarg1_); + + public final static native boolean peer_connection_handle_on_local_network(long jarg1, peer_connection_handle jarg1_); + + public final static native boolean peer_connection_handle_ignore_unchoke_slots(long jarg1, peer_connection_handle jarg1_); + + public final static native boolean peer_connection_handle_failed(long jarg1, peer_connection_handle jarg1_); + + public final static native boolean peer_connection_handle_can_disconnect(long jarg1, peer_connection_handle jarg1_, long jarg2, error_code jarg2_); + + public final static native boolean peer_connection_handle_has_metadata(long jarg1, peer_connection_handle jarg1_); + + public final static native boolean peer_connection_handle_in_handshake(long jarg1, peer_connection_handle jarg1_); + + public final static native void peer_connection_handle_send_buffer(long jarg1, peer_connection_handle jarg1_, String jarg2, int jarg3); + + public final static native long peer_connection_handle_last_seen_complete(long jarg1, peer_connection_handle jarg1_); + + public final static native boolean peer_connection_handle_op_eq(long jarg1, peer_connection_handle jarg1_, long jarg2, peer_connection_handle jarg2_); + + public final static native boolean peer_connection_handle_op_ne(long jarg1, peer_connection_handle jarg1_, long jarg2, peer_connection_handle jarg2_); + + public final static native boolean peer_connection_handle_op_lt(long jarg1, peer_connection_handle jarg1_, long jarg2, peer_connection_handle jarg2_); + + public final static native long peer_connection_handle_get_time_of_last_unchoke(long jarg1, peer_connection_handle jarg1_); + + public final static native void delete_peer_connection_handle(long jarg1); + + public final static native long new_bt_peer_connection_handle(long jarg1, peer_connection_handle jarg1_); + + public final static native boolean bt_peer_connection_handle_packet_finished(long jarg1, bt_peer_connection_handle jarg1_); + + public final static native boolean bt_peer_connection_handle_support_extensions(long jarg1, bt_peer_connection_handle jarg1_); + + public final static native boolean bt_peer_connection_handle_supports_encryption(long jarg1, bt_peer_connection_handle jarg1_); + + public final static native void delete_bt_peer_connection_handle(long jarg1); + + public final static native String make_magnet_uri__SWIG_0(long jarg1, torrent_handle jarg1_); + + public final static native String make_magnet_uri__SWIG_1(long jarg1, torrent_info jarg1_); + + public final static native long create_torrent_optimize_alignment_get(); + + public final static native long create_torrent_merkle_get(); + + public final static native long create_torrent_modification_time_get(); + + public final static native long create_torrent_symlinks_get(); + + public final static native long create_torrent_mutable_torrent_support_get(); + + public final static native long new_create_torrent__SWIG_0(long jarg1, file_storage jarg1_, int jarg2, int jarg3, long jarg4, create_flags_t jarg4_, int jarg5); + + public final static native long new_create_torrent__SWIG_1(long jarg1, file_storage jarg1_, int jarg2, int jarg3, long jarg4, create_flags_t jarg4_); + + public final static native long new_create_torrent__SWIG_2(long jarg1, file_storage jarg1_, int jarg2, int jarg3); + + public final static native long new_create_torrent__SWIG_3(long jarg1, file_storage jarg1_, int jarg2); + + public final static native long new_create_torrent__SWIG_4(long jarg1, file_storage jarg1_); + + public final static native long new_create_torrent__SWIG_5(long jarg1, torrent_info jarg1_); + + public final static native void delete_create_torrent(long jarg1); + + public final static native long create_torrent_generate(long jarg1, create_torrent jarg1_); + + public final static native long create_torrent_files(long jarg1, create_torrent jarg1_); + + public final static native void create_torrent_set_comment(long jarg1, create_torrent jarg1_, String jarg2); + + public final static native void create_torrent_set_creator(long jarg1, create_torrent jarg1_, String jarg2); + + public final static native void create_torrent_set_hash(long jarg1, create_torrent jarg1_, int jarg2, long jarg3, sha1_hash jarg3_); + + public final static native void create_torrent_set_file_hash(long jarg1, create_torrent jarg1_, int jarg2, long jarg3, sha1_hash jarg3_); + + public final static native void create_torrent_add_node(long jarg1, create_torrent jarg1_, long jarg2, string_int_pair jarg2_); + + public final static native void create_torrent_set_priv(long jarg1, create_torrent jarg1_, boolean jarg2); + + public final static native boolean create_torrent_priv(long jarg1, create_torrent jarg1_); + + public final static native int create_torrent_num_pieces(long jarg1, create_torrent jarg1_); + + public final static native int create_torrent_piece_length(long jarg1, create_torrent jarg1_); + + public final static native int create_torrent_piece_size(long jarg1, create_torrent jarg1_, int jarg2); + + public final static native long create_torrent_merkle_tree(long jarg1, create_torrent jarg1_); + + public final static native void create_torrent_add_similar_torrent(long jarg1, create_torrent jarg1_, long jarg2, sha1_hash jarg2_); + + public final static native void create_torrent_add_url_seed(long jarg1, create_torrent jarg1_, String jarg2); + + public final static native void create_torrent_add_http_seed(long jarg1, create_torrent jarg1_, String jarg2); + + public final static native void create_torrent_add_tracker(long jarg1, create_torrent jarg1_, String jarg2, int jarg3); + + public final static native void create_torrent_add_collection(long jarg1, create_torrent jarg1_, String jarg2); + + public final static native void create_torrent_set_root_cert2(long jarg1, create_torrent jarg1_, long jarg2, byte_vector jarg2_); + + public final static native void add_files__SWIG_0(long jarg1, file_storage jarg1_, String jarg2, long jarg3, create_flags_t jarg3_); + + public final static native void add_files__SWIG_1(long jarg1, file_storage jarg1_, String jarg2); + + public final static native void set_piece_hashes(long jarg1, create_torrent jarg1_, String jarg2, long jarg3, error_code jarg3_); + + public final static native String generate_fingerprint(String jarg1, int jarg2, int jarg3, int jarg4, int jarg5); + + public final static native long ed25519_create_seed(); + + public final static native long ed25519_create_keypair(long jarg1, byte_vector jarg1_); + + public final static native long ed25519_sign(long jarg1, byte_vector jarg1_, long jarg2, byte_vector jarg2_, long jarg3, byte_vector jarg3_); + + public final static native boolean ed25519_verify(long jarg1, byte_vector jarg1_, long jarg2, byte_vector jarg2_, long jarg3, byte_vector jarg3_); + + public final static native long ed25519_add_scalar_public(long jarg1, byte_vector jarg1_, long jarg2, byte_vector jarg2_); + + public final static native long ed25519_add_scalar_secret(long jarg1, byte_vector jarg1_, long jarg2, byte_vector jarg2_); + + public final static native long ed25519_key_exchange(long jarg1, byte_vector jarg1_, long jarg2, byte_vector jarg2_); + + public final static native void delete_alert_notify_callback(long jarg1); + + public final static native void alert_notify_callback_on_alert(long jarg1, alert_notify_callback jarg1_); + + public final static native void alert_notify_callback_on_alertSwigExplicitalert_notify_callback(long jarg1, alert_notify_callback jarg1_); + + public final static native long new_alert_notify_callback(); + + public final static native void alert_notify_callback_director_connect(alert_notify_callback obj, long cptr, boolean mem_own, boolean weak_global); + + public final static native void alert_notify_callback_change_ownership(alert_notify_callback obj, long cptr, boolean take_or_release); + + public final static native void delete_add_files_listener(long jarg1); + + public final static native boolean add_files_listener_pred(long jarg1, add_files_listener jarg1_, String jarg2); + + public final static native boolean add_files_listener_predSwigExplicitadd_files_listener(long jarg1, add_files_listener jarg1_, String jarg2); + + public final static native long new_add_files_listener(); + + public final static native void add_files_listener_director_connect(add_files_listener obj, long cptr, boolean mem_own, boolean weak_global); + + public final static native void add_files_listener_change_ownership(add_files_listener obj, long cptr, boolean take_or_release); + + public final static native void add_files_ex(long jarg1, file_storage jarg1_, String jarg2, long jarg3, add_files_listener jarg3_, long jarg4, create_flags_t jarg4_); + + public final static native void delete_set_piece_hashes_listener(long jarg1); + + public final static native void set_piece_hashes_listener_progress(long jarg1, set_piece_hashes_listener jarg1_, int jarg2); + + public final static native void set_piece_hashes_listener_progressSwigExplicitset_piece_hashes_listener(long jarg1, set_piece_hashes_listener jarg1_, int jarg2); + + public final static native long new_set_piece_hashes_listener(); + + public final static native void set_piece_hashes_listener_director_connect(set_piece_hashes_listener obj, long cptr, boolean mem_own, boolean weak_global); + + public final static native void set_piece_hashes_listener_change_ownership(set_piece_hashes_listener obj, long cptr, boolean take_or_release); + + public final static native void set_piece_hashes_ex(long jarg1, create_torrent jarg1_, String jarg2, long jarg3, set_piece_hashes_listener jarg3_, long jarg4, error_code jarg4_); + + public final static native int boost_version(); + + public final static native String boost_lib_version(); + + public final static native int openssl_version_number(); + + public final static native String openssl_version_text(); + + public final static native int find_metric_idx_s(String jarg1); + + public final static native void delete_swig_plugin(long jarg1); + + public final static native boolean swig_plugin_on_dht_request(long jarg1, swig_plugin jarg1_, long jarg2, string_view jarg2_, long jarg3, udp_endpoint jarg3_, long jarg4, bdecode_node jarg4_, long jarg5, entry jarg5_); + + public final static native boolean swig_plugin_on_dht_requestSwigExplicitswig_plugin(long jarg1, swig_plugin jarg1_, long jarg2, string_view jarg2_, long jarg3, udp_endpoint jarg3_, long jarg4, bdecode_node jarg4_, long jarg5, entry jarg5_); + + public final static native long new_swig_plugin(); + + public final static native void swig_plugin_director_connect(swig_plugin obj, long cptr, boolean mem_own, boolean weak_global); + + public final static native void swig_plugin_change_ownership(swig_plugin obj, long cptr, boolean take_or_release); + + public final static native void ip_interface_interface_address_set(long jarg1, ip_interface jarg1_, long jarg2, address jarg2_); + + public final static native long ip_interface_interface_address_get(long jarg1, ip_interface jarg1_); + + public final static native void ip_interface_netmask_set(long jarg1, ip_interface jarg1_, long jarg2, address jarg2_); + + public final static native long ip_interface_netmask_get(long jarg1, ip_interface jarg1_); + + public final static native void ip_interface_name_set(long jarg1, ip_interface jarg1_, long jarg2, byte_vector jarg2_); + + public final static native long ip_interface_name_get(long jarg1, ip_interface jarg1_); + + public final static native void ip_interface_friendly_name_set(long jarg1, ip_interface jarg1_, long jarg2, byte_vector jarg2_); + + public final static native long ip_interface_friendly_name_get(long jarg1, ip_interface jarg1_); + + public final static native void ip_interface_description_set(long jarg1, ip_interface jarg1_, long jarg2, byte_vector jarg2_); + + public final static native long ip_interface_description_get(long jarg1, ip_interface jarg1_); + + public final static native void ip_interface_preferred_set(long jarg1, ip_interface jarg1_, boolean jarg2); + + public final static native boolean ip_interface_preferred_get(long jarg1, ip_interface jarg1_); + + public final static native long new_ip_interface(); + + public final static native void delete_ip_interface(long jarg1); + + public final static native void ip_route_destination_set(long jarg1, ip_route jarg1_, long jarg2, address jarg2_); + + public final static native long ip_route_destination_get(long jarg1, ip_route jarg1_); + + public final static native void ip_route_netmask_set(long jarg1, ip_route jarg1_, long jarg2, address jarg2_); + + public final static native long ip_route_netmask_get(long jarg1, ip_route jarg1_); + + public final static native void ip_route_gateway_set(long jarg1, ip_route jarg1_, long jarg2, address jarg2_); + + public final static native long ip_route_gateway_get(long jarg1, ip_route jarg1_); + + public final static native void ip_route_source_hint_set(long jarg1, ip_route jarg1_, long jarg2, address jarg2_); + + public final static native long ip_route_source_hint_get(long jarg1, ip_route jarg1_); + + public final static native void ip_route_name_set(long jarg1, ip_route jarg1_, long jarg2, byte_vector jarg2_); + + public final static native long ip_route_name_get(long jarg1, ip_route jarg1_); + + public final static native void ip_route_mtu_set(long jarg1, ip_route jarg1_, int jarg2); + + public final static native int ip_route_mtu_get(long jarg1, ip_route jarg1_); + + public final static native long new_ip_route(); + + public final static native void delete_ip_route(long jarg1); + + public final static native long enum_net_interfaces(long jarg1, session jarg1_); + + public final static native long enum_routes(long jarg1, session jarg1_); + + public final static native void copy_byte_vector_to_char_array(long jarg1, byte_vector jarg1_, String jarg2, long jarg3); + + public final static native long get_gateway(long jarg1, ip_interface jarg1_, long jarg2, ip_route_vector jarg2_); + + public final static native boolean arm_neon_support(); + + public final static native void posix_stat_t_size_set(long jarg1, posix_stat_t jarg1_, long jarg2); + + public final static native long posix_stat_t_size_get(long jarg1, posix_stat_t jarg1_); + + public final static native void posix_stat_t_atime_set(long jarg1, posix_stat_t jarg1_, long jarg2); + + public final static native long posix_stat_t_atime_get(long jarg1, posix_stat_t jarg1_); + + public final static native void posix_stat_t_mtime_set(long jarg1, posix_stat_t jarg1_, long jarg2); + + public final static native long posix_stat_t_mtime_get(long jarg1, posix_stat_t jarg1_); + + public final static native void posix_stat_t_ctime_set(long jarg1, posix_stat_t jarg1_, long jarg2); + + public final static native long posix_stat_t_ctime_get(long jarg1, posix_stat_t jarg1_); + + public final static native void posix_stat_t_mode_set(long jarg1, posix_stat_t jarg1_, int jarg2); + + public final static native int posix_stat_t_mode_get(long jarg1, posix_stat_t jarg1_); + + public final static native long new_posix_stat_t(); + + public final static native void delete_posix_stat_t(long jarg1); + + public final static native void delete_posix_wrapper(long jarg1); + + public final static native int posix_wrapper_open(long jarg1, posix_wrapper jarg1_, String jarg2, int jarg3, int jarg4); + + public final static native int posix_wrapper_openSwigExplicitposix_wrapper(long jarg1, posix_wrapper jarg1_, String jarg2, int jarg3, int jarg4); + + public final static native int posix_wrapper_stat(long jarg1, posix_wrapper jarg1_, String jarg2, long jarg3, posix_stat_t jarg3_); + + public final static native int posix_wrapper_statSwigExplicitposix_wrapper(long jarg1, posix_wrapper jarg1_, String jarg2, long jarg3, posix_stat_t jarg3_); + + public final static native int posix_wrapper_mkdir(long jarg1, posix_wrapper jarg1_, String jarg2, int jarg3); + + public final static native int posix_wrapper_mkdirSwigExplicitposix_wrapper(long jarg1, posix_wrapper jarg1_, String jarg2, int jarg3); + + public final static native int posix_wrapper_rename(long jarg1, posix_wrapper jarg1_, String jarg2, String jarg3); + + public final static native int posix_wrapper_renameSwigExplicitposix_wrapper(long jarg1, posix_wrapper jarg1_, String jarg2, String jarg3); + + public final static native int posix_wrapper_remove(long jarg1, posix_wrapper jarg1_, String jarg2); + + public final static native int posix_wrapper_removeSwigExplicitposix_wrapper(long jarg1, posix_wrapper jarg1_, String jarg2); + + public final static native long new_posix_wrapper(); + + public final static native void posix_wrapper_director_connect(posix_wrapper obj, long cptr, boolean mem_own, boolean weak_global); + + public final static native void posix_wrapper_change_ownership(posix_wrapper obj, long cptr, boolean take_or_release); + + public final static native void set_posix_wrapper(long jarg1, posix_wrapper jarg1_); + + public final static native long torrent_alert_SWIGUpcast(long jarg1); + + public final static native long peer_alert_SWIGUpcast(long jarg1); + + public final static native long tracker_alert_SWIGUpcast(long jarg1); + + public final static native long torrent_removed_alert_SWIGUpcast(long jarg1); + + public final static native long read_piece_alert_SWIGUpcast(long jarg1); + + public final static native long file_completed_alert_SWIGUpcast(long jarg1); + + public final static native long file_renamed_alert_SWIGUpcast(long jarg1); + + public final static native long file_rename_failed_alert_SWIGUpcast(long jarg1); + + public final static native long performance_alert_SWIGUpcast(long jarg1); + + public final static native long state_changed_alert_SWIGUpcast(long jarg1); + + public final static native long tracker_error_alert_SWIGUpcast(long jarg1); + + public final static native long tracker_warning_alert_SWIGUpcast(long jarg1); + + public final static native long scrape_reply_alert_SWIGUpcast(long jarg1); + + public final static native long scrape_failed_alert_SWIGUpcast(long jarg1); + + public final static native long tracker_reply_alert_SWIGUpcast(long jarg1); + + public final static native long dht_reply_alert_SWIGUpcast(long jarg1); + + public final static native long tracker_announce_alert_SWIGUpcast(long jarg1); + + public final static native long hash_failed_alert_SWIGUpcast(long jarg1); + + public final static native long peer_ban_alert_SWIGUpcast(long jarg1); + + public final static native long peer_unsnubbed_alert_SWIGUpcast(long jarg1); + + public final static native long peer_snubbed_alert_SWIGUpcast(long jarg1); + + public final static native long peer_error_alert_SWIGUpcast(long jarg1); + + public final static native long peer_connect_alert_SWIGUpcast(long jarg1); + + public final static native long peer_disconnected_alert_SWIGUpcast(long jarg1); + + public final static native long invalid_request_alert_SWIGUpcast(long jarg1); + + public final static native long torrent_finished_alert_SWIGUpcast(long jarg1); + + public final static native long piece_finished_alert_SWIGUpcast(long jarg1); + + public final static native long request_dropped_alert_SWIGUpcast(long jarg1); + + public final static native long block_timeout_alert_SWIGUpcast(long jarg1); + + public final static native long block_finished_alert_SWIGUpcast(long jarg1); + + public final static native long block_downloading_alert_SWIGUpcast(long jarg1); + + public final static native long unwanted_block_alert_SWIGUpcast(long jarg1); + + public final static native long storage_moved_alert_SWIGUpcast(long jarg1); + + public final static native long storage_moved_failed_alert_SWIGUpcast(long jarg1); + + public final static native long torrent_deleted_alert_SWIGUpcast(long jarg1); + + public final static native long torrent_delete_failed_alert_SWIGUpcast(long jarg1); + + public final static native long save_resume_data_alert_SWIGUpcast(long jarg1); + + public final static native long save_resume_data_failed_alert_SWIGUpcast(long jarg1); + + public final static native long torrent_paused_alert_SWIGUpcast(long jarg1); + + public final static native long torrent_resumed_alert_SWIGUpcast(long jarg1); + + public final static native long torrent_checked_alert_SWIGUpcast(long jarg1); + + public final static native long url_seed_alert_SWIGUpcast(long jarg1); + + public final static native long file_error_alert_SWIGUpcast(long jarg1); + + public final static native long metadata_failed_alert_SWIGUpcast(long jarg1); + + public final static native long metadata_received_alert_SWIGUpcast(long jarg1); + + public final static native long udp_error_alert_SWIGUpcast(long jarg1); + + public final static native long external_ip_alert_SWIGUpcast(long jarg1); + + public final static native long listen_failed_alert_SWIGUpcast(long jarg1); + + public final static native long listen_succeeded_alert_SWIGUpcast(long jarg1); + + public final static native long portmap_error_alert_SWIGUpcast(long jarg1); + + public final static native long portmap_alert_SWIGUpcast(long jarg1); + + public final static native long portmap_log_alert_SWIGUpcast(long jarg1); + + public final static native long fastresume_rejected_alert_SWIGUpcast(long jarg1); + + public final static native long peer_blocked_alert_SWIGUpcast(long jarg1); + + public final static native long dht_announce_alert_SWIGUpcast(long jarg1); + + public final static native long dht_get_peers_alert_SWIGUpcast(long jarg1); + + public final static native long stats_alert_SWIGUpcast(long jarg1); + + public final static native long cache_flushed_alert_SWIGUpcast(long jarg1); + + public final static native long lsd_peer_alert_SWIGUpcast(long jarg1); + + public final static native long trackerid_alert_SWIGUpcast(long jarg1); + + public final static native long dht_bootstrap_alert_SWIGUpcast(long jarg1); + + public final static native long torrent_error_alert_SWIGUpcast(long jarg1); + + public final static native long torrent_need_cert_alert_SWIGUpcast(long jarg1); + + public final static native long incoming_connection_alert_SWIGUpcast(long jarg1); + + public final static native long add_torrent_alert_SWIGUpcast(long jarg1); + + public final static native long state_update_alert_SWIGUpcast(long jarg1); + + public final static native long session_stats_alert_SWIGUpcast(long jarg1); + + public final static native long dht_error_alert_SWIGUpcast(long jarg1); + + public final static native long dht_immutable_item_alert_SWIGUpcast(long jarg1); + + public final static native long dht_mutable_item_alert_SWIGUpcast(long jarg1); + + public final static native long dht_put_alert_SWIGUpcast(long jarg1); + + public final static native long i2p_alert_SWIGUpcast(long jarg1); + + public final static native long dht_outgoing_get_peers_alert_SWIGUpcast(long jarg1); + + public final static native long log_alert_SWIGUpcast(long jarg1); + + public final static native long torrent_log_alert_SWIGUpcast(long jarg1); + + public final static native long peer_log_alert_SWIGUpcast(long jarg1); + + public final static native long lsd_error_alert_SWIGUpcast(long jarg1); + + public final static native long dht_stats_alert_SWIGUpcast(long jarg1); + + public final static native long incoming_request_alert_SWIGUpcast(long jarg1); + + public final static native long dht_log_alert_SWIGUpcast(long jarg1); + + public final static native long dht_pkt_alert_SWIGUpcast(long jarg1); + + public final static native long dht_get_peers_reply_alert_SWIGUpcast(long jarg1); + + public final static native long dht_direct_response_alert_SWIGUpcast(long jarg1); + + public final static native long picker_log_alert_SWIGUpcast(long jarg1); + + public final static native long session_error_alert_SWIGUpcast(long jarg1); + + public final static native long dht_live_nodes_alert_SWIGUpcast(long jarg1); + + public final static native long session_stats_header_alert_SWIGUpcast(long jarg1); + + public final static native long dht_sample_infohashes_alert_SWIGUpcast(long jarg1); + + public final static native long block_uploaded_alert_SWIGUpcast(long jarg1); + + public final static native long alerts_dropped_alert_SWIGUpcast(long jarg1); + + public final static native long socks5_alert_SWIGUpcast(long jarg1); + + public final static native long settings_SWIGUpcast(long jarg1); + + public final static native long session_SWIGUpcast(long jarg1); + + public final static native long bt_peer_connection_handle_SWIGUpcast(long jarg1); + + public static void SwigDirector_alert_notify_callback_on_alert(alert_notify_callback jself) { + jself.on_alert(); + } + + public static boolean SwigDirector_add_files_listener_pred(add_files_listener jself, String p) { + return jself.pred(p); + } + + public static void SwigDirector_set_piece_hashes_listener_progress(set_piece_hashes_listener jself, int i) { + jself.progress(i); + } + + public static boolean SwigDirector_swig_plugin_on_dht_request(swig_plugin jself, long query, long source, long message, long response) { + return jself.on_dht_request(new string_view(query, true), new udp_endpoint(source, false), new bdecode_node(message, false), new entry(response, false)); + } + + public static int SwigDirector_posix_wrapper_open(posix_wrapper jself, String path, int flags, int mode) { + return jself.open(path, flags, mode); + } + + public static int SwigDirector_posix_wrapper_stat(posix_wrapper jself, String path, long buf) { + return jself.stat(path, (buf == 0) ? null : new posix_stat_t(buf, false)); + } + + public static int SwigDirector_posix_wrapper_mkdir(posix_wrapper jself, String path, int mode) { + return jself.mkdir(path, mode); + } + + public static int SwigDirector_posix_wrapper_rename(posix_wrapper jself, String oldpath, String newpath) { + return jself.rename(oldpath, newpath); + } + + public static int SwigDirector_posix_wrapper_remove(posix_wrapper jself, String path) { + return jself.remove(path); + } + + private final static native void swig_module_init(); +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/listen_failed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/listen_failed_alert.java new file mode 100644 index 0000000..065236b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/listen_failed_alert.java @@ -0,0 +1,86 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class listen_failed_alert extends alert { + public final static int priority = libtorrent_jni.listen_failed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.listen_failed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.listen_failed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected listen_failed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.listen_failed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(listen_failed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_listen_failed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.listen_failed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.listen_failed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.listen_failed_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.listen_failed_alert_message(swigCPtr, this); + } + + public String listen_interface() { + return libtorrent_jni.listen_failed_alert_listen_interface(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.listen_failed_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public operation_t getOp() { + return operation_t.swigToEnum(libtorrent_jni.listen_failed_alert_op_get(swigCPtr, this)); + } + + public void setOp(operation_t value) { + libtorrent_jni.listen_failed_alert_op_set(swigCPtr, this, value.swigValue()); + } + + public socket_type_t getSocket_type() { + return socket_type_t.swigToEnum(libtorrent_jni.listen_failed_alert_socket_type_get(swigCPtr, this)); + } + + public int getPort() { + return libtorrent_jni.listen_failed_alert_port_get(swigCPtr, this); + } + + public address get_address() { + return new address(libtorrent_jni.listen_failed_alert_get_address(swigCPtr, this), true); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/listen_succeeded_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/listen_succeeded_alert.java new file mode 100644 index 0000000..0832e61 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/listen_succeeded_alert.java @@ -0,0 +1,69 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class listen_succeeded_alert extends alert { + public final static int priority = libtorrent_jni.listen_succeeded_alert_priority_get(); + public final static int alert_type = libtorrent_jni.listen_succeeded_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.listen_succeeded_alert_static_category_get(), false); + private transient long swigCPtr; + + protected listen_succeeded_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.listen_succeeded_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(listen_succeeded_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_listen_succeeded_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.listen_succeeded_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.listen_succeeded_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.listen_succeeded_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.listen_succeeded_alert_message(swigCPtr, this); + } + + public int getPort() { + return libtorrent_jni.listen_succeeded_alert_port_get(swigCPtr, this); + } + + public socket_type_t getSocket_type() { + return socket_type_t.swigToEnum(libtorrent_jni.listen_succeeded_alert_socket_type_get(swigCPtr, this)); + } + + public address get_address() { + return new address(libtorrent_jni.listen_succeeded_alert_get_address(swigCPtr, this), true); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/load_torrent_limits.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/load_torrent_limits.java new file mode 100644 index 0000000..ff8312b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/load_torrent_limits.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class load_torrent_limits { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected load_torrent_limits(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public load_torrent_limits() { + this(libtorrent_jni.new_load_torrent_limits(), true); + } + + protected static long getCPtr(load_torrent_limits obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_load_torrent_limits(swigCPtr); + } + swigCPtr = 0; + } + } + + public int getMax_buffer_size() { + return libtorrent_jni.load_torrent_limits_max_buffer_size_get(swigCPtr, this); + } + + public void setMax_buffer_size(int value) { + libtorrent_jni.load_torrent_limits_max_buffer_size_set(swigCPtr, this, value); + } + + public int getMax_pieces() { + return libtorrent_jni.load_torrent_limits_max_pieces_get(swigCPtr, this); + } + + public void setMax_pieces(int value) { + libtorrent_jni.load_torrent_limits_max_pieces_set(swigCPtr, this, value); + } + + public int getMax_decode_depth() { + return libtorrent_jni.load_torrent_limits_max_decode_depth_get(swigCPtr, this); + } + + public void setMax_decode_depth(int value) { + libtorrent_jni.load_torrent_limits_max_decode_depth_set(swigCPtr, this, value); + } + + public int getMax_decode_tokens() { + return libtorrent_jni.load_torrent_limits_max_decode_tokens_get(swigCPtr, this); + } + + public void setMax_decode_tokens(int value) { + libtorrent_jni.load_torrent_limits_max_decode_tokens_set(swigCPtr, this, value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/log_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/log_alert.java new file mode 100644 index 0000000..fb9f8bc --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/log_alert.java @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class log_alert extends alert { + public final static int priority = libtorrent_jni.log_alert_priority_get(); + public final static int alert_type = libtorrent_jni.log_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.log_alert_static_category_get(), false); + private transient long swigCPtr; + + protected log_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.log_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(log_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_log_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.log_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.log_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.log_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.log_alert_message(swigCPtr, this); + } + + public String log_message() { + return libtorrent_jni.log_alert_log_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/lsd_error_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/lsd_error_alert.java new file mode 100644 index 0000000..b2db704 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/lsd_error_alert.java @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class lsd_error_alert extends alert { + public final static int priority = libtorrent_jni.lsd_error_alert_priority_get(); + public final static int alert_type = libtorrent_jni.lsd_error_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.lsd_error_alert_static_category_get(), false); + private transient long swigCPtr; + + protected lsd_error_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.lsd_error_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(lsd_error_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_lsd_error_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.lsd_error_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.lsd_error_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.lsd_error_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.lsd_error_alert_message(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.lsd_error_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public void setError(error_code value) { + libtorrent_jni.lsd_error_alert_error_set(swigCPtr, this, error_code.getCPtr(value), value); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/lsd_peer_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/lsd_peer_alert.java new file mode 100644 index 0000000..036926b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/lsd_peer_alert.java @@ -0,0 +1,57 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class lsd_peer_alert extends peer_alert { + public final static int priority = libtorrent_jni.lsd_peer_alert_priority_get(); + public final static int alert_type = libtorrent_jni.lsd_peer_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.lsd_peer_alert_static_category_get(), false); + private transient long swigCPtr; + + protected lsd_peer_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.lsd_peer_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(lsd_peer_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_lsd_peer_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.lsd_peer_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.lsd_peer_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.lsd_peer_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.lsd_peer_alert_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/metadata_failed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/metadata_failed_alert.java new file mode 100644 index 0000000..9a3aae5 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/metadata_failed_alert.java @@ -0,0 +1,62 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class metadata_failed_alert extends torrent_alert { + public final static int priority = libtorrent_jni.metadata_failed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.metadata_failed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.metadata_failed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected metadata_failed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.metadata_failed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(metadata_failed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_metadata_failed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.metadata_failed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.metadata_failed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.metadata_failed_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.metadata_failed_alert_message(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.metadata_failed_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/metadata_received_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/metadata_received_alert.java new file mode 100644 index 0000000..374d887 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/metadata_received_alert.java @@ -0,0 +1,57 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class metadata_received_alert extends torrent_alert { + public final static int priority = libtorrent_jni.metadata_received_alert_priority_get(); + public final static int alert_type = libtorrent_jni.metadata_received_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.metadata_received_alert_static_category_get(), false); + private transient long swigCPtr; + + protected metadata_received_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.metadata_received_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(metadata_received_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_metadata_received_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.metadata_received_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.metadata_received_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.metadata_received_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.metadata_received_alert_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/metric_type_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/metric_type_t.java new file mode 100644 index 0000000..5fa7c92 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/metric_type_t.java @@ -0,0 +1,53 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public final class metric_type_t { + public final static metric_type_t counter = new metric_type_t("counter"); + public final static metric_type_t gauge = new metric_type_t("gauge"); + private static final metric_type_t[] swigValues = {counter, gauge}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private metric_type_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private metric_type_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private metric_type_t(String swigName, metric_type_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static metric_type_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + metric_type_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/move_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/move_flags_t.java new file mode 100644 index 0000000..9546a32 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/move_flags_t.java @@ -0,0 +1,54 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public final class move_flags_t { + public final static move_flags_t always_replace_files = new move_flags_t("always_replace_files"); + public final static move_flags_t fail_if_exist = new move_flags_t("fail_if_exist"); + public final static move_flags_t dont_replace = new move_flags_t("dont_replace"); + private static final move_flags_t[] swigValues = {always_replace_files, fail_if_exist, dont_replace}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private move_flags_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private move_flags_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private move_flags_t(String swigName, move_flags_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static move_flags_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + move_flags_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/operation_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/operation_t.java new file mode 100644 index 0000000..5bba73a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/operation_t.java @@ -0,0 +1,94 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public final class operation_t { + public final static operation_t unknown = new operation_t("unknown"); + public final static operation_t bittorrent = new operation_t("bittorrent"); + public final static operation_t iocontrol = new operation_t("iocontrol"); + public final static operation_t getpeername = new operation_t("getpeername"); + public final static operation_t getname = new operation_t("getname"); + public final static operation_t alloc_recvbuf = new operation_t("alloc_recvbuf"); + public final static operation_t alloc_sndbuf = new operation_t("alloc_sndbuf"); + public final static operation_t file_write = new operation_t("file_write"); + public final static operation_t file_read = new operation_t("file_read"); + public final static operation_t file = new operation_t("file"); + public final static operation_t sock_write = new operation_t("sock_write"); + public final static operation_t sock_read = new operation_t("sock_read"); + public final static operation_t sock_open = new operation_t("sock_open"); + public final static operation_t sock_bind = new operation_t("sock_bind"); + public final static operation_t available = new operation_t("available"); + public final static operation_t encryption = new operation_t("encryption"); + public final static operation_t connect = new operation_t("connect"); + public final static operation_t ssl_handshake = new operation_t("ssl_handshake"); + public final static operation_t get_interface = new operation_t("get_interface"); + public final static operation_t sock_listen = new operation_t("sock_listen"); + public final static operation_t sock_bind_to_device = new operation_t("sock_bind_to_device"); + public final static operation_t sock_accept = new operation_t("sock_accept"); + public final static operation_t parse_address = new operation_t("parse_address"); + public final static operation_t enum_if = new operation_t("enum_if"); + public final static operation_t file_stat = new operation_t("file_stat"); + public final static operation_t file_copy = new operation_t("file_copy"); + public final static operation_t file_fallocate = new operation_t("file_fallocate"); + public final static operation_t file_hard_link = new operation_t("file_hard_link"); + public final static operation_t file_remove = new operation_t("file_remove"); + public final static operation_t file_rename = new operation_t("file_rename"); + public final static operation_t file_open = new operation_t("file_open"); + public final static operation_t mkdir = new operation_t("mkdir"); + public final static operation_t check_resume = new operation_t("check_resume"); + public final static operation_t exception = new operation_t("exception"); + public final static operation_t alloc_cache_piece = new operation_t("alloc_cache_piece"); + public final static operation_t partfile_move = new operation_t("partfile_move"); + public final static operation_t partfile_read = new operation_t("partfile_read"); + public final static operation_t partfile_write = new operation_t("partfile_write"); + public final static operation_t hostname_lookup = new operation_t("hostname_lookup"); + public final static operation_t symlink = new operation_t("symlink"); + public final static operation_t handshake = new operation_t("handshake"); + public final static operation_t sock_option = new operation_t("sock_option"); + public final static operation_t enum_route = new operation_t("enum_route"); + private static final operation_t[] swigValues = {unknown, bittorrent, iocontrol, getpeername, getname, alloc_recvbuf, alloc_sndbuf, file_write, file_read, file, sock_write, sock_read, sock_open, sock_bind, available, encryption, connect, ssl_handshake, get_interface, sock_listen, sock_bind_to_device, sock_accept, parse_address, enum_if, file_stat, file_copy, file_fallocate, file_hard_link, file_remove, file_rename, file_open, mkdir, check_resume, exception, alloc_cache_piece, partfile_move, partfile_read, partfile_write, hostname_lookup, symlink, handshake, sock_option, enum_route}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private operation_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private operation_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private operation_t(String swigName, operation_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static operation_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + operation_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/partial_piece_info.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/partial_piece_info.java new file mode 100644 index 0000000..e31f3b4 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/partial_piece_info.java @@ -0,0 +1,83 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class partial_piece_info { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected partial_piece_info(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public partial_piece_info() { + this(libtorrent_jni.new_partial_piece_info(), true); + } + + protected static long getCPtr(partial_piece_info obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_partial_piece_info(swigCPtr); + } + swigCPtr = 0; + } + } + + public int getPiece_index() { + return libtorrent_jni.partial_piece_info_piece_index_get(swigCPtr, this); + } + + public void setPiece_index(int value) { + libtorrent_jni.partial_piece_info_piece_index_set(swigCPtr, this, value); + } + + public int getBlocks_in_piece() { + return libtorrent_jni.partial_piece_info_blocks_in_piece_get(swigCPtr, this); + } + + public void setBlocks_in_piece(int value) { + libtorrent_jni.partial_piece_info_blocks_in_piece_set(swigCPtr, this, value); + } + + public int getFinished() { + return libtorrent_jni.partial_piece_info_finished_get(swigCPtr, this); + } + + public void setFinished(int value) { + libtorrent_jni.partial_piece_info_finished_set(swigCPtr, this, value); + } + + public int getWriting() { + return libtorrent_jni.partial_piece_info_writing_get(swigCPtr, this); + } + + public void setWriting(int value) { + libtorrent_jni.partial_piece_info_writing_set(swigCPtr, this, value); + } + + public int getRequested() { + return libtorrent_jni.partial_piece_info_requested_get(swigCPtr, this); + } + + public void setRequested(int value) { + libtorrent_jni.partial_piece_info_requested_set(swigCPtr, this, value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/partial_piece_info_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/partial_piece_info_vector.java new file mode 100644 index 0000000..b3c9028 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/partial_piece_info_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class partial_piece_info_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected partial_piece_info_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public partial_piece_info_vector() { + this(libtorrent_jni.new_partial_piece_info_vector(), true); + } + + protected static long getCPtr(partial_piece_info_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_partial_piece_info_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.partial_piece_info_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.partial_piece_info_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.partial_piece_info_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.partial_piece_info_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.partial_piece_info_vector_clear(swigCPtr, this); + } + + public void push_back(partial_piece_info x) { + libtorrent_jni.partial_piece_info_vector_push_back(swigCPtr, this, partial_piece_info.getCPtr(x), x); + } + + public partial_piece_info get(int i) { + return new partial_piece_info(libtorrent_jni.partial_piece_info_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, partial_piece_info val) { + libtorrent_jni.partial_piece_info_vector_set(swigCPtr, this, i, partial_piece_info.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/pause_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/pause_flags_t.java new file mode 100644 index 0000000..a073f1a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/pause_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class pause_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected pause_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public pause_flags_t() { + this(libtorrent_jni.new_pause_flags_t(), true); + } + + protected static long getCPtr(pause_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static pause_flags_t all() { + return new pause_flags_t(libtorrent_jni.pause_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_pause_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.pause_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(pause_flags_t f) { + return libtorrent_jni.pause_flags_t_eq(swigCPtr, this, pause_flags_t.getCPtr(f), f); + } + + public boolean ne(pause_flags_t f) { + return libtorrent_jni.pause_flags_t_ne(swigCPtr, this, pause_flags_t.getCPtr(f), f); + } + + public pause_flags_t or_(pause_flags_t other) { + return new pause_flags_t(libtorrent_jni.pause_flags_t_or_(swigCPtr, this, pause_flags_t.getCPtr(other), other), true); + } + + public pause_flags_t and_(pause_flags_t other) { + return new pause_flags_t(libtorrent_jni.pause_flags_t_and_(swigCPtr, this, pause_flags_t.getCPtr(other), other), true); + } + + public pause_flags_t xor(pause_flags_t other) { + return new pause_flags_t(libtorrent_jni.pause_flags_t_xor(swigCPtr, this, pause_flags_t.getCPtr(other), other), true); + } + + public pause_flags_t inv() { + return new pause_flags_t(libtorrent_jni.pause_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.pause_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_alert.java new file mode 100644 index 0000000..4866f30 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_alert.java @@ -0,0 +1,56 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_alert extends torrent_alert { + private transient long swigCPtr; + + protected peer_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.peer_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(peer_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public String message() { + return libtorrent_jni.peer_alert_message(swigCPtr, this); + } + + public sha1_hash getPid() { + long cPtr = libtorrent_jni.peer_alert_pid_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setPid(sha1_hash value) { + libtorrent_jni.peer_alert_pid_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } + + public tcp_endpoint get_endpoint() { + return new tcp_endpoint(libtorrent_jni.peer_alert_get_endpoint(swigCPtr, this), true); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_ban_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_ban_alert.java new file mode 100644 index 0000000..749b7d6 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_ban_alert.java @@ -0,0 +1,57 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_ban_alert extends peer_alert { + public final static int priority = libtorrent_jni.peer_ban_alert_priority_get(); + public final static int alert_type = libtorrent_jni.peer_ban_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.peer_ban_alert_static_category_get(), false); + private transient long swigCPtr; + + protected peer_ban_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.peer_ban_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(peer_ban_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_ban_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.peer_ban_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.peer_ban_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.peer_ban_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.peer_ban_alert_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_blocked_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_blocked_alert.java new file mode 100644 index 0000000..7189607 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_blocked_alert.java @@ -0,0 +1,111 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_blocked_alert extends peer_alert { + public final static int priority = libtorrent_jni.peer_blocked_alert_priority_get(); + public final static int alert_type = libtorrent_jni.peer_blocked_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.peer_blocked_alert_static_category_get(), false); + private transient long swigCPtr; + + protected peer_blocked_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.peer_blocked_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(peer_blocked_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_blocked_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.peer_blocked_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.peer_blocked_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.peer_blocked_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.peer_blocked_alert_message(swigCPtr, this); + } + + public int getReason() { + return libtorrent_jni.peer_blocked_alert_reason_get(swigCPtr, this); + } + + public final static class reason_t { + public final static peer_blocked_alert.reason_t ip_filter = new peer_blocked_alert.reason_t("ip_filter"); + public final static peer_blocked_alert.reason_t port_filter = new peer_blocked_alert.reason_t("port_filter"); + public final static peer_blocked_alert.reason_t i2p_mixed = new peer_blocked_alert.reason_t("i2p_mixed"); + public final static peer_blocked_alert.reason_t privileged_ports = new peer_blocked_alert.reason_t("privileged_ports"); + public final static peer_blocked_alert.reason_t utp_disabled = new peer_blocked_alert.reason_t("utp_disabled"); + public final static peer_blocked_alert.reason_t tcp_disabled = new peer_blocked_alert.reason_t("tcp_disabled"); + public final static peer_blocked_alert.reason_t invalid_local_interface = new peer_blocked_alert.reason_t("invalid_local_interface"); + public final static peer_blocked_alert.reason_t ssrf_mitigation = new peer_blocked_alert.reason_t("ssrf_mitigation"); + private static final reason_t[] swigValues = {ip_filter, port_filter, i2p_mixed, privileged_ports, utp_disabled, tcp_disabled, invalid_local_interface, ssrf_mitigation}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private reason_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private reason_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private reason_t(String swigName, reason_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static reason_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + reason_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_class_info.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_class_info.java new file mode 100644 index 0000000..b3e176e --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_class_info.java @@ -0,0 +1,99 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_class_info { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected peer_class_info(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public peer_class_info() { + this(libtorrent_jni.new_peer_class_info(), true); + } + + protected static long getCPtr(peer_class_info obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_class_info(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean getIgnore_unchoke_slots() { + return libtorrent_jni.peer_class_info_ignore_unchoke_slots_get(swigCPtr, this); + } + + public void setIgnore_unchoke_slots(boolean value) { + libtorrent_jni.peer_class_info_ignore_unchoke_slots_set(swigCPtr, this, value); + } + + public int getConnection_limit_factor() { + return libtorrent_jni.peer_class_info_connection_limit_factor_get(swigCPtr, this); + } + + public void setConnection_limit_factor(int value) { + libtorrent_jni.peer_class_info_connection_limit_factor_set(swigCPtr, this, value); + } + + public String getLabel() { + return libtorrent_jni.peer_class_info_label_get(swigCPtr, this); + } + + public void setLabel(String value) { + libtorrent_jni.peer_class_info_label_set(swigCPtr, this, value); + } + + public int getUpload_limit() { + return libtorrent_jni.peer_class_info_upload_limit_get(swigCPtr, this); + } + + public void setUpload_limit(int value) { + libtorrent_jni.peer_class_info_upload_limit_set(swigCPtr, this, value); + } + + public int getDownload_limit() { + return libtorrent_jni.peer_class_info_download_limit_get(swigCPtr, this); + } + + public void setDownload_limit(int value) { + libtorrent_jni.peer_class_info_download_limit_set(swigCPtr, this, value); + } + + public int getUpload_priority() { + return libtorrent_jni.peer_class_info_upload_priority_get(swigCPtr, this); + } + + public void setUpload_priority(int value) { + libtorrent_jni.peer_class_info_upload_priority_set(swigCPtr, this, value); + } + + public int getDownload_priority() { + return libtorrent_jni.peer_class_info_download_priority_get(swigCPtr, this); + } + + public void setDownload_priority(int value) { + libtorrent_jni.peer_class_info_download_priority_set(swigCPtr, this, value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_class_type_filter.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_class_type_filter.java new file mode 100644 index 0000000..f86f02e --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_class_type_filter.java @@ -0,0 +1,110 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_class_type_filter { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected peer_class_type_filter(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public peer_class_type_filter() { + this(libtorrent_jni.new_peer_class_type_filter(), true); + } + + protected static long getCPtr(peer_class_type_filter obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_class_type_filter(swigCPtr); + } + swigCPtr = 0; + } + } + + public void add(peer_class_type_filter.socket_type_t st, int peer_class) { + libtorrent_jni.peer_class_type_filter_add(swigCPtr, this, st.swigValue(), peer_class); + } + + public void remove(peer_class_type_filter.socket_type_t st, int peer_class) { + libtorrent_jni.peer_class_type_filter_remove(swigCPtr, this, st.swigValue(), peer_class); + } + + public void disallow(peer_class_type_filter.socket_type_t st, int peer_class) { + libtorrent_jni.peer_class_type_filter_disallow(swigCPtr, this, st.swigValue(), peer_class); + } + + public void allow(peer_class_type_filter.socket_type_t st, int peer_class) { + libtorrent_jni.peer_class_type_filter_allow(swigCPtr, this, st.swigValue(), peer_class); + } + + public long apply(peer_class_type_filter.socket_type_t st, long peer_class_mask) { + return libtorrent_jni.peer_class_type_filter_apply(swigCPtr, this, st.swigValue(), peer_class_mask); + } + + public final static class socket_type_t { + public final static peer_class_type_filter.socket_type_t tcp_socket = new peer_class_type_filter.socket_type_t("tcp_socket", libtorrent_jni.peer_class_type_filter_tcp_socket_get()); + public final static peer_class_type_filter.socket_type_t utp_socket = new peer_class_type_filter.socket_type_t("utp_socket"); + public final static peer_class_type_filter.socket_type_t ssl_tcp_socket = new peer_class_type_filter.socket_type_t("ssl_tcp_socket"); + public final static peer_class_type_filter.socket_type_t ssl_utp_socket = new peer_class_type_filter.socket_type_t("ssl_utp_socket"); + public final static peer_class_type_filter.socket_type_t i2p_socket = new peer_class_type_filter.socket_type_t("i2p_socket"); + public final static peer_class_type_filter.socket_type_t num_socket_types = new peer_class_type_filter.socket_type_t("num_socket_types"); + private static final socket_type_t[] swigValues = {tcp_socket, utp_socket, ssl_tcp_socket, ssl_utp_socket, i2p_socket, num_socket_types}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private socket_type_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private socket_type_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private socket_type_t(String swigName, socket_type_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static socket_type_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + socket_type_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_connect_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_connect_alert.java new file mode 100644 index 0000000..b055c55 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_connect_alert.java @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_connect_alert extends peer_alert { + public final static int priority = libtorrent_jni.peer_connect_alert_priority_get(); + public final static int alert_type = libtorrent_jni.peer_connect_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.peer_connect_alert_static_category_get(), false); + private transient long swigCPtr; + + protected peer_connect_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.peer_connect_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(peer_connect_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_connect_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.peer_connect_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.peer_connect_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.peer_connect_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.peer_connect_alert_message(swigCPtr, this); + } + + public int getSocket_type() { + return libtorrent_jni.peer_connect_alert_socket_type_get(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_connection_handle.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_connection_handle.java new file mode 100644 index 0000000..d9e1387 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_connection_handle.java @@ -0,0 +1,167 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_connection_handle { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected peer_connection_handle(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + protected static long getCPtr(peer_connection_handle obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_connection_handle(swigCPtr); + } + swigCPtr = 0; + } + } + + public connection_type type() { + return connection_type.swigToEnum(libtorrent_jni.peer_connection_handle_type(swigCPtr, this)); + } + + public boolean is_seed() { + return libtorrent_jni.peer_connection_handle_is_seed(swigCPtr, this); + } + + public boolean upload_only() { + return libtorrent_jni.peer_connection_handle_upload_only(swigCPtr, this); + } + + public sha1_hash pid() { + return new sha1_hash(libtorrent_jni.peer_connection_handle_pid(swigCPtr, this), false); + } + + public boolean has_piece(int i) { + return libtorrent_jni.peer_connection_handle_has_piece(swigCPtr, this, i); + } + + public boolean is_interesting() { + return libtorrent_jni.peer_connection_handle_is_interesting(swigCPtr, this); + } + + public boolean is_choked() { + return libtorrent_jni.peer_connection_handle_is_choked(swigCPtr, this); + } + + public boolean is_peer_interested() { + return libtorrent_jni.peer_connection_handle_is_peer_interested(swigCPtr, this); + } + + public boolean has_peer_choked() { + return libtorrent_jni.peer_connection_handle_has_peer_choked(swigCPtr, this); + } + + public void choke_this_peer() { + libtorrent_jni.peer_connection_handle_choke_this_peer(swigCPtr, this); + } + + public void maybe_unchoke_this_peer() { + libtorrent_jni.peer_connection_handle_maybe_unchoke_this_peer(swigCPtr, this); + } + + public void get_peer_info(peer_info p) { + libtorrent_jni.peer_connection_handle_get_peer_info(swigCPtr, this, peer_info.getCPtr(p), p); + } + + public torrent_handle associated_torrent() { + return new torrent_handle(libtorrent_jni.peer_connection_handle_associated_torrent(swigCPtr, this), true); + } + + public tcp_endpoint remote() { + return new tcp_endpoint(libtorrent_jni.peer_connection_handle_remote(swigCPtr, this), false); + } + + public tcp_endpoint local_endpoint() { + return new tcp_endpoint(libtorrent_jni.peer_connection_handle_local_endpoint(swigCPtr, this), true); + } + + public void disconnect(error_code ec, operation_t op, int arg2) { + libtorrent_jni.peer_connection_handle_disconnect__SWIG_0(swigCPtr, this, error_code.getCPtr(ec), ec, op.swigValue(), arg2); + } + + public void disconnect(error_code ec, operation_t op) { + libtorrent_jni.peer_connection_handle_disconnect__SWIG_1(swigCPtr, this, error_code.getCPtr(ec), ec, op.swigValue()); + } + + public boolean is_disconnecting() { + return libtorrent_jni.peer_connection_handle_is_disconnecting(swigCPtr, this); + } + + public boolean is_connecting() { + return libtorrent_jni.peer_connection_handle_is_connecting(swigCPtr, this); + } + + public boolean is_outgoing() { + return libtorrent_jni.peer_connection_handle_is_outgoing(swigCPtr, this); + } + + public boolean on_local_network() { + return libtorrent_jni.peer_connection_handle_on_local_network(swigCPtr, this); + } + + public boolean ignore_unchoke_slots() { + return libtorrent_jni.peer_connection_handle_ignore_unchoke_slots(swigCPtr, this); + } + + public boolean failed() { + return libtorrent_jni.peer_connection_handle_failed(swigCPtr, this); + } + + public boolean can_disconnect(error_code ec) { + return libtorrent_jni.peer_connection_handle_can_disconnect(swigCPtr, this, error_code.getCPtr(ec), ec); + } + + public boolean has_metadata() { + return libtorrent_jni.peer_connection_handle_has_metadata(swigCPtr, this); + } + + public boolean in_handshake() { + return libtorrent_jni.peer_connection_handle_in_handshake(swigCPtr, this); + } + + public void send_buffer(String begin, int size) { + libtorrent_jni.peer_connection_handle_send_buffer(swigCPtr, this, begin, size); + } + + public long last_seen_complete() { + return libtorrent_jni.peer_connection_handle_last_seen_complete(swigCPtr, this); + } + + public boolean op_eq(peer_connection_handle o) { + return libtorrent_jni.peer_connection_handle_op_eq(swigCPtr, this, peer_connection_handle.getCPtr(o), o); + } + + public boolean op_ne(peer_connection_handle o) { + return libtorrent_jni.peer_connection_handle_op_ne(swigCPtr, this, peer_connection_handle.getCPtr(o), o); + } + + public boolean op_lt(peer_connection_handle o) { + return libtorrent_jni.peer_connection_handle_op_lt(swigCPtr, this, peer_connection_handle.getCPtr(o), o); + } + + public long get_time_of_last_unchoke() { + return libtorrent_jni.peer_connection_handle_get_time_of_last_unchoke(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_disconnected_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_disconnected_alert.java new file mode 100644 index 0000000..dbde8e1 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_disconnected_alert.java @@ -0,0 +1,74 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_disconnected_alert extends peer_alert { + public final static int priority = libtorrent_jni.peer_disconnected_alert_priority_get(); + public final static int alert_type = libtorrent_jni.peer_disconnected_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.peer_disconnected_alert_static_category_get(), false); + private transient long swigCPtr; + + protected peer_disconnected_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.peer_disconnected_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(peer_disconnected_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_disconnected_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.peer_disconnected_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.peer_disconnected_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.peer_disconnected_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.peer_disconnected_alert_message(swigCPtr, this); + } + + public int getSocket_type() { + return libtorrent_jni.peer_disconnected_alert_socket_type_get(swigCPtr, this); + } + + public operation_t getOp() { + return operation_t.swigToEnum(libtorrent_jni.peer_disconnected_alert_op_get(swigCPtr, this)); + } + + public error_code getError() { + long cPtr = libtorrent_jni.peer_disconnected_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public close_reason_t getReason() { + return close_reason_t.swigToEnum(libtorrent_jni.peer_disconnected_alert_reason_get(swigCPtr, this)); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_error_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_error_alert.java new file mode 100644 index 0000000..a91dd82 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_error_alert.java @@ -0,0 +1,70 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_error_alert extends peer_alert { + public final static int priority = libtorrent_jni.peer_error_alert_priority_get(); + public final static int alert_type = libtorrent_jni.peer_error_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.peer_error_alert_static_category_get(), false); + private transient long swigCPtr; + + protected peer_error_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.peer_error_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(peer_error_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_error_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.peer_error_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.peer_error_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.peer_error_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.peer_error_alert_message(swigCPtr, this); + } + + public operation_t getOp() { + return operation_t.swigToEnum(libtorrent_jni.peer_error_alert_op_get(swigCPtr, this)); + } + + public void setOp(operation_t value) { + libtorrent_jni.peer_error_alert_op_set(swigCPtr, this, value.swigValue()); + } + + public error_code getError() { + long cPtr = libtorrent_jni.peer_error_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_flags_t.java new file mode 100644 index 0000000..5b1410c --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected peer_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public peer_flags_t() { + this(libtorrent_jni.new_peer_flags_t(), true); + } + + protected static long getCPtr(peer_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static peer_flags_t all() { + return new peer_flags_t(libtorrent_jni.peer_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.peer_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(peer_flags_t f) { + return libtorrent_jni.peer_flags_t_eq(swigCPtr, this, peer_flags_t.getCPtr(f), f); + } + + public boolean ne(peer_flags_t f) { + return libtorrent_jni.peer_flags_t_ne(swigCPtr, this, peer_flags_t.getCPtr(f), f); + } + + public peer_flags_t or_(peer_flags_t other) { + return new peer_flags_t(libtorrent_jni.peer_flags_t_or_(swigCPtr, this, peer_flags_t.getCPtr(other), other), true); + } + + public peer_flags_t and_(peer_flags_t other) { + return new peer_flags_t(libtorrent_jni.peer_flags_t_and_(swigCPtr, this, peer_flags_t.getCPtr(other), other), true); + } + + public peer_flags_t xor(peer_flags_t other) { + return new peer_flags_t(libtorrent_jni.peer_flags_t_xor(swigCPtr, this, peer_flags_t.getCPtr(other), other), true); + } + + public peer_flags_t inv() { + return new peer_flags_t(libtorrent_jni.peer_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.peer_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_info.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_info.java new file mode 100644 index 0000000..222fca0 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_info.java @@ -0,0 +1,520 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_info { + public final static peer_flags_t interesting = new peer_flags_t(libtorrent_jni.peer_info_interesting_get(), false); + public final static peer_flags_t choked = new peer_flags_t(libtorrent_jni.peer_info_choked_get(), false); + public final static peer_flags_t remote_interested = new peer_flags_t(libtorrent_jni.peer_info_remote_interested_get(), false); + public final static peer_flags_t remote_choked = new peer_flags_t(libtorrent_jni.peer_info_remote_choked_get(), false); + public final static peer_flags_t supports_extensions = new peer_flags_t(libtorrent_jni.peer_info_supports_extensions_get(), false); + public final static peer_flags_t local_connection = new peer_flags_t(libtorrent_jni.peer_info_local_connection_get(), false); + public final static peer_flags_t handshake = new peer_flags_t(libtorrent_jni.peer_info_handshake_get(), false); + public final static peer_flags_t connecting = new peer_flags_t(libtorrent_jni.peer_info_connecting_get(), false); + public final static peer_flags_t on_parole = new peer_flags_t(libtorrent_jni.peer_info_on_parole_get(), false); + public final static peer_flags_t seed = new peer_flags_t(libtorrent_jni.peer_info_seed_get(), false); + public final static peer_flags_t optimistic_unchoke = new peer_flags_t(libtorrent_jni.peer_info_optimistic_unchoke_get(), false); + public final static peer_flags_t snubbed = new peer_flags_t(libtorrent_jni.peer_info_snubbed_get(), false); + public final static peer_flags_t upload_only = new peer_flags_t(libtorrent_jni.peer_info_upload_only_get(), false); + public final static peer_flags_t endgame_mode = new peer_flags_t(libtorrent_jni.peer_info_endgame_mode_get(), false); + public final static peer_flags_t holepunched = new peer_flags_t(libtorrent_jni.peer_info_holepunched_get(), false); + public final static peer_flags_t i2p_socket = new peer_flags_t(libtorrent_jni.peer_info_i2p_socket_get(), false); + public final static peer_flags_t utp_socket = new peer_flags_t(libtorrent_jni.peer_info_utp_socket_get(), false); + public final static peer_flags_t ssl_socket = new peer_flags_t(libtorrent_jni.peer_info_ssl_socket_get(), false); + public final static peer_flags_t rc4_encrypted = new peer_flags_t(libtorrent_jni.peer_info_rc4_encrypted_get(), false); + public final static peer_flags_t plaintext_encrypted = new peer_flags_t(libtorrent_jni.peer_info_plaintext_encrypted_get(), false); + public final static peer_source_flags_t tracker = new peer_source_flags_t(libtorrent_jni.peer_info_tracker_get(), false); + public final static peer_source_flags_t dht = new peer_source_flags_t(libtorrent_jni.peer_info_dht_get(), false); + public final static peer_source_flags_t pex = new peer_source_flags_t(libtorrent_jni.peer_info_pex_get(), false); + public final static peer_source_flags_t lsd = new peer_source_flags_t(libtorrent_jni.peer_info_lsd_get(), false); + public final static peer_source_flags_t resume_data = new peer_source_flags_t(libtorrent_jni.peer_info_resume_data_get(), false); + public final static peer_source_flags_t incoming = new peer_source_flags_t(libtorrent_jni.peer_info_incoming_get(), false); + public final static bandwidth_state_flags_t bw_idle = new bandwidth_state_flags_t(libtorrent_jni.peer_info_bw_idle_get(), false); + public final static bandwidth_state_flags_t bw_limit = new bandwidth_state_flags_t(libtorrent_jni.peer_info_bw_limit_get(), false); + public final static bandwidth_state_flags_t bw_network = new bandwidth_state_flags_t(libtorrent_jni.peer_info_bw_network_get(), false); + public final static bandwidth_state_flags_t bw_disk = new bandwidth_state_flags_t(libtorrent_jni.peer_info_bw_disk_get(), false); + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected peer_info(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public peer_info() { + this(libtorrent_jni.new_peer_info__SWIG_0(), true); + } + + public peer_info(peer_info arg0) { + this(libtorrent_jni.new_peer_info__SWIG_1(peer_info.getCPtr(arg0), arg0), true); + } + + protected static long getCPtr(peer_info obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_info(swigCPtr); + } + swigCPtr = 0; + } + } + + public piece_index_bitfield getPieces() { + long cPtr = libtorrent_jni.peer_info_pieces_get(swigCPtr, this); + return (cPtr == 0) ? null : new piece_index_bitfield(cPtr, false); + } + + public void setPieces(piece_index_bitfield value) { + libtorrent_jni.peer_info_pieces_set(swigCPtr, this, piece_index_bitfield.getCPtr(value), value); + } + + public long getTotal_download() { + return libtorrent_jni.peer_info_total_download_get(swigCPtr, this); + } + + public void setTotal_download(long value) { + libtorrent_jni.peer_info_total_download_set(swigCPtr, this, value); + } + + public long getTotal_upload() { + return libtorrent_jni.peer_info_total_upload_get(swigCPtr, this); + } + + public void setTotal_upload(long value) { + libtorrent_jni.peer_info_total_upload_set(swigCPtr, this, value); + } + + public peer_flags_t getFlags() { + long cPtr = libtorrent_jni.peer_info_flags_get(swigCPtr, this); + return (cPtr == 0) ? null : new peer_flags_t(cPtr, false); + } + + public void setFlags(peer_flags_t value) { + libtorrent_jni.peer_info_flags_set(swigCPtr, this, peer_flags_t.getCPtr(value), value); + } + + public peer_source_flags_t getSource() { + long cPtr = libtorrent_jni.peer_info_source_get(swigCPtr, this); + return (cPtr == 0) ? null : new peer_source_flags_t(cPtr, false); + } + + public void setSource(peer_source_flags_t value) { + libtorrent_jni.peer_info_source_set(swigCPtr, this, peer_source_flags_t.getCPtr(value), value); + } + + public int getUp_speed() { + return libtorrent_jni.peer_info_up_speed_get(swigCPtr, this); + } + + public void setUp_speed(int value) { + libtorrent_jni.peer_info_up_speed_set(swigCPtr, this, value); + } + + public int getDown_speed() { + return libtorrent_jni.peer_info_down_speed_get(swigCPtr, this); + } + + public void setDown_speed(int value) { + libtorrent_jni.peer_info_down_speed_set(swigCPtr, this, value); + } + + public int getPayload_up_speed() { + return libtorrent_jni.peer_info_payload_up_speed_get(swigCPtr, this); + } + + public void setPayload_up_speed(int value) { + libtorrent_jni.peer_info_payload_up_speed_set(swigCPtr, this, value); + } + + public int getPayload_down_speed() { + return libtorrent_jni.peer_info_payload_down_speed_get(swigCPtr, this); + } + + public void setPayload_down_speed(int value) { + libtorrent_jni.peer_info_payload_down_speed_set(swigCPtr, this, value); + } + + public sha1_hash getPid() { + long cPtr = libtorrent_jni.peer_info_pid_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setPid(sha1_hash value) { + libtorrent_jni.peer_info_pid_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } + + public int getQueue_bytes() { + return libtorrent_jni.peer_info_queue_bytes_get(swigCPtr, this); + } + + public void setQueue_bytes(int value) { + libtorrent_jni.peer_info_queue_bytes_set(swigCPtr, this, value); + } + + public int getRequest_timeout() { + return libtorrent_jni.peer_info_request_timeout_get(swigCPtr, this); + } + + public void setRequest_timeout(int value) { + libtorrent_jni.peer_info_request_timeout_set(swigCPtr, this, value); + } + + public int getSend_buffer_size() { + return libtorrent_jni.peer_info_send_buffer_size_get(swigCPtr, this); + } + + public void setSend_buffer_size(int value) { + libtorrent_jni.peer_info_send_buffer_size_set(swigCPtr, this, value); + } + + public int getUsed_send_buffer() { + return libtorrent_jni.peer_info_used_send_buffer_get(swigCPtr, this); + } + + public void setUsed_send_buffer(int value) { + libtorrent_jni.peer_info_used_send_buffer_set(swigCPtr, this, value); + } + + public int getReceive_buffer_size() { + return libtorrent_jni.peer_info_receive_buffer_size_get(swigCPtr, this); + } + + public void setReceive_buffer_size(int value) { + libtorrent_jni.peer_info_receive_buffer_size_set(swigCPtr, this, value); + } + + public int getUsed_receive_buffer() { + return libtorrent_jni.peer_info_used_receive_buffer_get(swigCPtr, this); + } + + public void setUsed_receive_buffer(int value) { + libtorrent_jni.peer_info_used_receive_buffer_set(swigCPtr, this, value); + } + + public int getReceive_buffer_watermark() { + return libtorrent_jni.peer_info_receive_buffer_watermark_get(swigCPtr, this); + } + + public void setReceive_buffer_watermark(int value) { + libtorrent_jni.peer_info_receive_buffer_watermark_set(swigCPtr, this, value); + } + + public int getNum_hashfails() { + return libtorrent_jni.peer_info_num_hashfails_get(swigCPtr, this); + } + + public void setNum_hashfails(int value) { + libtorrent_jni.peer_info_num_hashfails_set(swigCPtr, this, value); + } + + public int getDownload_queue_length() { + return libtorrent_jni.peer_info_download_queue_length_get(swigCPtr, this); + } + + public void setDownload_queue_length(int value) { + libtorrent_jni.peer_info_download_queue_length_set(swigCPtr, this, value); + } + + public int getTimed_out_requests() { + return libtorrent_jni.peer_info_timed_out_requests_get(swigCPtr, this); + } + + public void setTimed_out_requests(int value) { + libtorrent_jni.peer_info_timed_out_requests_set(swigCPtr, this, value); + } + + public int getBusy_requests() { + return libtorrent_jni.peer_info_busy_requests_get(swigCPtr, this); + } + + public void setBusy_requests(int value) { + libtorrent_jni.peer_info_busy_requests_set(swigCPtr, this, value); + } + + public int getRequests_in_buffer() { + return libtorrent_jni.peer_info_requests_in_buffer_get(swigCPtr, this); + } + + public void setRequests_in_buffer(int value) { + libtorrent_jni.peer_info_requests_in_buffer_set(swigCPtr, this, value); + } + + public int getTarget_dl_queue_length() { + return libtorrent_jni.peer_info_target_dl_queue_length_get(swigCPtr, this); + } + + public void setTarget_dl_queue_length(int value) { + libtorrent_jni.peer_info_target_dl_queue_length_set(swigCPtr, this, value); + } + + public int getUpload_queue_length() { + return libtorrent_jni.peer_info_upload_queue_length_get(swigCPtr, this); + } + + public void setUpload_queue_length(int value) { + libtorrent_jni.peer_info_upload_queue_length_set(swigCPtr, this, value); + } + + public int getFailcount() { + return libtorrent_jni.peer_info_failcount_get(swigCPtr, this); + } + + public void setFailcount(int value) { + libtorrent_jni.peer_info_failcount_set(swigCPtr, this, value); + } + + public int getDownloading_piece_index() { + return libtorrent_jni.peer_info_downloading_piece_index_get(swigCPtr, this); + } + + public void setDownloading_piece_index(int value) { + libtorrent_jni.peer_info_downloading_piece_index_set(swigCPtr, this, value); + } + + public int getDownloading_block_index() { + return libtorrent_jni.peer_info_downloading_block_index_get(swigCPtr, this); + } + + public void setDownloading_block_index(int value) { + libtorrent_jni.peer_info_downloading_block_index_set(swigCPtr, this, value); + } + + public int getDownloading_progress() { + return libtorrent_jni.peer_info_downloading_progress_get(swigCPtr, this); + } + + public void setDownloading_progress(int value) { + libtorrent_jni.peer_info_downloading_progress_set(swigCPtr, this, value); + } + + public int getDownloading_total() { + return libtorrent_jni.peer_info_downloading_total_get(swigCPtr, this); + } + + public void setDownloading_total(int value) { + libtorrent_jni.peer_info_downloading_total_set(swigCPtr, this, value); + } + + public int getConnection_type() { + return libtorrent_jni.peer_info_connection_type_get(swigCPtr, this); + } + + public void setConnection_type(int value) { + libtorrent_jni.peer_info_connection_type_set(swigCPtr, this, value); + } + + public int getPending_disk_bytes() { + return libtorrent_jni.peer_info_pending_disk_bytes_get(swigCPtr, this); + } + + public void setPending_disk_bytes(int value) { + libtorrent_jni.peer_info_pending_disk_bytes_set(swigCPtr, this, value); + } + + public int getPending_disk_read_bytes() { + return libtorrent_jni.peer_info_pending_disk_read_bytes_get(swigCPtr, this); + } + + public void setPending_disk_read_bytes(int value) { + libtorrent_jni.peer_info_pending_disk_read_bytes_set(swigCPtr, this, value); + } + + public int getSend_quota() { + return libtorrent_jni.peer_info_send_quota_get(swigCPtr, this); + } + + public void setSend_quota(int value) { + libtorrent_jni.peer_info_send_quota_set(swigCPtr, this, value); + } + + public int getReceive_quota() { + return libtorrent_jni.peer_info_receive_quota_get(swigCPtr, this); + } + + public void setReceive_quota(int value) { + libtorrent_jni.peer_info_receive_quota_set(swigCPtr, this, value); + } + + public int getRtt() { + return libtorrent_jni.peer_info_rtt_get(swigCPtr, this); + } + + public void setRtt(int value) { + libtorrent_jni.peer_info_rtt_set(swigCPtr, this, value); + } + + public int getNum_pieces() { + return libtorrent_jni.peer_info_num_pieces_get(swigCPtr, this); + } + + public void setNum_pieces(int value) { + libtorrent_jni.peer_info_num_pieces_set(swigCPtr, this, value); + } + + public int getDownload_rate_peak() { + return libtorrent_jni.peer_info_download_rate_peak_get(swigCPtr, this); + } + + public void setDownload_rate_peak(int value) { + libtorrent_jni.peer_info_download_rate_peak_set(swigCPtr, this, value); + } + + public int getUpload_rate_peak() { + return libtorrent_jni.peer_info_upload_rate_peak_get(swigCPtr, this); + } + + public void setUpload_rate_peak(int value) { + libtorrent_jni.peer_info_upload_rate_peak_set(swigCPtr, this, value); + } + + public float getProgress() { + return libtorrent_jni.peer_info_progress_get(swigCPtr, this); + } + + public void setProgress(float value) { + libtorrent_jni.peer_info_progress_set(swigCPtr, this, value); + } + + public int getProgress_ppm() { + return libtorrent_jni.peer_info_progress_ppm_get(swigCPtr, this); + } + + public void setProgress_ppm(int value) { + libtorrent_jni.peer_info_progress_ppm_set(swigCPtr, this, value); + } + + public int getDeprecated_estimated_reciprocation_rate() { + return libtorrent_jni.peer_info_deprecated_estimated_reciprocation_rate_get(swigCPtr, this); + } + + public void setDeprecated_estimated_reciprocation_rate(int value) { + libtorrent_jni.peer_info_deprecated_estimated_reciprocation_rate_set(swigCPtr, this, value); + } + + public tcp_endpoint getIp() { + long cPtr = libtorrent_jni.peer_info_ip_get(swigCPtr, this); + return (cPtr == 0) ? null : new tcp_endpoint(cPtr, false); + } + + public void setIp(tcp_endpoint value) { + libtorrent_jni.peer_info_ip_set(swigCPtr, this, tcp_endpoint.getCPtr(value), value); + } + + public tcp_endpoint getLocal_endpoint() { + long cPtr = libtorrent_jni.peer_info_local_endpoint_get(swigCPtr, this); + return (cPtr == 0) ? null : new tcp_endpoint(cPtr, false); + } + + public void setLocal_endpoint(tcp_endpoint value) { + libtorrent_jni.peer_info_local_endpoint_set(swigCPtr, this, tcp_endpoint.getCPtr(value), value); + } + + public bandwidth_state_flags_t getRead_state() { + long cPtr = libtorrent_jni.peer_info_read_state_get(swigCPtr, this); + return (cPtr == 0) ? null : new bandwidth_state_flags_t(cPtr, false); + } + + public void setRead_state(bandwidth_state_flags_t value) { + libtorrent_jni.peer_info_read_state_set(swigCPtr, this, bandwidth_state_flags_t.getCPtr(value), value); + } + + public bandwidth_state_flags_t getWrite_state() { + long cPtr = libtorrent_jni.peer_info_write_state_get(swigCPtr, this); + return (cPtr == 0) ? null : new bandwidth_state_flags_t(cPtr, false); + } + + public void setWrite_state(bandwidth_state_flags_t value) { + libtorrent_jni.peer_info_write_state_set(swigCPtr, this, bandwidth_state_flags_t.getCPtr(value), value); + } + + public byte_vector get_client() { + return new byte_vector(libtorrent_jni.peer_info_get_client(swigCPtr, this), true); + } + + public long get_last_request() { + return libtorrent_jni.peer_info_get_last_request(swigCPtr, this); + } + + public long get_last_active() { + return libtorrent_jni.peer_info_get_last_active(swigCPtr, this); + } + + public long get_download_queue_time() { + return libtorrent_jni.peer_info_get_download_queue_time(swigCPtr, this); + } + + public int get_flags() { + return libtorrent_jni.peer_info_get_flags(swigCPtr, this); + } + + public byte get_source() { + return libtorrent_jni.peer_info_get_source(swigCPtr, this); + } + + public byte get_read_state() { + return libtorrent_jni.peer_info_get_read_state(swigCPtr, this); + } + + public byte get_write_state() { + return libtorrent_jni.peer_info_get_write_state(swigCPtr, this); + } + + public final static class connection_type_t { + public final static peer_info.connection_type_t standard_bittorrent = new peer_info.connection_type_t("standard_bittorrent", libtorrent_jni.peer_info_standard_bittorrent_get()); + public final static peer_info.connection_type_t web_seed = new peer_info.connection_type_t("web_seed", libtorrent_jni.peer_info_web_seed_get()); + public final static peer_info.connection_type_t http_seed = new peer_info.connection_type_t("http_seed", libtorrent_jni.peer_info_http_seed_get()); + private static final connection_type_t[] swigValues = {standard_bittorrent, web_seed, http_seed}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private connection_type_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private connection_type_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private connection_type_t(String swigName, connection_type_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static connection_type_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + connection_type_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_info_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_info_vector.java new file mode 100644 index 0000000..23daace --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_info_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_info_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected peer_info_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public peer_info_vector() { + this(libtorrent_jni.new_peer_info_vector(), true); + } + + protected static long getCPtr(peer_info_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_info_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.peer_info_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.peer_info_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.peer_info_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.peer_info_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.peer_info_vector_clear(swigCPtr, this); + } + + public void push_back(peer_info x) { + libtorrent_jni.peer_info_vector_push_back(swigCPtr, this, peer_info.getCPtr(x), x); + } + + public peer_info get(int i) { + return new peer_info(libtorrent_jni.peer_info_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, peer_info val) { + libtorrent_jni.peer_info_vector_set(swigCPtr, this, i, peer_info.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_log_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_log_alert.java new file mode 100644 index 0000000..eac1a5c --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_log_alert.java @@ -0,0 +1,119 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_log_alert extends peer_alert { + public final static int priority = libtorrent_jni.peer_log_alert_priority_get(); + public final static int alert_type = libtorrent_jni.peer_log_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.peer_log_alert_static_category_get(), false); + private transient long swigCPtr; + + protected peer_log_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.peer_log_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(peer_log_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_log_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.peer_log_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.peer_log_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.peer_log_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.peer_log_alert_message(swigCPtr, this); + } + + public peer_log_alert.direction_t getDirection() { + return peer_log_alert.direction_t.swigToEnum(libtorrent_jni.peer_log_alert_direction_get(swigCPtr, this)); + } + + public void setDirection(peer_log_alert.direction_t value) { + libtorrent_jni.peer_log_alert_direction_set(swigCPtr, this, value.swigValue()); + } + + public String log_message() { + return libtorrent_jni.peer_log_alert_log_message(swigCPtr, this); + } + + public String get_event_type() { + return libtorrent_jni.peer_log_alert_get_event_type(swigCPtr, this); + } + + public final static class direction_t { + public final static peer_log_alert.direction_t incoming_message = new peer_log_alert.direction_t("incoming_message"); + public final static peer_log_alert.direction_t outgoing_message = new peer_log_alert.direction_t("outgoing_message"); + public final static peer_log_alert.direction_t incoming = new peer_log_alert.direction_t("incoming"); + public final static peer_log_alert.direction_t outgoing = new peer_log_alert.direction_t("outgoing"); + public final static peer_log_alert.direction_t info = new peer_log_alert.direction_t("info"); + private static final direction_t[] swigValues = {incoming_message, outgoing_message, incoming, outgoing, info}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private direction_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private direction_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private direction_t(String swigName, direction_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static direction_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + direction_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_request.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_request.java new file mode 100644 index 0000000..d3aa599 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_request.java @@ -0,0 +1,71 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_request { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected peer_request(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public peer_request() { + this(libtorrent_jni.new_peer_request(), true); + } + + protected static long getCPtr(peer_request obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_request(swigCPtr); + } + swigCPtr = 0; + } + } + + public int getPiece() { + return libtorrent_jni.peer_request_piece_get(swigCPtr, this); + } + + public void setPiece(int value) { + libtorrent_jni.peer_request_piece_set(swigCPtr, this, value); + } + + public int getStart() { + return libtorrent_jni.peer_request_start_get(swigCPtr, this); + } + + public void setStart(int value) { + libtorrent_jni.peer_request_start_set(swigCPtr, this, value); + } + + public int getLength() { + return libtorrent_jni.peer_request_length_get(swigCPtr, this); + } + + public void setLength(int value) { + libtorrent_jni.peer_request_length_set(swigCPtr, this, value); + } + + public boolean op_eq(peer_request r) { + return libtorrent_jni.peer_request_op_eq(swigCPtr, this, peer_request.getCPtr(r), r); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_snubbed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_snubbed_alert.java new file mode 100644 index 0000000..880ab3d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_snubbed_alert.java @@ -0,0 +1,57 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_snubbed_alert extends peer_alert { + public final static int priority = libtorrent_jni.peer_snubbed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.peer_snubbed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.peer_snubbed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected peer_snubbed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.peer_snubbed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(peer_snubbed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_snubbed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.peer_snubbed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.peer_snubbed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.peer_snubbed_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.peer_snubbed_alert_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_source_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_source_flags_t.java new file mode 100644 index 0000000..00a21d8 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_source_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_source_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected peer_source_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public peer_source_flags_t() { + this(libtorrent_jni.new_peer_source_flags_t(), true); + } + + protected static long getCPtr(peer_source_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static peer_source_flags_t all() { + return new peer_source_flags_t(libtorrent_jni.peer_source_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_source_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.peer_source_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(peer_source_flags_t f) { + return libtorrent_jni.peer_source_flags_t_eq(swigCPtr, this, peer_source_flags_t.getCPtr(f), f); + } + + public boolean ne(peer_source_flags_t f) { + return libtorrent_jni.peer_source_flags_t_ne(swigCPtr, this, peer_source_flags_t.getCPtr(f), f); + } + + public peer_source_flags_t or_(peer_source_flags_t other) { + return new peer_source_flags_t(libtorrent_jni.peer_source_flags_t_or_(swigCPtr, this, peer_source_flags_t.getCPtr(other), other), true); + } + + public peer_source_flags_t and_(peer_source_flags_t other) { + return new peer_source_flags_t(libtorrent_jni.peer_source_flags_t_and_(swigCPtr, this, peer_source_flags_t.getCPtr(other), other), true); + } + + public peer_source_flags_t xor(peer_source_flags_t other) { + return new peer_source_flags_t(libtorrent_jni.peer_source_flags_t_xor(swigCPtr, this, peer_source_flags_t.getCPtr(other), other), true); + } + + public peer_source_flags_t inv() { + return new peer_source_flags_t(libtorrent_jni.peer_source_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.peer_source_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_unsnubbed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_unsnubbed_alert.java new file mode 100644 index 0000000..9834128 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/peer_unsnubbed_alert.java @@ -0,0 +1,57 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class peer_unsnubbed_alert extends peer_alert { + public final static int priority = libtorrent_jni.peer_unsnubbed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.peer_unsnubbed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.peer_unsnubbed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected peer_unsnubbed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.peer_unsnubbed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(peer_unsnubbed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_peer_unsnubbed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.peer_unsnubbed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.peer_unsnubbed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.peer_unsnubbed_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.peer_unsnubbed_alert_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/performance_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/performance_alert.java new file mode 100644 index 0000000..971b193 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/performance_alert.java @@ -0,0 +1,113 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class performance_alert extends torrent_alert { + public final static int priority = libtorrent_jni.performance_alert_priority_get(); + public final static int alert_type = libtorrent_jni.performance_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.performance_alert_static_category_get(), false); + private transient long swigCPtr; + + protected performance_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.performance_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(performance_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_performance_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.performance_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.performance_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.performance_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.performance_alert_message(swigCPtr, this); + } + + public performance_alert.performance_warning_t getWarning_code() { + return performance_alert.performance_warning_t.swigToEnum(libtorrent_jni.performance_alert_warning_code_get(swigCPtr, this)); + } + + public final static class performance_warning_t { + public final static performance_alert.performance_warning_t outstanding_disk_buffer_limit_reached = new performance_alert.performance_warning_t("outstanding_disk_buffer_limit_reached"); + public final static performance_alert.performance_warning_t outstanding_request_limit_reached = new performance_alert.performance_warning_t("outstanding_request_limit_reached"); + public final static performance_alert.performance_warning_t upload_limit_too_low = new performance_alert.performance_warning_t("upload_limit_too_low"); + public final static performance_alert.performance_warning_t download_limit_too_low = new performance_alert.performance_warning_t("download_limit_too_low"); + public final static performance_alert.performance_warning_t send_buffer_watermark_too_low = new performance_alert.performance_warning_t("send_buffer_watermark_too_low"); + public final static performance_alert.performance_warning_t too_many_optimistic_unchoke_slots = new performance_alert.performance_warning_t("too_many_optimistic_unchoke_slots"); + public final static performance_alert.performance_warning_t too_high_disk_queue_limit = new performance_alert.performance_warning_t("too_high_disk_queue_limit"); + public final static performance_alert.performance_warning_t aio_limit_reached = new performance_alert.performance_warning_t("aio_limit_reached"); + public final static performance_alert.performance_warning_t too_few_outgoing_ports = new performance_alert.performance_warning_t("too_few_outgoing_ports", libtorrent_jni.performance_alert_too_few_outgoing_ports_get()); + public final static performance_alert.performance_warning_t too_few_file_descriptors = new performance_alert.performance_warning_t("too_few_file_descriptors"); + public final static performance_alert.performance_warning_t num_warnings = new performance_alert.performance_warning_t("num_warnings"); + private static final performance_warning_t[] swigValues = {outstanding_disk_buffer_limit_reached, outstanding_request_limit_reached, upload_limit_too_low, download_limit_too_low, send_buffer_watermark_too_low, too_many_optimistic_unchoke_slots, too_high_disk_queue_limit, aio_limit_reached, too_few_outgoing_ports, too_few_file_descriptors, num_warnings}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private performance_warning_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private performance_warning_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private performance_warning_t(String swigName, performance_warning_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static performance_warning_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + performance_warning_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/pex_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/pex_flags_t.java new file mode 100644 index 0000000..78ea980 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/pex_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class pex_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected pex_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public pex_flags_t() { + this(libtorrent_jni.new_pex_flags_t(), true); + } + + protected static long getCPtr(pex_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static pex_flags_t all() { + return new pex_flags_t(libtorrent_jni.pex_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_pex_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.pex_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(pex_flags_t f) { + return libtorrent_jni.pex_flags_t_eq(swigCPtr, this, pex_flags_t.getCPtr(f), f); + } + + public boolean ne(pex_flags_t f) { + return libtorrent_jni.pex_flags_t_ne(swigCPtr, this, pex_flags_t.getCPtr(f), f); + } + + public pex_flags_t or_(pex_flags_t other) { + return new pex_flags_t(libtorrent_jni.pex_flags_t_or_(swigCPtr, this, pex_flags_t.getCPtr(other), other), true); + } + + public pex_flags_t and_(pex_flags_t other) { + return new pex_flags_t(libtorrent_jni.pex_flags_t_and_(swigCPtr, this, pex_flags_t.getCPtr(other), other), true); + } + + public pex_flags_t xor(pex_flags_t other) { + return new pex_flags_t(libtorrent_jni.pex_flags_t_xor(swigCPtr, this, pex_flags_t.getCPtr(other), other), true); + } + + public pex_flags_t inv() { + return new pex_flags_t(libtorrent_jni.pex_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.pex_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/picker_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/picker_flags_t.java new file mode 100644 index 0000000..51f3a60 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/picker_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class picker_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected picker_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public picker_flags_t() { + this(libtorrent_jni.new_picker_flags_t(), true); + } + + protected static long getCPtr(picker_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static picker_flags_t all() { + return new picker_flags_t(libtorrent_jni.picker_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_picker_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.picker_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(picker_flags_t f) { + return libtorrent_jni.picker_flags_t_eq(swigCPtr, this, picker_flags_t.getCPtr(f), f); + } + + public boolean ne(picker_flags_t f) { + return libtorrent_jni.picker_flags_t_ne(swigCPtr, this, picker_flags_t.getCPtr(f), f); + } + + public picker_flags_t or_(picker_flags_t other) { + return new picker_flags_t(libtorrent_jni.picker_flags_t_or_(swigCPtr, this, picker_flags_t.getCPtr(other), other), true); + } + + public picker_flags_t and_(picker_flags_t other) { + return new picker_flags_t(libtorrent_jni.picker_flags_t_and_(swigCPtr, this, picker_flags_t.getCPtr(other), other), true); + } + + public picker_flags_t xor(picker_flags_t other) { + return new picker_flags_t(libtorrent_jni.picker_flags_t_xor(swigCPtr, this, picker_flags_t.getCPtr(other), other), true); + } + + public picker_flags_t inv() { + return new picker_flags_t(libtorrent_jni.picker_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.picker_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/picker_log_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/picker_log_alert.java new file mode 100644 index 0000000..b6fe2ca --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/picker_log_alert.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class picker_log_alert extends peer_alert { + public final static int priority = libtorrent_jni.picker_log_alert_priority_get(); + public final static int alert_type = libtorrent_jni.picker_log_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.picker_log_alert_static_category_get(), false); + public final static picker_flags_t partial_ratio = new picker_flags_t(libtorrent_jni.picker_log_alert_partial_ratio_get(), false); + public final static picker_flags_t prioritize_partials = new picker_flags_t(libtorrent_jni.picker_log_alert_prioritize_partials_get(), false); + public final static picker_flags_t rarest_first_partials = new picker_flags_t(libtorrent_jni.picker_log_alert_rarest_first_partials_get(), false); + public final static picker_flags_t rarest_first = new picker_flags_t(libtorrent_jni.picker_log_alert_rarest_first_get(), false); + public final static picker_flags_t reverse_rarest_first = new picker_flags_t(libtorrent_jni.picker_log_alert_reverse_rarest_first_get(), false); + public final static picker_flags_t suggested_pieces = new picker_flags_t(libtorrent_jni.picker_log_alert_suggested_pieces_get(), false); + public final static picker_flags_t prio_sequential_pieces = new picker_flags_t(libtorrent_jni.picker_log_alert_prio_sequential_pieces_get(), false); + public final static picker_flags_t sequential_pieces = new picker_flags_t(libtorrent_jni.picker_log_alert_sequential_pieces_get(), false); + public final static picker_flags_t reverse_pieces = new picker_flags_t(libtorrent_jni.picker_log_alert_reverse_pieces_get(), false); + public final static picker_flags_t time_critical = new picker_flags_t(libtorrent_jni.picker_log_alert_time_critical_get(), false); + public final static picker_flags_t random_pieces = new picker_flags_t(libtorrent_jni.picker_log_alert_random_pieces_get(), false); + public final static picker_flags_t prefer_contiguous = new picker_flags_t(libtorrent_jni.picker_log_alert_prefer_contiguous_get(), false); + public final static picker_flags_t reverse_sequential = new picker_flags_t(libtorrent_jni.picker_log_alert_reverse_sequential_get(), false); + public final static picker_flags_t backup1 = new picker_flags_t(libtorrent_jni.picker_log_alert_backup1_get(), false); + public final static picker_flags_t backup2 = new picker_flags_t(libtorrent_jni.picker_log_alert_backup2_get(), false); + public final static picker_flags_t end_game = new picker_flags_t(libtorrent_jni.picker_log_alert_end_game_get(), false); + public final static picker_flags_t extent_affinity = new picker_flags_t(libtorrent_jni.picker_log_alert_extent_affinity_get(), false); + private transient long swigCPtr; + + protected picker_log_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.picker_log_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(picker_log_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_picker_log_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.picker_log_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.picker_log_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.picker_log_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.picker_log_alert_message(swigCPtr, this); + } + + public picker_flags_t getPicker_flags() { + long cPtr = libtorrent_jni.picker_log_alert_picker_flags_get(swigCPtr, this); + return (cPtr == 0) ? null : new picker_flags_t(cPtr, false); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/piece_finished_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/piece_finished_alert.java new file mode 100644 index 0000000..a4af4c4 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/piece_finished_alert.java @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class piece_finished_alert extends torrent_alert { + public final static int priority = libtorrent_jni.piece_finished_alert_priority_get(); + public final static int alert_type = libtorrent_jni.piece_finished_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.piece_finished_alert_static_category_get(), false); + private transient long swigCPtr; + + protected piece_finished_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.piece_finished_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(piece_finished_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_piece_finished_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.piece_finished_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.piece_finished_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.piece_finished_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.piece_finished_alert_message(swigCPtr, this); + } + + public int getPiece_index() { + return libtorrent_jni.piece_finished_alert_piece_index_get(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/piece_index_bitfield.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/piece_index_bitfield.java new file mode 100644 index 0000000..6959575 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/piece_index_bitfield.java @@ -0,0 +1,123 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class piece_index_bitfield { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected piece_index_bitfield(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public piece_index_bitfield() { + this(libtorrent_jni.new_piece_index_bitfield__SWIG_0(), true); + } + + public piece_index_bitfield(int bits) { + this(libtorrent_jni.new_piece_index_bitfield__SWIG_1(bits), true); + } + + public piece_index_bitfield(int bits, boolean val) { + this(libtorrent_jni.new_piece_index_bitfield__SWIG_2(bits, val), true); + } + + public piece_index_bitfield(piece_index_bitfield rhs) { + this(libtorrent_jni.new_piece_index_bitfield__SWIG_3(piece_index_bitfield.getCPtr(rhs), rhs), true); + } + + protected static long getCPtr(piece_index_bitfield obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_piece_index_bitfield(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean get_bit(int index) { + return libtorrent_jni.piece_index_bitfield_get_bit(swigCPtr, this, index); + } + + public void clear_bit(int index) { + libtorrent_jni.piece_index_bitfield_clear_bit(swigCPtr, this, index); + } + + public void set_bit(int index) { + libtorrent_jni.piece_index_bitfield_set_bit(swigCPtr, this, index); + } + + public int end_index() { + return libtorrent_jni.piece_index_bitfield_end_index(swigCPtr, this); + } + + public boolean all_set() { + return libtorrent_jni.piece_index_bitfield_all_set(swigCPtr, this); + } + + public boolean none_set() { + return libtorrent_jni.piece_index_bitfield_none_set(swigCPtr, this); + } + + public int size() { + return libtorrent_jni.piece_index_bitfield_size(swigCPtr, this); + } + + public int num_words() { + return libtorrent_jni.piece_index_bitfield_num_words(swigCPtr, this); + } + + public boolean empty() { + return libtorrent_jni.piece_index_bitfield_empty(swigCPtr, this); + } + + public int count() { + return libtorrent_jni.piece_index_bitfield_count(swigCPtr, this); + } + + public int find_first_set() { + return libtorrent_jni.piece_index_bitfield_find_first_set(swigCPtr, this); + } + + public int find_last_clear() { + return libtorrent_jni.piece_index_bitfield_find_last_clear(swigCPtr, this); + } + + public void resize(int bits, boolean val) { + libtorrent_jni.piece_index_bitfield_resize__SWIG_0(swigCPtr, this, bits, val); + } + + public void resize(int bits) { + libtorrent_jni.piece_index_bitfield_resize__SWIG_1(swigCPtr, this, bits); + } + + public void set_all() { + libtorrent_jni.piece_index_bitfield_set_all(swigCPtr, this); + } + + public void clear_all() { + libtorrent_jni.piece_index_bitfield_clear_all(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.piece_index_bitfield_clear(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/piece_index_int_pair.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/piece_index_int_pair.java new file mode 100644 index 0000000..2d384ce --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/piece_index_int_pair.java @@ -0,0 +1,67 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class piece_index_int_pair { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected piece_index_int_pair(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public piece_index_int_pair() { + this(libtorrent_jni.new_piece_index_int_pair__SWIG_0(), true); + } + + public piece_index_int_pair(int first, int second) { + this(libtorrent_jni.new_piece_index_int_pair__SWIG_1(first, second), true); + } + + public piece_index_int_pair(piece_index_int_pair other) { + this(libtorrent_jni.new_piece_index_int_pair__SWIG_2(piece_index_int_pair.getCPtr(other), other), true); + } + + protected static long getCPtr(piece_index_int_pair obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_piece_index_int_pair(swigCPtr); + } + swigCPtr = 0; + } + } + + public int getFirst() { + return libtorrent_jni.piece_index_int_pair_first_get(swigCPtr, this); + } + + public void setFirst(int value) { + libtorrent_jni.piece_index_int_pair_first_set(swigCPtr, this, value); + } + + public int getSecond() { + return libtorrent_jni.piece_index_int_pair_second_get(swigCPtr, this); + } + + public void setSecond(int value) { + libtorrent_jni.piece_index_int_pair_second_set(swigCPtr, this, value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/piece_index_int_pair_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/piece_index_int_pair_vector.java new file mode 100644 index 0000000..13956ba --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/piece_index_int_pair_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class piece_index_int_pair_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected piece_index_int_pair_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public piece_index_int_pair_vector() { + this(libtorrent_jni.new_piece_index_int_pair_vector(), true); + } + + protected static long getCPtr(piece_index_int_pair_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_piece_index_int_pair_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.piece_index_int_pair_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.piece_index_int_pair_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.piece_index_int_pair_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.piece_index_int_pair_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.piece_index_int_pair_vector_clear(swigCPtr, this); + } + + public void push_back(piece_index_int_pair x) { + libtorrent_jni.piece_index_int_pair_vector_push_back(swigCPtr, this, piece_index_int_pair.getCPtr(x), x); + } + + public piece_index_int_pair get(int i) { + return new piece_index_int_pair(libtorrent_jni.piece_index_int_pair_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, piece_index_int_pair val) { + libtorrent_jni.piece_index_int_pair_vector_set(swigCPtr, this, i, piece_index_int_pair.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/piece_index_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/piece_index_vector.java new file mode 100644 index 0000000..607a8cd --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/piece_index_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class piece_index_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected piece_index_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public piece_index_vector() { + this(libtorrent_jni.new_piece_index_vector(), true); + } + + protected static long getCPtr(piece_index_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_piece_index_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.piece_index_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.piece_index_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.piece_index_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.piece_index_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.piece_index_vector_clear(swigCPtr, this); + } + + public void push_back(int x) { + libtorrent_jni.piece_index_vector_push_back(swigCPtr, this, x); + } + + public int get(int i) { + return libtorrent_jni.piece_index_vector_get(swigCPtr, this, i); + } + + public void set(int i, int val) { + libtorrent_jni.piece_index_vector_set(swigCPtr, this, i, val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/port_filter.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/port_filter.java new file mode 100644 index 0000000..26ac0f0 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/port_filter.java @@ -0,0 +1,93 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class port_filter { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected port_filter(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public port_filter() { + this(libtorrent_jni.new_port_filter(), true); + } + + protected static long getCPtr(port_filter obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_port_filter(swigCPtr); + } + swigCPtr = 0; + } + } + + public void add_rule(int first, int last, long flags) { + libtorrent_jni.port_filter_add_rule(swigCPtr, this, first, last, flags); + } + + public long access(int port) { + return libtorrent_jni.port_filter_access(swigCPtr, this, port); + } + + public final static class access_flags { + public final static port_filter.access_flags blocked = new port_filter.access_flags("blocked", libtorrent_jni.port_filter_blocked_get()); + private static final access_flags[] swigValues = {blocked}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private access_flags(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private access_flags(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private access_flags(String swigName, access_flags swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static access_flags swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + access_flags.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/port_mapping_t_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/port_mapping_t_vector.java new file mode 100644 index 0000000..4cf38ab --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/port_mapping_t_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class port_mapping_t_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected port_mapping_t_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public port_mapping_t_vector() { + this(libtorrent_jni.new_port_mapping_t_vector(), true); + } + + protected static long getCPtr(port_mapping_t_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_port_mapping_t_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.port_mapping_t_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.port_mapping_t_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.port_mapping_t_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.port_mapping_t_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.port_mapping_t_vector_clear(swigCPtr, this); + } + + public void push_back(int x) { + libtorrent_jni.port_mapping_t_vector_push_back(swigCPtr, this, x); + } + + public int get(int i) { + return libtorrent_jni.port_mapping_t_vector_get(swigCPtr, this, i); + } + + public void set(int i, int val) { + libtorrent_jni.port_mapping_t_vector_set(swigCPtr, this, i, val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/portmap_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/portmap_alert.java new file mode 100644 index 0000000..e09779d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/portmap_alert.java @@ -0,0 +1,73 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class portmap_alert extends alert { + public final static int priority = libtorrent_jni.portmap_alert_priority_get(); + public final static int alert_type = libtorrent_jni.portmap_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.portmap_alert_static_category_get(), false); + private transient long swigCPtr; + + protected portmap_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.portmap_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(portmap_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_portmap_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.portmap_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.portmap_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.portmap_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.portmap_alert_message(swigCPtr, this); + } + + public int getMapping() { + return libtorrent_jni.portmap_alert_mapping_get(swigCPtr, this); + } + + public int getExternal_port() { + return libtorrent_jni.portmap_alert_external_port_get(swigCPtr, this); + } + + public portmap_protocol getMap_protocol() { + return portmap_protocol.swigToEnum(libtorrent_jni.portmap_alert_map_protocol_get(swigCPtr, this)); + } + + public portmap_transport getMap_transport() { + return portmap_transport.swigToEnum(libtorrent_jni.portmap_alert_map_transport_get(swigCPtr, this)); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/portmap_error_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/portmap_error_alert.java new file mode 100644 index 0000000..0b3a59a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/portmap_error_alert.java @@ -0,0 +1,74 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class portmap_error_alert extends alert { + public final static int priority = libtorrent_jni.portmap_error_alert_priority_get(); + public final static int alert_type = libtorrent_jni.portmap_error_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.portmap_error_alert_static_category_get(), false); + private transient long swigCPtr; + + protected portmap_error_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.portmap_error_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(portmap_error_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_portmap_error_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.portmap_error_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.portmap_error_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.portmap_error_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.portmap_error_alert_message(swigCPtr, this); + } + + public int getMapping() { + return libtorrent_jni.portmap_error_alert_mapping_get(swigCPtr, this); + } + + public portmap_transport getMap_transport() { + return portmap_transport.swigToEnum(libtorrent_jni.portmap_error_alert_map_transport_get(swigCPtr, this)); + } + + public void setMap_transport(portmap_transport value) { + libtorrent_jni.portmap_error_alert_map_transport_set(swigCPtr, this, value.swigValue()); + } + + public error_code getError() { + long cPtr = libtorrent_jni.portmap_error_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/portmap_log_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/portmap_log_alert.java new file mode 100644 index 0000000..d9a4c45 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/portmap_log_alert.java @@ -0,0 +1,65 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class portmap_log_alert extends alert { + public final static int priority = libtorrent_jni.portmap_log_alert_priority_get(); + public final static int alert_type = libtorrent_jni.portmap_log_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.portmap_log_alert_static_category_get(), false); + private transient long swigCPtr; + + protected portmap_log_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.portmap_log_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(portmap_log_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_portmap_log_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.portmap_log_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.portmap_log_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.portmap_log_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.portmap_log_alert_message(swigCPtr, this); + } + + public portmap_transport getMap_transport() { + return portmap_transport.swigToEnum(libtorrent_jni.portmap_log_alert_map_transport_get(swigCPtr, this)); + } + + public String log_message() { + return libtorrent_jni.portmap_log_alert_log_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/portmap_protocol.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/portmap_protocol.java new file mode 100644 index 0000000..51ac541 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/portmap_protocol.java @@ -0,0 +1,54 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public final class portmap_protocol { + public final static portmap_protocol none = new portmap_protocol("none"); + public final static portmap_protocol tcp = new portmap_protocol("tcp"); + public final static portmap_protocol udp = new portmap_protocol("udp"); + private static final portmap_protocol[] swigValues = {none, tcp, udp}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private portmap_protocol(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private portmap_protocol(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private portmap_protocol(String swigName, portmap_protocol swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static portmap_protocol swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + portmap_protocol.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/portmap_transport.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/portmap_transport.java new file mode 100644 index 0000000..d1bcf99 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/portmap_transport.java @@ -0,0 +1,53 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public final class portmap_transport { + public final static portmap_transport natpmp = new portmap_transport("natpmp"); + public final static portmap_transport upnp = new portmap_transport("upnp"); + private static final portmap_transport[] swigValues = {natpmp, upnp}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private portmap_transport(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private portmap_transport(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private portmap_transport(String swigName, portmap_transport swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static portmap_transport swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + portmap_transport.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/posix_stat_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/posix_stat_t.java new file mode 100644 index 0000000..3b19ca6 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/posix_stat_t.java @@ -0,0 +1,83 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class posix_stat_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected posix_stat_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public posix_stat_t() { + this(libtorrent_jni.new_posix_stat_t(), true); + } + + protected static long getCPtr(posix_stat_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_posix_stat_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public long getSize() { + return libtorrent_jni.posix_stat_t_size_get(swigCPtr, this); + } + + public void setSize(long value) { + libtorrent_jni.posix_stat_t_size_set(swigCPtr, this, value); + } + + public long getAtime() { + return libtorrent_jni.posix_stat_t_atime_get(swigCPtr, this); + } + + public void setAtime(long value) { + libtorrent_jni.posix_stat_t_atime_set(swigCPtr, this, value); + } + + public long getMtime() { + return libtorrent_jni.posix_stat_t_mtime_get(swigCPtr, this); + } + + public void setMtime(long value) { + libtorrent_jni.posix_stat_t_mtime_set(swigCPtr, this, value); + } + + public long getCtime() { + return libtorrent_jni.posix_stat_t_ctime_get(swigCPtr, this); + } + + public void setCtime(long value) { + libtorrent_jni.posix_stat_t_ctime_set(swigCPtr, this, value); + } + + public int getMode() { + return libtorrent_jni.posix_stat_t_mode_get(swigCPtr, this); + } + + public void setMode(int value) { + libtorrent_jni.posix_stat_t_mode_set(swigCPtr, this, value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/posix_wrapper.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/posix_wrapper.java new file mode 100644 index 0000000..27a10ee --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/posix_wrapper.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class posix_wrapper { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected posix_wrapper(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public posix_wrapper() { + this(libtorrent_jni.new_posix_wrapper(), true); + libtorrent_jni.posix_wrapper_director_connect(this, swigCPtr, true, true); + } + + protected static long getCPtr(posix_wrapper obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_posix_wrapper(swigCPtr); + } + swigCPtr = 0; + } + } + + protected void swigDirectorDisconnect() { + swigCMemOwn = false; + delete(); + } + + public void swigReleaseOwnership() { + swigCMemOwn = false; + libtorrent_jni.posix_wrapper_change_ownership(this, swigCPtr, false); + } + + public void swigTakeOwnership() { + swigCMemOwn = true; + libtorrent_jni.posix_wrapper_change_ownership(this, swigCPtr, true); + } + + public int open(String path, int flags, int mode) { + return (getClass() == posix_wrapper.class) ? libtorrent_jni.posix_wrapper_open(swigCPtr, this, path, flags, mode) : libtorrent_jni.posix_wrapper_openSwigExplicitposix_wrapper(swigCPtr, this, path, flags, mode); + } + + public int stat(String path, posix_stat_t buf) { + return (getClass() == posix_wrapper.class) ? libtorrent_jni.posix_wrapper_stat(swigCPtr, this, path, posix_stat_t.getCPtr(buf), buf) : libtorrent_jni.posix_wrapper_statSwigExplicitposix_wrapper(swigCPtr, this, path, posix_stat_t.getCPtr(buf), buf); + } + + public int mkdir(String path, int mode) { + return (getClass() == posix_wrapper.class) ? libtorrent_jni.posix_wrapper_mkdir(swigCPtr, this, path, mode) : libtorrent_jni.posix_wrapper_mkdirSwigExplicitposix_wrapper(swigCPtr, this, path, mode); + } + + public int rename(String oldpath, String newpath) { + return (getClass() == posix_wrapper.class) ? libtorrent_jni.posix_wrapper_rename(swigCPtr, this, oldpath, newpath) : libtorrent_jni.posix_wrapper_renameSwigExplicitposix_wrapper(swigCPtr, this, oldpath, newpath); + } + + public int remove(String path) { + return (getClass() == posix_wrapper.class) ? libtorrent_jni.posix_wrapper_remove(swigCPtr, this, path) : libtorrent_jni.posix_wrapper_removeSwigExplicitposix_wrapper(swigCPtr, this, path); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/read_piece_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/read_piece_alert.java new file mode 100644 index 0000000..4911702 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/read_piece_alert.java @@ -0,0 +1,74 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class read_piece_alert extends torrent_alert { + public final static int priority = libtorrent_jni.read_piece_alert_priority_get(); + public final static int alert_type = libtorrent_jni.read_piece_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.read_piece_alert_static_category_get(), false); + private transient long swigCPtr; + + protected read_piece_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.read_piece_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(read_piece_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_read_piece_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.read_piece_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.read_piece_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.read_piece_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.read_piece_alert_message(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.read_piece_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public int getPiece() { + return libtorrent_jni.read_piece_alert_piece_get(swigCPtr, this); + } + + public int getSize() { + return libtorrent_jni.read_piece_alert_size_get(swigCPtr, this); + } + + public long buffer_ptr() { + return libtorrent_jni.read_piece_alert_buffer_ptr(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/reannounce_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/reannounce_flags_t.java new file mode 100644 index 0000000..b1a3b55 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/reannounce_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class reannounce_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected reannounce_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public reannounce_flags_t() { + this(libtorrent_jni.new_reannounce_flags_t(), true); + } + + protected static long getCPtr(reannounce_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static reannounce_flags_t all() { + return new reannounce_flags_t(libtorrent_jni.reannounce_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_reannounce_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.reannounce_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(reannounce_flags_t f) { + return libtorrent_jni.reannounce_flags_t_eq(swigCPtr, this, reannounce_flags_t.getCPtr(f), f); + } + + public boolean ne(reannounce_flags_t f) { + return libtorrent_jni.reannounce_flags_t_ne(swigCPtr, this, reannounce_flags_t.getCPtr(f), f); + } + + public reannounce_flags_t or_(reannounce_flags_t other) { + return new reannounce_flags_t(libtorrent_jni.reannounce_flags_t_or_(swigCPtr, this, reannounce_flags_t.getCPtr(other), other), true); + } + + public reannounce_flags_t and_(reannounce_flags_t other) { + return new reannounce_flags_t(libtorrent_jni.reannounce_flags_t_and_(swigCPtr, this, reannounce_flags_t.getCPtr(other), other), true); + } + + public reannounce_flags_t xor(reannounce_flags_t other) { + return new reannounce_flags_t(libtorrent_jni.reannounce_flags_t_xor(swigCPtr, this, reannounce_flags_t.getCPtr(other), other), true); + } + + public reannounce_flags_t inv() { + return new reannounce_flags_t(libtorrent_jni.reannounce_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.reannounce_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/remove_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/remove_flags_t.java new file mode 100644 index 0000000..68fe09b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/remove_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class remove_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected remove_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public remove_flags_t() { + this(libtorrent_jni.new_remove_flags_t(), true); + } + + protected static long getCPtr(remove_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static remove_flags_t all() { + return new remove_flags_t(libtorrent_jni.remove_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_remove_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.remove_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(remove_flags_t f) { + return libtorrent_jni.remove_flags_t_eq(swigCPtr, this, remove_flags_t.getCPtr(f), f); + } + + public boolean ne(remove_flags_t f) { + return libtorrent_jni.remove_flags_t_ne(swigCPtr, this, remove_flags_t.getCPtr(f), f); + } + + public remove_flags_t or_(remove_flags_t other) { + return new remove_flags_t(libtorrent_jni.remove_flags_t_or_(swigCPtr, this, remove_flags_t.getCPtr(other), other), true); + } + + public remove_flags_t and_(remove_flags_t other) { + return new remove_flags_t(libtorrent_jni.remove_flags_t_and_(swigCPtr, this, remove_flags_t.getCPtr(other), other), true); + } + + public remove_flags_t xor(remove_flags_t other) { + return new remove_flags_t(libtorrent_jni.remove_flags_t_xor(swigCPtr, this, remove_flags_t.getCPtr(other), other), true); + } + + public remove_flags_t inv() { + return new remove_flags_t(libtorrent_jni.remove_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.remove_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/reopen_network_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/reopen_network_flags_t.java new file mode 100644 index 0000000..0fc57c5 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/reopen_network_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class reopen_network_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected reopen_network_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public reopen_network_flags_t() { + this(libtorrent_jni.new_reopen_network_flags_t(), true); + } + + protected static long getCPtr(reopen_network_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static reopen_network_flags_t all() { + return new reopen_network_flags_t(libtorrent_jni.reopen_network_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_reopen_network_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.reopen_network_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(reopen_network_flags_t f) { + return libtorrent_jni.reopen_network_flags_t_eq(swigCPtr, this, reopen_network_flags_t.getCPtr(f), f); + } + + public boolean ne(reopen_network_flags_t f) { + return libtorrent_jni.reopen_network_flags_t_ne(swigCPtr, this, reopen_network_flags_t.getCPtr(f), f); + } + + public reopen_network_flags_t or_(reopen_network_flags_t other) { + return new reopen_network_flags_t(libtorrent_jni.reopen_network_flags_t_or_(swigCPtr, this, reopen_network_flags_t.getCPtr(other), other), true); + } + + public reopen_network_flags_t and_(reopen_network_flags_t other) { + return new reopen_network_flags_t(libtorrent_jni.reopen_network_flags_t_and_(swigCPtr, this, reopen_network_flags_t.getCPtr(other), other), true); + } + + public reopen_network_flags_t xor(reopen_network_flags_t other) { + return new reopen_network_flags_t(libtorrent_jni.reopen_network_flags_t_xor(swigCPtr, this, reopen_network_flags_t.getCPtr(other), other), true); + } + + public reopen_network_flags_t inv() { + return new reopen_network_flags_t(libtorrent_jni.reopen_network_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.reopen_network_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/request_dropped_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/request_dropped_alert.java new file mode 100644 index 0000000..c46dbf4 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/request_dropped_alert.java @@ -0,0 +1,65 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class request_dropped_alert extends peer_alert { + public final static int priority = libtorrent_jni.request_dropped_alert_priority_get(); + public final static int alert_type = libtorrent_jni.request_dropped_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.request_dropped_alert_static_category_get(), false); + private transient long swigCPtr; + + protected request_dropped_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.request_dropped_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(request_dropped_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_request_dropped_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.request_dropped_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.request_dropped_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.request_dropped_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.request_dropped_alert_message(swigCPtr, this); + } + + public int getBlock_index() { + return libtorrent_jni.request_dropped_alert_block_index_get(swigCPtr, this); + } + + public int getPiece_index() { + return libtorrent_jni.request_dropped_alert_piece_index_get(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/resume_data_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/resume_data_flags_t.java new file mode 100644 index 0000000..03a2e43 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/resume_data_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class resume_data_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected resume_data_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public resume_data_flags_t() { + this(libtorrent_jni.new_resume_data_flags_t(), true); + } + + protected static long getCPtr(resume_data_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static resume_data_flags_t all() { + return new resume_data_flags_t(libtorrent_jni.resume_data_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_resume_data_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.resume_data_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(resume_data_flags_t f) { + return libtorrent_jni.resume_data_flags_t_eq(swigCPtr, this, resume_data_flags_t.getCPtr(f), f); + } + + public boolean ne(resume_data_flags_t f) { + return libtorrent_jni.resume_data_flags_t_ne(swigCPtr, this, resume_data_flags_t.getCPtr(f), f); + } + + public resume_data_flags_t or_(resume_data_flags_t other) { + return new resume_data_flags_t(libtorrent_jni.resume_data_flags_t_or_(swigCPtr, this, resume_data_flags_t.getCPtr(other), other), true); + } + + public resume_data_flags_t and_(resume_data_flags_t other) { + return new resume_data_flags_t(libtorrent_jni.resume_data_flags_t_and_(swigCPtr, this, resume_data_flags_t.getCPtr(other), other), true); + } + + public resume_data_flags_t xor(resume_data_flags_t other) { + return new resume_data_flags_t(libtorrent_jni.resume_data_flags_t_xor(swigCPtr, this, resume_data_flags_t.getCPtr(other), other), true); + } + + public resume_data_flags_t inv() { + return new resume_data_flags_t(libtorrent_jni.resume_data_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.resume_data_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/save_resume_data_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/save_resume_data_alert.java new file mode 100644 index 0000000..de3d241 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/save_resume_data_alert.java @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class save_resume_data_alert extends torrent_alert { + public final static int priority = libtorrent_jni.save_resume_data_alert_priority_get(); + public final static int alert_type = libtorrent_jni.save_resume_data_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.save_resume_data_alert_static_category_get(), false); + private transient long swigCPtr; + + protected save_resume_data_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.save_resume_data_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(save_resume_data_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_save_resume_data_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.save_resume_data_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.save_resume_data_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.save_resume_data_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.save_resume_data_alert_message(swigCPtr, this); + } + + public add_torrent_params getParams() { + long cPtr = libtorrent_jni.save_resume_data_alert_params_get(swigCPtr, this); + return (cPtr == 0) ? null : new add_torrent_params(cPtr, false); + } + + public void setParams(add_torrent_params value) { + libtorrent_jni.save_resume_data_alert_params_set(swigCPtr, this, add_torrent_params.getCPtr(value), value); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/save_resume_data_failed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/save_resume_data_failed_alert.java new file mode 100644 index 0000000..e408522 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/save_resume_data_failed_alert.java @@ -0,0 +1,62 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class save_resume_data_failed_alert extends torrent_alert { + public final static int priority = libtorrent_jni.save_resume_data_failed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.save_resume_data_failed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.save_resume_data_failed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected save_resume_data_failed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.save_resume_data_failed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(save_resume_data_failed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_save_resume_data_failed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.save_resume_data_failed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.save_resume_data_failed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.save_resume_data_failed_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.save_resume_data_failed_alert_message(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.save_resume_data_failed_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/save_state_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/save_state_flags_t.java new file mode 100644 index 0000000..12d224b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/save_state_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class save_state_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected save_state_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public save_state_flags_t() { + this(libtorrent_jni.new_save_state_flags_t(), true); + } + + protected static long getCPtr(save_state_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static save_state_flags_t all() { + return new save_state_flags_t(libtorrent_jni.save_state_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_save_state_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.save_state_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(save_state_flags_t f) { + return libtorrent_jni.save_state_flags_t_eq(swigCPtr, this, save_state_flags_t.getCPtr(f), f); + } + + public boolean ne(save_state_flags_t f) { + return libtorrent_jni.save_state_flags_t_ne(swigCPtr, this, save_state_flags_t.getCPtr(f), f); + } + + public save_state_flags_t or_(save_state_flags_t other) { + return new save_state_flags_t(libtorrent_jni.save_state_flags_t_or_(swigCPtr, this, save_state_flags_t.getCPtr(other), other), true); + } + + public save_state_flags_t and_(save_state_flags_t other) { + return new save_state_flags_t(libtorrent_jni.save_state_flags_t_and_(swigCPtr, this, save_state_flags_t.getCPtr(other), other), true); + } + + public save_state_flags_t xor(save_state_flags_t other) { + return new save_state_flags_t(libtorrent_jni.save_state_flags_t_xor(swigCPtr, this, save_state_flags_t.getCPtr(other), other), true); + } + + public save_state_flags_t inv() { + return new save_state_flags_t(libtorrent_jni.save_state_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.save_state_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/scrape_failed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/scrape_failed_alert.java new file mode 100644 index 0000000..2c0bf41 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/scrape_failed_alert.java @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class scrape_failed_alert extends tracker_alert { + public final static int priority = libtorrent_jni.scrape_failed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.scrape_failed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.scrape_failed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected scrape_failed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.scrape_failed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(scrape_failed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_scrape_failed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.scrape_failed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.scrape_failed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.scrape_failed_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.scrape_failed_alert_message(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.scrape_failed_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public String error_message() { + return libtorrent_jni.scrape_failed_alert_error_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/scrape_reply_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/scrape_reply_alert.java new file mode 100644 index 0000000..d429543 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/scrape_reply_alert.java @@ -0,0 +1,65 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class scrape_reply_alert extends tracker_alert { + public final static int priority = libtorrent_jni.scrape_reply_alert_priority_get(); + public final static int alert_type = libtorrent_jni.scrape_reply_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.scrape_reply_alert_static_category_get(), false); + private transient long swigCPtr; + + protected scrape_reply_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.scrape_reply_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(scrape_reply_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_scrape_reply_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.scrape_reply_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.scrape_reply_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.scrape_reply_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.scrape_reply_alert_message(swigCPtr, this); + } + + public int getIncomplete() { + return libtorrent_jni.scrape_reply_alert_incomplete_get(swigCPtr, this); + } + + public int getComplete() { + return libtorrent_jni.scrape_reply_alert_complete_get(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session.java new file mode 100644 index 0000000..2dc5ed4 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session.java @@ -0,0 +1,67 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class session extends session_handle { + private transient long swigCPtr; + + protected session(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.session_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + public session(session_params params) { + this(libtorrent_jni.new_session__SWIG_0(session_params.getCPtr(params), params), true); + } + + public session(session_params params, session_flags_t flags) { + this(libtorrent_jni.new_session__SWIG_1(session_params.getCPtr(params), params, session_flags_t.getCPtr(flags), flags), true); + } + + public session() { + this(libtorrent_jni.new_session__SWIG_3(), true); + } + + public session(settings_pack pack, session_flags_t flags) { + this(libtorrent_jni.new_session__SWIG_4(settings_pack.getCPtr(pack), pack, session_flags_t.getCPtr(flags), flags), true); + } + + public session(settings_pack pack) { + this(libtorrent_jni.new_session__SWIG_5(settings_pack.getCPtr(pack), pack), true); + } + + public session(session arg0) { + this(libtorrent_jni.new_session__SWIG_6(session.getCPtr(arg0), arg0), true); + } + + protected static long getCPtr(session obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_session(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public session_proxy abort() { + return new session_proxy(libtorrent_jni.session_abort(swigCPtr, this), true); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_error_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_error_alert.java new file mode 100644 index 0000000..e8d99ba --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_error_alert.java @@ -0,0 +1,62 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class session_error_alert extends alert { + public final static int priority = libtorrent_jni.session_error_alert_priority_get(); + public final static int alert_type = libtorrent_jni.session_error_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.session_error_alert_static_category_get(), false); + private transient long swigCPtr; + + protected session_error_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.session_error_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(session_error_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_session_error_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.session_error_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.session_error_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.session_error_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.session_error_alert_message(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.session_error_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_flags_t.java new file mode 100644 index 0000000..7f13f11 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class session_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected session_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public session_flags_t() { + this(libtorrent_jni.new_session_flags_t(), true); + } + + protected static long getCPtr(session_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static session_flags_t all() { + return new session_flags_t(libtorrent_jni.session_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_session_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.session_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(session_flags_t f) { + return libtorrent_jni.session_flags_t_eq(swigCPtr, this, session_flags_t.getCPtr(f), f); + } + + public boolean ne(session_flags_t f) { + return libtorrent_jni.session_flags_t_ne(swigCPtr, this, session_flags_t.getCPtr(f), f); + } + + public session_flags_t or_(session_flags_t other) { + return new session_flags_t(libtorrent_jni.session_flags_t_or_(swigCPtr, this, session_flags_t.getCPtr(other), other), true); + } + + public session_flags_t and_(session_flags_t other) { + return new session_flags_t(libtorrent_jni.session_flags_t_and_(swigCPtr, this, session_flags_t.getCPtr(other), other), true); + } + + public session_flags_t xor(session_flags_t other) { + return new session_flags_t(libtorrent_jni.session_flags_t_xor(swigCPtr, this, session_flags_t.getCPtr(other), other), true); + } + + public session_flags_t inv() { + return new session_flags_t(libtorrent_jni.session_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.session_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_handle.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_handle.java new file mode 100644 index 0000000..b05ee2a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_handle.java @@ -0,0 +1,309 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class session_handle { + public final static save_state_flags_t save_settings = new save_state_flags_t(libtorrent_jni.session_handle_save_settings_get(), false); + public final static save_state_flags_t save_dht_settings = new save_state_flags_t(libtorrent_jni.session_handle_save_dht_settings_get(), false); + public final static save_state_flags_t save_dht_state = new save_state_flags_t(libtorrent_jni.session_handle_save_dht_state_get(), false); + public final static int disk_cache_no_pieces = libtorrent_jni.session_handle_disk_cache_no_pieces_get(); + public final static remove_flags_t delete_files = new remove_flags_t(libtorrent_jni.session_handle_delete_files_get(), false); + public final static remove_flags_t delete_partfile = new remove_flags_t(libtorrent_jni.session_handle_delete_partfile_get(), false); + public final static session_flags_t paused = new session_flags_t(libtorrent_jni.session_handle_paused_get(), false); + public final static portmap_protocol udp = portmap_protocol.swigToEnum(libtorrent_jni.session_handle_udp_get()); + public final static portmap_protocol tcp = portmap_protocol.swigToEnum(libtorrent_jni.session_handle_tcp_get()); + public final static reopen_network_flags_t reopen_map_ports = new reopen_network_flags_t(libtorrent_jni.session_handle_reopen_map_ports_get(), false); + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected session_handle(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public session_handle() { + this(libtorrent_jni.new_session_handle__SWIG_0(), true); + } + + public session_handle(session_handle t) { + this(libtorrent_jni.new_session_handle__SWIG_1(session_handle.getCPtr(t), t), true); + } + + protected static long getCPtr(session_handle obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static int getGlobal_peer_class_id() { + return libtorrent_jni.session_handle_global_peer_class_id_get(); + } + + public static int getTcp_peer_class_id() { + return libtorrent_jni.session_handle_tcp_peer_class_id_get(); + } + + public static int getLocal_peer_class_id() { + return libtorrent_jni.session_handle_local_peer_class_id_get(); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_session_handle(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean is_valid() { + return libtorrent_jni.session_handle_is_valid(swigCPtr, this); + } + + public void save_state(entry e, save_state_flags_t flags) { + libtorrent_jni.session_handle_save_state__SWIG_0(swigCPtr, this, entry.getCPtr(e), e, save_state_flags_t.getCPtr(flags), flags); + } + + public void save_state(entry e) { + libtorrent_jni.session_handle_save_state__SWIG_1(swigCPtr, this, entry.getCPtr(e), e); + } + + public void load_state(bdecode_node e, save_state_flags_t flags) { + libtorrent_jni.session_handle_load_state__SWIG_0(swigCPtr, this, bdecode_node.getCPtr(e), e, save_state_flags_t.getCPtr(flags), flags); + } + + public void load_state(bdecode_node e) { + libtorrent_jni.session_handle_load_state__SWIG_1(swigCPtr, this, bdecode_node.getCPtr(e), e); + } + + public void refresh_torrent_status(torrent_status_vector ret, status_flags_t flags) { + libtorrent_jni.session_handle_refresh_torrent_status__SWIG_0(swigCPtr, this, torrent_status_vector.getCPtr(ret), ret, status_flags_t.getCPtr(flags), flags); + } + + public void refresh_torrent_status(torrent_status_vector ret) { + libtorrent_jni.session_handle_refresh_torrent_status__SWIG_1(swigCPtr, this, torrent_status_vector.getCPtr(ret), ret); + } + + public void post_torrent_updates(status_flags_t flags) { + libtorrent_jni.session_handle_post_torrent_updates__SWIG_0(swigCPtr, this, status_flags_t.getCPtr(flags), flags); + } + + public void post_torrent_updates() { + libtorrent_jni.session_handle_post_torrent_updates__SWIG_1(swigCPtr, this); + } + + public void post_session_stats() { + libtorrent_jni.session_handle_post_session_stats(swigCPtr, this); + } + + public void post_dht_stats() { + libtorrent_jni.session_handle_post_dht_stats(swigCPtr, this); + } + + public torrent_handle find_torrent(sha1_hash info_hash) { + return new torrent_handle(libtorrent_jni.session_handle_find_torrent(swigCPtr, this, sha1_hash.getCPtr(info_hash), info_hash), true); + } + + public torrent_handle_vector get_torrents() { + return new torrent_handle_vector(libtorrent_jni.session_handle_get_torrents(swigCPtr, this), true); + } + + public torrent_handle add_torrent(add_torrent_params params, error_code ec) { + return new torrent_handle(libtorrent_jni.session_handle_add_torrent(swigCPtr, this, add_torrent_params.getCPtr(params), params, error_code.getCPtr(ec), ec), true); + } + + public void async_add_torrent(add_torrent_params params) { + libtorrent_jni.session_handle_async_add_torrent(swigCPtr, this, add_torrent_params.getCPtr(params), params); + } + + public void pause() { + libtorrent_jni.session_handle_pause(swigCPtr, this); + } + + public void resume() { + libtorrent_jni.session_handle_resume(swigCPtr, this); + } + + public boolean is_paused() { + return libtorrent_jni.session_handle_is_paused(swigCPtr, this); + } + + public boolean is_dht_running() { + return libtorrent_jni.session_handle_is_dht_running(swigCPtr, this); + } + + public dht_settings get_dht_settings() { + return new dht_settings(libtorrent_jni.session_handle_get_dht_settings(swigCPtr, this), true); + } + + public void set_dht_settings(dht_settings settings) { + libtorrent_jni.session_handle_set_dht_settings(swigCPtr, this, dht_settings.getCPtr(settings), settings); + } + + public void add_dht_node(string_int_pair node) { + libtorrent_jni.session_handle_add_dht_node(swigCPtr, this, string_int_pair.getCPtr(node), node); + } + + public void dht_get_item(sha1_hash target) { + libtorrent_jni.session_handle_dht_get_item__SWIG_0(swigCPtr, this, sha1_hash.getCPtr(target), target); + } + + public sha1_hash dht_put_item(entry data) { + return new sha1_hash(libtorrent_jni.session_handle_dht_put_item__SWIG_0(swigCPtr, this, entry.getCPtr(data), data), true); + } + + public void dht_get_peers(sha1_hash info_hash) { + libtorrent_jni.session_handle_dht_get_peers(swigCPtr, this, sha1_hash.getCPtr(info_hash), info_hash); + } + + public void dht_announce(sha1_hash info_hash, int port, int flags) { + libtorrent_jni.session_handle_dht_announce__SWIG_0(swigCPtr, this, sha1_hash.getCPtr(info_hash), info_hash, port, flags); + } + + public void dht_announce(sha1_hash info_hash, int port) { + libtorrent_jni.session_handle_dht_announce__SWIG_1(swigCPtr, this, sha1_hash.getCPtr(info_hash), info_hash, port); + } + + public void dht_announce(sha1_hash info_hash) { + libtorrent_jni.session_handle_dht_announce__SWIG_2(swigCPtr, this, sha1_hash.getCPtr(info_hash), info_hash); + } + + public void dht_live_nodes(sha1_hash nid) { + libtorrent_jni.session_handle_dht_live_nodes(swigCPtr, this, sha1_hash.getCPtr(nid), nid); + } + + public void dht_sample_infohashes(udp_endpoint ep, sha1_hash target) { + libtorrent_jni.session_handle_dht_sample_infohashes(swigCPtr, this, udp_endpoint.getCPtr(ep), ep, sha1_hash.getCPtr(target), target); + } + + public void dht_direct_request(udp_endpoint ep, entry e) { + libtorrent_jni.session_handle_dht_direct_request__SWIG_0(swigCPtr, this, udp_endpoint.getCPtr(ep), ep, entry.getCPtr(e), e); + } + + public ip_filter get_ip_filter() { + return new ip_filter(libtorrent_jni.session_handle_get_ip_filter(swigCPtr, this), true); + } + + public void set_ip_filter(ip_filter f) { + libtorrent_jni.session_handle_set_ip_filter(swigCPtr, this, ip_filter.getCPtr(f), f); + } + + public void set_port_filter(port_filter f) { + libtorrent_jni.session_handle_set_port_filter(swigCPtr, this, port_filter.getCPtr(f), f); + } + + public int listen_port() { + return libtorrent_jni.session_handle_listen_port(swigCPtr, this); + } + + public int ssl_listen_port() { + return libtorrent_jni.session_handle_ssl_listen_port(swigCPtr, this); + } + + public boolean is_listening() { + return libtorrent_jni.session_handle_is_listening(swigCPtr, this); + } + + public ip_filter get_peer_class_filter() { + return new ip_filter(libtorrent_jni.session_handle_get_peer_class_filter(swigCPtr, this), true); + } + + public void set_peer_class_filter(ip_filter f) { + libtorrent_jni.session_handle_set_peer_class_filter(swigCPtr, this, ip_filter.getCPtr(f), f); + } + + public peer_class_type_filter get_peer_class_type_filter() { + return new peer_class_type_filter(libtorrent_jni.session_handle_get_peer_class_type_filter(swigCPtr, this), true); + } + + public void set_peer_class_type_filter(peer_class_type_filter f) { + libtorrent_jni.session_handle_set_peer_class_type_filter(swigCPtr, this, peer_class_type_filter.getCPtr(f), f); + } + + public int create_peer_class(String name) { + return libtorrent_jni.session_handle_create_peer_class(swigCPtr, this, name); + } + + public void delete_peer_class(int cid) { + libtorrent_jni.session_handle_delete_peer_class(swigCPtr, this, cid); + } + + public peer_class_info get_peer_class(int cid) { + return new peer_class_info(libtorrent_jni.session_handle_get_peer_class(swigCPtr, this, cid), true); + } + + public void set_peer_class(int cid, peer_class_info pci) { + libtorrent_jni.session_handle_set_peer_class(swigCPtr, this, cid, peer_class_info.getCPtr(pci), pci); + } + + public void remove_torrent(torrent_handle h, remove_flags_t options) { + libtorrent_jni.session_handle_remove_torrent__SWIG_0(swigCPtr, this, torrent_handle.getCPtr(h), h, remove_flags_t.getCPtr(options), options); + } + + public void remove_torrent(torrent_handle h) { + libtorrent_jni.session_handle_remove_torrent__SWIG_1(swigCPtr, this, torrent_handle.getCPtr(h), h); + } + + public void apply_settings(settings_pack s) { + libtorrent_jni.session_handle_apply_settings(swigCPtr, this, settings_pack.getCPtr(s), s); + } + + public settings_pack get_settings() { + return new settings_pack(libtorrent_jni.session_handle_get_settings(swigCPtr, this), true); + } + + public void pop_alerts(alert_ptr_vector alerts) { + libtorrent_jni.session_handle_pop_alerts(swigCPtr, this, alert_ptr_vector.getCPtr(alerts), alerts); + } + + public port_mapping_t_vector add_port_mapping(portmap_protocol t, int external_port, int local_port) { + return new port_mapping_t_vector(libtorrent_jni.session_handle_add_port_mapping(swigCPtr, this, t.swigValue(), external_port, local_port), true); + } + + public void delete_port_mapping(int handle) { + libtorrent_jni.session_handle_delete_port_mapping(swigCPtr, this, handle); + } + + public void reopen_network_sockets(reopen_network_flags_t options) { + libtorrent_jni.session_handle_reopen_network_sockets__SWIG_0(swigCPtr, this, reopen_network_flags_t.getCPtr(options), options); + } + + public void reopen_network_sockets() { + libtorrent_jni.session_handle_reopen_network_sockets__SWIG_1(swigCPtr, this); + } + + public void dht_get_item(byte_vector key, byte_vector salt) { + libtorrent_jni.session_handle_dht_get_item__SWIG_1(swigCPtr, this, byte_vector.getCPtr(key), key, byte_vector.getCPtr(salt), salt); + } + + public void dht_put_item(byte_vector key, byte_vector sk, entry data, byte_vector salt) { + libtorrent_jni.session_handle_dht_put_item__SWIG_1(swigCPtr, this, byte_vector.getCPtr(key), key, byte_vector.getCPtr(sk), sk, entry.getCPtr(data), data, byte_vector.getCPtr(salt), salt); + } + + public void dht_direct_request(udp_endpoint ep, entry e, long userdata) { + libtorrent_jni.session_handle_dht_direct_request__SWIG_1(swigCPtr, this, udp_endpoint.getCPtr(ep), ep, entry.getCPtr(e), e, userdata); + } + + public alert wait_for_alert_ms(long max_wait) { + long cPtr = libtorrent_jni.session_handle_wait_for_alert_ms(swigCPtr, this, max_wait); + return (cPtr == 0) ? null : new alert(cPtr, false); + } + + public void set_alert_notify_callback(alert_notify_callback cb) { + libtorrent_jni.session_handle_set_alert_notify_callback(swigCPtr, this, alert_notify_callback.getCPtr(cb), cb); + } + + public void add_extension(swig_plugin ext) { + libtorrent_jni.session_handle_add_extension(swigCPtr, this, swig_plugin.getCPtr(ext), ext); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_params.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_params.java new file mode 100644 index 0000000..ac179c6 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_params.java @@ -0,0 +1,78 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class session_params { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected session_params(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public session_params(settings_pack sp) { + this(libtorrent_jni.new_session_params__SWIG_0(settings_pack.getCPtr(sp), sp), true); + } + + public session_params() { + this(libtorrent_jni.new_session_params__SWIG_1(), true); + } + + public session_params(session_params arg0) { + this(libtorrent_jni.new_session_params__SWIG_2(session_params.getCPtr(arg0), arg0), true); + } + + protected static long getCPtr(session_params obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_session_params(swigCPtr); + } + swigCPtr = 0; + } + } + + public settings_pack getSettings() { + long cPtr = libtorrent_jni.session_params_settings_get(swigCPtr, this); + return (cPtr == 0) ? null : new settings_pack(cPtr, false); + } + + public void setSettings(settings_pack value) { + libtorrent_jni.session_params_settings_set(swigCPtr, this, settings_pack.getCPtr(value), value); + } + + public dht_settings getDht_settings() { + long cPtr = libtorrent_jni.session_params_dht_settings_get(swigCPtr, this); + return (cPtr == 0) ? null : new dht_settings(cPtr, false); + } + + public void setDht_settings(dht_settings value) { + libtorrent_jni.session_params_dht_settings_set(swigCPtr, this, dht_settings.getCPtr(value), value); + } + + public dht_state getDht_state() { + long cPtr = libtorrent_jni.session_params_dht_state_get(swigCPtr, this); + return (cPtr == 0) ? null : new dht_state(cPtr, false); + } + + public void setDht_state(dht_state value) { + libtorrent_jni.session_params_dht_state_set(swigCPtr, this, dht_state.getCPtr(value), value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_proxy.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_proxy.java new file mode 100644 index 0000000..242a49d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_proxy.java @@ -0,0 +1,47 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class session_proxy { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected session_proxy(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public session_proxy() { + this(libtorrent_jni.new_session_proxy__SWIG_0(), true); + } + + public session_proxy(session_proxy arg0) { + this(libtorrent_jni.new_session_proxy__SWIG_1(session_proxy.getCPtr(arg0), arg0), true); + } + + protected static long getCPtr(session_proxy obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_session_proxy(swigCPtr); + } + swigCPtr = 0; + } + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_stats_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_stats_alert.java new file mode 100644 index 0000000..cb9484f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_stats_alert.java @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class session_stats_alert extends alert { + public final static int priority = libtorrent_jni.session_stats_alert_priority_get(); + public final static int alert_type = libtorrent_jni.session_stats_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.session_stats_alert_static_category_get(), false); + private transient long swigCPtr; + + protected session_stats_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.session_stats_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(session_stats_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_session_stats_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.session_stats_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.session_stats_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.session_stats_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.session_stats_alert_message(swigCPtr, this); + } + + public long get_value(int index) { + return libtorrent_jni.session_stats_alert_get_value(swigCPtr, this, index); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_stats_header_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_stats_header_alert.java new file mode 100644 index 0000000..6c8abe1 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/session_stats_header_alert.java @@ -0,0 +1,57 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class session_stats_header_alert extends alert { + public final static int priority = libtorrent_jni.session_stats_header_alert_priority_get(); + public final static int alert_type = libtorrent_jni.session_stats_header_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.session_stats_header_alert_static_category_get(), false); + private transient long swigCPtr; + + protected session_stats_header_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.session_stats_header_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(session_stats_header_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_session_stats_header_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.session_stats_header_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.session_stats_header_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.session_stats_header_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.session_stats_header_alert_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/set_piece_hashes_listener.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/set_piece_hashes_listener.java new file mode 100644 index 0000000..8b3b575 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/set_piece_hashes_listener.java @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class set_piece_hashes_listener { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected set_piece_hashes_listener(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public set_piece_hashes_listener() { + this(libtorrent_jni.new_set_piece_hashes_listener(), true); + libtorrent_jni.set_piece_hashes_listener_director_connect(this, swigCPtr, true, true); + } + + protected static long getCPtr(set_piece_hashes_listener obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_set_piece_hashes_listener(swigCPtr); + } + swigCPtr = 0; + } + } + + protected void swigDirectorDisconnect() { + swigCMemOwn = false; + delete(); + } + + public void swigReleaseOwnership() { + swigCMemOwn = false; + libtorrent_jni.set_piece_hashes_listener_change_ownership(this, swigCPtr, false); + } + + public void swigTakeOwnership() { + swigCMemOwn = true; + libtorrent_jni.set_piece_hashes_listener_change_ownership(this, swigCPtr, true); + } + + public void progress(int i) { + if (getClass() == set_piece_hashes_listener.class) + libtorrent_jni.set_piece_hashes_listener_progress(swigCPtr, this, i); + else + libtorrent_jni.set_piece_hashes_listener_progressSwigExplicitset_piece_hashes_listener(swigCPtr, this, i); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/settings.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/settings.java new file mode 100644 index 0000000..0dd07b1 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/settings.java @@ -0,0 +1,51 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class settings extends dht_settings { + private transient long swigCPtr; + + protected settings(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.settings_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + public settings() { + this(libtorrent_jni.new_settings(), true); + } + + protected static long getCPtr(settings obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_settings(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public boolean getPrefer_verified_node_ids() { + return libtorrent_jni.settings_prefer_verified_node_ids_get(swigCPtr, this); + } + + public void setPrefer_verified_node_ids(boolean value) { + libtorrent_jni.settings_prefer_verified_node_ids_set(swigCPtr, this, value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/settings_pack.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/settings_pack.java new file mode 100644 index 0000000..ea2700d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/settings_pack.java @@ -0,0 +1,847 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class settings_pack { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected settings_pack(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public settings_pack() { + this(libtorrent_jni.new_settings_pack__SWIG_0(), true); + } + + public settings_pack(settings_pack arg0) { + this(libtorrent_jni.new_settings_pack__SWIG_1(settings_pack.getCPtr(arg0), arg0), true); + } + + protected static long getCPtr(settings_pack obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_settings_pack(swigCPtr); + } + swigCPtr = 0; + } + } + + public void set_str(int name, String val) { + libtorrent_jni.settings_pack_set_str(swigCPtr, this, name, val); + } + + public void set_int(int name, int val) { + libtorrent_jni.settings_pack_set_int(swigCPtr, this, name, val); + } + + public void set_bool(int name, boolean val) { + libtorrent_jni.settings_pack_set_bool(swigCPtr, this, name, val); + } + + public boolean has_val(int name) { + return libtorrent_jni.settings_pack_has_val(swigCPtr, this, name); + } + + public void clear() { + libtorrent_jni.settings_pack_clear__SWIG_0(swigCPtr, this); + } + + public void clear(int name) { + libtorrent_jni.settings_pack_clear__SWIG_1(swigCPtr, this, name); + } + + public String get_str(int name) { + return libtorrent_jni.settings_pack_get_str(swigCPtr, this, name); + } + + public int get_int(int name) { + return libtorrent_jni.settings_pack_get_int(swigCPtr, this, name); + } + + public boolean get_bool(int name) { + return libtorrent_jni.settings_pack_get_bool(swigCPtr, this, name); + } + + public final static class type_bases { + public final static settings_pack.type_bases string_type_base = new settings_pack.type_bases("string_type_base", libtorrent_jni.settings_pack_string_type_base_get()); + public final static settings_pack.type_bases int_type_base = new settings_pack.type_bases("int_type_base", libtorrent_jni.settings_pack_int_type_base_get()); + public final static settings_pack.type_bases bool_type_base = new settings_pack.type_bases("bool_type_base", libtorrent_jni.settings_pack_bool_type_base_get()); + public final static settings_pack.type_bases type_mask = new settings_pack.type_bases("type_mask", libtorrent_jni.settings_pack_type_mask_get()); + public final static settings_pack.type_bases index_mask = new settings_pack.type_bases("index_mask", libtorrent_jni.settings_pack_index_mask_get()); + private static final type_bases[] swigValues = {string_type_base, int_type_base, bool_type_base, type_mask, index_mask}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private type_bases(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private type_bases(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private type_bases(String swigName, type_bases swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static type_bases swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + type_bases.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + + public final static class string_types { + public final static settings_pack.string_types user_agent = new settings_pack.string_types("user_agent", libtorrent_jni.settings_pack_user_agent_get()); + public final static settings_pack.string_types announce_ip = new settings_pack.string_types("announce_ip"); + public final static settings_pack.string_types handshake_client_version = new settings_pack.string_types("handshake_client_version", libtorrent_jni.settings_pack_handshake_client_version_get()); + public final static settings_pack.string_types outgoing_interfaces = new settings_pack.string_types("outgoing_interfaces"); + public final static settings_pack.string_types listen_interfaces = new settings_pack.string_types("listen_interfaces"); + public final static settings_pack.string_types proxy_hostname = new settings_pack.string_types("proxy_hostname"); + public final static settings_pack.string_types proxy_username = new settings_pack.string_types("proxy_username"); + public final static settings_pack.string_types proxy_password = new settings_pack.string_types("proxy_password"); + public final static settings_pack.string_types i2p_hostname = new settings_pack.string_types("i2p_hostname"); + public final static settings_pack.string_types peer_fingerprint = new settings_pack.string_types("peer_fingerprint"); + public final static settings_pack.string_types dht_bootstrap_nodes = new settings_pack.string_types("dht_bootstrap_nodes"); + public final static settings_pack.string_types max_string_setting_internal = new settings_pack.string_types("max_string_setting_internal"); + private static final string_types[] swigValues = {user_agent, announce_ip, handshake_client_version, outgoing_interfaces, listen_interfaces, proxy_hostname, proxy_username, proxy_password, i2p_hostname, peer_fingerprint, dht_bootstrap_nodes, max_string_setting_internal}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private string_types(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private string_types(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private string_types(String swigName, string_types swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static string_types swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + string_types.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + + public final static class bool_types { + public final static settings_pack.bool_types allow_multiple_connections_per_ip = new settings_pack.bool_types("allow_multiple_connections_per_ip", libtorrent_jni.settings_pack_allow_multiple_connections_per_ip_get()); + public final static settings_pack.bool_types send_redundant_have = new settings_pack.bool_types("send_redundant_have", libtorrent_jni.settings_pack_send_redundant_have_get()); + public final static settings_pack.bool_types use_dht_as_fallback = new settings_pack.bool_types("use_dht_as_fallback", libtorrent_jni.settings_pack_use_dht_as_fallback_get()); + public final static settings_pack.bool_types upnp_ignore_nonrouters = new settings_pack.bool_types("upnp_ignore_nonrouters"); + public final static settings_pack.bool_types use_parole_mode = new settings_pack.bool_types("use_parole_mode"); + public final static settings_pack.bool_types use_read_cache = new settings_pack.bool_types("use_read_cache"); + public final static settings_pack.bool_types coalesce_reads = new settings_pack.bool_types("coalesce_reads", libtorrent_jni.settings_pack_coalesce_reads_get()); + public final static settings_pack.bool_types coalesce_writes = new settings_pack.bool_types("coalesce_writes"); + public final static settings_pack.bool_types auto_manage_prefer_seeds = new settings_pack.bool_types("auto_manage_prefer_seeds"); + public final static settings_pack.bool_types dont_count_slow_torrents = new settings_pack.bool_types("dont_count_slow_torrents"); + public final static settings_pack.bool_types close_redundant_connections = new settings_pack.bool_types("close_redundant_connections"); + public final static settings_pack.bool_types prioritize_partial_pieces = new settings_pack.bool_types("prioritize_partial_pieces"); + public final static settings_pack.bool_types rate_limit_ip_overhead = new settings_pack.bool_types("rate_limit_ip_overhead"); + public final static settings_pack.bool_types announce_to_all_tiers = new settings_pack.bool_types("announce_to_all_tiers"); + public final static settings_pack.bool_types announce_to_all_trackers = new settings_pack.bool_types("announce_to_all_trackers"); + public final static settings_pack.bool_types prefer_udp_trackers = new settings_pack.bool_types("prefer_udp_trackers"); + public final static settings_pack.bool_types deprecated_strict_super_seeding = new settings_pack.bool_types("deprecated_strict_super_seeding"); + public final static settings_pack.bool_types disable_hash_checks = new settings_pack.bool_types("disable_hash_checks", libtorrent_jni.settings_pack_disable_hash_checks_get()); + public final static settings_pack.bool_types allow_i2p_mixed = new settings_pack.bool_types("allow_i2p_mixed"); + public final static settings_pack.bool_types volatile_read_cache = new settings_pack.bool_types("volatile_read_cache", libtorrent_jni.settings_pack_volatile_read_cache_get()); + public final static settings_pack.bool_types no_atime_storage = new settings_pack.bool_types("no_atime_storage", libtorrent_jni.settings_pack_no_atime_storage_get()); + public final static settings_pack.bool_types incoming_starts_queued_torrents = new settings_pack.bool_types("incoming_starts_queued_torrents"); + public final static settings_pack.bool_types report_true_downloaded = new settings_pack.bool_types("report_true_downloaded"); + public final static settings_pack.bool_types strict_end_game_mode = new settings_pack.bool_types("strict_end_game_mode"); + public final static settings_pack.bool_types enable_outgoing_utp = new settings_pack.bool_types("enable_outgoing_utp", libtorrent_jni.settings_pack_enable_outgoing_utp_get()); + public final static settings_pack.bool_types enable_incoming_utp = new settings_pack.bool_types("enable_incoming_utp"); + public final static settings_pack.bool_types enable_outgoing_tcp = new settings_pack.bool_types("enable_outgoing_tcp"); + public final static settings_pack.bool_types enable_incoming_tcp = new settings_pack.bool_types("enable_incoming_tcp"); + public final static settings_pack.bool_types no_recheck_incomplete_resume = new settings_pack.bool_types("no_recheck_incomplete_resume", libtorrent_jni.settings_pack_no_recheck_incomplete_resume_get()); + public final static settings_pack.bool_types anonymous_mode = new settings_pack.bool_types("anonymous_mode"); + public final static settings_pack.bool_types report_web_seed_downloads = new settings_pack.bool_types("report_web_seed_downloads"); + public final static settings_pack.bool_types seeding_outgoing_connections = new settings_pack.bool_types("seeding_outgoing_connections", libtorrent_jni.settings_pack_seeding_outgoing_connections_get()); + public final static settings_pack.bool_types no_connect_privileged_ports = new settings_pack.bool_types("no_connect_privileged_ports"); + public final static settings_pack.bool_types smooth_connects = new settings_pack.bool_types("smooth_connects"); + public final static settings_pack.bool_types always_send_user_agent = new settings_pack.bool_types("always_send_user_agent"); + public final static settings_pack.bool_types apply_ip_filter_to_trackers = new settings_pack.bool_types("apply_ip_filter_to_trackers"); + public final static settings_pack.bool_types ban_web_seeds = new settings_pack.bool_types("ban_web_seeds", libtorrent_jni.settings_pack_ban_web_seeds_get()); + public final static settings_pack.bool_types allow_partial_disk_writes = new settings_pack.bool_types("allow_partial_disk_writes"); + public final static settings_pack.bool_types support_share_mode = new settings_pack.bool_types("support_share_mode", libtorrent_jni.settings_pack_support_share_mode_get()); + public final static settings_pack.bool_types support_merkle_torrents = new settings_pack.bool_types("support_merkle_torrents"); + public final static settings_pack.bool_types report_redundant_bytes = new settings_pack.bool_types("report_redundant_bytes"); + public final static settings_pack.bool_types listen_system_port_fallback = new settings_pack.bool_types("listen_system_port_fallback"); + public final static settings_pack.bool_types announce_crypto_support = new settings_pack.bool_types("announce_crypto_support", libtorrent_jni.settings_pack_announce_crypto_support_get()); + public final static settings_pack.bool_types enable_upnp = new settings_pack.bool_types("enable_upnp"); + public final static settings_pack.bool_types enable_natpmp = new settings_pack.bool_types("enable_natpmp"); + public final static settings_pack.bool_types enable_lsd = new settings_pack.bool_types("enable_lsd"); + public final static settings_pack.bool_types enable_dht = new settings_pack.bool_types("enable_dht"); + public final static settings_pack.bool_types prefer_rc4 = new settings_pack.bool_types("prefer_rc4"); + public final static settings_pack.bool_types proxy_hostnames = new settings_pack.bool_types("proxy_hostnames"); + public final static settings_pack.bool_types proxy_peer_connections = new settings_pack.bool_types("proxy_peer_connections"); + public final static settings_pack.bool_types auto_sequential = new settings_pack.bool_types("auto_sequential"); + public final static settings_pack.bool_types proxy_tracker_connections = new settings_pack.bool_types("proxy_tracker_connections"); + public final static settings_pack.bool_types enable_ip_notifier = new settings_pack.bool_types("enable_ip_notifier"); + public final static settings_pack.bool_types dht_prefer_verified_node_ids = new settings_pack.bool_types("dht_prefer_verified_node_ids"); + public final static settings_pack.bool_types piece_extent_affinity = new settings_pack.bool_types("piece_extent_affinity"); + public final static settings_pack.bool_types validate_https_trackers = new settings_pack.bool_types("validate_https_trackers"); + public final static settings_pack.bool_types ssrf_mitigation = new settings_pack.bool_types("ssrf_mitigation"); + public final static settings_pack.bool_types allow_idna = new settings_pack.bool_types("allow_idna"); + public final static settings_pack.bool_types max_bool_setting_internal = new settings_pack.bool_types("max_bool_setting_internal"); + private static final bool_types[] swigValues = {allow_multiple_connections_per_ip, send_redundant_have, use_dht_as_fallback, upnp_ignore_nonrouters, use_parole_mode, use_read_cache, coalesce_reads, coalesce_writes, auto_manage_prefer_seeds, dont_count_slow_torrents, close_redundant_connections, prioritize_partial_pieces, rate_limit_ip_overhead, announce_to_all_tiers, announce_to_all_trackers, prefer_udp_trackers, deprecated_strict_super_seeding, disable_hash_checks, allow_i2p_mixed, volatile_read_cache, no_atime_storage, incoming_starts_queued_torrents, report_true_downloaded, strict_end_game_mode, enable_outgoing_utp, enable_incoming_utp, enable_outgoing_tcp, enable_incoming_tcp, no_recheck_incomplete_resume, anonymous_mode, report_web_seed_downloads, seeding_outgoing_connections, no_connect_privileged_ports, smooth_connects, always_send_user_agent, apply_ip_filter_to_trackers, ban_web_seeds, allow_partial_disk_writes, support_share_mode, support_merkle_torrents, report_redundant_bytes, listen_system_port_fallback, announce_crypto_support, enable_upnp, enable_natpmp, enable_lsd, enable_dht, prefer_rc4, proxy_hostnames, proxy_peer_connections, auto_sequential, proxy_tracker_connections, enable_ip_notifier, dht_prefer_verified_node_ids, piece_extent_affinity, validate_https_trackers, ssrf_mitigation, allow_idna, max_bool_setting_internal}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private bool_types(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private bool_types(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private bool_types(String swigName, bool_types swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static bool_types swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + bool_types.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + + public final static class int_types { + public final static settings_pack.int_types tracker_completion_timeout = new settings_pack.int_types("tracker_completion_timeout", libtorrent_jni.settings_pack_tracker_completion_timeout_get()); + public final static settings_pack.int_types tracker_receive_timeout = new settings_pack.int_types("tracker_receive_timeout"); + public final static settings_pack.int_types stop_tracker_timeout = new settings_pack.int_types("stop_tracker_timeout"); + public final static settings_pack.int_types tracker_maximum_response_length = new settings_pack.int_types("tracker_maximum_response_length"); + public final static settings_pack.int_types piece_timeout = new settings_pack.int_types("piece_timeout"); + public final static settings_pack.int_types request_timeout = new settings_pack.int_types("request_timeout"); + public final static settings_pack.int_types request_queue_time = new settings_pack.int_types("request_queue_time"); + public final static settings_pack.int_types max_allowed_in_request_queue = new settings_pack.int_types("max_allowed_in_request_queue"); + public final static settings_pack.int_types max_out_request_queue = new settings_pack.int_types("max_out_request_queue"); + public final static settings_pack.int_types whole_pieces_threshold = new settings_pack.int_types("whole_pieces_threshold"); + public final static settings_pack.int_types peer_timeout = new settings_pack.int_types("peer_timeout"); + public final static settings_pack.int_types urlseed_timeout = new settings_pack.int_types("urlseed_timeout"); + public final static settings_pack.int_types urlseed_pipeline_size = new settings_pack.int_types("urlseed_pipeline_size"); + public final static settings_pack.int_types urlseed_wait_retry = new settings_pack.int_types("urlseed_wait_retry"); + public final static settings_pack.int_types file_pool_size = new settings_pack.int_types("file_pool_size"); + public final static settings_pack.int_types max_failcount = new settings_pack.int_types("max_failcount"); + public final static settings_pack.int_types min_reconnect_time = new settings_pack.int_types("min_reconnect_time"); + public final static settings_pack.int_types peer_connect_timeout = new settings_pack.int_types("peer_connect_timeout"); + public final static settings_pack.int_types connection_speed = new settings_pack.int_types("connection_speed"); + public final static settings_pack.int_types inactivity_timeout = new settings_pack.int_types("inactivity_timeout"); + public final static settings_pack.int_types unchoke_interval = new settings_pack.int_types("unchoke_interval"); + public final static settings_pack.int_types optimistic_unchoke_interval = new settings_pack.int_types("optimistic_unchoke_interval"); + public final static settings_pack.int_types num_want = new settings_pack.int_types("num_want"); + public final static settings_pack.int_types initial_picker_threshold = new settings_pack.int_types("initial_picker_threshold"); + public final static settings_pack.int_types allowed_fast_set_size = new settings_pack.int_types("allowed_fast_set_size"); + public final static settings_pack.int_types suggest_mode = new settings_pack.int_types("suggest_mode"); + public final static settings_pack.int_types max_queued_disk_bytes = new settings_pack.int_types("max_queued_disk_bytes"); + public final static settings_pack.int_types handshake_timeout = new settings_pack.int_types("handshake_timeout"); + public final static settings_pack.int_types send_buffer_low_watermark = new settings_pack.int_types("send_buffer_low_watermark"); + public final static settings_pack.int_types send_buffer_watermark = new settings_pack.int_types("send_buffer_watermark"); + public final static settings_pack.int_types send_buffer_watermark_factor = new settings_pack.int_types("send_buffer_watermark_factor"); + public final static settings_pack.int_types choking_algorithm = new settings_pack.int_types("choking_algorithm"); + public final static settings_pack.int_types seed_choking_algorithm = new settings_pack.int_types("seed_choking_algorithm"); + public final static settings_pack.int_types cache_size = new settings_pack.int_types("cache_size"); + public final static settings_pack.int_types cache_expiry = new settings_pack.int_types("cache_expiry", libtorrent_jni.settings_pack_cache_expiry_get()); + public final static settings_pack.int_types disk_io_write_mode = new settings_pack.int_types("disk_io_write_mode"); + public final static settings_pack.int_types disk_io_read_mode = new settings_pack.int_types("disk_io_read_mode"); + public final static settings_pack.int_types outgoing_port = new settings_pack.int_types("outgoing_port"); + public final static settings_pack.int_types num_outgoing_ports = new settings_pack.int_types("num_outgoing_ports"); + public final static settings_pack.int_types peer_tos = new settings_pack.int_types("peer_tos"); + public final static settings_pack.int_types active_downloads = new settings_pack.int_types("active_downloads"); + public final static settings_pack.int_types active_seeds = new settings_pack.int_types("active_seeds"); + public final static settings_pack.int_types active_checking = new settings_pack.int_types("active_checking"); + public final static settings_pack.int_types active_dht_limit = new settings_pack.int_types("active_dht_limit"); + public final static settings_pack.int_types active_tracker_limit = new settings_pack.int_types("active_tracker_limit"); + public final static settings_pack.int_types active_lsd_limit = new settings_pack.int_types("active_lsd_limit"); + public final static settings_pack.int_types active_limit = new settings_pack.int_types("active_limit"); + public final static settings_pack.int_types auto_manage_interval = new settings_pack.int_types("auto_manage_interval", libtorrent_jni.settings_pack_auto_manage_interval_get()); + public final static settings_pack.int_types seed_time_limit = new settings_pack.int_types("seed_time_limit"); + public final static settings_pack.int_types auto_scrape_interval = new settings_pack.int_types("auto_scrape_interval"); + public final static settings_pack.int_types auto_scrape_min_interval = new settings_pack.int_types("auto_scrape_min_interval"); + public final static settings_pack.int_types max_peerlist_size = new settings_pack.int_types("max_peerlist_size"); + public final static settings_pack.int_types max_paused_peerlist_size = new settings_pack.int_types("max_paused_peerlist_size"); + public final static settings_pack.int_types min_announce_interval = new settings_pack.int_types("min_announce_interval"); + public final static settings_pack.int_types auto_manage_startup = new settings_pack.int_types("auto_manage_startup"); + public final static settings_pack.int_types seeding_piece_quota = new settings_pack.int_types("seeding_piece_quota"); + public final static settings_pack.int_types max_rejects = new settings_pack.int_types("max_rejects"); + public final static settings_pack.int_types recv_socket_buffer_size = new settings_pack.int_types("recv_socket_buffer_size"); + public final static settings_pack.int_types send_socket_buffer_size = new settings_pack.int_types("send_socket_buffer_size"); + public final static settings_pack.int_types max_peer_recv_buffer_size = new settings_pack.int_types("max_peer_recv_buffer_size"); + public final static settings_pack.int_types read_cache_line_size = new settings_pack.int_types("read_cache_line_size", libtorrent_jni.settings_pack_read_cache_line_size_get()); + public final static settings_pack.int_types write_cache_line_size = new settings_pack.int_types("write_cache_line_size"); + public final static settings_pack.int_types optimistic_disk_retry = new settings_pack.int_types("optimistic_disk_retry"); + public final static settings_pack.int_types max_suggest_pieces = new settings_pack.int_types("max_suggest_pieces"); + public final static settings_pack.int_types local_service_announce_interval = new settings_pack.int_types("local_service_announce_interval"); + public final static settings_pack.int_types dht_announce_interval = new settings_pack.int_types("dht_announce_interval"); + public final static settings_pack.int_types udp_tracker_token_expiry = new settings_pack.int_types("udp_tracker_token_expiry"); + public final static settings_pack.int_types num_optimistic_unchoke_slots = new settings_pack.int_types("num_optimistic_unchoke_slots", libtorrent_jni.settings_pack_num_optimistic_unchoke_slots_get()); + public final static settings_pack.int_types deprecated_default_est_reciprocation_rate = new settings_pack.int_types("deprecated_default_est_reciprocation_rate"); + public final static settings_pack.int_types deprecated_increase_est_reciprocation_rate = new settings_pack.int_types("deprecated_increase_est_reciprocation_rate"); + public final static settings_pack.int_types deprecated_decrease_est_reciprocation_rate = new settings_pack.int_types("deprecated_decrease_est_reciprocation_rate"); + public final static settings_pack.int_types max_pex_peers = new settings_pack.int_types("max_pex_peers"); + public final static settings_pack.int_types tick_interval = new settings_pack.int_types("tick_interval"); + public final static settings_pack.int_types share_mode_target = new settings_pack.int_types("share_mode_target"); + public final static settings_pack.int_types upload_rate_limit = new settings_pack.int_types("upload_rate_limit"); + public final static settings_pack.int_types download_rate_limit = new settings_pack.int_types("download_rate_limit"); + public final static settings_pack.int_types dht_upload_rate_limit = new settings_pack.int_types("dht_upload_rate_limit", libtorrent_jni.settings_pack_dht_upload_rate_limit_get()); + public final static settings_pack.int_types unchoke_slots_limit = new settings_pack.int_types("unchoke_slots_limit"); + public final static settings_pack.int_types connections_limit = new settings_pack.int_types("connections_limit", libtorrent_jni.settings_pack_connections_limit_get()); + public final static settings_pack.int_types connections_slack = new settings_pack.int_types("connections_slack"); + public final static settings_pack.int_types utp_target_delay = new settings_pack.int_types("utp_target_delay"); + public final static settings_pack.int_types utp_gain_factor = new settings_pack.int_types("utp_gain_factor"); + public final static settings_pack.int_types utp_min_timeout = new settings_pack.int_types("utp_min_timeout"); + public final static settings_pack.int_types utp_syn_resends = new settings_pack.int_types("utp_syn_resends"); + public final static settings_pack.int_types utp_fin_resends = new settings_pack.int_types("utp_fin_resends"); + public final static settings_pack.int_types utp_num_resends = new settings_pack.int_types("utp_num_resends"); + public final static settings_pack.int_types utp_connect_timeout = new settings_pack.int_types("utp_connect_timeout"); + public final static settings_pack.int_types utp_loss_multiplier = new settings_pack.int_types("utp_loss_multiplier", libtorrent_jni.settings_pack_utp_loss_multiplier_get()); + public final static settings_pack.int_types mixed_mode_algorithm = new settings_pack.int_types("mixed_mode_algorithm"); + public final static settings_pack.int_types listen_queue_size = new settings_pack.int_types("listen_queue_size"); + public final static settings_pack.int_types torrent_connect_boost = new settings_pack.int_types("torrent_connect_boost"); + public final static settings_pack.int_types alert_queue_size = new settings_pack.int_types("alert_queue_size"); + public final static settings_pack.int_types max_metadata_size = new settings_pack.int_types("max_metadata_size"); + public final static settings_pack.int_types checking_mem_usage = new settings_pack.int_types("checking_mem_usage", libtorrent_jni.settings_pack_checking_mem_usage_get()); + public final static settings_pack.int_types predictive_piece_announce = new settings_pack.int_types("predictive_piece_announce"); + public final static settings_pack.int_types aio_threads = new settings_pack.int_types("aio_threads"); + public final static settings_pack.int_types deprecated_aio_max = new settings_pack.int_types("deprecated_aio_max"); + public final static settings_pack.int_types tracker_backoff = new settings_pack.int_types("tracker_backoff", libtorrent_jni.settings_pack_tracker_backoff_get()); + public final static settings_pack.int_types share_ratio_limit = new settings_pack.int_types("share_ratio_limit"); + public final static settings_pack.int_types seed_time_ratio_limit = new settings_pack.int_types("seed_time_ratio_limit"); + public final static settings_pack.int_types peer_turnover = new settings_pack.int_types("peer_turnover"); + public final static settings_pack.int_types peer_turnover_cutoff = new settings_pack.int_types("peer_turnover_cutoff"); + public final static settings_pack.int_types peer_turnover_interval = new settings_pack.int_types("peer_turnover_interval"); + public final static settings_pack.int_types connect_seed_every_n_download = new settings_pack.int_types("connect_seed_every_n_download"); + public final static settings_pack.int_types max_http_recv_buffer_size = new settings_pack.int_types("max_http_recv_buffer_size"); + public final static settings_pack.int_types max_retry_port_bind = new settings_pack.int_types("max_retry_port_bind"); + public final static settings_pack.int_types alert_mask = new settings_pack.int_types("alert_mask"); + public final static settings_pack.int_types out_enc_policy = new settings_pack.int_types("out_enc_policy"); + public final static settings_pack.int_types in_enc_policy = new settings_pack.int_types("in_enc_policy"); + public final static settings_pack.int_types allowed_enc_level = new settings_pack.int_types("allowed_enc_level"); + public final static settings_pack.int_types inactive_down_rate = new settings_pack.int_types("inactive_down_rate"); + public final static settings_pack.int_types inactive_up_rate = new settings_pack.int_types("inactive_up_rate"); + public final static settings_pack.int_types proxy_type = new settings_pack.int_types("proxy_type"); + public final static settings_pack.int_types proxy_port = new settings_pack.int_types("proxy_port"); + public final static settings_pack.int_types i2p_port = new settings_pack.int_types("i2p_port"); + public final static settings_pack.int_types cache_size_volatile = new settings_pack.int_types("cache_size_volatile"); + public final static settings_pack.int_types urlseed_max_request_bytes = new settings_pack.int_types("urlseed_max_request_bytes"); + public final static settings_pack.int_types web_seed_name_lookup_retry = new settings_pack.int_types("web_seed_name_lookup_retry"); + public final static settings_pack.int_types close_file_interval = new settings_pack.int_types("close_file_interval"); + public final static settings_pack.int_types utp_cwnd_reduce_timer = new settings_pack.int_types("utp_cwnd_reduce_timer"); + public final static settings_pack.int_types max_web_seed_connections = new settings_pack.int_types("max_web_seed_connections"); + public final static settings_pack.int_types resolver_cache_timeout = new settings_pack.int_types("resolver_cache_timeout"); + public final static settings_pack.int_types send_not_sent_low_watermark = new settings_pack.int_types("send_not_sent_low_watermark"); + public final static settings_pack.int_types rate_choker_initial_threshold = new settings_pack.int_types("rate_choker_initial_threshold"); + public final static settings_pack.int_types upnp_lease_duration = new settings_pack.int_types("upnp_lease_duration"); + public final static settings_pack.int_types max_concurrent_http_announces = new settings_pack.int_types("max_concurrent_http_announces"); + public final static settings_pack.int_types max_int_setting_internal = new settings_pack.int_types("max_int_setting_internal"); + private static final int_types[] swigValues = {tracker_completion_timeout, tracker_receive_timeout, stop_tracker_timeout, tracker_maximum_response_length, piece_timeout, request_timeout, request_queue_time, max_allowed_in_request_queue, max_out_request_queue, whole_pieces_threshold, peer_timeout, urlseed_timeout, urlseed_pipeline_size, urlseed_wait_retry, file_pool_size, max_failcount, min_reconnect_time, peer_connect_timeout, connection_speed, inactivity_timeout, unchoke_interval, optimistic_unchoke_interval, num_want, initial_picker_threshold, allowed_fast_set_size, suggest_mode, max_queued_disk_bytes, handshake_timeout, send_buffer_low_watermark, send_buffer_watermark, send_buffer_watermark_factor, choking_algorithm, seed_choking_algorithm, cache_size, cache_expiry, disk_io_write_mode, disk_io_read_mode, outgoing_port, num_outgoing_ports, peer_tos, active_downloads, active_seeds, active_checking, active_dht_limit, active_tracker_limit, active_lsd_limit, active_limit, auto_manage_interval, seed_time_limit, auto_scrape_interval, auto_scrape_min_interval, max_peerlist_size, max_paused_peerlist_size, min_announce_interval, auto_manage_startup, seeding_piece_quota, max_rejects, recv_socket_buffer_size, send_socket_buffer_size, max_peer_recv_buffer_size, read_cache_line_size, write_cache_line_size, optimistic_disk_retry, max_suggest_pieces, local_service_announce_interval, dht_announce_interval, udp_tracker_token_expiry, num_optimistic_unchoke_slots, deprecated_default_est_reciprocation_rate, deprecated_increase_est_reciprocation_rate, deprecated_decrease_est_reciprocation_rate, max_pex_peers, tick_interval, share_mode_target, upload_rate_limit, download_rate_limit, dht_upload_rate_limit, unchoke_slots_limit, connections_limit, connections_slack, utp_target_delay, utp_gain_factor, utp_min_timeout, utp_syn_resends, utp_fin_resends, utp_num_resends, utp_connect_timeout, utp_loss_multiplier, mixed_mode_algorithm, listen_queue_size, torrent_connect_boost, alert_queue_size, max_metadata_size, checking_mem_usage, predictive_piece_announce, aio_threads, deprecated_aio_max, tracker_backoff, share_ratio_limit, seed_time_ratio_limit, peer_turnover, peer_turnover_cutoff, peer_turnover_interval, connect_seed_every_n_download, max_http_recv_buffer_size, max_retry_port_bind, alert_mask, out_enc_policy, in_enc_policy, allowed_enc_level, inactive_down_rate, inactive_up_rate, proxy_type, proxy_port, i2p_port, cache_size_volatile, urlseed_max_request_bytes, web_seed_name_lookup_retry, close_file_interval, utp_cwnd_reduce_timer, max_web_seed_connections, resolver_cache_timeout, send_not_sent_low_watermark, rate_choker_initial_threshold, upnp_lease_duration, max_concurrent_http_announces, max_int_setting_internal}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private int_types(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private int_types(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private int_types(String swigName, int_types swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static int_types swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + int_types.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + + public final static class settings_counts_t { + public final static settings_pack.settings_counts_t num_string_settings = new settings_pack.settings_counts_t("num_string_settings", libtorrent_jni.settings_pack_num_string_settings_get()); + public final static settings_pack.settings_counts_t num_bool_settings = new settings_pack.settings_counts_t("num_bool_settings", libtorrent_jni.settings_pack_num_bool_settings_get()); + public final static settings_pack.settings_counts_t num_int_settings = new settings_pack.settings_counts_t("num_int_settings", libtorrent_jni.settings_pack_num_int_settings_get()); + private static final settings_counts_t[] swigValues = {num_string_settings, num_bool_settings, num_int_settings}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private settings_counts_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private settings_counts_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private settings_counts_t(String swigName, settings_counts_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static settings_counts_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + settings_counts_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + + public final static class suggest_mode_t { + public final static settings_pack.suggest_mode_t no_piece_suggestions = new settings_pack.suggest_mode_t("no_piece_suggestions", libtorrent_jni.settings_pack_no_piece_suggestions_get()); + public final static settings_pack.suggest_mode_t suggest_read_cache = new settings_pack.suggest_mode_t("suggest_read_cache", libtorrent_jni.settings_pack_suggest_read_cache_get()); + private static final suggest_mode_t[] swigValues = {no_piece_suggestions, suggest_read_cache}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private suggest_mode_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private suggest_mode_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private suggest_mode_t(String swigName, suggest_mode_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static suggest_mode_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + suggest_mode_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + + public final static class choking_algorithm_t { + public final static settings_pack.choking_algorithm_t fixed_slots_choker = new settings_pack.choking_algorithm_t("fixed_slots_choker", libtorrent_jni.settings_pack_fixed_slots_choker_get()); + public final static settings_pack.choking_algorithm_t rate_based_choker = new settings_pack.choking_algorithm_t("rate_based_choker", libtorrent_jni.settings_pack_rate_based_choker_get()); + private static final choking_algorithm_t[] swigValues = {fixed_slots_choker, rate_based_choker}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private choking_algorithm_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private choking_algorithm_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private choking_algorithm_t(String swigName, choking_algorithm_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static choking_algorithm_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + choking_algorithm_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + + public final static class seed_choking_algorithm_t { + public final static settings_pack.seed_choking_algorithm_t round_robin = new settings_pack.seed_choking_algorithm_t("round_robin"); + public final static settings_pack.seed_choking_algorithm_t fastest_upload = new settings_pack.seed_choking_algorithm_t("fastest_upload"); + public final static settings_pack.seed_choking_algorithm_t anti_leech = new settings_pack.seed_choking_algorithm_t("anti_leech"); + private static final seed_choking_algorithm_t[] swigValues = {round_robin, fastest_upload, anti_leech}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private seed_choking_algorithm_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private seed_choking_algorithm_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private seed_choking_algorithm_t(String swigName, seed_choking_algorithm_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static seed_choking_algorithm_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + seed_choking_algorithm_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + + public final static class io_buffer_mode_t { + public final static settings_pack.io_buffer_mode_t enable_os_cache = new settings_pack.io_buffer_mode_t("enable_os_cache", libtorrent_jni.settings_pack_enable_os_cache_get()); + public final static settings_pack.io_buffer_mode_t deprecated_disable_os_cache_for_aligned_files = new settings_pack.io_buffer_mode_t("deprecated_disable_os_cache_for_aligned_files", libtorrent_jni.settings_pack_deprecated_disable_os_cache_for_aligned_files_get()); + public final static settings_pack.io_buffer_mode_t disable_os_cache = new settings_pack.io_buffer_mode_t("disable_os_cache", libtorrent_jni.settings_pack_disable_os_cache_get()); + private static final io_buffer_mode_t[] swigValues = {enable_os_cache, deprecated_disable_os_cache_for_aligned_files, disable_os_cache}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private io_buffer_mode_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private io_buffer_mode_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private io_buffer_mode_t(String swigName, io_buffer_mode_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static io_buffer_mode_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + io_buffer_mode_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + + public final static class bandwidth_mixed_algo_t { + public final static settings_pack.bandwidth_mixed_algo_t prefer_tcp = new settings_pack.bandwidth_mixed_algo_t("prefer_tcp", libtorrent_jni.settings_pack_prefer_tcp_get()); + public final static settings_pack.bandwidth_mixed_algo_t peer_proportional = new settings_pack.bandwidth_mixed_algo_t("peer_proportional", libtorrent_jni.settings_pack_peer_proportional_get()); + private static final bandwidth_mixed_algo_t[] swigValues = {prefer_tcp, peer_proportional}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private bandwidth_mixed_algo_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private bandwidth_mixed_algo_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private bandwidth_mixed_algo_t(String swigName, bandwidth_mixed_algo_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static bandwidth_mixed_algo_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + bandwidth_mixed_algo_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + + public final static class enc_policy { + public final static settings_pack.enc_policy pe_forced = new settings_pack.enc_policy("pe_forced"); + public final static settings_pack.enc_policy pe_enabled = new settings_pack.enc_policy("pe_enabled"); + public final static settings_pack.enc_policy pe_disabled = new settings_pack.enc_policy("pe_disabled"); + private static final enc_policy[] swigValues = {pe_forced, pe_enabled, pe_disabled}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private enc_policy(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private enc_policy(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private enc_policy(String swigName, enc_policy swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static enc_policy swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + enc_policy.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + + public final static class enc_level { + public final static settings_pack.enc_level pe_plaintext = new settings_pack.enc_level("pe_plaintext", libtorrent_jni.settings_pack_pe_plaintext_get()); + public final static settings_pack.enc_level pe_rc4 = new settings_pack.enc_level("pe_rc4", libtorrent_jni.settings_pack_pe_rc4_get()); + public final static settings_pack.enc_level pe_both = new settings_pack.enc_level("pe_both", libtorrent_jni.settings_pack_pe_both_get()); + private static final enc_level[] swigValues = {pe_plaintext, pe_rc4, pe_both}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private enc_level(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private enc_level(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private enc_level(String swigName, enc_level swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static enc_level swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + enc_level.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + + public final static class proxy_type_t { + public final static settings_pack.proxy_type_t none = new settings_pack.proxy_type_t("none"); + public final static settings_pack.proxy_type_t socks4 = new settings_pack.proxy_type_t("socks4"); + public final static settings_pack.proxy_type_t socks5 = new settings_pack.proxy_type_t("socks5"); + public final static settings_pack.proxy_type_t socks5_pw = new settings_pack.proxy_type_t("socks5_pw"); + public final static settings_pack.proxy_type_t http = new settings_pack.proxy_type_t("http"); + public final static settings_pack.proxy_type_t http_pw = new settings_pack.proxy_type_t("http_pw"); + public final static settings_pack.proxy_type_t i2p_proxy = new settings_pack.proxy_type_t("i2p_proxy"); + private static final proxy_type_t[] swigValues = {none, socks4, socks5, socks5_pw, http, http_pw, i2p_proxy}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private proxy_type_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private proxy_type_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private proxy_type_t(String swigName, proxy_type_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static proxy_type_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + proxy_type_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/sha1_hash.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/sha1_hash.java new file mode 100644 index 0000000..8d7e2db --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/sha1_hash.java @@ -0,0 +1,103 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class sha1_hash { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected sha1_hash(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public sha1_hash() { + this(libtorrent_jni.new_sha1_hash__SWIG_0(), true); + } + + public sha1_hash(sha1_hash other) { + this(libtorrent_jni.new_sha1_hash__SWIG_1(sha1_hash.getCPtr(other), other), true); + } + + public sha1_hash(byte_vector s) { + this(libtorrent_jni.new_sha1_hash__SWIG_2(byte_vector.getCPtr(s), s), true); + } + + protected static long getCPtr(sha1_hash obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static long size() { + return libtorrent_jni.sha1_hash_size(); + } + + public static sha1_hash max() { + return new sha1_hash(libtorrent_jni.sha1_hash_max(), true); + } + + public static sha1_hash min() { + return new sha1_hash(libtorrent_jni.sha1_hash_min(), true); + } + + public static int compare(sha1_hash h1, sha1_hash h2) { + return libtorrent_jni.sha1_hash_compare(sha1_hash.getCPtr(h1), h1, sha1_hash.getCPtr(h2), h2); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_sha1_hash(swigCPtr); + } + swigCPtr = 0; + } + } + + public void clear() { + libtorrent_jni.sha1_hash_clear(swigCPtr, this); + } + + public boolean is_all_zeros() { + return libtorrent_jni.sha1_hash_is_all_zeros(swigCPtr, this); + } + + public int count_leading_zeroes() { + return libtorrent_jni.sha1_hash_count_leading_zeroes(swigCPtr, this); + } + + public int hash_code() { + return libtorrent_jni.sha1_hash_hash_code(swigCPtr, this); + } + + public byte_vector to_bytes() { + return new byte_vector(libtorrent_jni.sha1_hash_to_bytes(swigCPtr, this), true); + } + + public String to_hex() { + return libtorrent_jni.sha1_hash_to_hex(swigCPtr, this); + } + + public boolean op_eq(sha1_hash n) { + return libtorrent_jni.sha1_hash_op_eq(swigCPtr, this, sha1_hash.getCPtr(n), n); + } + + public boolean op_ne(sha1_hash n) { + return libtorrent_jni.sha1_hash_op_ne(swigCPtr, this, sha1_hash.getCPtr(n), n); + } + + public boolean op_lt(sha1_hash n) { + return libtorrent_jni.sha1_hash_op_lt(swigCPtr, this, sha1_hash.getCPtr(n), n); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/sha1_hash_udp_endpoint_pair.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/sha1_hash_udp_endpoint_pair.java new file mode 100644 index 0000000..048515c --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/sha1_hash_udp_endpoint_pair.java @@ -0,0 +1,69 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class sha1_hash_udp_endpoint_pair { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected sha1_hash_udp_endpoint_pair(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public sha1_hash_udp_endpoint_pair() { + this(libtorrent_jni.new_sha1_hash_udp_endpoint_pair__SWIG_0(), true); + } + + public sha1_hash_udp_endpoint_pair(sha1_hash first, udp_endpoint second) { + this(libtorrent_jni.new_sha1_hash_udp_endpoint_pair__SWIG_1(sha1_hash.getCPtr(first), first, udp_endpoint.getCPtr(second), second), true); + } + + public sha1_hash_udp_endpoint_pair(sha1_hash_udp_endpoint_pair other) { + this(libtorrent_jni.new_sha1_hash_udp_endpoint_pair__SWIG_2(sha1_hash_udp_endpoint_pair.getCPtr(other), other), true); + } + + protected static long getCPtr(sha1_hash_udp_endpoint_pair obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_sha1_hash_udp_endpoint_pair(swigCPtr); + } + swigCPtr = 0; + } + } + + public sha1_hash getFirst() { + long cPtr = libtorrent_jni.sha1_hash_udp_endpoint_pair_first_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setFirst(sha1_hash value) { + libtorrent_jni.sha1_hash_udp_endpoint_pair_first_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } + + public udp_endpoint getSecond() { + long cPtr = libtorrent_jni.sha1_hash_udp_endpoint_pair_second_get(swigCPtr, this); + return (cPtr == 0) ? null : new udp_endpoint(cPtr, false); + } + + public void setSecond(udp_endpoint value) { + libtorrent_jni.sha1_hash_udp_endpoint_pair_second_set(swigCPtr, this, udp_endpoint.getCPtr(value), value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/sha1_hash_udp_endpoint_pair_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/sha1_hash_udp_endpoint_pair_vector.java new file mode 100644 index 0000000..4dfe727 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/sha1_hash_udp_endpoint_pair_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class sha1_hash_udp_endpoint_pair_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected sha1_hash_udp_endpoint_pair_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public sha1_hash_udp_endpoint_pair_vector() { + this(libtorrent_jni.new_sha1_hash_udp_endpoint_pair_vector(), true); + } + + protected static long getCPtr(sha1_hash_udp_endpoint_pair_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_sha1_hash_udp_endpoint_pair_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.sha1_hash_udp_endpoint_pair_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.sha1_hash_udp_endpoint_pair_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.sha1_hash_udp_endpoint_pair_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.sha1_hash_udp_endpoint_pair_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.sha1_hash_udp_endpoint_pair_vector_clear(swigCPtr, this); + } + + public void push_back(sha1_hash_udp_endpoint_pair x) { + libtorrent_jni.sha1_hash_udp_endpoint_pair_vector_push_back(swigCPtr, this, sha1_hash_udp_endpoint_pair.getCPtr(x), x); + } + + public sha1_hash_udp_endpoint_pair get(int i) { + return new sha1_hash_udp_endpoint_pair(libtorrent_jni.sha1_hash_udp_endpoint_pair_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, sha1_hash_udp_endpoint_pair val) { + libtorrent_jni.sha1_hash_udp_endpoint_pair_vector_set(swigCPtr, this, i, sha1_hash_udp_endpoint_pair.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/sha1_hash_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/sha1_hash_vector.java new file mode 100644 index 0000000..eddd546 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/sha1_hash_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class sha1_hash_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected sha1_hash_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public sha1_hash_vector() { + this(libtorrent_jni.new_sha1_hash_vector(), true); + } + + protected static long getCPtr(sha1_hash_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_sha1_hash_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.sha1_hash_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.sha1_hash_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.sha1_hash_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.sha1_hash_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.sha1_hash_vector_clear(swigCPtr, this); + } + + public void push_back(sha1_hash x) { + libtorrent_jni.sha1_hash_vector_push_back(swigCPtr, this, sha1_hash.getCPtr(x), x); + } + + public sha1_hash get(int i) { + return new sha1_hash(libtorrent_jni.sha1_hash_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, sha1_hash val) { + libtorrent_jni.sha1_hash_vector_set(swigCPtr, this, i, sha1_hash.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/socket_type_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/socket_type_t.java new file mode 100644 index 0000000..f3c95db --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/socket_type_t.java @@ -0,0 +1,57 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public final class socket_type_t { + public final static socket_type_t tcp = new socket_type_t("tcp"); + public final static socket_type_t tcp_ssl = new socket_type_t("tcp_ssl"); + public final static socket_type_t udp = new socket_type_t("udp"); + public final static socket_type_t i2p = new socket_type_t("i2p"); + public final static socket_type_t socks5 = new socket_type_t("socks5"); + public final static socket_type_t utp_ssl = new socket_type_t("utp_ssl"); + private static final socket_type_t[] swigValues = {tcp, tcp_ssl, udp, i2p, socks5, utp_ssl}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private socket_type_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private socket_type_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private socket_type_t(String swigName, socket_type_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static socket_type_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + socket_type_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/socks5_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/socks5_alert.java new file mode 100644 index 0000000..2e669f2 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/socks5_alert.java @@ -0,0 +1,83 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class socks5_alert extends alert { + public final static int priority = libtorrent_jni.socks5_alert_priority_get(); + public final static int alert_type = libtorrent_jni.socks5_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.socks5_alert_static_category_get(), false); + private transient long swigCPtr; + + protected socks5_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.socks5_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(socks5_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_socks5_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.socks5_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.socks5_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.socks5_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.socks5_alert_message(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.socks5_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public void setError(error_code value) { + libtorrent_jni.socks5_alert_error_set(swigCPtr, this, error_code.getCPtr(value), value); + } + + public operation_t getOp() { + return operation_t.swigToEnum(libtorrent_jni.socks5_alert_op_get(swigCPtr, this)); + } + + public void setOp(operation_t value) { + libtorrent_jni.socks5_alert_op_set(swigCPtr, this, value.swigValue()); + } + + public SWIGTYPE_p_libtorrent__aux__noexcept_movableT_libtorrent__tcp__endpoint_t getIp() { + long cPtr = libtorrent_jni.socks5_alert_ip_get(swigCPtr, this); + return (cPtr == 0) ? null : new SWIGTYPE_p_libtorrent__aux__noexcept_movableT_libtorrent__tcp__endpoint_t(cPtr, false); + } + + public void setIp(SWIGTYPE_p_libtorrent__aux__noexcept_movableT_libtorrent__tcp__endpoint_t value) { + libtorrent_jni.socks5_alert_ip_set(swigCPtr, this, SWIGTYPE_p_libtorrent__aux__noexcept_movableT_libtorrent__tcp__endpoint_t.getCPtr(value)); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/state_changed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/state_changed_alert.java new file mode 100644 index 0000000..58b9ce7 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/state_changed_alert.java @@ -0,0 +1,65 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class state_changed_alert extends torrent_alert { + public final static int priority = libtorrent_jni.state_changed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.state_changed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.state_changed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected state_changed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.state_changed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(state_changed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_state_changed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.state_changed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.state_changed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.state_changed_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.state_changed_alert_message(swigCPtr, this); + } + + public torrent_status.state_t getState() { + return torrent_status.state_t.swigToEnum(libtorrent_jni.state_changed_alert_state_get(swigCPtr, this)); + } + + public torrent_status.state_t getPrev_state() { + return torrent_status.state_t.swigToEnum(libtorrent_jni.state_changed_alert_prev_state_get(swigCPtr, this)); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/state_update_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/state_update_alert.java new file mode 100644 index 0000000..7ca91e2 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/state_update_alert.java @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class state_update_alert extends alert { + public final static int priority = libtorrent_jni.state_update_alert_priority_get(); + public final static int alert_type = libtorrent_jni.state_update_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.state_update_alert_static_category_get(), false); + private transient long swigCPtr; + + protected state_update_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.state_update_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(state_update_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_state_update_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.state_update_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.state_update_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.state_update_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.state_update_alert_message(swigCPtr, this); + } + + public torrent_status_vector getStatus() { + long cPtr = libtorrent_jni.state_update_alert_status_get(swigCPtr, this); + return (cPtr == 0) ? null : new torrent_status_vector(cPtr, false); + } + + public void setStatus(torrent_status_vector value) { + libtorrent_jni.state_update_alert_status_set(swigCPtr, this, torrent_status_vector.getCPtr(value), value); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/stats_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/stats_alert.java new file mode 100644 index 0000000..508e2ac --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/stats_alert.java @@ -0,0 +1,114 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class stats_alert extends torrent_alert { + public final static int priority = libtorrent_jni.stats_alert_priority_get(); + public final static int alert_type = libtorrent_jni.stats_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.stats_alert_static_category_get(), false); + private transient long swigCPtr; + + protected stats_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.stats_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(stats_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_stats_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.stats_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.stats_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.stats_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.stats_alert_message(swigCPtr, this); + } + + public int getInterval() { + return libtorrent_jni.stats_alert_interval_get(swigCPtr, this); + } + + public int get_transferred(int index) { + return libtorrent_jni.stats_alert_get_transferred(swigCPtr, this, index); + } + + public final static class stats_channel { + public final static stats_alert.stats_channel upload_payload = new stats_alert.stats_channel("upload_payload"); + public final static stats_alert.stats_channel upload_protocol = new stats_alert.stats_channel("upload_protocol"); + public final static stats_alert.stats_channel download_payload = new stats_alert.stats_channel("download_payload"); + public final static stats_alert.stats_channel download_protocol = new stats_alert.stats_channel("download_protocol"); + public final static stats_alert.stats_channel upload_ip_protocol = new stats_alert.stats_channel("upload_ip_protocol"); + public final static stats_alert.stats_channel download_ip_protocol = new stats_alert.stats_channel("download_ip_protocol", libtorrent_jni.stats_alert_download_ip_protocol_get()); + public final static stats_alert.stats_channel num_channels = new stats_alert.stats_channel("num_channels", libtorrent_jni.stats_alert_num_channels_get()); + private static final stats_channel[] swigValues = {upload_payload, upload_protocol, download_payload, download_protocol, upload_ip_protocol, download_ip_protocol, num_channels}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private stats_channel(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private stats_channel(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private stats_channel(String swigName, stats_channel swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static stats_channel swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + stats_channel.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/stats_metric.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/stats_metric.java new file mode 100644 index 0000000..09d5856 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/stats_metric.java @@ -0,0 +1,63 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class stats_metric { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected stats_metric(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public stats_metric() { + this(libtorrent_jni.new_stats_metric(), true); + } + + protected static long getCPtr(stats_metric obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_stats_metric(swigCPtr); + } + swigCPtr = 0; + } + } + + public int getValue_index() { + return libtorrent_jni.stats_metric_value_index_get(swigCPtr, this); + } + + public void setValue_index(int value) { + libtorrent_jni.stats_metric_value_index_set(swigCPtr, this, value); + } + + public metric_type_t getType() { + return metric_type_t.swigToEnum(libtorrent_jni.stats_metric_type_get(swigCPtr, this)); + } + + public void setType(metric_type_t value) { + libtorrent_jni.stats_metric_type_set(swigCPtr, this, value.swigValue()); + } + + public String get_name() { + return libtorrent_jni.stats_metric_get_name(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/stats_metric_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/stats_metric_vector.java new file mode 100644 index 0000000..2c1bf19 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/stats_metric_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class stats_metric_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected stats_metric_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public stats_metric_vector() { + this(libtorrent_jni.new_stats_metric_vector(), true); + } + + protected static long getCPtr(stats_metric_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_stats_metric_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.stats_metric_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.stats_metric_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.stats_metric_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.stats_metric_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.stats_metric_vector_clear(swigCPtr, this); + } + + public void push_back(stats_metric x) { + libtorrent_jni.stats_metric_vector_push_back(swigCPtr, this, stats_metric.getCPtr(x), x); + } + + public stats_metric get(int i) { + return new stats_metric(libtorrent_jni.stats_metric_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, stats_metric val) { + libtorrent_jni.stats_metric_vector_set(swigCPtr, this, i, stats_metric.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/status_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/status_flags_t.java new file mode 100644 index 0000000..0b76da5 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/status_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class status_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected status_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public status_flags_t() { + this(libtorrent_jni.new_status_flags_t(), true); + } + + protected static long getCPtr(status_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static status_flags_t all() { + return new status_flags_t(libtorrent_jni.status_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_status_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.status_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(status_flags_t f) { + return libtorrent_jni.status_flags_t_eq(swigCPtr, this, status_flags_t.getCPtr(f), f); + } + + public boolean ne(status_flags_t f) { + return libtorrent_jni.status_flags_t_ne(swigCPtr, this, status_flags_t.getCPtr(f), f); + } + + public status_flags_t or_(status_flags_t other) { + return new status_flags_t(libtorrent_jni.status_flags_t_or_(swigCPtr, this, status_flags_t.getCPtr(other), other), true); + } + + public status_flags_t and_(status_flags_t other) { + return new status_flags_t(libtorrent_jni.status_flags_t_and_(swigCPtr, this, status_flags_t.getCPtr(other), other), true); + } + + public status_flags_t xor(status_flags_t other) { + return new status_flags_t(libtorrent_jni.status_flags_t_xor(swigCPtr, this, status_flags_t.getCPtr(other), other), true); + } + + public status_flags_t inv() { + return new status_flags_t(libtorrent_jni.status_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.status_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/storage_mode_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/storage_mode_t.java new file mode 100644 index 0000000..dd23737 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/storage_mode_t.java @@ -0,0 +1,53 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public final class storage_mode_t { + public final static storage_mode_t storage_mode_allocate = new storage_mode_t("storage_mode_allocate"); + public final static storage_mode_t storage_mode_sparse = new storage_mode_t("storage_mode_sparse"); + private static final storage_mode_t[] swigValues = {storage_mode_allocate, storage_mode_sparse}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private storage_mode_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private storage_mode_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private storage_mode_t(String swigName, storage_mode_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static storage_mode_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + storage_mode_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } +} + diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/storage_moved_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/storage_moved_alert.java new file mode 100644 index 0000000..af6acdb --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/storage_moved_alert.java @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class storage_moved_alert extends torrent_alert { + public final static int priority = libtorrent_jni.storage_moved_alert_priority_get(); + public final static int alert_type = libtorrent_jni.storage_moved_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.storage_moved_alert_static_category_get(), false); + private transient long swigCPtr; + + protected storage_moved_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.storage_moved_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(storage_moved_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_storage_moved_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.storage_moved_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.storage_moved_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.storage_moved_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.storage_moved_alert_message(swigCPtr, this); + } + + public String storage_path() { + return libtorrent_jni.storage_moved_alert_storage_path(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/storage_moved_failed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/storage_moved_failed_alert.java new file mode 100644 index 0000000..c8693da --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/storage_moved_failed_alert.java @@ -0,0 +1,74 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class storage_moved_failed_alert extends torrent_alert { + public final static int priority = libtorrent_jni.storage_moved_failed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.storage_moved_failed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.storage_moved_failed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected storage_moved_failed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.storage_moved_failed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(storage_moved_failed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_storage_moved_failed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.storage_moved_failed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.storage_moved_failed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.storage_moved_failed_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.storage_moved_failed_alert_message(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.storage_moved_failed_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public String file_path() { + return libtorrent_jni.storage_moved_failed_alert_file_path(swigCPtr, this); + } + + public operation_t getOp() { + return operation_t.swigToEnum(libtorrent_jni.storage_moved_failed_alert_op_get(swigCPtr, this)); + } + + public void setOp(operation_t value) { + libtorrent_jni.storage_moved_failed_alert_op_set(swigCPtr, this, value.swigValue()); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_entry_map.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_entry_map.java new file mode 100644 index 0000000..8fe509f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_entry_map.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class string_entry_map { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected string_entry_map(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public string_entry_map() { + this(libtorrent_jni.new_string_entry_map__SWIG_0(), true); + } + + public string_entry_map(string_entry_map arg0) { + this(libtorrent_jni.new_string_entry_map__SWIG_1(string_entry_map.getCPtr(arg0), arg0), true); + } + + protected static long getCPtr(string_entry_map obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_string_entry_map(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.string_entry_map_size(swigCPtr, this); + } + + public boolean empty() { + return libtorrent_jni.string_entry_map_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.string_entry_map_clear(swigCPtr, this); + } + + public entry get(String key) { + return new entry(libtorrent_jni.string_entry_map_get(swigCPtr, this, key), false); + } + + public void set(String key, entry x) { + libtorrent_jni.string_entry_map_set(swigCPtr, this, key, entry.getCPtr(x), x); + } + + public void erase(String key) { + libtorrent_jni.string_entry_map_erase(swigCPtr, this, key); + } + + public boolean has_key(String key) { + return libtorrent_jni.string_entry_map_has_key(swigCPtr, this, key); + } + + public string_vector keys() { + return new string_vector(libtorrent_jni.string_entry_map_keys(swigCPtr, this), true); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_int_pair.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_int_pair.java new file mode 100644 index 0000000..0eb0971 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_int_pair.java @@ -0,0 +1,67 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class string_int_pair { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected string_int_pair(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public string_int_pair() { + this(libtorrent_jni.new_string_int_pair__SWIG_0(), true); + } + + public string_int_pair(String first, int second) { + this(libtorrent_jni.new_string_int_pair__SWIG_1(first, second), true); + } + + public string_int_pair(string_int_pair other) { + this(libtorrent_jni.new_string_int_pair__SWIG_2(string_int_pair.getCPtr(other), other), true); + } + + protected static long getCPtr(string_int_pair obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_string_int_pair(swigCPtr); + } + swigCPtr = 0; + } + } + + public String getFirst() { + return libtorrent_jni.string_int_pair_first_get(swigCPtr, this); + } + + public void setFirst(String value) { + libtorrent_jni.string_int_pair_first_set(swigCPtr, this, value); + } + + public int getSecond() { + return libtorrent_jni.string_int_pair_second_get(swigCPtr, this); + } + + public void setSecond(int value) { + libtorrent_jni.string_int_pair_second_set(swigCPtr, this, value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_int_pair_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_int_pair_vector.java new file mode 100644 index 0000000..3b859b6 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_int_pair_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class string_int_pair_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected string_int_pair_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public string_int_pair_vector() { + this(libtorrent_jni.new_string_int_pair_vector(), true); + } + + protected static long getCPtr(string_int_pair_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_string_int_pair_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.string_int_pair_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.string_int_pair_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.string_int_pair_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.string_int_pair_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.string_int_pair_vector_clear(swigCPtr, this); + } + + public void push_back(string_int_pair x) { + libtorrent_jni.string_int_pair_vector_push_back(swigCPtr, this, string_int_pair.getCPtr(x), x); + } + + public string_int_pair get(int i) { + return new string_int_pair(libtorrent_jni.string_int_pair_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, string_int_pair val) { + libtorrent_jni.string_int_pair_vector_set(swigCPtr, this, i, string_int_pair.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_long_map.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_long_map.java new file mode 100644 index 0000000..e644646 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_long_map.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class string_long_map { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected string_long_map(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public string_long_map() { + this(libtorrent_jni.new_string_long_map__SWIG_0(), true); + } + + public string_long_map(string_long_map arg0) { + this(libtorrent_jni.new_string_long_map__SWIG_1(string_long_map.getCPtr(arg0), arg0), true); + } + + protected static long getCPtr(string_long_map obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_string_long_map(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.string_long_map_size(swigCPtr, this); + } + + public boolean empty() { + return libtorrent_jni.string_long_map_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.string_long_map_clear(swigCPtr, this); + } + + public int get(String key) { + return libtorrent_jni.string_long_map_get(swigCPtr, this, key); + } + + public void set(String key, int x) { + libtorrent_jni.string_long_map_set(swigCPtr, this, key, x); + } + + public void erase(String key) { + libtorrent_jni.string_long_map_erase(swigCPtr, this, key); + } + + public boolean has_key(String key) { + return libtorrent_jni.string_long_map_has_key(swigCPtr, this, key); + } + + public string_vector keys() { + return new string_vector(libtorrent_jni.string_long_map_keys(swigCPtr, this), true); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_string_pair.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_string_pair.java new file mode 100644 index 0000000..2090a04 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_string_pair.java @@ -0,0 +1,67 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class string_string_pair { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected string_string_pair(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public string_string_pair() { + this(libtorrent_jni.new_string_string_pair__SWIG_0(), true); + } + + public string_string_pair(String first, String second) { + this(libtorrent_jni.new_string_string_pair__SWIG_1(first, second), true); + } + + public string_string_pair(string_string_pair other) { + this(libtorrent_jni.new_string_string_pair__SWIG_2(string_string_pair.getCPtr(other), other), true); + } + + protected static long getCPtr(string_string_pair obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_string_string_pair(swigCPtr); + } + swigCPtr = 0; + } + } + + public String getFirst() { + return libtorrent_jni.string_string_pair_first_get(swigCPtr, this); + } + + public void setFirst(String value) { + libtorrent_jni.string_string_pair_first_set(swigCPtr, this, value); + } + + public String getSecond() { + return libtorrent_jni.string_string_pair_second_get(swigCPtr, this); + } + + public void setSecond(String value) { + libtorrent_jni.string_string_pair_second_set(swigCPtr, this, value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_string_pair_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_string_pair_vector.java new file mode 100644 index 0000000..0ef5e92 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_string_pair_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class string_string_pair_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected string_string_pair_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public string_string_pair_vector() { + this(libtorrent_jni.new_string_string_pair_vector(), true); + } + + protected static long getCPtr(string_string_pair_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_string_string_pair_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.string_string_pair_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.string_string_pair_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.string_string_pair_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.string_string_pair_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.string_string_pair_vector_clear(swigCPtr, this); + } + + public void push_back(string_string_pair x) { + libtorrent_jni.string_string_pair_vector_push_back(swigCPtr, this, string_string_pair.getCPtr(x), x); + } + + public string_string_pair get(int i) { + return new string_string_pair(libtorrent_jni.string_string_pair_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, string_string_pair val) { + libtorrent_jni.string_string_pair_vector_set(swigCPtr, this, i, string_string_pair.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_vector.java new file mode 100644 index 0000000..934c3b9 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class string_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected string_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public string_vector() { + this(libtorrent_jni.new_string_vector(), true); + } + + protected static long getCPtr(string_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_string_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.string_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.string_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.string_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.string_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.string_vector_clear(swigCPtr, this); + } + + public void push_back(String x) { + libtorrent_jni.string_vector_push_back(swigCPtr, this, x); + } + + public String get(int i) { + return libtorrent_jni.string_vector_get(swigCPtr, this, i); + } + + public void set(int i, String val) { + libtorrent_jni.string_vector_set(swigCPtr, this, i, val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_view.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_view.java new file mode 100644 index 0000000..0c8dd21 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_view.java @@ -0,0 +1,47 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class string_view { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected string_view(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public string_view() { + this(libtorrent_jni.new_string_view(), true); + } + + protected static long getCPtr(string_view obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_string_view(swigCPtr); + } + swigCPtr = 0; + } + } + + public byte_vector to_bytes() { + return new byte_vector(libtorrent_jni.string_view_to_bytes(swigCPtr, this), true); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_view_bdecode_node_pair.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_view_bdecode_node_pair.java new file mode 100644 index 0000000..8faa880 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/string_view_bdecode_node_pair.java @@ -0,0 +1,69 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class string_view_bdecode_node_pair { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected string_view_bdecode_node_pair(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public string_view_bdecode_node_pair() { + this(libtorrent_jni.new_string_view_bdecode_node_pair__SWIG_0(), true); + } + + public string_view_bdecode_node_pair(string_view first, bdecode_node second) { + this(libtorrent_jni.new_string_view_bdecode_node_pair__SWIG_1(string_view.getCPtr(first), first, bdecode_node.getCPtr(second), second), true); + } + + public string_view_bdecode_node_pair(string_view_bdecode_node_pair other) { + this(libtorrent_jni.new_string_view_bdecode_node_pair__SWIG_2(string_view_bdecode_node_pair.getCPtr(other), other), true); + } + + protected static long getCPtr(string_view_bdecode_node_pair obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_string_view_bdecode_node_pair(swigCPtr); + } + swigCPtr = 0; + } + } + + public string_view getFirst() { + long cPtr = libtorrent_jni.string_view_bdecode_node_pair_first_get(swigCPtr, this); + return (cPtr == 0) ? null : new string_view(cPtr, false); + } + + public void setFirst(string_view value) { + libtorrent_jni.string_view_bdecode_node_pair_first_set(swigCPtr, this, string_view.getCPtr(value), value); + } + + public bdecode_node getSecond() { + long cPtr = libtorrent_jni.string_view_bdecode_node_pair_second_get(swigCPtr, this); + return (cPtr == 0) ? null : new bdecode_node(cPtr, false); + } + + public void setSecond(bdecode_node value) { + libtorrent_jni.string_view_bdecode_node_pair_second_set(swigCPtr, this, bdecode_node.getCPtr(value), value); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/swig_plugin.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/swig_plugin.java new file mode 100644 index 0000000..50021fa --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/swig_plugin.java @@ -0,0 +1,63 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class swig_plugin { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected swig_plugin(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public swig_plugin() { + this(libtorrent_jni.new_swig_plugin(), true); + libtorrent_jni.swig_plugin_director_connect(this, swigCPtr, true, true); + } + + protected static long getCPtr(swig_plugin obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_swig_plugin(swigCPtr); + } + swigCPtr = 0; + } + } + + protected void swigDirectorDisconnect() { + swigCMemOwn = false; + delete(); + } + + public void swigReleaseOwnership() { + swigCMemOwn = false; + libtorrent_jni.swig_plugin_change_ownership(this, swigCPtr, false); + } + + public void swigTakeOwnership() { + swigCMemOwn = true; + libtorrent_jni.swig_plugin_change_ownership(this, swigCPtr, true); + } + + public boolean on_dht_request(string_view query, udp_endpoint source, bdecode_node message, entry response) { + return (getClass() == swig_plugin.class) ? libtorrent_jni.swig_plugin_on_dht_request(swigCPtr, this, string_view.getCPtr(query), query, udp_endpoint.getCPtr(source), source, bdecode_node.getCPtr(message), message, entry.getCPtr(response), response) : libtorrent_jni.swig_plugin_on_dht_requestSwigExplicitswig_plugin(swigCPtr, this, string_view.getCPtr(query), query, udp_endpoint.getCPtr(source), source, bdecode_node.getCPtr(message), message, entry.getCPtr(response), response); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/system_error_category.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/system_error_category.java new file mode 100644 index 0000000..098be06 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/system_error_category.java @@ -0,0 +1,59 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class system_error_category { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected system_error_category(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public system_error_category() { + this(libtorrent_jni.new_system_error_category(), true); + } + + protected static long getCPtr(system_error_category obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_system_error_category(swigCPtr); + } + swigCPtr = 0; + } + } + + public String name() { + return libtorrent_jni.system_error_category_name(swigCPtr, this); + } + + public SWIGTYPE_p_boost__system__error_condition default_error_condition(int ev) { + return new SWIGTYPE_p_boost__system__error_condition(libtorrent_jni.system_error_category_default_error_condition(swigCPtr, this, ev), true); + } + + public String message(int ev) { + return libtorrent_jni.system_error_category_message__SWIG_0(swigCPtr, this, ev); + } + + public String message(int ev, String buffer, long len) { + return libtorrent_jni.system_error_category_message__SWIG_1(swigCPtr, this, ev, buffer, len); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tcp_endpoint.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tcp_endpoint.java new file mode 100644 index 0000000..6f514f0 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tcp_endpoint.java @@ -0,0 +1,59 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class tcp_endpoint { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected tcp_endpoint(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public tcp_endpoint() { + this(libtorrent_jni.new_tcp_endpoint__SWIG_0(), true); + } + + public tcp_endpoint(address address, int port) { + this(libtorrent_jni.new_tcp_endpoint__SWIG_1(com.frostwire.jlibtorrent.swig.address.getCPtr(address), address, port), true); + } + + public tcp_endpoint(tcp_endpoint other) { + this(libtorrent_jni.new_tcp_endpoint__SWIG_2(tcp_endpoint.getCPtr(other), other), true); + } + + protected static long getCPtr(tcp_endpoint obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_tcp_endpoint(swigCPtr); + } + swigCPtr = 0; + } + } + + public int port() { + return libtorrent_jni.tcp_endpoint_port(swigCPtr, this); + } + + public address address() { + return new address(libtorrent_jni.tcp_endpoint_address(swigCPtr, this), true); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tcp_endpoint_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tcp_endpoint_vector.java new file mode 100644 index 0000000..552a963 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tcp_endpoint_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class tcp_endpoint_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected tcp_endpoint_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public tcp_endpoint_vector() { + this(libtorrent_jni.new_tcp_endpoint_vector(), true); + } + + protected static long getCPtr(tcp_endpoint_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_tcp_endpoint_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.tcp_endpoint_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.tcp_endpoint_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.tcp_endpoint_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.tcp_endpoint_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.tcp_endpoint_vector_clear(swigCPtr, this); + } + + public void push_back(tcp_endpoint x) { + libtorrent_jni.tcp_endpoint_vector_push_back(swigCPtr, this, tcp_endpoint.getCPtr(x), x); + } + + public tcp_endpoint get(int i) { + return new tcp_endpoint(libtorrent_jni.tcp_endpoint_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, tcp_endpoint val) { + libtorrent_jni.tcp_endpoint_vector_set(swigCPtr, this, i, tcp_endpoint.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_alert.java new file mode 100644 index 0000000..6015c44 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_alert.java @@ -0,0 +1,56 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_alert extends alert { + private transient long swigCPtr; + + protected torrent_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.torrent_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(torrent_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public String message() { + return libtorrent_jni.torrent_alert_message(swigCPtr, this); + } + + public torrent_handle getHandle() { + long cPtr = libtorrent_jni.torrent_alert_handle_get(swigCPtr, this); + return (cPtr == 0) ? null : new torrent_handle(cPtr, false); + } + + public void setHandle(torrent_handle value) { + libtorrent_jni.torrent_alert_handle_set(swigCPtr, this, torrent_handle.getCPtr(value), value); + } + + public String torrent_name() { + return libtorrent_jni.torrent_alert_torrent_name(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_checked_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_checked_alert.java new file mode 100644 index 0000000..6a30d24 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_checked_alert.java @@ -0,0 +1,57 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_checked_alert extends torrent_alert { + public final static int priority = libtorrent_jni.torrent_checked_alert_priority_get(); + public final static int alert_type = libtorrent_jni.torrent_checked_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.torrent_checked_alert_static_category_get(), false); + private transient long swigCPtr; + + protected torrent_checked_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.torrent_checked_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(torrent_checked_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_checked_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.torrent_checked_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.torrent_checked_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.torrent_checked_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.torrent_checked_alert_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_delete_failed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_delete_failed_alert.java new file mode 100644 index 0000000..ad3f7b8 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_delete_failed_alert.java @@ -0,0 +1,71 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_delete_failed_alert extends torrent_alert { + public final static int priority = libtorrent_jni.torrent_delete_failed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.torrent_delete_failed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.torrent_delete_failed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected torrent_delete_failed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.torrent_delete_failed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(torrent_delete_failed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_delete_failed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.torrent_delete_failed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.torrent_delete_failed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.torrent_delete_failed_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.torrent_delete_failed_alert_message(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.torrent_delete_failed_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public sha1_hash getInfo_hash() { + long cPtr = libtorrent_jni.torrent_delete_failed_alert_info_hash_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setInfo_hash(sha1_hash value) { + libtorrent_jni.torrent_delete_failed_alert_info_hash_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_deleted_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_deleted_alert.java new file mode 100644 index 0000000..f3da592 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_deleted_alert.java @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_deleted_alert extends torrent_alert { + public final static int priority = libtorrent_jni.torrent_deleted_alert_priority_get(); + public final static int alert_type = libtorrent_jni.torrent_deleted_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.torrent_deleted_alert_static_category_get(), false); + private transient long swigCPtr; + + protected torrent_deleted_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.torrent_deleted_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(torrent_deleted_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_deleted_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.torrent_deleted_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.torrent_deleted_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.torrent_deleted_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.torrent_deleted_alert_message(swigCPtr, this); + } + + public sha1_hash getInfo_hash() { + long cPtr = libtorrent_jni.torrent_deleted_alert_info_hash_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setInfo_hash(sha1_hash value) { + libtorrent_jni.torrent_deleted_alert_info_hash_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_error_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_error_alert.java new file mode 100644 index 0000000..8c26a2e --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_error_alert.java @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_error_alert extends torrent_alert { + public final static int priority = libtorrent_jni.torrent_error_alert_priority_get(); + public final static int alert_type = libtorrent_jni.torrent_error_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.torrent_error_alert_static_category_get(), false); + private transient long swigCPtr; + + protected torrent_error_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.torrent_error_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(torrent_error_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_error_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.torrent_error_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.torrent_error_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.torrent_error_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.torrent_error_alert_message(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.torrent_error_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public String filename() { + return libtorrent_jni.torrent_error_alert_filename(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_finished_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_finished_alert.java new file mode 100644 index 0000000..f66caf8 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_finished_alert.java @@ -0,0 +1,57 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_finished_alert extends torrent_alert { + public final static int priority = libtorrent_jni.torrent_finished_alert_priority_get(); + public final static int alert_type = libtorrent_jni.torrent_finished_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.torrent_finished_alert_static_category_get(), false); + private transient long swigCPtr; + + protected torrent_finished_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.torrent_finished_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(torrent_finished_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_finished_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.torrent_finished_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.torrent_finished_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.torrent_finished_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.torrent_finished_alert_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_flags_t.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_flags_t.java new file mode 100644 index 0000000..6c4aaf7 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_flags_t.java @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_flags_t { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected torrent_flags_t(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public torrent_flags_t() { + this(libtorrent_jni.new_torrent_flags_t(), true); + } + + protected static long getCPtr(torrent_flags_t obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static torrent_flags_t all() { + return new torrent_flags_t(libtorrent_jni.torrent_flags_t_all(), true); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_flags_t(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean nonZero() { + return libtorrent_jni.torrent_flags_t_nonZero(swigCPtr, this); + } + + public boolean eq(torrent_flags_t f) { + return libtorrent_jni.torrent_flags_t_eq(swigCPtr, this, torrent_flags_t.getCPtr(f), f); + } + + public boolean ne(torrent_flags_t f) { + return libtorrent_jni.torrent_flags_t_ne(swigCPtr, this, torrent_flags_t.getCPtr(f), f); + } + + public torrent_flags_t or_(torrent_flags_t other) { + return new torrent_flags_t(libtorrent_jni.torrent_flags_t_or_(swigCPtr, this, torrent_flags_t.getCPtr(other), other), true); + } + + public torrent_flags_t and_(torrent_flags_t other) { + return new torrent_flags_t(libtorrent_jni.torrent_flags_t_and_(swigCPtr, this, torrent_flags_t.getCPtr(other), other), true); + } + + public torrent_flags_t xor(torrent_flags_t other) { + return new torrent_flags_t(libtorrent_jni.torrent_flags_t_xor(swigCPtr, this, torrent_flags_t.getCPtr(other), other), true); + } + + public torrent_flags_t inv() { + return new torrent_flags_t(libtorrent_jni.torrent_flags_t_inv(swigCPtr, this), true); + } + + public int to_int() { + return libtorrent_jni.torrent_flags_t_to_int(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_handle.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_handle.java new file mode 100644 index 0000000..502daa6 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_handle.java @@ -0,0 +1,437 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_handle { + public final static add_piece_flags_t overwrite_existing = new add_piece_flags_t(libtorrent_jni.torrent_handle_overwrite_existing_get(), false); + public final static status_flags_t query_distributed_copies = new status_flags_t(libtorrent_jni.torrent_handle_query_distributed_copies_get(), false); + public final static status_flags_t query_accurate_download_counters = new status_flags_t(libtorrent_jni.torrent_handle_query_accurate_download_counters_get(), false); + public final static status_flags_t query_last_seen_complete = new status_flags_t(libtorrent_jni.torrent_handle_query_last_seen_complete_get(), false); + public final static status_flags_t query_pieces = new status_flags_t(libtorrent_jni.torrent_handle_query_pieces_get(), false); + public final static status_flags_t query_verified_pieces = new status_flags_t(libtorrent_jni.torrent_handle_query_verified_pieces_get(), false); + public final static status_flags_t query_torrent_file = new status_flags_t(libtorrent_jni.torrent_handle_query_torrent_file_get(), false); + public final static status_flags_t query_name = new status_flags_t(libtorrent_jni.torrent_handle_query_name_get(), false); + public final static status_flags_t query_save_path = new status_flags_t(libtorrent_jni.torrent_handle_query_save_path_get(), false); + public final static deadline_flags_t alert_when_available = new deadline_flags_t(libtorrent_jni.torrent_handle_alert_when_available_get(), false); + public final static pause_flags_t graceful_pause = new pause_flags_t(libtorrent_jni.torrent_handle_graceful_pause_get(), false); + public final static pause_flags_t clear_disk_cache = new pause_flags_t(libtorrent_jni.torrent_handle_clear_disk_cache_get(), false); + public final static resume_data_flags_t flush_disk_cache = new resume_data_flags_t(libtorrent_jni.torrent_handle_flush_disk_cache_get(), false); + public final static resume_data_flags_t save_info_dict = new resume_data_flags_t(libtorrent_jni.torrent_handle_save_info_dict_get(), false); + public final static resume_data_flags_t only_if_modified = new resume_data_flags_t(libtorrent_jni.torrent_handle_only_if_modified_get(), false); + public final static reannounce_flags_t ignore_min_interval = new reannounce_flags_t(libtorrent_jni.torrent_handle_ignore_min_interval_get(), false); + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected torrent_handle(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + protected static long getCPtr(torrent_handle obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_handle(swigCPtr); + } + swigCPtr = 0; + } + } + + public void read_piece(int piece) { + libtorrent_jni.torrent_handle_read_piece(swigCPtr, this, piece); + } + + public boolean have_piece(int piece) { + return libtorrent_jni.torrent_handle_have_piece(swigCPtr, this, piece); + } + + public void get_peer_info(peer_info_vector v) { + libtorrent_jni.torrent_handle_get_peer_info(swigCPtr, this, peer_info_vector.getCPtr(v), v); + } + + public torrent_status status(status_flags_t flags) { + return new torrent_status(libtorrent_jni.torrent_handle_status__SWIG_0(swigCPtr, this, status_flags_t.getCPtr(flags), flags), true); + } + + public torrent_status status() { + return new torrent_status(libtorrent_jni.torrent_handle_status__SWIG_1(swigCPtr, this), true); + } + + public void get_download_queue(partial_piece_info_vector queue) { + libtorrent_jni.torrent_handle_get_download_queue(swigCPtr, this, partial_piece_info_vector.getCPtr(queue), queue); + } + + public void set_piece_deadline(int index, int deadline, deadline_flags_t flags) { + libtorrent_jni.torrent_handle_set_piece_deadline__SWIG_0(swigCPtr, this, index, deadline, deadline_flags_t.getCPtr(flags), flags); + } + + public void set_piece_deadline(int index, int deadline) { + libtorrent_jni.torrent_handle_set_piece_deadline__SWIG_1(swigCPtr, this, index, deadline); + } + + public void reset_piece_deadline(int index) { + libtorrent_jni.torrent_handle_reset_piece_deadline(swigCPtr, this, index); + } + + public void clear_piece_deadlines() { + libtorrent_jni.torrent_handle_clear_piece_deadlines(swigCPtr, this); + } + + public void file_progress(int64_vector progress, int flags) { + libtorrent_jni.torrent_handle_file_progress__SWIG_0(swigCPtr, this, int64_vector.getCPtr(progress), progress, flags); + } + + public void file_progress(int64_vector progress) { + libtorrent_jni.torrent_handle_file_progress__SWIG_1(swigCPtr, this, int64_vector.getCPtr(progress), progress); + } + + public void clear_error() { + libtorrent_jni.torrent_handle_clear_error(swigCPtr, this); + } + + public announce_entry_vector trackers() { + return new announce_entry_vector(libtorrent_jni.torrent_handle_trackers(swigCPtr, this), true); + } + + public void replace_trackers(announce_entry_vector arg0) { + libtorrent_jni.torrent_handle_replace_trackers(swigCPtr, this, announce_entry_vector.getCPtr(arg0), arg0); + } + + public void add_tracker(announce_entry arg0) { + libtorrent_jni.torrent_handle_add_tracker(swigCPtr, this, announce_entry.getCPtr(arg0), arg0); + } + + public void add_url_seed(String url) { + libtorrent_jni.torrent_handle_add_url_seed(swigCPtr, this, url); + } + + public void remove_url_seed(String url) { + libtorrent_jni.torrent_handle_remove_url_seed(swigCPtr, this, url); + } + + public void add_http_seed(String url) { + libtorrent_jni.torrent_handle_add_http_seed(swigCPtr, this, url); + } + + public void remove_http_seed(String url) { + libtorrent_jni.torrent_handle_remove_http_seed(swigCPtr, this, url); + } + + public boolean is_valid() { + return libtorrent_jni.torrent_handle_is_valid(swigCPtr, this); + } + + public void pause(pause_flags_t flags) { + libtorrent_jni.torrent_handle_pause__SWIG_0(swigCPtr, this, pause_flags_t.getCPtr(flags), flags); + } + + public void pause() { + libtorrent_jni.torrent_handle_pause__SWIG_1(swigCPtr, this); + } + + public void resume() { + libtorrent_jni.torrent_handle_resume(swigCPtr, this); + } + + public torrent_flags_t flags() { + return new torrent_flags_t(libtorrent_jni.torrent_handle_flags(swigCPtr, this), true); + } + + public void set_flags(torrent_flags_t flags, torrent_flags_t mask) { + libtorrent_jni.torrent_handle_set_flags__SWIG_0(swigCPtr, this, torrent_flags_t.getCPtr(flags), flags, torrent_flags_t.getCPtr(mask), mask); + } + + public void set_flags(torrent_flags_t flags) { + libtorrent_jni.torrent_handle_set_flags__SWIG_1(swigCPtr, this, torrent_flags_t.getCPtr(flags), flags); + } + + public void unset_flags(torrent_flags_t flags) { + libtorrent_jni.torrent_handle_unset_flags(swigCPtr, this, torrent_flags_t.getCPtr(flags), flags); + } + + public void flush_cache() { + libtorrent_jni.torrent_handle_flush_cache(swigCPtr, this); + } + + public void force_recheck() { + libtorrent_jni.torrent_handle_force_recheck(swigCPtr, this); + } + + public void save_resume_data(resume_data_flags_t flags) { + libtorrent_jni.torrent_handle_save_resume_data__SWIG_0(swigCPtr, this, resume_data_flags_t.getCPtr(flags), flags); + } + + public void save_resume_data() { + libtorrent_jni.torrent_handle_save_resume_data__SWIG_1(swigCPtr, this); + } + + public boolean need_save_resume_data() { + return libtorrent_jni.torrent_handle_need_save_resume_data(swigCPtr, this); + } + + public void queue_position_up() { + libtorrent_jni.torrent_handle_queue_position_up(swigCPtr, this); + } + + public void queue_position_down() { + libtorrent_jni.torrent_handle_queue_position_down(swigCPtr, this); + } + + public void queue_position_top() { + libtorrent_jni.torrent_handle_queue_position_top(swigCPtr, this); + } + + public void queue_position_bottom() { + libtorrent_jni.torrent_handle_queue_position_bottom(swigCPtr, this); + } + + public void set_ssl_certificate(String certificate, String private_key, String dh_params, String passphrase) { + libtorrent_jni.torrent_handle_set_ssl_certificate__SWIG_0(swigCPtr, this, certificate, private_key, dh_params, passphrase); + } + + public void set_ssl_certificate(String certificate, String private_key, String dh_params) { + libtorrent_jni.torrent_handle_set_ssl_certificate__SWIG_1(swigCPtr, this, certificate, private_key, dh_params); + } + + public void piece_availability(int_vector avail) { + libtorrent_jni.torrent_handle_piece_availability(swigCPtr, this, int_vector.getCPtr(avail), avail); + } + + public void force_reannounce(int seconds, int tracker_index, reannounce_flags_t arg2) { + libtorrent_jni.torrent_handle_force_reannounce__SWIG_0(swigCPtr, this, seconds, tracker_index, reannounce_flags_t.getCPtr(arg2), arg2); + } + + public void force_reannounce(int seconds, int tracker_index) { + libtorrent_jni.torrent_handle_force_reannounce__SWIG_1(swigCPtr, this, seconds, tracker_index); + } + + public void force_reannounce(int seconds) { + libtorrent_jni.torrent_handle_force_reannounce__SWIG_2(swigCPtr, this, seconds); + } + + public void force_reannounce() { + libtorrent_jni.torrent_handle_force_reannounce__SWIG_3(swigCPtr, this); + } + + public void force_dht_announce() { + libtorrent_jni.torrent_handle_force_dht_announce(swigCPtr, this); + } + + public void scrape_tracker(int idx) { + libtorrent_jni.torrent_handle_scrape_tracker__SWIG_0(swigCPtr, this, idx); + } + + public void scrape_tracker() { + libtorrent_jni.torrent_handle_scrape_tracker__SWIG_1(swigCPtr, this); + } + + public void set_upload_limit(int limit) { + libtorrent_jni.torrent_handle_set_upload_limit(swigCPtr, this, limit); + } + + public int upload_limit() { + return libtorrent_jni.torrent_handle_upload_limit(swigCPtr, this); + } + + public void set_download_limit(int limit) { + libtorrent_jni.torrent_handle_set_download_limit(swigCPtr, this, limit); + } + + public int download_limit() { + return libtorrent_jni.torrent_handle_download_limit(swigCPtr, this); + } + + public void connect_peer(tcp_endpoint adr, peer_source_flags_t source, pex_flags_t flags) { + libtorrent_jni.torrent_handle_connect_peer__SWIG_0(swigCPtr, this, tcp_endpoint.getCPtr(adr), adr, peer_source_flags_t.getCPtr(source), source, pex_flags_t.getCPtr(flags), flags); + } + + public void connect_peer(tcp_endpoint adr, peer_source_flags_t source) { + libtorrent_jni.torrent_handle_connect_peer__SWIG_1(swigCPtr, this, tcp_endpoint.getCPtr(adr), adr, peer_source_flags_t.getCPtr(source), source); + } + + public void connect_peer(tcp_endpoint adr) { + libtorrent_jni.torrent_handle_connect_peer__SWIG_2(swigCPtr, this, tcp_endpoint.getCPtr(adr), adr); + } + + public void clear_peers() { + libtorrent_jni.torrent_handle_clear_peers(swigCPtr, this); + } + + public void set_max_uploads(int max_uploads) { + libtorrent_jni.torrent_handle_set_max_uploads(swigCPtr, this, max_uploads); + } + + public int max_uploads() { + return libtorrent_jni.torrent_handle_max_uploads(swigCPtr, this); + } + + public void set_max_connections(int max_connections) { + libtorrent_jni.torrent_handle_set_max_connections(swigCPtr, this, max_connections); + } + + public int max_connections() { + return libtorrent_jni.torrent_handle_max_connections(swigCPtr, this); + } + + public void move_storage(String save_path, move_flags_t flags) { + libtorrent_jni.torrent_handle_move_storage__SWIG_0(swigCPtr, this, save_path, flags.swigValue()); + } + + public void move_storage(String save_path) { + libtorrent_jni.torrent_handle_move_storage__SWIG_1(swigCPtr, this, save_path); + } + + public void rename_file(int index, String new_name) { + libtorrent_jni.torrent_handle_rename_file(swigCPtr, this, index, new_name); + } + + public sha1_hash info_hash() { + return new sha1_hash(libtorrent_jni.torrent_handle_info_hash(swigCPtr, this), true); + } + + public boolean op_eq(torrent_handle h) { + return libtorrent_jni.torrent_handle_op_eq(swigCPtr, this, torrent_handle.getCPtr(h), h); + } + + public boolean op_ne(torrent_handle h) { + return libtorrent_jni.torrent_handle_op_ne(swigCPtr, this, torrent_handle.getCPtr(h), h); + } + + public boolean op_lt(torrent_handle h) { + return libtorrent_jni.torrent_handle_op_lt(swigCPtr, this, torrent_handle.getCPtr(h), h); + } + + public long id() { + return libtorrent_jni.torrent_handle_id(swigCPtr, this); + } + + public boolean in_session() { + return libtorrent_jni.torrent_handle_in_session(swigCPtr, this); + } + + public void add_piece_bytes(int piece, byte_vector data, add_piece_flags_t flags) { + libtorrent_jni.torrent_handle_add_piece_bytes__SWIG_0(swigCPtr, this, piece, byte_vector.getCPtr(data), data, add_piece_flags_t.getCPtr(flags), flags); + } + + public void add_piece_bytes(int piece, byte_vector data) { + libtorrent_jni.torrent_handle_add_piece_bytes__SWIG_1(swigCPtr, this, piece, byte_vector.getCPtr(data), data); + } + + public torrent_info torrent_file_ptr() { + long cPtr = libtorrent_jni.torrent_handle_torrent_file_ptr(swigCPtr, this); + return (cPtr == 0) ? null : new torrent_info(cPtr, false); + } + + public string_vector get_url_seeds() { + return new string_vector(libtorrent_jni.torrent_handle_get_url_seeds(swigCPtr, this), true); + } + + public string_vector get_http_seeds() { + return new string_vector(libtorrent_jni.torrent_handle_get_http_seeds(swigCPtr, this), true); + } + + public void set_ssl_certificate_buffer2(byte_vector certificate, byte_vector private_key, byte_vector dh_params) { + libtorrent_jni.torrent_handle_set_ssl_certificate_buffer2(swigCPtr, this, byte_vector.getCPtr(certificate), certificate, byte_vector.getCPtr(private_key), private_key, byte_vector.getCPtr(dh_params), dh_params); + } + + public int queue_position2() { + return libtorrent_jni.torrent_handle_queue_position2(swigCPtr, this); + } + + public void queue_position_set2(int p) { + libtorrent_jni.torrent_handle_queue_position_set2(swigCPtr, this, p); + } + + public int piece_priority2(int index) { + return libtorrent_jni.torrent_handle_piece_priority2__SWIG_0(swigCPtr, this, index); + } + + public void piece_priority2(int index, int priority) { + libtorrent_jni.torrent_handle_piece_priority2__SWIG_1(swigCPtr, this, index, priority); + } + + public void prioritize_pieces2(int_vector pieces) { + libtorrent_jni.torrent_handle_prioritize_pieces2__SWIG_0(swigCPtr, this, int_vector.getCPtr(pieces), pieces); + } + + public void prioritize_pieces2(piece_index_int_pair_vector pieces) { + libtorrent_jni.torrent_handle_prioritize_pieces2__SWIG_1(swigCPtr, this, piece_index_int_pair_vector.getCPtr(pieces), pieces); + } + + public int_vector get_piece_priorities2() { + return new int_vector(libtorrent_jni.torrent_handle_get_piece_priorities2(swigCPtr, this), true); + } + + public int file_priority2(int index) { + return libtorrent_jni.torrent_handle_file_priority2__SWIG_0(swigCPtr, this, index); + } + + public void file_priority2(int index, int priority) { + libtorrent_jni.torrent_handle_file_priority2__SWIG_1(swigCPtr, this, index, priority); + } + + public void prioritize_files2(int_vector files) { + libtorrent_jni.torrent_handle_prioritize_files2(swigCPtr, this, int_vector.getCPtr(files), files); + } + + public int_vector get_file_priorities2() { + return new int_vector(libtorrent_jni.torrent_handle_get_file_priorities2(swigCPtr, this), true); + } + + public final static class file_progress_flags_t { + public final static torrent_handle.file_progress_flags_t piece_granularity = new torrent_handle.file_progress_flags_t("piece_granularity", libtorrent_jni.torrent_handle_piece_granularity_get()); + private static final file_progress_flags_t[] swigValues = {piece_granularity}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private file_progress_flags_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private file_progress_flags_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private file_progress_flags_t(String swigName, file_progress_flags_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static file_progress_flags_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + file_progress_flags_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_handle_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_handle_vector.java new file mode 100644 index 0000000..2cee57b --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_handle_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_handle_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected torrent_handle_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public torrent_handle_vector() { + this(libtorrent_jni.new_torrent_handle_vector(), true); + } + + protected static long getCPtr(torrent_handle_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_handle_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.torrent_handle_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.torrent_handle_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.torrent_handle_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.torrent_handle_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.torrent_handle_vector_clear(swigCPtr, this); + } + + public void push_back(torrent_handle x) { + libtorrent_jni.torrent_handle_vector_push_back(swigCPtr, this, torrent_handle.getCPtr(x), x); + } + + public torrent_handle get(int i) { + return new torrent_handle(libtorrent_jni.torrent_handle_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, torrent_handle val) { + libtorrent_jni.torrent_handle_vector_set(swigCPtr, this, i, torrent_handle.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_info.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_info.java new file mode 100644 index 0000000..1b269d5 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_info.java @@ -0,0 +1,239 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_info { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected torrent_info(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public torrent_info(torrent_info t) { + this(libtorrent_jni.new_torrent_info__SWIG_0(torrent_info.getCPtr(t), t), true); + } + + public torrent_info(sha1_hash info_hash) { + this(libtorrent_jni.new_torrent_info__SWIG_1(sha1_hash.getCPtr(info_hash), info_hash), true); + } + + public torrent_info(bdecode_node torrent_file, error_code ec) { + this(libtorrent_jni.new_torrent_info__SWIG_2(bdecode_node.getCPtr(torrent_file), torrent_file, error_code.getCPtr(ec), ec), true); + } + + public torrent_info(String filename, error_code ec) { + this(libtorrent_jni.new_torrent_info__SWIG_3(filename, error_code.getCPtr(ec), ec), true); + } + + public torrent_info(long buffer_ptr, int size, error_code ec) { + this(libtorrent_jni.new_torrent_info__SWIG_4(buffer_ptr, size, error_code.getCPtr(ec), ec), true); + } + + protected static long getCPtr(torrent_info obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_info(swigCPtr); + } + swigCPtr = 0; + } + } + + public file_storage files() { + return new file_storage(libtorrent_jni.torrent_info_files(swigCPtr, this), false); + } + + public file_storage orig_files() { + return new file_storage(libtorrent_jni.torrent_info_orig_files(swigCPtr, this), false); + } + + public void rename_file(int index, String new_filename) { + libtorrent_jni.torrent_info_rename_file(swigCPtr, this, index, new_filename); + } + + public void remap_files(file_storage f) { + libtorrent_jni.torrent_info_remap_files(swigCPtr, this, file_storage.getCPtr(f), f); + } + + public void add_tracker(String url, int tier) { + libtorrent_jni.torrent_info_add_tracker__SWIG_0(swigCPtr, this, url, tier); + } + + public void add_tracker(String url) { + libtorrent_jni.torrent_info_add_tracker__SWIG_1(swigCPtr, this, url); + } + + public void add_tracker(String url, int tier, announce_entry.tracker_source source) { + libtorrent_jni.torrent_info_add_tracker__SWIG_2(swigCPtr, this, url, tier, source.swigValue()); + } + + public announce_entry_vector trackers() { + return new announce_entry_vector(libtorrent_jni.torrent_info_trackers(swigCPtr, this), false); + } + + public sha1_hash_vector similar_torrents() { + return new sha1_hash_vector(libtorrent_jni.torrent_info_similar_torrents(swigCPtr, this), true); + } + + public string_vector collections() { + return new string_vector(libtorrent_jni.torrent_info_collections(swigCPtr, this), true); + } + + public void add_url_seed(String url, String extern_auth, string_string_pair_vector extra_headers) { + libtorrent_jni.torrent_info_add_url_seed__SWIG_0(swigCPtr, this, url, extern_auth, string_string_pair_vector.getCPtr(extra_headers), extra_headers); + } + + public void add_url_seed(String url, String extern_auth) { + libtorrent_jni.torrent_info_add_url_seed__SWIG_1(swigCPtr, this, url, extern_auth); + } + + public void add_url_seed(String url) { + libtorrent_jni.torrent_info_add_url_seed__SWIG_2(swigCPtr, this, url); + } + + public void add_http_seed(String url, String extern_auth, string_string_pair_vector extra_headers) { + libtorrent_jni.torrent_info_add_http_seed__SWIG_0(swigCPtr, this, url, extern_auth, string_string_pair_vector.getCPtr(extra_headers), extra_headers); + } + + public void add_http_seed(String url, String extern_auth) { + libtorrent_jni.torrent_info_add_http_seed__SWIG_1(swigCPtr, this, url, extern_auth); + } + + public void add_http_seed(String url) { + libtorrent_jni.torrent_info_add_http_seed__SWIG_2(swigCPtr, this, url); + } + + public web_seed_entry_vector web_seeds() { + return new web_seed_entry_vector(libtorrent_jni.torrent_info_web_seeds(swigCPtr, this), false); + } + + public void set_web_seeds(web_seed_entry_vector seeds) { + libtorrent_jni.torrent_info_set_web_seeds(swigCPtr, this, web_seed_entry_vector.getCPtr(seeds), seeds); + } + + public long total_size() { + return libtorrent_jni.torrent_info_total_size(swigCPtr, this); + } + + public int piece_length() { + return libtorrent_jni.torrent_info_piece_length(swigCPtr, this); + } + + public int num_pieces() { + return libtorrent_jni.torrent_info_num_pieces(swigCPtr, this); + } + + public int last_piece() { + return libtorrent_jni.torrent_info_last_piece(swigCPtr, this); + } + + public int end_piece() { + return libtorrent_jni.torrent_info_end_piece(swigCPtr, this); + } + + public sha1_hash info_hash() { + return new sha1_hash(libtorrent_jni.torrent_info_info_hash(swigCPtr, this), false); + } + + public int num_files() { + return libtorrent_jni.torrent_info_num_files(swigCPtr, this); + } + + public file_slice_vector map_block(int piece, long offset, int size) { + return new file_slice_vector(libtorrent_jni.torrent_info_map_block(swigCPtr, this, piece, offset, size), true); + } + + public peer_request map_file(int file, long offset, int size) { + return new peer_request(libtorrent_jni.torrent_info_map_file(swigCPtr, this, file, offset, size), true); + } + + public string_view ssl_cert() { + return new string_view(libtorrent_jni.torrent_info_ssl_cert(swigCPtr, this), true); + } + + public boolean is_valid() { + return libtorrent_jni.torrent_info_is_valid(swigCPtr, this); + } + + public boolean priv() { + return libtorrent_jni.torrent_info_priv(swigCPtr, this); + } + + public boolean is_i2p() { + return libtorrent_jni.torrent_info_is_i2p(swigCPtr, this); + } + + public int piece_size(int index) { + return libtorrent_jni.torrent_info_piece_size(swigCPtr, this, index); + } + + public sha1_hash hash_for_piece(int index) { + return new sha1_hash(libtorrent_jni.torrent_info_hash_for_piece(swigCPtr, this, index), true); + } + + public boolean is_loaded() { + return libtorrent_jni.torrent_info_is_loaded(swigCPtr, this); + } + + public sha1_hash_vector merkle_tree() { + return new sha1_hash_vector(libtorrent_jni.torrent_info_merkle_tree(swigCPtr, this), false); + } + + public void set_merkle_tree(sha1_hash_vector h) { + libtorrent_jni.torrent_info_set_merkle_tree(swigCPtr, this, sha1_hash_vector.getCPtr(h), h); + } + + public String name() { + return libtorrent_jni.torrent_info_name(swigCPtr, this); + } + + public long creation_date() { + return libtorrent_jni.torrent_info_creation_date(swigCPtr, this); + } + + public String creator() { + return libtorrent_jni.torrent_info_creator(swigCPtr, this); + } + + public String comment() { + return libtorrent_jni.torrent_info_comment(swigCPtr, this); + } + + public string_int_pair_vector nodes() { + return new string_int_pair_vector(libtorrent_jni.torrent_info_nodes(swigCPtr, this), false); + } + + public void add_node(string_int_pair node) { + libtorrent_jni.torrent_info_add_node(swigCPtr, this, string_int_pair.getCPtr(node), node); + } + + public bdecode_node info(String key) { + return new bdecode_node(libtorrent_jni.torrent_info_info(swigCPtr, this, key), true); + } + + public int metadata_size() { + return libtorrent_jni.torrent_info_metadata_size(swigCPtr, this); + } + + public boolean is_merkle_torrent() { + return libtorrent_jni.torrent_info_is_merkle_torrent(swigCPtr, this); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_log_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_log_alert.java new file mode 100644 index 0000000..f7e0a37 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_log_alert.java @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_log_alert extends torrent_alert { + public final static int priority = libtorrent_jni.torrent_log_alert_priority_get(); + public final static int alert_type = libtorrent_jni.torrent_log_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.torrent_log_alert_static_category_get(), false); + private transient long swigCPtr; + + protected torrent_log_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.torrent_log_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(torrent_log_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_log_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.torrent_log_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.torrent_log_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.torrent_log_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.torrent_log_alert_message(swigCPtr, this); + } + + public String log_message() { + return libtorrent_jni.torrent_log_alert_log_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_need_cert_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_need_cert_alert.java new file mode 100644 index 0000000..032af05 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_need_cert_alert.java @@ -0,0 +1,57 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_need_cert_alert extends torrent_alert { + public final static int priority = libtorrent_jni.torrent_need_cert_alert_priority_get(); + public final static int alert_type = libtorrent_jni.torrent_need_cert_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.torrent_need_cert_alert_static_category_get(), false); + private transient long swigCPtr; + + protected torrent_need_cert_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.torrent_need_cert_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(torrent_need_cert_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_need_cert_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.torrent_need_cert_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.torrent_need_cert_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.torrent_need_cert_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.torrent_need_cert_alert_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_paused_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_paused_alert.java new file mode 100644 index 0000000..92c9846 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_paused_alert.java @@ -0,0 +1,57 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_paused_alert extends torrent_alert { + public final static int priority = libtorrent_jni.torrent_paused_alert_priority_get(); + public final static int alert_type = libtorrent_jni.torrent_paused_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.torrent_paused_alert_static_category_get(), false); + private transient long swigCPtr; + + protected torrent_paused_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.torrent_paused_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(torrent_paused_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_paused_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.torrent_paused_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.torrent_paused_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.torrent_paused_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.torrent_paused_alert_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_removed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_removed_alert.java new file mode 100644 index 0000000..ed5b6c3 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_removed_alert.java @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_removed_alert extends torrent_alert { + public final static int priority = libtorrent_jni.torrent_removed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.torrent_removed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.torrent_removed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected torrent_removed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.torrent_removed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(torrent_removed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_removed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.torrent_removed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.torrent_removed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.torrent_removed_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.torrent_removed_alert_message(swigCPtr, this); + } + + public sha1_hash getInfo_hash() { + long cPtr = libtorrent_jni.torrent_removed_alert_info_hash_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setInfo_hash(sha1_hash value) { + libtorrent_jni.torrent_removed_alert_info_hash_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_resumed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_resumed_alert.java new file mode 100644 index 0000000..0fe46c2 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_resumed_alert.java @@ -0,0 +1,57 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_resumed_alert extends torrent_alert { + public final static int priority = libtorrent_jni.torrent_resumed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.torrent_resumed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.torrent_resumed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected torrent_resumed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.torrent_resumed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(torrent_resumed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_resumed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.torrent_resumed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.torrent_resumed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.torrent_resumed_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.torrent_resumed_alert_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_status.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_status.java new file mode 100644 index 0000000..529ff16 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_status.java @@ -0,0 +1,645 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_status { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected torrent_status(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public torrent_status() { + this(libtorrent_jni.new_torrent_status__SWIG_0(), true); + } + + public torrent_status(torrent_status arg0) { + this(libtorrent_jni.new_torrent_status__SWIG_1(torrent_status.getCPtr(arg0), arg0), true); + } + + protected static long getCPtr(torrent_status obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + public static int getError_file_none() { + return libtorrent_jni.torrent_status_error_file_none_get(); + } + + public static int getError_file_ssl_ctx() { + return libtorrent_jni.torrent_status_error_file_ssl_ctx_get(); + } + + public static int getError_file_metadata() { + return libtorrent_jni.torrent_status_error_file_metadata_get(); + } + + public static int getError_file_exception() { + return libtorrent_jni.torrent_status_error_file_exception_get(); + } + + public static int getError_file_partfile() { + return libtorrent_jni.torrent_status_error_file_partfile_get(); + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_status(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean op_eq(torrent_status st) { + return libtorrent_jni.torrent_status_op_eq(swigCPtr, this, torrent_status.getCPtr(st), st); + } + + public torrent_handle getHandle() { + long cPtr = libtorrent_jni.torrent_status_handle_get(swigCPtr, this); + return (cPtr == 0) ? null : new torrent_handle(cPtr, false); + } + + public void setHandle(torrent_handle value) { + libtorrent_jni.torrent_status_handle_set(swigCPtr, this, torrent_handle.getCPtr(value), value); + } + + public error_code getErrc() { + long cPtr = libtorrent_jni.torrent_status_errc_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public void setErrc(error_code value) { + libtorrent_jni.torrent_status_errc_set(swigCPtr, this, error_code.getCPtr(value), value); + } + + public int getError_file() { + return libtorrent_jni.torrent_status_error_file_get(swigCPtr, this); + } + + public void setError_file(int value) { + libtorrent_jni.torrent_status_error_file_set(swigCPtr, this, value); + } + + public String getSave_path() { + return libtorrent_jni.torrent_status_save_path_get(swigCPtr, this); + } + + public void setSave_path(String value) { + libtorrent_jni.torrent_status_save_path_set(swigCPtr, this, value); + } + + public String getName() { + return libtorrent_jni.torrent_status_name_get(swigCPtr, this); + } + + public void setName(String value) { + libtorrent_jni.torrent_status_name_set(swigCPtr, this, value); + } + + public String getCurrent_tracker() { + return libtorrent_jni.torrent_status_current_tracker_get(swigCPtr, this); + } + + public void setCurrent_tracker(String value) { + libtorrent_jni.torrent_status_current_tracker_set(swigCPtr, this, value); + } + + public long getTotal_download() { + return libtorrent_jni.torrent_status_total_download_get(swigCPtr, this); + } + + public void setTotal_download(long value) { + libtorrent_jni.torrent_status_total_download_set(swigCPtr, this, value); + } + + public long getTotal_upload() { + return libtorrent_jni.torrent_status_total_upload_get(swigCPtr, this); + } + + public void setTotal_upload(long value) { + libtorrent_jni.torrent_status_total_upload_set(swigCPtr, this, value); + } + + public long getTotal_payload_download() { + return libtorrent_jni.torrent_status_total_payload_download_get(swigCPtr, this); + } + + public void setTotal_payload_download(long value) { + libtorrent_jni.torrent_status_total_payload_download_set(swigCPtr, this, value); + } + + public long getTotal_payload_upload() { + return libtorrent_jni.torrent_status_total_payload_upload_get(swigCPtr, this); + } + + public void setTotal_payload_upload(long value) { + libtorrent_jni.torrent_status_total_payload_upload_set(swigCPtr, this, value); + } + + public long getTotal_failed_bytes() { + return libtorrent_jni.torrent_status_total_failed_bytes_get(swigCPtr, this); + } + + public void setTotal_failed_bytes(long value) { + libtorrent_jni.torrent_status_total_failed_bytes_set(swigCPtr, this, value); + } + + public long getTotal_redundant_bytes() { + return libtorrent_jni.torrent_status_total_redundant_bytes_get(swigCPtr, this); + } + + public void setTotal_redundant_bytes(long value) { + libtorrent_jni.torrent_status_total_redundant_bytes_set(swigCPtr, this, value); + } + + public piece_index_bitfield getPieces() { + long cPtr = libtorrent_jni.torrent_status_pieces_get(swigCPtr, this); + return (cPtr == 0) ? null : new piece_index_bitfield(cPtr, false); + } + + public void setPieces(piece_index_bitfield value) { + libtorrent_jni.torrent_status_pieces_set(swigCPtr, this, piece_index_bitfield.getCPtr(value), value); + } + + public piece_index_bitfield getVerified_pieces() { + long cPtr = libtorrent_jni.torrent_status_verified_pieces_get(swigCPtr, this); + return (cPtr == 0) ? null : new piece_index_bitfield(cPtr, false); + } + + public void setVerified_pieces(piece_index_bitfield value) { + libtorrent_jni.torrent_status_verified_pieces_set(swigCPtr, this, piece_index_bitfield.getCPtr(value), value); + } + + public long getTotal_done() { + return libtorrent_jni.torrent_status_total_done_get(swigCPtr, this); + } + + public void setTotal_done(long value) { + libtorrent_jni.torrent_status_total_done_set(swigCPtr, this, value); + } + + public long getTotal() { + return libtorrent_jni.torrent_status_total_get(swigCPtr, this); + } + + public void setTotal(long value) { + libtorrent_jni.torrent_status_total_set(swigCPtr, this, value); + } + + public long getTotal_wanted_done() { + return libtorrent_jni.torrent_status_total_wanted_done_get(swigCPtr, this); + } + + public void setTotal_wanted_done(long value) { + libtorrent_jni.torrent_status_total_wanted_done_set(swigCPtr, this, value); + } + + public long getTotal_wanted() { + return libtorrent_jni.torrent_status_total_wanted_get(swigCPtr, this); + } + + public void setTotal_wanted(long value) { + libtorrent_jni.torrent_status_total_wanted_set(swigCPtr, this, value); + } + + public long getAll_time_upload() { + return libtorrent_jni.torrent_status_all_time_upload_get(swigCPtr, this); + } + + public void setAll_time_upload(long value) { + libtorrent_jni.torrent_status_all_time_upload_set(swigCPtr, this, value); + } + + public long getAll_time_download() { + return libtorrent_jni.torrent_status_all_time_download_get(swigCPtr, this); + } + + public void setAll_time_download(long value) { + libtorrent_jni.torrent_status_all_time_download_set(swigCPtr, this, value); + } + + public long getAdded_time() { + return libtorrent_jni.torrent_status_added_time_get(swigCPtr, this); + } + + public void setAdded_time(long value) { + libtorrent_jni.torrent_status_added_time_set(swigCPtr, this, value); + } + + public long getCompleted_time() { + return libtorrent_jni.torrent_status_completed_time_get(swigCPtr, this); + } + + public void setCompleted_time(long value) { + libtorrent_jni.torrent_status_completed_time_set(swigCPtr, this, value); + } + + public long getLast_seen_complete() { + return libtorrent_jni.torrent_status_last_seen_complete_get(swigCPtr, this); + } + + public void setLast_seen_complete(long value) { + libtorrent_jni.torrent_status_last_seen_complete_set(swigCPtr, this, value); + } + + public storage_mode_t getStorage_mode() { + return storage_mode_t.swigToEnum(libtorrent_jni.torrent_status_storage_mode_get(swigCPtr, this)); + } + + public void setStorage_mode(storage_mode_t value) { + libtorrent_jni.torrent_status_storage_mode_set(swigCPtr, this, value.swigValue()); + } + + public float getProgress() { + return libtorrent_jni.torrent_status_progress_get(swigCPtr, this); + } + + public void setProgress(float value) { + libtorrent_jni.torrent_status_progress_set(swigCPtr, this, value); + } + + public int getProgress_ppm() { + return libtorrent_jni.torrent_status_progress_ppm_get(swigCPtr, this); + } + + public void setProgress_ppm(int value) { + libtorrent_jni.torrent_status_progress_ppm_set(swigCPtr, this, value); + } + + public int getDownload_rate() { + return libtorrent_jni.torrent_status_download_rate_get(swigCPtr, this); + } + + public void setDownload_rate(int value) { + libtorrent_jni.torrent_status_download_rate_set(swigCPtr, this, value); + } + + public int getUpload_rate() { + return libtorrent_jni.torrent_status_upload_rate_get(swigCPtr, this); + } + + public void setUpload_rate(int value) { + libtorrent_jni.torrent_status_upload_rate_set(swigCPtr, this, value); + } + + public int getDownload_payload_rate() { + return libtorrent_jni.torrent_status_download_payload_rate_get(swigCPtr, this); + } + + public void setDownload_payload_rate(int value) { + libtorrent_jni.torrent_status_download_payload_rate_set(swigCPtr, this, value); + } + + public int getUpload_payload_rate() { + return libtorrent_jni.torrent_status_upload_payload_rate_get(swigCPtr, this); + } + + public void setUpload_payload_rate(int value) { + libtorrent_jni.torrent_status_upload_payload_rate_set(swigCPtr, this, value); + } + + public int getNum_seeds() { + return libtorrent_jni.torrent_status_num_seeds_get(swigCPtr, this); + } + + public void setNum_seeds(int value) { + libtorrent_jni.torrent_status_num_seeds_set(swigCPtr, this, value); + } + + public int getNum_peers() { + return libtorrent_jni.torrent_status_num_peers_get(swigCPtr, this); + } + + public void setNum_peers(int value) { + libtorrent_jni.torrent_status_num_peers_set(swigCPtr, this, value); + } + + public int getNum_complete() { + return libtorrent_jni.torrent_status_num_complete_get(swigCPtr, this); + } + + public void setNum_complete(int value) { + libtorrent_jni.torrent_status_num_complete_set(swigCPtr, this, value); + } + + public int getNum_incomplete() { + return libtorrent_jni.torrent_status_num_incomplete_get(swigCPtr, this); + } + + public void setNum_incomplete(int value) { + libtorrent_jni.torrent_status_num_incomplete_set(swigCPtr, this, value); + } + + public int getList_seeds() { + return libtorrent_jni.torrent_status_list_seeds_get(swigCPtr, this); + } + + public void setList_seeds(int value) { + libtorrent_jni.torrent_status_list_seeds_set(swigCPtr, this, value); + } + + public int getList_peers() { + return libtorrent_jni.torrent_status_list_peers_get(swigCPtr, this); + } + + public void setList_peers(int value) { + libtorrent_jni.torrent_status_list_peers_set(swigCPtr, this, value); + } + + public int getConnect_candidates() { + return libtorrent_jni.torrent_status_connect_candidates_get(swigCPtr, this); + } + + public void setConnect_candidates(int value) { + libtorrent_jni.torrent_status_connect_candidates_set(swigCPtr, this, value); + } + + public int getNum_pieces() { + return libtorrent_jni.torrent_status_num_pieces_get(swigCPtr, this); + } + + public void setNum_pieces(int value) { + libtorrent_jni.torrent_status_num_pieces_set(swigCPtr, this, value); + } + + public int getDistributed_full_copies() { + return libtorrent_jni.torrent_status_distributed_full_copies_get(swigCPtr, this); + } + + public void setDistributed_full_copies(int value) { + libtorrent_jni.torrent_status_distributed_full_copies_set(swigCPtr, this, value); + } + + public int getDistributed_fraction() { + return libtorrent_jni.torrent_status_distributed_fraction_get(swigCPtr, this); + } + + public void setDistributed_fraction(int value) { + libtorrent_jni.torrent_status_distributed_fraction_set(swigCPtr, this, value); + } + + public float getDistributed_copies() { + return libtorrent_jni.torrent_status_distributed_copies_get(swigCPtr, this); + } + + public void setDistributed_copies(float value) { + libtorrent_jni.torrent_status_distributed_copies_set(swigCPtr, this, value); + } + + public int getBlock_size() { + return libtorrent_jni.torrent_status_block_size_get(swigCPtr, this); + } + + public void setBlock_size(int value) { + libtorrent_jni.torrent_status_block_size_set(swigCPtr, this, value); + } + + public int getNum_uploads() { + return libtorrent_jni.torrent_status_num_uploads_get(swigCPtr, this); + } + + public void setNum_uploads(int value) { + libtorrent_jni.torrent_status_num_uploads_set(swigCPtr, this, value); + } + + public int getNum_connections() { + return libtorrent_jni.torrent_status_num_connections_get(swigCPtr, this); + } + + public void setNum_connections(int value) { + libtorrent_jni.torrent_status_num_connections_set(swigCPtr, this, value); + } + + public int getUploads_limit() { + return libtorrent_jni.torrent_status_uploads_limit_get(swigCPtr, this); + } + + public void setUploads_limit(int value) { + libtorrent_jni.torrent_status_uploads_limit_set(swigCPtr, this, value); + } + + public int getConnections_limit() { + return libtorrent_jni.torrent_status_connections_limit_get(swigCPtr, this); + } + + public void setConnections_limit(int value) { + libtorrent_jni.torrent_status_connections_limit_set(swigCPtr, this, value); + } + + public int getUp_bandwidth_queue() { + return libtorrent_jni.torrent_status_up_bandwidth_queue_get(swigCPtr, this); + } + + public void setUp_bandwidth_queue(int value) { + libtorrent_jni.torrent_status_up_bandwidth_queue_set(swigCPtr, this, value); + } + + public int getDown_bandwidth_queue() { + return libtorrent_jni.torrent_status_down_bandwidth_queue_get(swigCPtr, this); + } + + public void setDown_bandwidth_queue(int value) { + libtorrent_jni.torrent_status_down_bandwidth_queue_set(swigCPtr, this, value); + } + + public int getSeed_rank() { + return libtorrent_jni.torrent_status_seed_rank_get(swigCPtr, this); + } + + public void setSeed_rank(int value) { + libtorrent_jni.torrent_status_seed_rank_set(swigCPtr, this, value); + } + + public torrent_status.state_t getState() { + return torrent_status.state_t.swigToEnum(libtorrent_jni.torrent_status_state_get(swigCPtr, this)); + } + + public void setState(torrent_status.state_t value) { + libtorrent_jni.torrent_status_state_set(swigCPtr, this, value.swigValue()); + } + + public boolean getNeed_save_resume() { + return libtorrent_jni.torrent_status_need_save_resume_get(swigCPtr, this); + } + + public void setNeed_save_resume(boolean value) { + libtorrent_jni.torrent_status_need_save_resume_set(swigCPtr, this, value); + } + + public boolean getIs_seeding() { + return libtorrent_jni.torrent_status_is_seeding_get(swigCPtr, this); + } + + public void setIs_seeding(boolean value) { + libtorrent_jni.torrent_status_is_seeding_set(swigCPtr, this, value); + } + + public boolean getIs_finished() { + return libtorrent_jni.torrent_status_is_finished_get(swigCPtr, this); + } + + public void setIs_finished(boolean value) { + libtorrent_jni.torrent_status_is_finished_set(swigCPtr, this, value); + } + + public boolean getHas_metadata() { + return libtorrent_jni.torrent_status_has_metadata_get(swigCPtr, this); + } + + public void setHas_metadata(boolean value) { + libtorrent_jni.torrent_status_has_metadata_set(swigCPtr, this, value); + } + + public boolean getHas_incoming() { + return libtorrent_jni.torrent_status_has_incoming_get(swigCPtr, this); + } + + public void setHas_incoming(boolean value) { + libtorrent_jni.torrent_status_has_incoming_set(swigCPtr, this, value); + } + + public boolean getMoving_storage() { + return libtorrent_jni.torrent_status_moving_storage_get(swigCPtr, this); + } + + public void setMoving_storage(boolean value) { + libtorrent_jni.torrent_status_moving_storage_set(swigCPtr, this, value); + } + + public boolean getAnnouncing_to_trackers() { + return libtorrent_jni.torrent_status_announcing_to_trackers_get(swigCPtr, this); + } + + public void setAnnouncing_to_trackers(boolean value) { + libtorrent_jni.torrent_status_announcing_to_trackers_set(swigCPtr, this, value); + } + + public boolean getAnnouncing_to_lsd() { + return libtorrent_jni.torrent_status_announcing_to_lsd_get(swigCPtr, this); + } + + public void setAnnouncing_to_lsd(boolean value) { + libtorrent_jni.torrent_status_announcing_to_lsd_set(swigCPtr, this, value); + } + + public boolean getAnnouncing_to_dht() { + return libtorrent_jni.torrent_status_announcing_to_dht_get(swigCPtr, this); + } + + public void setAnnouncing_to_dht(boolean value) { + libtorrent_jni.torrent_status_announcing_to_dht_set(swigCPtr, this, value); + } + + public sha1_hash getInfo_hash() { + long cPtr = libtorrent_jni.torrent_status_info_hash_get(swigCPtr, this); + return (cPtr == 0) ? null : new sha1_hash(cPtr, false); + } + + public void setInfo_hash(sha1_hash value) { + libtorrent_jni.torrent_status_info_hash_set(swigCPtr, this, sha1_hash.getCPtr(value), value); + } + + public torrent_flags_t getFlags() { + long cPtr = libtorrent_jni.torrent_status_flags_get(swigCPtr, this); + return (cPtr == 0) ? null : new torrent_flags_t(cPtr, false); + } + + public void setFlags(torrent_flags_t value) { + libtorrent_jni.torrent_status_flags_set(swigCPtr, this, torrent_flags_t.getCPtr(value), value); + } + + public torrent_info torrent_file_ptr() { + long cPtr = libtorrent_jni.torrent_status_torrent_file_ptr(swigCPtr, this); + return (cPtr == 0) ? null : new torrent_info(cPtr, false); + } + + public long get_next_announce() { + return libtorrent_jni.torrent_status_get_next_announce(swigCPtr, this); + } + + public long get_last_upload() { + return libtorrent_jni.torrent_status_get_last_upload(swigCPtr, this); + } + + public long get_last_download() { + return libtorrent_jni.torrent_status_get_last_download(swigCPtr, this); + } + + public long get_active_duration() { + return libtorrent_jni.torrent_status_get_active_duration(swigCPtr, this); + } + + public long get_finished_duration() { + return libtorrent_jni.torrent_status_get_finished_duration(swigCPtr, this); + } + + public long get_seeding_duration() { + return libtorrent_jni.torrent_status_get_seeding_duration(swigCPtr, this); + } + + public int get_queue_position() { + return libtorrent_jni.torrent_status_get_queue_position(swigCPtr, this); + } + + public final static class state_t { + public final static torrent_status.state_t checking_files = new torrent_status.state_t("checking_files", libtorrent_jni.torrent_status_checking_files_get()); + public final static torrent_status.state_t downloading_metadata = new torrent_status.state_t("downloading_metadata"); + public final static torrent_status.state_t downloading = new torrent_status.state_t("downloading"); + public final static torrent_status.state_t finished = new torrent_status.state_t("finished"); + public final static torrent_status.state_t seeding = new torrent_status.state_t("seeding"); + public final static torrent_status.state_t checking_resume_data = new torrent_status.state_t("checking_resume_data", libtorrent_jni.torrent_status_checking_resume_data_get()); + private static final state_t[] swigValues = {checking_files, downloading_metadata, downloading, finished, seeding, checking_resume_data}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private state_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private state_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private state_t(String swigName, state_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static state_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + state_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_status_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_status_vector.java new file mode 100644 index 0000000..5aed61f --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/torrent_status_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class torrent_status_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected torrent_status_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public torrent_status_vector() { + this(libtorrent_jni.new_torrent_status_vector(), true); + } + + protected static long getCPtr(torrent_status_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_torrent_status_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.torrent_status_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.torrent_status_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.torrent_status_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.torrent_status_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.torrent_status_vector_clear(swigCPtr, this); + } + + public void push_back(torrent_status x) { + libtorrent_jni.torrent_status_vector_push_back(swigCPtr, this, torrent_status.getCPtr(x), x); + } + + public torrent_status get(int i) { + return new torrent_status(libtorrent_jni.torrent_status_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, torrent_status val) { + libtorrent_jni.torrent_status_vector_set(swigCPtr, this, i, torrent_status.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tracker_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tracker_alert.java new file mode 100644 index 0000000..fe41873 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tracker_alert.java @@ -0,0 +1,51 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class tracker_alert extends torrent_alert { + private transient long swigCPtr; + + protected tracker_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.tracker_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(tracker_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_tracker_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public String message() { + return libtorrent_jni.tracker_alert_message(swigCPtr, this); + } + + public String tracker_url() { + return libtorrent_jni.tracker_alert_tracker_url(swigCPtr, this); + } + + public tcp_endpoint get_local_endpoint() { + return new tcp_endpoint(libtorrent_jni.tracker_alert_get_local_endpoint(swigCPtr, this), true); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tracker_announce_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tracker_announce_alert.java new file mode 100644 index 0000000..664aaff --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tracker_announce_alert.java @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class tracker_announce_alert extends tracker_alert { + public final static int priority = libtorrent_jni.tracker_announce_alert_priority_get(); + public final static int alert_type = libtorrent_jni.tracker_announce_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.tracker_announce_alert_static_category_get(), false); + private transient long swigCPtr; + + protected tracker_announce_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.tracker_announce_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(tracker_announce_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_tracker_announce_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.tracker_announce_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.tracker_announce_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.tracker_announce_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.tracker_announce_alert_message(swigCPtr, this); + } + + public int getEvent() { + return libtorrent_jni.tracker_announce_alert_event_get(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tracker_error_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tracker_error_alert.java new file mode 100644 index 0000000..7dbbf70 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tracker_error_alert.java @@ -0,0 +1,70 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class tracker_error_alert extends tracker_alert { + public final static int priority = libtorrent_jni.tracker_error_alert_priority_get(); + public final static int alert_type = libtorrent_jni.tracker_error_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.tracker_error_alert_static_category_get(), false); + private transient long swigCPtr; + + protected tracker_error_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.tracker_error_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(tracker_error_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_tracker_error_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.tracker_error_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.tracker_error_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.tracker_error_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.tracker_error_alert_message(swigCPtr, this); + } + + public int getTimes_in_row() { + return libtorrent_jni.tracker_error_alert_times_in_row_get(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.tracker_error_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public String error_message() { + return libtorrent_jni.tracker_error_alert_error_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tracker_reply_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tracker_reply_alert.java new file mode 100644 index 0000000..0d90bc7 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tracker_reply_alert.java @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class tracker_reply_alert extends tracker_alert { + public final static int priority = libtorrent_jni.tracker_reply_alert_priority_get(); + public final static int alert_type = libtorrent_jni.tracker_reply_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.tracker_reply_alert_static_category_get(), false); + private transient long swigCPtr; + + protected tracker_reply_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.tracker_reply_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(tracker_reply_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_tracker_reply_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.tracker_reply_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.tracker_reply_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.tracker_reply_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.tracker_reply_alert_message(swigCPtr, this); + } + + public int getNum_peers() { + return libtorrent_jni.tracker_reply_alert_num_peers_get(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tracker_warning_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tracker_warning_alert.java new file mode 100644 index 0000000..f8a17a6 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/tracker_warning_alert.java @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class tracker_warning_alert extends tracker_alert { + public final static int priority = libtorrent_jni.tracker_warning_alert_priority_get(); + public final static int alert_type = libtorrent_jni.tracker_warning_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.tracker_warning_alert_static_category_get(), false); + private transient long swigCPtr; + + protected tracker_warning_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.tracker_warning_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(tracker_warning_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_tracker_warning_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.tracker_warning_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.tracker_warning_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.tracker_warning_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.tracker_warning_alert_message(swigCPtr, this); + } + + public String warning_message() { + return libtorrent_jni.tracker_warning_alert_warning_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/trackerid_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/trackerid_alert.java new file mode 100644 index 0000000..1b1367d --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/trackerid_alert.java @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class trackerid_alert extends tracker_alert { + public final static int priority = libtorrent_jni.trackerid_alert_priority_get(); + public final static int alert_type = libtorrent_jni.trackerid_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.trackerid_alert_static_category_get(), false); + private transient long swigCPtr; + + protected trackerid_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.trackerid_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(trackerid_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_trackerid_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.trackerid_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.trackerid_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.trackerid_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.trackerid_alert_message(swigCPtr, this); + } + + public String tracker_id() { + return libtorrent_jni.trackerid_alert_tracker_id(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/udp_endpoint.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/udp_endpoint.java new file mode 100644 index 0000000..5d828c1 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/udp_endpoint.java @@ -0,0 +1,59 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class udp_endpoint { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected udp_endpoint(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public udp_endpoint() { + this(libtorrent_jni.new_udp_endpoint__SWIG_0(), true); + } + + public udp_endpoint(address address, int port) { + this(libtorrent_jni.new_udp_endpoint__SWIG_1(com.frostwire.jlibtorrent.swig.address.getCPtr(address), address, port), true); + } + + public udp_endpoint(udp_endpoint other) { + this(libtorrent_jni.new_udp_endpoint__SWIG_2(udp_endpoint.getCPtr(other), other), true); + } + + protected static long getCPtr(udp_endpoint obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_udp_endpoint(swigCPtr); + } + swigCPtr = 0; + } + } + + public int port() { + return libtorrent_jni.udp_endpoint_port(swigCPtr, this); + } + + public address address() { + return new address(libtorrent_jni.udp_endpoint_address(swigCPtr, this), true); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/udp_endpoint_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/udp_endpoint_vector.java new file mode 100644 index 0000000..2a8d069 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/udp_endpoint_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class udp_endpoint_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected udp_endpoint_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public udp_endpoint_vector() { + this(libtorrent_jni.new_udp_endpoint_vector(), true); + } + + protected static long getCPtr(udp_endpoint_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_udp_endpoint_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.udp_endpoint_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.udp_endpoint_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.udp_endpoint_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.udp_endpoint_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.udp_endpoint_vector_clear(swigCPtr, this); + } + + public void push_back(udp_endpoint x) { + libtorrent_jni.udp_endpoint_vector_push_back(swigCPtr, this, udp_endpoint.getCPtr(x), x); + } + + public udp_endpoint get(int i) { + return new udp_endpoint(libtorrent_jni.udp_endpoint_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, udp_endpoint val) { + libtorrent_jni.udp_endpoint_vector_set(swigCPtr, this, i, udp_endpoint.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/udp_error_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/udp_error_alert.java new file mode 100644 index 0000000..d85fb1a --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/udp_error_alert.java @@ -0,0 +1,74 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class udp_error_alert extends alert { + public final static int priority = libtorrent_jni.udp_error_alert_priority_get(); + public final static int alert_type = libtorrent_jni.udp_error_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.udp_error_alert_static_category_get(), false); + private transient long swigCPtr; + + protected udp_error_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.udp_error_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(udp_error_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_udp_error_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.udp_error_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.udp_error_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.udp_error_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.udp_error_alert_message(swigCPtr, this); + } + + public operation_t getOperation() { + return operation_t.swigToEnum(libtorrent_jni.udp_error_alert_operation_get(swigCPtr, this)); + } + + public void setOperation(operation_t value) { + libtorrent_jni.udp_error_alert_operation_set(swigCPtr, this, value.swigValue()); + } + + public error_code getError() { + long cPtr = libtorrent_jni.udp_error_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public udp_endpoint get_endpoint() { + return new udp_endpoint(libtorrent_jni.udp_error_alert_get_endpoint(swigCPtr, this), true); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/unwanted_block_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/unwanted_block_alert.java new file mode 100644 index 0000000..5a045ae --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/unwanted_block_alert.java @@ -0,0 +1,65 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class unwanted_block_alert extends peer_alert { + public final static int priority = libtorrent_jni.unwanted_block_alert_priority_get(); + public final static int alert_type = libtorrent_jni.unwanted_block_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.unwanted_block_alert_static_category_get(), false); + private transient long swigCPtr; + + protected unwanted_block_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.unwanted_block_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(unwanted_block_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_unwanted_block_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.unwanted_block_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.unwanted_block_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.unwanted_block_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.unwanted_block_alert_message(swigCPtr, this); + } + + public int getBlock_index() { + return libtorrent_jni.unwanted_block_alert_block_index_get(swigCPtr, this); + } + + public int getPiece_index() { + return libtorrent_jni.unwanted_block_alert_piece_index_get(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/url_seed_alert.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/url_seed_alert.java new file mode 100644 index 0000000..a4e747c --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/url_seed_alert.java @@ -0,0 +1,70 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class url_seed_alert extends torrent_alert { + public final static int priority = libtorrent_jni.url_seed_alert_priority_get(); + public final static int alert_type = libtorrent_jni.url_seed_alert_alert_type_get(); + public final static alert_category_t static_category = new alert_category_t(libtorrent_jni.url_seed_alert_static_category_get(), false); + private transient long swigCPtr; + + protected url_seed_alert(long cPtr, boolean cMemoryOwn) { + super(libtorrent_jni.url_seed_alert_SWIGUpcast(cPtr), cMemoryOwn); + swigCPtr = cPtr; + } + + protected static long getCPtr(url_seed_alert obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_url_seed_alert(swigCPtr); + } + swigCPtr = 0; + } + super.delete(); + } + + public int type() { + return libtorrent_jni.url_seed_alert_type(swigCPtr, this); + } + + public alert_category_t category() { + return new alert_category_t(libtorrent_jni.url_seed_alert_category(swigCPtr, this), true); + } + + public String what() { + return libtorrent_jni.url_seed_alert_what(swigCPtr, this); + } + + public String message() { + return libtorrent_jni.url_seed_alert_message(swigCPtr, this); + } + + public error_code getError() { + long cPtr = libtorrent_jni.url_seed_alert_error_get(swigCPtr, this); + return (cPtr == 0) ? null : new error_code(cPtr, false); + } + + public String server_url() { + return libtorrent_jni.url_seed_alert_server_url(swigCPtr, this); + } + + public String error_message() { + return libtorrent_jni.url_seed_alert_error_message(swigCPtr, this); + } +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/web_seed_entry.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/web_seed_entry.java new file mode 100644 index 0000000..ed30faf --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/web_seed_entry.java @@ -0,0 +1,135 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class web_seed_entry { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected web_seed_entry(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public web_seed_entry(String url_, web_seed_entry.type_t type_, String auth_, string_string_pair_vector extra_headers_) { + this(libtorrent_jni.new_web_seed_entry__SWIG_0(url_, type_.swigValue(), auth_, string_string_pair_vector.getCPtr(extra_headers_), extra_headers_), true); + } + + public web_seed_entry(String url_, web_seed_entry.type_t type_, String auth_) { + this(libtorrent_jni.new_web_seed_entry__SWIG_1(url_, type_.swigValue(), auth_), true); + } + + public web_seed_entry(String url_, web_seed_entry.type_t type_) { + this(libtorrent_jni.new_web_seed_entry__SWIG_2(url_, type_.swigValue()), true); + } + + protected static long getCPtr(web_seed_entry obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_web_seed_entry(swigCPtr); + } + swigCPtr = 0; + } + } + + public boolean op_eq(web_seed_entry e) { + return libtorrent_jni.web_seed_entry_op_eq(swigCPtr, this, web_seed_entry.getCPtr(e), e); + } + + public boolean op_lt(web_seed_entry e) { + return libtorrent_jni.web_seed_entry_op_lt(swigCPtr, this, web_seed_entry.getCPtr(e), e); + } + + public String getUrl() { + return libtorrent_jni.web_seed_entry_url_get(swigCPtr, this); + } + + public void setUrl(String value) { + libtorrent_jni.web_seed_entry_url_set(swigCPtr, this, value); + } + + public String getAuth() { + return libtorrent_jni.web_seed_entry_auth_get(swigCPtr, this); + } + + public void setAuth(String value) { + libtorrent_jni.web_seed_entry_auth_set(swigCPtr, this, value); + } + + public string_string_pair_vector getExtra_headers() { + long cPtr = libtorrent_jni.web_seed_entry_extra_headers_get(swigCPtr, this); + return (cPtr == 0) ? null : new string_string_pair_vector(cPtr, false); + } + + public void setExtra_headers(string_string_pair_vector value) { + libtorrent_jni.web_seed_entry_extra_headers_set(swigCPtr, this, string_string_pair_vector.getCPtr(value), value); + } + + public short getType() { + return libtorrent_jni.web_seed_entry_type_get(swigCPtr, this); + } + + public void setType(short value) { + libtorrent_jni.web_seed_entry_type_set(swigCPtr, this, value); + } + + public final static class type_t { + public final static web_seed_entry.type_t url_seed = new web_seed_entry.type_t("url_seed"); + public final static web_seed_entry.type_t http_seed = new web_seed_entry.type_t("http_seed"); + private static final type_t[] swigValues = {url_seed, http_seed}; + private static int swigNext = 0; + private final int swigValue; + private final String swigName; + + private type_t(String swigName) { + this.swigName = swigName; + this.swigValue = swigNext++; + } + + private type_t(String swigName, int swigValue) { + this.swigName = swigName; + this.swigValue = swigValue; + swigNext = swigValue + 1; + } + + private type_t(String swigName, type_t swigEnum) { + this.swigName = swigName; + this.swigValue = swigEnum.swigValue; + swigNext = this.swigValue + 1; + } + + public static type_t swigToEnum(int swigValue) { + if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue) + return swigValues[swigValue]; + for (int i = 0; i < swigValues.length; i++) + if (swigValues[i].swigValue == swigValue) + return swigValues[i]; + throw new IllegalArgumentException("No enum " + type_t.class + " with value " + swigValue); + } + + public final int swigValue() { + return swigValue; + } + + public String toString() { + return swigName; + } + } + +} diff --git a/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/web_seed_entry_vector.java b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/web_seed_entry_vector.java new file mode 100644 index 0000000..e648d65 --- /dev/null +++ b/frostwire-jlibtorrent/src/main/java/com/frostwire/jlibtorrent/swig/web_seed_entry_vector.java @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +package com.frostwire.jlibtorrent.swig; + +public class web_seed_entry_vector { + protected transient boolean swigCMemOwn; + private transient long swigCPtr; + + protected web_seed_entry_vector(long cPtr, boolean cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = cPtr; + } + + public web_seed_entry_vector() { + this(libtorrent_jni.new_web_seed_entry_vector(), true); + } + + protected static long getCPtr(web_seed_entry_vector obj) { + return (obj == null) ? 0 : obj.swigCPtr; + } + + @SuppressWarnings("deprecation") + protected void finalize() { + delete(); + } + + public synchronized void delete() { + if (swigCPtr != 0) { + if (swigCMemOwn) { + swigCMemOwn = false; + libtorrent_jni.delete_web_seed_entry_vector(swigCPtr); + } + swigCPtr = 0; + } + } + + public long size() { + return libtorrent_jni.web_seed_entry_vector_size(swigCPtr, this); + } + + public long capacity() { + return libtorrent_jni.web_seed_entry_vector_capacity(swigCPtr, this); + } + + public void reserve(long n) { + libtorrent_jni.web_seed_entry_vector_reserve(swigCPtr, this, n); + } + + public boolean empty() { + return libtorrent_jni.web_seed_entry_vector_empty(swigCPtr, this); + } + + public void clear() { + libtorrent_jni.web_seed_entry_vector_clear(swigCPtr, this); + } + + public void push_back(web_seed_entry x) { + libtorrent_jni.web_seed_entry_vector_push_back(swigCPtr, this, web_seed_entry.getCPtr(x), x); + } + + public web_seed_entry get(int i) { + return new web_seed_entry(libtorrent_jni.web_seed_entry_vector_get(swigCPtr, this, i), false); + } + + public void set(int i, web_seed_entry val) { + libtorrent_jni.web_seed_entry_vector_set(swigCPtr, this, i, web_seed_entry.getCPtr(val), val); + } + +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/BDecodeReadTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/BDecodeReadTest.java new file mode 100644 index 0000000..459e436 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/BDecodeReadTest.java @@ -0,0 +1,37 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.bdecode_node; +import com.frostwire.jlibtorrent.swig.byte_vector; +import com.frostwire.jlibtorrent.swig.error_code; +import com.frostwire.jlibtorrent.swig.torrent_info; + +import org.junit.Test; + +import java.io.IOException; + +import static org.junit.Assert.assertEquals; + +/** + * @author gubatron + * @author aldenml + */ +public class BDecodeReadTest { + + @Test + public void testRead() throws IOException { + byte[] data = Utils.resourceBytes("test5.torrent"); + + byte_vector buffer = Vectors.bytes2byte_vector(data); + bdecode_node e = new bdecode_node(); + error_code ec = new error_code(); + int ret = bdecode_node.bdecode(buffer, e, ec); + + assertEquals("failed to decode torrent: " + ec.message(), ret, 0); + + ec.clear(); + torrent_info ti = new torrent_info(e, ec); + buffer.clear(); // prevents GC + + assertEquals("failed to create torrent info: " + ec.message(), ret, 0); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/ChangeTrackersTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/ChangeTrackersTest.java new file mode 100644 index 0000000..94f38f9 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/ChangeTrackersTest.java @@ -0,0 +1,120 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.create_torrent; +import com.frostwire.jlibtorrent.swig.entry; +import com.frostwire.jlibtorrent.swig.entry_vector; +import com.frostwire.jlibtorrent.swig.string_entry_map; + +import org.junit.Test; + +import java.io.IOException; +import java.util.ArrayList; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * @author gubatron + * @author aldenml + */ +public class ChangeTrackersTest { + + @Test + public void testChangeTrackersUsingCreateTorrent() throws IOException { + byte[] torrentBytes = Utils.resourceBytes("test4.torrent"); + TorrentInfo ti = TorrentInfo.bdecode(torrentBytes); + + // do we have any tracker + assertTrue(ti.trackers().size() > 0); + + entry e = entry.bdecode(Vectors.bytes2byte_vector(torrentBytes)); + string_entry_map m = e.dict(); + if (m.has_key("announce")) { + m.erase("announce"); + } + if (m.has_key("announce-list")) { + m.erase("announce-list"); + } + + ti = TorrentInfo.bdecode(Vectors.byte_vector2bytes(e.bencode())); + // did we remove all trackers + assertEquals(ti.trackers().size(), 0); + + create_torrent c = new create_torrent(ti.swig()); + + c.add_tracker("http://a:6969/announce", 0); + c.add_tracker("http://b:6969/announce", 1); + + e = c.generate(); + ti = TorrentInfo.bdecode(Vectors.byte_vector2bytes(e.bencode())); + ArrayList trackers = ti.trackers(); + // do we have exactly the two added trackers + assertEquals(trackers.size(), 2); + assertEquals(trackers.get(0).url(), "http://a:6969/announce"); + assertEquals(trackers.get(1).url(), "http://b:6969/announce"); + } + + @Test + public void testChangeTrackersLowLevel() throws IOException { + byte[] torrentBytes = Utils.resourceBytes("test4.torrent"); + TorrentInfo ti = TorrentInfo.bdecode(torrentBytes); + + // do we have any tracker + assertTrue(ti.trackers().size() > 0); + + entry e = entry.bdecode(Vectors.bytes2byte_vector(torrentBytes)); + string_entry_map m = e.dict(); + + // remove trackers + if (m.has_key("announce")) { + m.erase("announce"); + } + if (m.has_key("announce-list")) { + m.erase("announce-list"); + } + + // add trackers + String[] tks = new String[]{"http://a:6969/announce", "http://b:6969/announce"}; + entry_vector l = new entry_vector(); + l.push_back(new entry(tks[0])); + m.set("announce", new entry(l)); + + entry_vector tl = new entry_vector(); + for (int i = 0; i < tks.length; i++) { + l.clear(); + l.push_back(new entry(tks[i])); + tl.push_back(new entry(l)); + } + m.set("announce-list", new entry(tl)); + + ti = TorrentInfo.bdecode(Vectors.byte_vector2bytes(e.bencode())); + ArrayList trackers = ti.trackers(); + // do we have exactly the two added trackers + assertEquals(trackers.size(), 2); + assertEquals(trackers.get(0).url(), "http://a:6969/announce"); + assertEquals(trackers.get(1).url(), "http://b:6969/announce"); + } + + @Test + public void testChangeTrackersWithTorrentInfo() throws IOException { + byte[] torrentBytes = Utils.resourceBytes("test4.torrent"); + TorrentInfo ti = TorrentInfo.bdecode(torrentBytes); + + // do we have any tracker + assertTrue(ti.trackers().size() > 0); + + ti.clearTrackers(); + + // did we remove all trackers + assertEquals(ti.trackers().size(), 0); + + ti.addTracker("http://a:6969/announce", 0); + ti.addTracker("http://b:6969/announce", 1); + + ArrayList trackers = ti.trackers(); + // do we have exactly the two added trackers + assertEquals(trackers.size(), 2); + assertEquals(trackers.get(0).url(), "http://a:6969/announce"); + assertEquals(trackers.get(1).url(), "http://b:6969/announce"); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/CreateTorrentTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/CreateTorrentTest.java new file mode 100644 index 0000000..17f84c2 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/CreateTorrentTest.java @@ -0,0 +1,213 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.add_files_listener; +import com.frostwire.jlibtorrent.swig.byte_vector; +import com.frostwire.jlibtorrent.swig.create_flags_t; +import com.frostwire.jlibtorrent.swig.create_torrent; +import com.frostwire.jlibtorrent.swig.entry; +import com.frostwire.jlibtorrent.swig.error_code; +import com.frostwire.jlibtorrent.swig.file_storage; +import com.frostwire.jlibtorrent.swig.set_piece_hashes_listener; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.concurrent.atomic.AtomicBoolean; + +import static com.frostwire.jlibtorrent.swig.libtorrent.add_files_ex; +import static com.frostwire.jlibtorrent.swig.libtorrent.set_piece_hashes_ex; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * @author gubatron + * @author aldenml + */ +public class CreateTorrentTest { + + @Rule + public TemporaryFolder folder = new TemporaryFolder(); + + @Test + public void testFromFile() throws IOException { + final File f = folder.newFile("test.txt"); + Utils.writeByteArrayToFile(f, new byte[]{0}, false); + + file_storage fs = new file_storage(); + add_files_listener l1 = new add_files_listener() { + @Override + public boolean pred(String p) { + assertEquals(f.getAbsolutePath(), p); + return true; + } + }; + add_files_ex(fs, f.getAbsolutePath(), l1, new create_flags_t()); + create_torrent ct = new create_torrent(fs); + set_piece_hashes_listener l2 = new set_piece_hashes_listener() { + @Override + public void progress(int i) { + assertTrue(i >= 0); + } + }; + error_code ec = new error_code(); + set_piece_hashes_ex(ct, f.getParent(), l2, ec); + assertEquals(ec.value(), 0); + entry e = ct.generate(); + byte_vector buffer = e.bencode(); + TorrentInfo ti = TorrentInfo.bdecode(Vectors.byte_vector2bytes(buffer)); + assertEquals(1, ti.numFiles()); + } + + @Test + public void testFromDir() throws IOException { + File dir = folder.newFolder(); + File f1 = new File(dir, "test.txt"); + Utils.writeByteArrayToFile(f1, new byte[]{0}, false); + File f2 = new File(dir, "test1.txt"); + Utils.writeByteArrayToFile(f2, new byte[]{0}, false); + + file_storage fs = new file_storage(); + add_files_listener l1 = new add_files_listener() { + @Override + public boolean pred(String p) { + return true; + } + }; + add_files_ex(fs, dir.getAbsolutePath(), l1, new create_flags_t()); + create_torrent ct = new create_torrent(fs); + set_piece_hashes_listener l2 = new set_piece_hashes_listener() { + @Override + public void progress(int i) { + assertTrue(i >= 0); + } + }; + error_code ec = new error_code(); + set_piece_hashes_ex(ct, dir.getParent(), l2, ec); + assertEquals(ec.value(), 0); + entry e = ct.generate(); + byte_vector buffer = e.bencode(); + TorrentInfo ti = TorrentInfo.bdecode(Vectors.byte_vector2bytes(buffer)); + assertEquals(2, ti.numFiles()); + } + + @Test + public void testUsingBuilder() throws IOException { + File dir = folder.newFolder(); + File f1 = new File(dir, "test.txt"); + Utils.writeByteArrayToFile(f1, new byte[]{0}, false); + File f2 = new File(dir, "test1.txt"); + Utils.writeByteArrayToFile(f2, new byte[]{0}, false); + + TorrentBuilder b = new TorrentBuilder(); + TorrentBuilder.Result r = b.path(dir) + .comment("comment") + .creator("creator") + .addUrlSeed("http://urlseed/") + .addHttpSeed("http://httpseed/") + .addNode(new Pair<>("1.1.1.1", 1)) + .addTracker("udp://tracker/") + .setPrivate(true) + .addSimilarTorrent(Sha1Hash.min()) + .addCollection("collection") + .generate(); + + TorrentInfo ti = TorrentInfo.bdecode(r.entry().bencode()); + assertEquals("comment", ti.comment()); + assertEquals("creator", ti.creator()); + + ArrayList seeds = ti.webSeeds(); + for (WebSeedEntry e : seeds) { + if (e.type() == WebSeedEntry.Type.URL_SEED) { + assertEquals("http://urlseed/", e.url()); + } + if (e.type() == WebSeedEntry.Type.HTTP_SEED) { + assertEquals("http://httpseed/", e.url()); + } + } + + assertEquals("1.1.1.1", ti.nodes().get(0).first); + assertEquals("udp://tracker/", ti.trackers().get(0).url()); + assertEquals(true, ti.isPrivate()); + assertTrue(ti.similarTorrents().get(0).isAllZeros()); + assertEquals("collection", ti.collections().get(0)); + assertEquals(2, ti.numFiles()); + } + + @Test + public void testBuilderListener() throws IOException { + File dir = folder.newFolder(); + File f1 = new File(dir, "test.txt"); + Utils.writeByteArrayToFile(f1, new byte[]{0, 0}, false); + File f2 = new File(dir, "test1.txt"); + Utils.writeByteArrayToFile(f2, new byte[]{0, 0}, false); + + final AtomicBoolean b1 = new AtomicBoolean(); + final AtomicBoolean b2 = new AtomicBoolean(); + + TorrentBuilder b = new TorrentBuilder(); + TorrentBuilder.Result r = b.path(dir) + .listener(new TorrentBuilder.Listener() { + @Override + public boolean accept(String filename) { + b1.set(true); + return true; + } + + @Override + public void progress(int piece, int total) { + b2.set(true); + } + }) + .generate(); + + TorrentInfo ti = TorrentInfo.bdecode(r.entry().bencode()); + assertEquals(2, ti.numFiles()); + assertTrue(b1.get()); + assertTrue(b2.get()); + } + + /* + @Test + public void testBuilderMerkle() throws IOException { + File dir = folder.newFolder(); + File f1 = new File(dir, "test.txt"); + Utils.writeByteArrayToFile(f1, new byte[]{0, 0, 0}, false); + File f2 = new File(dir, "test1.txt"); + Utils.writeByteArrayToFile(f2, new byte[]{0, 0, 0}, false); + + TorrentBuilder b = new TorrentBuilder(); + TorrentBuilder.Result r = b.path(dir) + .flags(b.flags() | TorrentBuilder.Flags.MERKLE.swig()) + .generate(); + + TorrentInfo ti = TorrentInfo.bdecode(r.entry().bencode()); + assertEquals(2, ti.numFiles()); + + ArrayList tree = r.merkleTree(); + assertTrue(tree.size() >= 0); + ti.merkleTree(tree); + assertEquals(tree.get(0), ti.merkleTree().get(0)); + }*/ + + /* + @Test + public void testMerkleFlag() throws IOException { + TorrentBuilder b = new TorrentBuilder(); + + assertFalse(b.merkle()); + b.merkle(false); + assertFalse(b.merkle()); + b.merkle(true); + assertTrue(b.merkle()); + b.merkle(true); + assertTrue(b.merkle()); + b.merkle(false); + assertFalse(b.merkle()); + b.merkle(false); + assertFalse(b.merkle()); + }*/ +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/EntryTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/EntryTest.java new file mode 100644 index 0000000..0fc0562 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/EntryTest.java @@ -0,0 +1,96 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.entry; +import com.frostwire.jlibtorrent.swig.string_entry_map; +import com.frostwire.jlibtorrent.swig.string_vector; + +import org.junit.Test; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +/** + * @author gubatron + * @author aldenml + */ +public class EntryTest { + + @Test + public void testSimpleCreation() { + Map m = new HashMap<>(); + + m.put("a", 1); + m.put("b", "b"); + m.put("c", new Entry("es")); + + Entry e = Entry.fromMap(m); + + List l = new ArrayList(); + + l.add("l1"); + l.add("l2"); + + m.put("m", e); + m.put("l", l); + + e = Entry.fromMap(m); + assertNotNull(e); + + string_entry_map dict = e.swig().dict(); + string_vector keys = dict.keys(); + for (int i = 0; i < keys.size(); i++) { + String k = keys.get(i); + assertNotNull(dict.get(k).to_string()); + } + } + + @Test + public void testCreation1() { + //old school using libtorrent's (tedious if i may say) entry api + final entry url_list = new entry(); + url_list.list().push_back(new entry("http://server1.com")); + url_list.list().push_back(new entry("http://server2.com")); + final entry swig_entry = new entry(); + swig_entry.dict().set("url-list", url_list); + final Entry e = new Entry(swig_entry); + final String oldSchoolBencodedMapString = new String(e.bencode()); + + //now using Java's collection API + final List urlList = new ArrayList(); + urlList.add("http://server1.com"); + urlList.add("http://server2.com"); + final Map urlListMap = new HashMap(); + urlListMap.put("url-list", urlList); + final String javaAPIBencodedMapString = new String(Entry.fromMap(urlListMap).bencode()); + + final String expectedBencodedList = "d8:url-listl18:http://server1.com18:http://server2.comee"; + assertEquals(expectedBencodedList, oldSchoolBencodedMapString); + assertEquals(expectedBencodedList, javaAPIBencodedMapString); + + final Map torrentMap = new HashMap(); + torrentMap.put("Comment", new entry("Torrent created with FrostWire")); + + final Map ccMap = new HashMap(); + ccMap.put("attributionAuthor", new entry("FrostWire LLC")); + ccMap.put("attributionTitle", new entry("FrostWire 5.7.7")); + ccMap.put("attributionUrl", "http://www.frostwire.com"); //on purpose not an entry + ccMap.put("licenseUrl", new entry("https://www.gnu.org/licenses/gpl.html")); + + final Map openSourceMap = new HashMap(); + //works both with an entry object created out of a Map, or straight up with the Map. + //openSourceMap.put("open-source", Entry.fromMap(ccMap).getSwig()); + openSourceMap.put("open-source", ccMap); + + final Map licenseMap = new HashMap(); + licenseMap.put("license", Entry.fromMap(openSourceMap).swig()); + + final String expectedLicenseBencoded = "d7:licensed11:open-sourced17:attributionAuthor13:FrostWire LLC16:attributionTitle15:FrostWire 5.7.714:attributionUrl24:http://www.frostwire.com10:licenseUrl37:https://www.gnu.org/licenses/gpl.htmleee"; + final String bencodedLicenseMap = new String(Entry.fromMap(licenseMap).bencode()); + assertEquals(expectedLicenseBencoded, bencodedLicenseMap); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/FetchMagnetTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/FetchMagnetTest.java new file mode 100644 index 0000000..450ce4e --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/FetchMagnetTest.java @@ -0,0 +1,78 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.alerts.Alert; +import com.frostwire.jlibtorrent.alerts.AlertType; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +/** + * @author gubatron + * @author aldenml + */ +public class FetchMagnetTest { + + //@Test + public void testRemoveAfterFetch() { + + String sha1 = "a83cc13bf4a07e85b938dcf06aa707955687ca7c"; + String uri = "magnet:?xt=urn:btih:" + sha1; + + final SessionManager s = new SessionManager(); + + final CountDownLatch signal = new CountDownLatch(1); + + // the session stats are posted about once per second. + AlertListener l = new AlertListener() { + @Override + public int[] types() { + return new int[]{AlertType.SESSION_STATS.swig(), AlertType.DHT_STATS.swig()}; + } + + @Override + public void alert(Alert alert) { + if (alert.type().equals(AlertType.SESSION_STATS)) { + s.postDhtStats(); + } + + if (alert.type().equals(AlertType.DHT_STATS)) { + + long nodes = s.stats().dhtNodes(); + // wait for at least 10 nodes in the DHT. + if (nodes >= 10) { + signal.countDown(); + } + } + } + }; + + s.addListener(l); + s.start(); + s.postDhtStats(); + + // waiting for nodes in DHT (10 seconds) + boolean r = false; + try { + r = signal.await(10, TimeUnit.SECONDS); + } catch (InterruptedException e) { + // ignore + } + assertTrue("DHT bootstrap timeout", r); + + // no more trigger of DHT stats + s.removeListener(l); + + + // Fetching the magnet uri, waiting 30 seconds max + byte[] data = s.fetchMagnet(uri, 30); + assertNotNull("Failed to retrieve the magnet", data); + + //TorrentHandle th = s.findTorrent(new Sha1Hash(sha1)); + //assertNull(th); + + s.stop(); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/FileProgressTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/FileProgressTest.java new file mode 100644 index 0000000..ad6f38c --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/FileProgressTest.java @@ -0,0 +1,100 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.alerts.AddTorrentAlert; +import com.frostwire.jlibtorrent.alerts.Alert; +import com.frostwire.jlibtorrent.alerts.AlertType; +import com.frostwire.jlibtorrent.alerts.PieceFinishedAlert; +import com.frostwire.jlibtorrent.alerts.TorrentCheckedAlert; + +import org.junit.Rule; +import org.junit.rules.TemporaryFolder; + +import java.io.File; +import java.util.concurrent.CountDownLatch; + +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNull; + +/** + * @author gubatron + * @author aldenml + */ +public final class FileProgressTest { + + @Rule + public TemporaryFolder folder = new TemporaryFolder(); + + private static void log(String msg) { + // comment/uncomment for hand debugging + //System.out.println(msg); + } + + //@Test + public void testForceRecheck() throws Throwable { + + String torrentFilename = "AJC_and_The_Envelope_Pushers_Fallen_Star_FrostClick_FrostWire_MP3_January_16_2017.torrent"; + File torrentFile = folder.newFile(torrentFilename); + byte[] data = Utils.resourceBytes(torrentFilename); + Utils.writeByteArrayToFile(torrentFile, data, false); + + final SessionManager s = new SessionManager(); + + final CountDownLatch signalFinished = new CountDownLatch(1); + + s.addListener(new AlertListener() { + + private boolean forceChecked = false; + + @Override + public int[] types() { + return null; + } + + @Override + public void alert(Alert alert) { + AlertType type = alert.type(); + + switch (type) { + case ADD_TORRENT: + ((AddTorrentAlert) alert).handle().resume(); + break; + case PIECE_FINISHED: + int progress = (int) (((PieceFinishedAlert) alert).handle().status().progress() * 100); + // this number represents the current progress of + // the current status (downloading or checking) + log("progress: " + progress); + if (progress > 2 && !forceChecked) { + forceChecked = true; + ((PieceFinishedAlert) alert).handle().forceRecheck(); + } + break; + case TORRENT_CHECKED: + log("Torrent checked, (forced: " + forceChecked + ")"); + if (forceChecked) { + TorrentHandle th = ((TorrentCheckedAlert) alert).handle(); + long[] fileProgress = th.fileProgress(); + long total = 0; + for (long p : fileProgress) { + total += p; + } + assertNotEquals("At least one file should have some progress", 0, total); + } + break; + case TORRENT_FINISHED: + signalFinished.countDown(); + break; + } + } + }); + + s.start(); + + TorrentInfo ti = new TorrentInfo(torrentFile); + s.download(ti, torrentFile.getParentFile()); + + Utils.awaitMinutes(signalFinished, "too much time downloading the torrent", 5); + assertNull(s.lastAlertError()); + + s.stop(); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/FileStorageTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/FileStorageTest.java new file mode 100644 index 0000000..3e980ff --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/FileStorageTest.java @@ -0,0 +1,22 @@ +package com.frostwire.jlibtorrent; + +import org.junit.Test; + +import java.io.IOException; + +import static org.junit.Assert.assertEquals; + +/** + * @author gubatron + * @author aldenml + */ +public class FileStorageTest { + + @Test + public void testFileName() throws IOException { + byte[] data = Utils.resourceBytes("test5.torrent"); + TorrentInfo ti = TorrentInfo.bdecode(data); + String name = ti.files().fileName(0); + assertEquals("frostwire-6.2.3.windows.fusion.exe", name); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/GetPiecesTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/GetPiecesTest.java new file mode 100644 index 0000000..e614d4b --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/GetPiecesTest.java @@ -0,0 +1,90 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.alerts.AddTorrentAlert; +import com.frostwire.jlibtorrent.alerts.Alert; +import com.frostwire.jlibtorrent.alerts.AlertType; +import com.frostwire.jlibtorrent.alerts.PieceFinishedAlert; + +import org.junit.Rule; +import org.junit.rules.TemporaryFolder; + +import java.io.File; +import java.util.concurrent.CountDownLatch; + +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +/** + * @author gubatron + * @author aldenml + */ +public final class GetPiecesTest { + + @Rule + public TemporaryFolder folder = new TemporaryFolder(); + + private static void log(String msg) { + // comment/uncomment for hand debugging + //System.out.println(msg); + } + + //@Test + public void testStatusPieces() throws Throwable { + + String torrentFilename = "AJC_and_The_Envelope_Pushers_Fallen_Star_FrostClick_FrostWire_MP3_January_16_2017.torrent"; + File torrentFile = folder.newFile(torrentFilename); + byte[] data = Utils.resourceBytes(torrentFilename); + Utils.writeByteArrayToFile(torrentFile, data, false); + + final SessionManager s = new SessionManager(); + + final CountDownLatch signalFinished = new CountDownLatch(1); + + s.addListener(new AlertListener() { + + private boolean forceChecked = false; + + @Override + public int[] types() { + return null; + } + + @Override + public void alert(Alert alert) { + AlertType type = alert.type(); + + switch (type) { + case ADD_TORRENT: + ((AddTorrentAlert) alert).handle().resume(); + break; + case PIECE_FINISHED: + int progress = (int) (((PieceFinishedAlert) alert).handle().status().progress() * 100); + // this number represents the current progress of + // the current status (downloading or checking) + log("progress: " + progress); + if (progress > 4 && !forceChecked) { + forceChecked = true; + TorrentHandle th = ((PieceFinishedAlert) alert).handle(); + PieceIndexBitfield pieces = th.status(TorrentHandle.QUERY_PIECES).pieces(); + log("pieces size: " + pieces.size()); + assertTrue(pieces.size() > 0); + assertTrue(pieces.count() > 0); + log("pieces value at 0: " + pieces.getBit(0)); + signalFinished.countDown(); + } + break; + } + } + }); + + s.start(); + + TorrentInfo ti = new TorrentInfo(torrentFile); + s.download(ti, torrentFile.getParentFile()); + + Utils.awaitMinutes(signalFinished, "too much time downloading the torrent", 5); + assertNull(s.lastAlertError()); + + s.stop(); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/IntSeriesTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/IntSeriesTest.java new file mode 100644 index 0000000..911a77a --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/IntSeriesTest.java @@ -0,0 +1,78 @@ +package com.frostwire.jlibtorrent; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * Created on 12/21/16. + * + * @author aldenml + * @author gubatron + */ +public class IntSeriesTest { + private static void printArray(String name, int[] arr) { + System.out.print(name + " [ "); + for (int i = 0; i < arr.length; i++) { + System.out.print(arr[i]); + if (i != arr.length - 1) { + System.out.print(", "); + } + } + System.out.println(" ]"); + } + + private static void debugAddElement(IntSeries circular, int elem) { + //System.out.println(">>> Adding " + elem); + circular.add(elem); + //printArray("internal buffer", circular.getBufferCopy()); + //printArray(" tail", circular.tail(3)); + //System.out.println(); + } + + @Test + public void addAndGetTest() { + IntSeries series = new IntSeries(3); + + assertEquals("addAndGetTest 1", 0, series.size()); + + debugAddElement(series, 1); + assertEquals("addAndGetTest 2.a", 1, series.size()); + assertEquals("addAndGetTest 2.b", 1, series.get(0)); + + debugAddElement(series, 2); + assertEquals("addAndGetTest 3.a", 2, series.size()); + assertEquals("addAndGetTest 3.b", 1, series.get(0)); + assertEquals("addAndGetTest 3.c", 2, series.get(1)); + + debugAddElement(series, 3); + assertEquals("addAndGetTest 4.a", 3, series.size()); + assertEquals("addAndGetTest 4.b", 1, series.get(0)); + assertEquals("addAndGetTest 4.c", 2, series.get(1)); + assertEquals("addAndGetTest 4.d", 3, series.get(2)); + + debugAddElement(series, 4); + + assertEquals("addAndGetTest 5.a", 2, series.get(0)); + assertEquals("addAndGetTest 5.b", 3, series.get(1)); + assertEquals("addAndGetTest 5.c", 4, series.get(2)); + + debugAddElement(series, 5); + + assertEquals("addAndGetTest 6.a", 3, series.get(0)); + assertEquals("addAndGetTest 6.b", 4, series.get(1)); + assertEquals("addAndGetTest 6.c", 5, series.get(2)); + + debugAddElement(series, 6); + + assertEquals("addAndGetTest 7.a", 4, series.get(0)); + assertEquals("addAndGetTest 7.b", 5, series.get(1)); + assertEquals("addAndGetTest 7.c", 6, series.get(2)); + + debugAddElement(series, 7); + + assertEquals("addAndGetTest 8.a", 5, series.get(0)); + assertEquals("addAndGetTest 8.b", 6, series.get(1)); + assertEquals("addAndGetTest 8.c", 7, series.get(2)); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/PriorityTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/PriorityTest.java new file mode 100644 index 0000000..91e808b --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/PriorityTest.java @@ -0,0 +1,21 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.int_vector; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * @author aldenml + * @author gubatron + */ +public class PriorityTest { + + @Test + public void testArray2vector() { + Priority[] arr = Priority.array(Priority.FOUR, 10); + int_vector vec = Priority.array2vector(arr); + assertEquals(arr.length, vec.size()); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/Sha1HashTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/Sha1HashTest.java new file mode 100644 index 0000000..991a494 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/Sha1HashTest.java @@ -0,0 +1,22 @@ +package com.frostwire.jlibtorrent; + +import org.junit.Test; + +import java.util.Arrays; + +import static org.junit.Assert.assertEquals; + +/** + * @author gubatron + * @author aldenml + */ +public class Sha1HashTest { + + @Test + public void testHashCode() { + byte[] arr = new byte[20]; + Arrays.fill(arr, (byte) 2); + Sha1Hash h = new Sha1Hash(arr); + assertEquals(Arrays.hashCode(arr), h.hashCode()); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/StartPausedSessionTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/StartPausedSessionTest.java new file mode 100644 index 0000000..467aec0 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/StartPausedSessionTest.java @@ -0,0 +1,27 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.session_params; +import com.frostwire.jlibtorrent.swig.settings_pack; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class StartPausedSessionTest { + @Test + public void startSessionPausedTest() { + SessionManager sessionManager = new SessionManager(); + sessionManager.start(new SessionParams(new session_params(new settings_pack())), + SessionHandle.PAUSED); + assertEquals(sessionManager.isPaused(), true); + sessionManager.stop(); + } + + @Test + public void startSessionNonPausedTest() { + SessionManager sessionManager = new SessionManager(); + sessionManager.start(new SessionParams(new session_params(new settings_pack()))); + assertEquals(sessionManager.isPaused(), false); + sessionManager.stop(); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/StatsMetricTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/StatsMetricTest.java new file mode 100644 index 0000000..851e40a --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/StatsMetricTest.java @@ -0,0 +1,25 @@ +package com.frostwire.jlibtorrent; + +import org.junit.Test; + +import java.util.List; + +import static org.junit.Assert.assertEquals; + +/** + * @author gubatron + * @author aldenml + */ +public class StatsMetricTest { + + @Test + public void testListStatsMetric() { + List metrics = LibTorrent.sessionStatsMetrics(); + + for (StatsMetric m : metrics) { + assertEquals(m.valueIndex, LibTorrent.findMetricIdx(m.name)); + } + + assertEquals(-1, LibTorrent.findMetricIdx("anything")); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/StatusDurationTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/StatusDurationTest.java new file mode 100644 index 0000000..db53c2a --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/StatusDurationTest.java @@ -0,0 +1,136 @@ +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.alerts.AddTorrentAlert; +import com.frostwire.jlibtorrent.alerts.Alert; +import com.frostwire.jlibtorrent.alerts.AlertType; +import com.frostwire.jlibtorrent.alerts.PieceFinishedAlert; +import com.frostwire.jlibtorrent.alerts.SaveResumeDataAlert; +import com.frostwire.jlibtorrent.alerts.TorrentFinishedAlert; +import com.frostwire.jlibtorrent.alerts.TorrentPausedAlert; + +import org.junit.Rule; +import org.junit.rules.TemporaryFolder; + +import java.io.File; +import java.util.concurrent.CountDownLatch; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +/** + * @author gubatron + * @author aldenml + */ +public final class StatusDurationTest { + + @Rule + public TemporaryFolder folder = new TemporaryFolder(); + + private long activeDuration = 0; + private Entry resumeData; + + private static void log(String msg) { + // comment/uncomment for hand debugging + System.out.println(msg); + } + + //@Test + public void testDuration() throws Throwable { + + String torrentFilename = "AJC_and_The_Envelope_Pushers_Fallen_Star_FrostClick_FrostWire_MP3_January_16_2017.torrent"; + File torrentFile = folder.newFile(torrentFilename); + byte[] data = Utils.resourceBytes(torrentFilename); + Utils.writeByteArrayToFile(torrentFile, data, false); + + final SessionManager s = new SessionManager(); + + final CountDownLatch signal1 = new CountDownLatch(1); + final CountDownLatch signal2 = new CountDownLatch(1); + + s.addListener(new AlertListener() { + + private boolean paused = false; + + @Override + public int[] types() { + return null; + } + + @Override + public void alert(Alert alert) { + AlertType type = alert.type(); + + switch (type) { + case ADD_TORRENT: + ((AddTorrentAlert) alert).handle().resume(); + break; + case PIECE_FINISHED: + int progress = (int) (((PieceFinishedAlert) alert).handle().status().progress() * 100); + // this number represents the current progress of + // the current status (downloading or checking) + log("progress: " + progress); + if (progress > 2 && !paused) { + paused = true; + ((PieceFinishedAlert) alert).handle().pause(); + } + break; + case TORRENT_PAUSED: + log("Torrent paused"); + TorrentHandle th = ((TorrentPausedAlert) alert).handle(); + th.saveResumeData(); + break; + case SAVE_RESUME_DATA: + // TODO: restore later + resumeData = null;//((SaveResumeDataAlert) alert).resumeData(); + TorrentHandle th2 = ((SaveResumeDataAlert) alert).handle(); + TorrentStatus status2 = th2.status(); + activeDuration = status2.activeDuration(); + signal1.countDown(); + break; + case TORRENT_FINISHED: + TorrentHandle th1 = ((TorrentFinishedAlert) alert).handle(); + TorrentStatus status1 = th1.status(); + activeDuration = status1.activeDuration(); + signal2.countDown(); + break; + + } + } + }); + + s.start(); + + TorrentInfo ti = new TorrentInfo(torrentFile); + s.download(ti, torrentFile.getParentFile()); + + Utils.awaitMinutes(signal1, "too much time downloading the torrent 2%", 5); + assertNull(s.lastAlertError()); + + s.stop(); + + log("activeDuration: " + activeDuration); + + //log(resumeData.toString()); + long savedActiveDuration = resumeData.dictionary().get("active_time").integer() * 1000; + assertEquals(activeDuration, savedActiveDuration); + + File resumeFile = folder.newFile("resume.data"); + Utils.writeByteArrayToFile(resumeFile, resumeData.bencode(), false); + + Thread.sleep(10000); + + s.start(); + + long timeMark = System.currentTimeMillis(); + s.download(ti, torrentFile.getParentFile(), resumeFile, null, null); + + Utils.awaitMinutes(signal2, "too much time downloading the torrent 100%", 5); + assertNull(s.lastAlertError()); + + log("activeDuration: " + activeDuration); + long t1 = activeDuration - savedActiveDuration; // time active in the 98% + long t2 = System.currentTimeMillis() - timeMark; // approximate time in the 98% + assertTrue(t2 - t1 < 2000); // active time should not be affected by the sleep(10000) + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/TcpEndpointTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/TcpEndpointTest.java new file mode 100644 index 0000000..ed2cef8 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/TcpEndpointTest.java @@ -0,0 +1,21 @@ +package com.frostwire.jlibtorrent; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * @author gubatron + * @author aldenml + */ +public class TcpEndpointTest { + + @Test + public void testToString() { + TcpEndpoint endp1 = new TcpEndpoint("1.1.1.1", 80); + assertEquals("1.1.1.1:80", endp1.toString()); + + TcpEndpoint endp2 = new TcpEndpoint("::1", 80); + assertEquals("[::1]:80", endp2.toString()); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/Utils.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/Utils.java new file mode 100644 index 0000000..50f968e --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/Utils.java @@ -0,0 +1,359 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.frostwire.jlibtorrent; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +import static org.junit.Assert.assertTrue; + +public final class Utils { + + /** + * The extension separator character. + * + * @since 1.4 + */ + public static final char EXTENSION_SEPARATOR = '.'; + /** + * The Unix separator character. + */ + private static final char UNIX_SEPARATOR = '/'; + /** + * The Windows separator character. + */ + private static final char WINDOWS_SEPARATOR = '\\'; + private static final int EOF = -1; + + private Utils() { + } + + /** + * Gets the name minus the path from a full filename. + *

+ * This method will handle a file in either Unix or Windows format. + * The text after the last forward or backslash is returned. + *

+     * a/b/c.txt --> c.txt
+     * a.txt     --> a.txt
+     * a/b/c     --> c
+     * a/b/c/    --> ""
+     * 
+ *

+ * The output will be the same irrespective of the machine that the code is running on. + * + * @param filename the filename to query, null returns null + * @return the name of the file without the path, or an empty string if none exists + */ + public static String getName(String filename) { + if (filename == null) { + return null; + } + int index = indexOfLastSeparator(filename); + return filename.substring(index + 1); + } + + /** + * Gets the base name, minus the full path and extension, from a full filename. + *

+ * This method will handle a file in either Unix or Windows format. + * The text after the last forward or backslash and before the last dot is returned. + *

+     * a/b/c.txt --> c
+     * a.txt     --> a
+     * a/b/c     --> c
+     * a/b/c/    --> ""
+     * 
+ *

+ * The output will be the same irrespective of the machine that the code is running on. + * + * @param filename the filename to query, null returns null + * @return the name of the file without the path, or an empty string if none exists + */ + public static String getBaseName(String filename) { + return removeExtension(getName(filename)); + } + + //----------------------------------------------------------------------- + + /** + * Removes the extension from a filename. + *

+ * This method returns the textual part of the filename before the last dot. + * There must be no directory separator after the dot. + *

+     * foo.txt    --> foo
+     * a\b\c.jpg  --> a\b\c
+     * a\b\c      --> a\b\c
+     * a.b\c      --> a.b\c
+     * 
+ *

+ * The output will be the same irrespective of the machine that the code is running on. + * + * @param filename the filename to query, null returns null + * @return the filename minus the extension + */ + public static String removeExtension(String filename) { + if (filename == null) { + return null; + } + int index = indexOfExtension(filename); + if (index == -1) { + return filename; + } else { + return filename.substring(0, index); + } + } + + /** + * Returns the index of the last extension separator character, which is a dot. + *

+ * This method also checks that there is no directory separator after the last dot. + * To do this it uses {@link #indexOfLastSeparator(String)} which will + * handle a file in either Unix or Windows format. + *

+ * The output will be the same irrespective of the machine that the code is running on. + * + * @param filename the filename to find the last path separator in, null returns -1 + * @return the index of the last separator character, or -1 if there + * is no such character + */ + public static int indexOfExtension(String filename) { + if (filename == null) { + return -1; + } + int extensionPos = filename.lastIndexOf(EXTENSION_SEPARATOR); + int lastSeparator = indexOfLastSeparator(filename); + return lastSeparator > extensionPos ? -1 : extensionPos; + } + + /** + * Returns the index of the last directory separator character. + *

+ * This method will handle a file in either Unix or Windows format. + * The position of the last forward or backslash is returned. + *

+ * The output will be the same irrespective of the machine that the code is running on. + * + * @param filename the filename to find the last path separator in, null returns -1 + * @return the index of the last separator character, or -1 if there + * is no such character + */ + public static int indexOfLastSeparator(String filename) { + if (filename == null) { + return -1; + } + int lastUnixPos = filename.lastIndexOf(UNIX_SEPARATOR); + int lastWindowsPos = filename.lastIndexOf(WINDOWS_SEPARATOR); + return Math.max(lastUnixPos, lastWindowsPos); + } + + /** + * Get the contents of an InputStream as a byte[]. + * Use this method instead of toByteArray(InputStream) + * when InputStream size is known + * + * @param input the InputStream to read from + * @param size the size of InputStream + * @return the requested byte array + * @throws java.io.IOException if an I/O error occurs or InputStream size differ from parameter size + * @throws IllegalArgumentException if size is less than zero + * @since 2.1 + */ + public static byte[] toByteArray(InputStream input, int size) throws IOException { + + if (size < 0) { + throw new IllegalArgumentException("Size must be equal or greater than zero: " + size); + } + + if (size == 0) { + return new byte[0]; + } + + byte[] data = new byte[size]; + int offset = 0; + int readed; + + while (offset < size && (readed = input.read(data, offset, size - offset)) != EOF) { + offset += readed; + } + + if (offset != size) { + throw new IOException("Unexpected readed size. current: " + offset + ", excepted: " + size); + } + + return data; + } + + /** + * Get contents of an InputStream as a byte[]. + * Use this method instead of toByteArray(InputStream) + * when InputStream size is known. + * NOTE: the method checks that the length can safely be cast to an int without truncation + * before using {@link Utils#toByteArray(java.io.InputStream, int)} to read into the byte array. + * (Arrays can have no more than Integer.MAX_VALUE entries anyway) + * + * @param input the InputStream to read from + * @param size the size of InputStream + * @return the requested byte array + * @throws IOException if an I/O error occurs or InputStream size differ from parameter size + * @throws IllegalArgumentException if size is less than zero or size is greater than Integer.MAX_VALUE + * @see Utils#toByteArray(java.io.InputStream, int) + * @since 2.1 + */ + public static byte[] toByteArray(InputStream input, long size) throws IOException { + + if (size > Integer.MAX_VALUE) { + throw new IllegalArgumentException("Size cannot be greater than Integer max value: " + size); + } + + return toByteArray(input, (int) size); + } + + //----------------------------------------------------------------------- + + /** + * Opens a {@link java.io.FileInputStream} for the specified file, providing better + * error messages than simply calling new FileInputStream(file). + *

+ * At the end of the method either the stream will be successfully opened, + * or an exception will have been thrown. + *

+ * An exception is thrown if the file does not exist. + * An exception is thrown if the file object exists but is a directory. + * An exception is thrown if the file exists but cannot be read. + * + * @param file the file to open for input, must not be {@code null} + * @return a new {@link java.io.FileInputStream} for the specified file + * @throws java.io.FileNotFoundException if the file does not exist + * @throws IOException if the file object is a directory + * @throws IOException if the file cannot be read + * @since 1.3 + */ + public static FileInputStream openInputStream(File file) throws IOException { + if (file.exists()) { + if (file.isDirectory()) { + throw new IOException("File '" + file + "' exists but is a directory"); + } + if (file.canRead() == false) { + throw new IOException("File '" + file + "' cannot be read"); + } + } else { + throw new FileNotFoundException("File '" + file + "' does not exist"); + } + return new FileInputStream(file); + } + + /** + * Reads the contents of a file into a byte array. + * The file is always closed. + * + * @param file the file to read, must not be {@code null} + * @return the file contents, never {@code null} + * @throws IOException in case of an I/O error + * @since 1.1 + */ + public static byte[] readFileToByteArray(File file) throws IOException { + return Files.bytes(file); + } + + public static String toHex(byte[] bytes) { + return Hex.encode(bytes); + } + + public static byte[] fromHex(String str) { + return Hex.decode(str); + } + + public static FileOutputStream openOutputStream(File file, boolean append) throws IOException { + if (file.exists()) { + if (file.isDirectory()) { + throw new IOException("File '" + file + "' exists but is a directory"); + } + if (file.canWrite() == false) { + throw new IOException("File '" + file + "' cannot be written to"); + } + } else { + File parent = file.getParentFile(); + if (parent != null) { + if (!parent.mkdirs() && !parent.isDirectory()) { + throw new IOException("Directory '" + parent + "' could not be created"); + } + } + } + return new FileOutputStream(file, append); + } + + public static void writeByteArrayToFile(File file, byte[] data, boolean append) throws IOException { + OutputStream out = null; + try { + out = openOutputStream(file, append); + out.write(data); + out.close(); // don't swallow close Exception if copy completes normally + } finally { + Files.closeQuietly(out); + } + } + + public static byte[] resourceBytes(String path) throws IOException { + ClassLoader classLoader = Utils.class.getClassLoader(); + InputStream input = classLoader.getResourceAsStream(path); + ByteArrayOutputStream output = new ByteArrayOutputStream(); + try { + int n = 0; + byte[] buffer = new byte[1024 * 4]; + while (EOF != (n = input.read(buffer))) { + output.write(buffer, 0, n); + } + return output.toByteArray(); + } finally { + Files.closeQuietly(input); + Files.closeQuietly(output); + } + } + + public static File home(String path) { + return new File(System.getProperty("user.home"), path); + } + + static void await(CountDownLatch s, String message, long timeout, TimeUnit unit) { + boolean r = false; + try { + r = s.await(timeout, unit); + } catch (InterruptedException e) { + // ignore + } + assertTrue(message, r); + } + + static void awaitSeconds(CountDownLatch s, String message, long timeout) { + await(s, message, timeout, TimeUnit.SECONDS); + } + + static void awaitMinutes(CountDownLatch s, String message, long timeout) { + await(s, message, timeout, TimeUnit.MINUTES); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/VectorsTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/VectorsTest.java new file mode 100644 index 0000000..e1dd69d --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/VectorsTest.java @@ -0,0 +1,52 @@ +/* + * Created by Angel Leon (@gubatron), Alden Torres (aldenml) + * + * Licensed under the MIT License. + */ + +package com.frostwire.jlibtorrent; + +import com.frostwire.jlibtorrent.swig.byte_vector; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * @author aldenml + * @author gubatron + */ +public class VectorsTest { + + @Test + public void testByteVector2String() { + byte_vector v = new byte_vector(); + v.push_back((byte) 'A'); + v.push_back((byte) 'B'); + v.push_back((byte) 'C'); + assertEquals(Vectors.byte_vector2ascii(v), "ABC"); + + v.clear(); + v.push_back((byte) 'A'); + v.push_back((byte) 'B'); + v.push_back((byte) 0); + assertEquals(Vectors.byte_vector2ascii(v), "AB"); + + v.clear(); + v.push_back((byte) 0); + v.push_back((byte) 0); + v.push_back((byte) 0); + assertEquals(Vectors.byte_vector2ascii(v), ""); + + v.clear(); + v.push_back((byte) 'A'); + v.push_back((byte) 0); + v.push_back((byte) 'B'); + assertEquals(Vectors.byte_vector2ascii(v), "A"); + + v.clear(); + v.push_back((byte) 194); + v.push_back((byte) 181); + assertEquals(Vectors.byte_vector2utf8(v), "µ"); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/AlertsSwitch.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/AlertsSwitch.java new file mode 100644 index 0000000..95dd91d --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/AlertsSwitch.java @@ -0,0 +1,152 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.alerts.Alerts; +import com.frostwire.jlibtorrent.alerts.TorrentAlert; + +import java.io.File; +import java.lang.reflect.Field; +import java.net.URL; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; + +/** + * @author gubatron + * @author aldenml + */ +public final class AlertsSwitch { + + public static void main(String[] args) throws Exception { + printForAlerts(); + System.out.println("============================="); + printForTorrentAlertsAdapter(); + System.out.println("============================="); + printForAlertType(); + } + + private static void printForAlerts() throws Exception { + Class[] arr = getSwigAlerts(); + + for (int i = 0; i < arr.length; i++) { + String s = "arr[" + i + "] = new CastLambda() { @Override public Alert cast(alert a) { return new "; + if (arr[i] != null) { + String c = capitalizeAlertTypeName(arr[i].getSimpleName()); + s += c + "(cast_to_" + arr[i].getSimpleName() + "(a));"; + } else { + s += "GenericAlert(a);"; + } + + s += "}};"; + + System.out.println(s); + } + } + + private static void printForTorrentAlertsAdapter() throws Exception { + Class[] arr = getSwigAlerts(); + + for (int i = 0; i < arr.length; i++) { + String s = "arr[" + i + "] = new InvokeLambda() { @Override public void invoke(TorrentAlertAdapter l, Alert a) { "; + if (arr[i] != null) { + String c = capitalizeAlertTypeName(arr[i].getSimpleName()); + Class alertClass = Class.forName("com.frostwire.jlibtorrent.alerts." + c); + if (TorrentAlert.class.isAssignableFrom(alertClass)) { + String cc = Character.toLowerCase(c.charAt(0)) + c.substring(1); + cc = cc.replace("Alert", ""); + s += "l." + cc + "((" + c + ")a);"; + s += "}};"; + } else { + s = "arr[" + i + "] = null;"; + } + } else { + s = "arr[" + i + "] = null;"; + } + + System.out.println(s); + } + } + + private static void printForAlertType() throws Exception { + Class[] arr = getSwigAlerts(); + + for (int i = 0; i < arr.length; i++) { + String s = "arr[" + i + "] = "; + if (arr[i] != null) { + String c = arr[i].getSimpleName().toUpperCase(); + c = c.replace("_ALERT", ""); + s += c + ";"; + } else { + s += "UNKNOWN;"; + } + + System.out.println(s); + } + } + + private static Class[] getSwigAlerts() throws Exception { + int n = 0; + Class[] arr = new Class[Alerts.NUM_ALERT_TYPES]; + for (Class c : getClasses("com.frostwire.jlibtorrent.swig")) { + if (c.getName().endsWith("_alert")) { + Field f = c.getDeclaredField("alert_type"); + int type = f.getInt(null); + + arr[type] = c; + n++; + } + } + + return arr; + } + + private static Class[] getClasses(String packageName) throws Exception { + ClassLoader cl = Thread.currentThread().getContextClassLoader(); + String path = packageName.replace('.', '/'); + Enumeration resources = cl.getResources(path); + List dirs = new ArrayList<>(); + while (resources.hasMoreElements()) { + URL resource = resources.nextElement(); + dirs.add(new File(resource.getFile())); + } + ArrayList classes = new ArrayList<>(); + for (File directory : dirs) { + classes.addAll(findClasses(directory, packageName)); + } + return classes.toArray(new Class[classes.size()]); + } + + private static List findClasses(File directory, String packageName) throws Exception { + List classes = new ArrayList<>(); + if (!directory.exists()) { + return classes; + } + File[] files = directory.listFiles(); + for (File file : files) { + if (file.isDirectory()) { + classes.addAll(findClasses(file, packageName + "." + file.getName())); + } else if (file.getName().endsWith(".class")) { + classes.add(Class.forName(packageName + '.' + file.getName().substring(0, file.getName().length() - 6))); + } + } + return classes; + } + + private static String capitalizeAlertTypeName(String s) { + StringBuilder sb = new StringBuilder(s.length()); + + boolean capitalize = true; + for (int i = 0; i < s.length(); i++) { + char ch = s.charAt(i); + if (capitalize) { + sb.append(Character.toUpperCase(ch)); + capitalize = false; + } else if (ch == '_') { + capitalize = true; + } else { + sb.append(ch); + } + } + + return sb.toString(); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/DhtShell.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/DhtShell.java new file mode 100644 index 0000000..c3fc81f --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/DhtShell.java @@ -0,0 +1,251 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.AlertListener; +import com.frostwire.jlibtorrent.Ed25519; +import com.frostwire.jlibtorrent.Entry; +import com.frostwire.jlibtorrent.Pair; +import com.frostwire.jlibtorrent.SessionManager; +import com.frostwire.jlibtorrent.Sha1Hash; +import com.frostwire.jlibtorrent.TcpEndpoint; +import com.frostwire.jlibtorrent.Utils; +import com.frostwire.jlibtorrent.alerts.Alert; +import com.frostwire.jlibtorrent.alerts.AlertType; +import com.frostwire.jlibtorrent.alerts.DhtPutAlert; +import com.frostwire.jlibtorrent.alerts.ListenFailedAlert; +import com.frostwire.jlibtorrent.alerts.ListenSucceededAlert; + +import java.io.File; +import java.util.ArrayList; +import java.util.Scanner; + +/** + * @author gubatron + * @author aldenml + */ +public final class DhtShell { + + public static void main(String[] args) throws Throwable { + + AlertListener mainListener = new AlertListener() { + @Override + public int[] types() { + return null; + } + + @Override + public void alert(Alert alert) { + AlertType type = alert.type(); + + if (type == AlertType.LISTEN_SUCCEEDED) { + ListenSucceededAlert a = (ListenSucceededAlert) alert; + log(a.message()); + } + + if (type == AlertType.LISTEN_FAILED) { + ListenFailedAlert a = (ListenFailedAlert) alert; + log(a.message()); + } + + if (type == AlertType.DHT_PUT) { + DhtPutAlert a = (DhtPutAlert) alert; + log(a.message()); + } + } + }; + + SessionManager s = new SessionManager(); + s.addListener(mainListener); + s.start(); + + try { + File f = new File("dht_shell.dat"); + if (f.exists()) { + byte[] data = Utils.readFileToByteArray(f); + s.loadState(data); + } + } catch (Throwable e) { + log(e.getMessage()); + } + + Scanner in = new Scanner(System.in); + while (true) { + System.out.print("$ "); + + String line = in.nextLine().trim(); + + if (is_quit(line)) { + quit(s); + } else if (is_put(line)) { + put(s, line); + } else if (is_get(line)) { + get(s, line); + } else if (is_get_peers(line)) { + get_peers(s, line); + } else if (is_announce(line)) { + announce(s, line); + } else if (is_mkeys(line)) { + mkeys(line); + } else if (is_mput(line)) { + mput(s, line); + } else if (is_mget(line)) { + mget(s, line); + } else if (is_magnet(line)) { + magnet(s, line); + } else if (is_count_nodes(line)) { + count_nodes(s); + } else if (is_invalid(line)) { + invalid(line); + } + } + } + + private static void print(String s, boolean dollar) { + System.out.println(); + System.out.println(s); + if (dollar) { + System.out.print("$ "); + } + } + + private static void print(String s) { + print(s, false); + } + + private static void log(String s) { + print(s, true); + } + + private static boolean is_quit(String s) { + s = s.split(" ")[0]; + return s.equals("quit") || s.equals("exit") || s.equals("stop"); + } + + private static void quit(SessionManager s) { + print("Exiting..."); + byte[] data = s.saveState(); + try { + Utils.writeByteArrayToFile(new File("dht_shell.dat"), data, false); + } catch (Throwable e) { + print(e.getMessage()); + } + s.stop(); + System.exit(0); + } + + private static boolean is_put(String s) { + return s.startsWith("put "); + } + + private static void put(SessionManager sm, String s) { + String data = s.split(" ")[1]; + String sha1 = sm.dhtPutItem(new Entry(data)).toString(); + print("Wait for completion of put for key: " + sha1); + } + + private static boolean is_get(String s) { + return s.startsWith("get "); + } + + private static void get(SessionManager sm, String s) { + String sha1 = s.split(" ")[1]; + print("Waiting a max of 20 seconds to get data for key: " + sha1); + Entry data = sm.dhtGetItem(new Sha1Hash(sha1), 20); + print(data.toString()); + } + + private static boolean is_get_peers(String s) { + return s.startsWith("get_peers "); + } + + private static void get_peers(SessionManager sm, String s) { + String sha1 = s.split(" ")[1]; + print("Waiting a max of 20 seconds to get peers for key: " + sha1); + ArrayList peers = sm.dhtGetPeers(new Sha1Hash(sha1), 20); + print(peers.toString()); + } + + private static boolean is_announce(String s) { + return s.startsWith("announce "); + } + + private static void announce(SessionManager sm, String s) { + String sha1 = s.split(" ")[1]; + sm.dhtAnnounce(new Sha1Hash(sha1), 9000, 0); + print("Wait for completion of announce for key: " + sha1); + } + + private static boolean is_mkeys(String s) { + return s.startsWith("mkeys"); + } + + private static void mkeys(String s) { + byte[] seed = Ed25519.createSeed(); + + Pair keypair = Ed25519.createKeypair(seed); + byte[] publicKey = keypair.first; + byte[] privateKey = keypair.second; + + + byte[][] keys = new byte[2][]; + keys[0] = publicKey; + keys[1] = privateKey; + + String msg = "Save this key pair\n"; + msg += "Public: " + Utils.toHex(keys[0]) + "\n"; + msg += "Private: " + Utils.toHex(keys[1]) + "\n"; + print(msg); + } + + private static boolean is_mput(String s) { + return s.startsWith("mput "); + } + + private static void mput(SessionManager sm, String s) { + String[] arr = s.split(" "); + byte[] publicKey = Utils.fromHex(arr[1]); + byte[] privateKey = Utils.fromHex(arr[2]); + String data = arr[3]; + sm.dhtPutItem(publicKey, privateKey, new Entry(data), new byte[0]); + print("Wait for completion of mput for public key: " + arr[1]); + } + + private static boolean is_mget(String s) { + return s.startsWith("mget "); + } + + private static void mget(SessionManager sm, String s) { + String[] arr = s.split(" "); + byte[] publicKey = Utils.fromHex(arr[1]); + print("Waiting a max of 20 seconds to get mutable data for public key: " + arr[1]); + SessionManager.MutableItem data = sm.dhtGetItem(publicKey, new byte[0], 20); + print(data.item.toString()); + } + + private static boolean is_magnet(String s) { + return s.startsWith("magnet "); + } + + private static void magnet(SessionManager session, String s) { + String sha1 = s.split(" ")[1]; + String uri = "magnet:?xt=urn:btih:" + sha1; + print("Waiting a max of 20 seconds to fetch magnet for sha1: " + sha1); + byte[] data = session.fetchMagnet(uri, 20); + print(Entry.bdecode(data).toString()); + } + + private static boolean is_count_nodes(String s) { + return s.startsWith("count_nodes"); + } + + private static void count_nodes(SessionManager s) { + log("DHT contains " + s.stats().dhtNodes() + " nodes"); + } + + private static boolean is_invalid(String s) { + return !s.isEmpty(); + } + + private static void invalid(String s) { + print("Invalid command: " + s + "\n" + "Try ? for help"); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/DownloadTorrent.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/DownloadTorrent.java new file mode 100644 index 0000000..3993d68 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/DownloadTorrent.java @@ -0,0 +1,72 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.AlertListener; +import com.frostwire.jlibtorrent.LibTorrent; +import com.frostwire.jlibtorrent.SessionManager; +import com.frostwire.jlibtorrent.TorrentInfo; +import com.frostwire.jlibtorrent.alerts.AddTorrentAlert; +import com.frostwire.jlibtorrent.alerts.Alert; +import com.frostwire.jlibtorrent.alerts.AlertType; +import com.frostwire.jlibtorrent.alerts.BlockFinishedAlert; + +import java.io.File; +import java.util.concurrent.CountDownLatch; + +/** + * @author gubatron + * @author aldenml + */ +public final class DownloadTorrent { + + public static void main(String[] args) throws Throwable { + + // comment this line for a real application + args = new String[]{"/Users/aldenml/Downloads/Honey_Larochelle_Hijack_FrostClick_FrostWire_MP3_May_06_2016.torrent"}; + + File torrentFile = new File(args[0]); + + System.out.println("Using libtorrent version: " + LibTorrent.version()); + + final SessionManager s = new SessionManager(); + + final CountDownLatch signal = new CountDownLatch(1); + + s.addListener(new AlertListener() { + @Override + public int[] types() { + return null; + } + + @Override + public void alert(Alert alert) { + AlertType type = alert.type(); + + switch (type) { + case ADD_TORRENT: + System.out.println("Torrent added"); + ((AddTorrentAlert) alert).handle().resume(); + break; + case BLOCK_FINISHED: + BlockFinishedAlert a = (BlockFinishedAlert) alert; + int p = (int) (a.handle().status().progress() * 100); + System.out.println("Progress: " + p + " for torrent name: " + a.torrentName()); + System.out.println(s.stats().totalDownload()); + break; + case TORRENT_FINISHED: + System.out.println("Torrent finished"); + signal.countDown(); + break; + } + } + }); + + s.start(); + + TorrentInfo ti = new TorrentInfo(torrentFile); + s.download(ti, torrentFile.getParentFile()); + + signal.await(); + + s.stop(); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/EnumNetTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/EnumNetTest.java new file mode 100644 index 0000000..2584f03 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/EnumNetTest.java @@ -0,0 +1,61 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.AlertListener; +import com.frostwire.jlibtorrent.EnumNet; +import com.frostwire.jlibtorrent.SessionManager; +import com.frostwire.jlibtorrent.alerts.Alert; +import com.frostwire.jlibtorrent.swig.ip_route_vector; + +import java.util.List; + +/** + * @author gubatron + * @author aldenml + */ +public final class EnumNetTest { + + public static void main(String[] args) throws Throwable { + + SessionManager s = new SessionManager(); + + s.addListener(new AlertListener() { + @Override + public int[] types() { + return null; + } + + @Override + public void alert(Alert alert) { + System.out.println(alert); + //System.out.println("listen_interfaces: " + s.listenInterfaces()); + } + }); + + s.start(); + + System.out.println("Enum interfaces"); + List ipInterfaces = EnumNet.enumInterfaces(s); + for (EnumNet.IpInterface iface : ipInterfaces) { + System.out.println(iface); + } + + System.out.println("Enum routers"); + List ipRoutes = EnumNet.enumRoutes(s); + for (EnumNet.IpRoute route : ipRoutes) { + System.out.println(route); + } + + ip_route_vector ip_routes = new ip_route_vector(); + for (EnumNet.IpRoute route : ipRoutes) { + ip_routes.push_back(route.swig()); + } + for (EnumNet.IpInterface iface : ipInterfaces) { + System.out.println("Default gateway for iface=" + iface + " -> " + EnumNet.getGateway(s, iface, ip_routes)); + } + + System.out.println("Press ENTER to exit"); + System.in.read(); + + s.stop(); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/GetMagnet.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/GetMagnet.java new file mode 100644 index 0000000..ce460bc --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/GetMagnet.java @@ -0,0 +1,85 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.Entry; +import com.frostwire.jlibtorrent.SessionManager; +import com.frostwire.jlibtorrent.SessionParams; +import com.frostwire.jlibtorrent.SettingsPack; + +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +/** + * @author gubatron + * @author aldenml + */ +public final class GetMagnet { + + public static void main(String[] args) throws Throwable { + + //String uri = "magnet:?xt=urn:btih:86d0502ead28e495c9e67665340f72aa72fe304e&dn=Frostwire.5.3.6.+%5BWindows%5D&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.publicbt.com%3A80&tr=udp%3A%2F%2Ftracker.istole.it%3A6969&tr=udp%3A%2F%2Fopen.demonii.com%3A1337"; + String uri = "magnet:?xt=urn:btih:a83cc13bf4a07e85b938dcf06aa707955687ca7c"; + + final SessionManager s = new SessionManager(); + //final SessionManager s = new SessionManager(true); + + /*s.addListener(new AlertListener() { + @Override + public int[] types() { + return null; + } + + @Override + public void alert(Alert alert) { + System.out.println(alert); + } + });*/ + + SettingsPack sp = new SettingsPack(); + //sp.listenInterfaces("0.0.0.0:43567"); + //sp.listenInterfaces("[::]:43567"); + //sp.listenInterfaces("0.0.0.0:43567,[::]:43567"); + //sp.setString(settings_pack.string_types.dht_bootstrap_nodes.swigValue(), "router.silotis.us:6881"); + //sp.setString(settings_pack.string_types.dht_bootstrap_nodes.swigValue(), "router.bittorrent.com:6881"); + //sp.setString(settings_pack.string_types.dht_bootstrap_nodes.swigValue(), "dht.transmissionbt.com:6881"); + + SessionParams params = new SessionParams(sp); + + s.start(params); + + final CountDownLatch signal = new CountDownLatch(1); + + final Timer timer = new Timer(); + timer.schedule(new TimerTask() { + @Override + public void run() { + long nodes = s.stats().dhtNodes(); + // wait for at least 10 nodes in the DHT. + if (nodes >= 10) { + System.out.println("DHT contains " + nodes + " nodes"); + signal.countDown(); + timer.cancel(); + } + } + }, 0, 1000); + + System.out.println("Waiting for nodes in DHT (10 seconds)..."); + boolean r = signal.await(40, TimeUnit.SECONDS); + if (!r) { + System.out.println("DHT bootstrap timeout"); + System.exit(0); + } + + System.out.println("Fetching the magnet uri, please wait..."); + byte[] data = s.fetchMagnet(uri, 30); + + if (data != null) { + System.out.println(Entry.bdecode(data)); + } else { + System.out.println("Failed to retrieve the magnet"); + } + + s.stop(); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/GetMagnet2.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/GetMagnet2.java new file mode 100644 index 0000000..48de9d2 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/GetMagnet2.java @@ -0,0 +1,93 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.AlertListener; +import com.frostwire.jlibtorrent.SessionManager; +import com.frostwire.jlibtorrent.alerts.Alert; +import com.frostwire.jlibtorrent.alerts.AlertType; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * @author gubatron + * @author aldenml + */ +public final class GetMagnet2 { + + public static void main(String[] args) throws Throwable { + + final String uri = "magnet:?xt=urn:btih:a83cc13bf4a07e85b938dcf06aa707955687ca7c"; + + final SessionManager s = new SessionManager(); + + final CountDownLatch signal = new CountDownLatch(1); + + // the session stats are posted about once per second. + AlertListener l = new AlertListener() { + @Override + public int[] types() { + return new int[]{AlertType.SESSION_STATS.swig(), AlertType.DHT_STATS.swig()}; + } + + @Override + public void alert(Alert alert) { + if (alert.type().equals(AlertType.SESSION_STATS)) { + s.postDhtStats(); + } + + if (alert.type().equals(AlertType.DHT_STATS)) { + + long nodes = s.stats().dhtNodes(); + // wait for at least 10 nodes in the DHT. + if (nodes >= 10) { + System.out.println("DHT contains " + nodes + " nodes"); + signal.countDown(); + } + } + } + }; + + s.addListener(l); + s.start(); + s.postDhtStats(); + + System.out.println("Waiting for nodes in DHT (10 seconds)..."); + boolean r = signal.await(10, TimeUnit.SECONDS); + if (!r) { + System.out.println("DHT bootstrap timeout"); + System.exit(0); + } + + // no more trigger of DHT stats + s.removeListener(l); + + System.out.println("Fetching the magnet uri (multi thread), please wait..."); + + final AtomicInteger counter = new AtomicInteger(0); + for (int i = 0; i < 50; i++) { + final int index = i; + Thread t = new Thread() { + @Override + public void run() { + byte[] data = s.fetchMagnet(uri, 30); + + int count = counter.incrementAndGet(); + if (data != null) { + System.out.println("Success fetching magnet: " + index + "/" + count); + } else { + System.out.println("Failed to retrieve the magnet: " + index + "/" + count); + } + } + }; + + t.start(); + //t.join(); + } + + System.out.println("Press ENTER to exit"); + System.in.read(); + + s.stop(); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/GetMagnet3.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/GetMagnet3.java new file mode 100644 index 0000000..e9704fe --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/GetMagnet3.java @@ -0,0 +1,124 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.AlertListener; +import com.frostwire.jlibtorrent.Priority; +import com.frostwire.jlibtorrent.SessionManager; +import com.frostwire.jlibtorrent.TorrentHandle; +import com.frostwire.jlibtorrent.TorrentInfo; +import com.frostwire.jlibtorrent.alerts.AddTorrentAlert; +import com.frostwire.jlibtorrent.alerts.Alert; +import com.frostwire.jlibtorrent.alerts.StatsAlert; + +import java.io.File; +import java.io.FileOutputStream; +import java.sql.Time; +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +/** + * To test issue https://github.com/frostwire/frostwire-jlibtorrent/issues/180 + * + * @author gubatron + * @author aldenml + */ +public final class GetMagnet3 { + + public static void main(String[] args) throws Throwable { + + // code taken from + // https://github.com/frostwire/frostwire-jlibtorrent/issues/180#issuecomment-345458935 + // author proninyaroslav + + final String magnet = ""; + + final SessionManager s = new SessionManager(); + + final CountDownLatch signal = new CountDownLatch(1); + + // the session stats are posted about once per second. + AlertListener l = new AlertListener() { + @Override + public int[] types() { + return null; + } + + @Override + public void alert(Alert alert) { + switch (alert.type()) { + case ADD_TORRENT: + System.out.println("Torrent added"); + TorrentHandle th = ((AddTorrentAlert) alert).handle(); + th.resume(); + + TorrentInfo ti = th.torrentFile(); + Priority[] p = th.filePriorities(); + p[0] = Priority.IGNORE; + + System.out.println("Expected priorities:"); + for (int i = 0; i < ti.numFiles(); i++) + System.out.println(String.format("priority=%-8sfile=%s", + p[i], + ti.files().fileName(i))); + System.out.println(); + th.prioritizeFiles(p); + break; + case STATS: + th = ((StatsAlert) alert).handle(); + ti = th.torrentFile(); + p = th.filePriorities(); + System.out.println(String.format("[%s] Current priorities:", + new Time(System.currentTimeMillis()))); + for (int i = 0; i < ti.numFiles(); i++) + System.out.println(String.format("priority=%-8sfile=%s", + p[i], + ti.files().fileName(i))); + System.out.println(); + break; + case TORRENT_FINISHED: + System.out.println("Torrent finished\n"); + break; + } + } + }; + + s.addListener(l); + s.start(); + + final Timer timer = new Timer(); + timer.schedule(new TimerTask() { + @Override + public void run() { + long nodes = s.stats().dhtNodes(); + if (nodes >= 10) { + System.out.println("DHT contains " + nodes + " nodes"); + signal.countDown(); + timer.cancel(); + } + } + }, 0, 1000); + + System.out.println("Waiting for nodes in DHT (10 seconds)..."); + boolean r = signal.await(10, TimeUnit.SECONDS); + if (!r) { + System.out.println("DHT bootstrap timeout"); + System.exit(0); + } + + System.out.println("Fetching the magnet uri, please wait..."); + byte[] data = s.fetchMagnet(magnet, 30, true); + if (data == null) { + System.out.println("data == null"); + s.stop(); + return; + } + File f = File.createTempFile("test", "torrent"); + FileOutputStream fos = new FileOutputStream(f); + fos.write(data); + s.download(new TorrentInfo(f), new File(System.getProperty("user.dir"))); + + System.in.read(); + s.stop(); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/GetMagnet4.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/GetMagnet4.java new file mode 100644 index 0000000..8c74e1d --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/GetMagnet4.java @@ -0,0 +1,118 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.AlertListener; +import com.frostwire.jlibtorrent.Priority; +import com.frostwire.jlibtorrent.SessionManager; +import com.frostwire.jlibtorrent.TorrentHandle; +import com.frostwire.jlibtorrent.TorrentInfo; +import com.frostwire.jlibtorrent.alerts.AddTorrentAlert; +import com.frostwire.jlibtorrent.alerts.Alert; +import com.frostwire.jlibtorrent.alerts.MetadataReceivedAlert; +import com.frostwire.jlibtorrent.alerts.StatsAlert; + +import java.sql.Time; +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +/** + * To test issue https://github.com/frostwire/frostwire-jlibtorrent/issues/174 + * + * @author gubatron + * @author aldenml + */ +public final class GetMagnet4 { + + public static void main(String[] args) throws Throwable { + + final String magnet = ""; + + final SessionManager s = new SessionManager(); + + AlertListener l = new AlertListener() { + @Override + public int[] types() { + return null; + } + + @Override + public void alert(Alert alert) { + switch (alert.type()) { + case ADD_TORRENT: + System.out.println("Torrent added"); + TorrentHandle th = ((AddTorrentAlert) alert).handle(); + th.resume(); + break; + case METADATA_RECEIVED: + th = ((MetadataReceivedAlert) alert).handle(); + TorrentInfo ti = th.torrentFile(); + Priority[] p = th.filePriorities(); + p[0] = Priority.IGNORE; + + System.out.println("Expected priorities:"); + for (int i = 0; i < ti.numFiles(); i++) + System.out.println(String.format("priority=%-8sfile=%s", + p[i], + ti.files().fileName(i))); + System.out.println(); + th.prioritizeFiles(p); + break; + case STATS: + th = ((StatsAlert) alert).handle(); + ti = th.torrentFile(); + // ti is null while the metadata is not received + if (ti != null) { + p = th.filePriorities(); + System.out.println(String.format("[%s] Current priorities:", + new Time(System.currentTimeMillis()))); + for (int i = 0; i < ti.numFiles(); i++) + System.out.println(String.format("priority=%-8sfile=%s", + p[i], + ti.files().fileName(i))); + System.out.println(); + } + break; + case TORRENT_FINISHED: + System.out.println("Torrent finished\n"); + break; + } + } + }; + + s.addListener(l); + s.start(); + + waitForNodesInDHT(s); + + System.out.println("About to download magnet: " + magnet); + s.download(magnet, null); + + System.in.read(); + s.stop(); + } + + private static void waitForNodesInDHT(final SessionManager s) throws InterruptedException { + final CountDownLatch signal = new CountDownLatch(1); + + final Timer timer = new Timer(); + timer.schedule(new TimerTask() { + @Override + public void run() { + long nodes = s.stats().dhtNodes(); + if (nodes >= 10) { + System.out.println("DHT contains " + nodes + " nodes"); + signal.countDown(); + timer.cancel(); + } + } + }, 0, 1000); + + System.out.println("Waiting for nodes in DHT (10 seconds)..."); + boolean r = signal.await(10, TimeUnit.SECONDS); + if (!r) { + System.out.println("DHT bootstrap timeout"); + System.exit(0); + } + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/GetMagnet5.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/GetMagnet5.java new file mode 100644 index 0000000..ac1cbba --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/GetMagnet5.java @@ -0,0 +1,166 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.AlertListener; +import com.frostwire.jlibtorrent.Entry; +import com.frostwire.jlibtorrent.SessionManager; +import com.frostwire.jlibtorrent.TorrentInfo; +import com.frostwire.jlibtorrent.alerts.AddTorrentAlert; +import com.frostwire.jlibtorrent.alerts.Alert; +import com.frostwire.jlibtorrent.alerts.AlertType; +import com.frostwire.jlibtorrent.alerts.BlockFinishedAlert; +import com.frostwire.jlibtorrent.alerts.DhtErrorAlert; +import com.frostwire.jlibtorrent.alerts.PieceFinishedAlert; +import com.frostwire.jlibtorrent.alerts.StateUpdateAlert; +import com.frostwire.jlibtorrent.alerts.TorrentErrorAlert; +import com.frostwire.jlibtorrent.alerts.TorrentFinishedAlert; + +import java.io.File; +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +/** + * To test issue https://github.com/frostwire/frostwire-jlibtorrent/issues/195 + * + * @author gubatron + * @author aldenml + */ +public final class GetMagnet5 { + + public static void main(String[] args) throws Throwable { + + final String magnet = "magnet:?xt=urn:btih:737d38ed01da1df727a3e0521a6f2c457cb812de&dn=HOME+-+a+film+by+Yann+Arthus-Bertrand+%282009%29+%5BEnglish%5D+%5BHD+MP4%5D&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.zer0day.to%3A1337&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969"; + + final SessionManager s = new SessionManager(); + + startdl(magnet, s); + + System.in.read(); + s.stop(); + } + + private static void waitForNodesInDHT(final SessionManager s) throws InterruptedException { + final CountDownLatch signal = new CountDownLatch(1); + + final Timer timer = new Timer(); + timer.schedule(new TimerTask() { + @Override + public void run() { + long nodes = s.stats().dhtNodes(); + if (nodes >= 10) { + System.out.println("DHT contains " + nodes + " nodes"); + signal.countDown(); + timer.cancel(); + } + } + }, 0, 1000); + + System.out.println("Waiting for nodes in DHT (10 seconds)..."); + boolean r = signal.await(10, TimeUnit.SECONDS); + if (!r) { + System.out.println("DHT bootstrap timeout"); + System.exit(0); + } + } + + private static void log(String s) { + System.out.println(s); + } + + private static void startdl(String magnetLink, SessionManager sm) throws InterruptedException { + //Torrent dbTorrent = torrentService.findByTorrentName(name); + String link = magnetLink;//dbTorrent.getPathToTorrent(); + File saveDir = new File("torrents/"); + if (!saveDir.exists()) { + saveDir.mkdirs(); + } + final SessionManager s = sm;//storrent.getSessionManager(); + AlertListener l = new AlertListener() { + private int grade = 0; + + @Override + public int[] types() { + return null; + } + + @Override + public void alert(Alert alert) { + AlertType type = alert.type(); + switch (type) { + case ADD_TORRENT: + //((AddTorrentAlert) alert).handle().setFlags(TorrentFlags.SEQUENTIAL_DOWNLOAD); + ((AddTorrentAlert) alert).handle().resume(); + break; + case PIECE_FINISHED: + int progress = (int) (((PieceFinishedAlert) alert).handle().status().progress() * 100); + if (grade < progress / 20) { + int index = (int) (((PieceFinishedAlert) alert).pieceIndex()); + log("index: " + index); + grade += 1; + s.downloadRate(); + log(progress + " % downloaded"); + } + System.out.println("PIECE_FINISHED"); + break; + case TORRENT_FINISHED: + grade = 0; + ((TorrentFinishedAlert) alert).handle().pause(); + System.out.println("TORRENT_FINISHED"); + break; + case TORRENT_ERROR: + log(((TorrentErrorAlert) alert).what()); + log("is paused = " + ((TorrentErrorAlert) alert).handle().status()); + break; + case BLOCK_FINISHED: + System.out.println("HERE: " + ((BlockFinishedAlert) alert).handle().status().progress()); + progress = (int) (((BlockFinishedAlert) alert).handle().status().progress() * 100); + if (grade < progress / 20) { + int index = (int) (((BlockFinishedAlert) alert).pieceIndex()); + log("index: " + index); + grade += 1; + s.downloadRate(); + log(progress + " % downloaded"); + } + System.out.println("BLOCK_FINISHED"); + break; + case STATE_UPDATE: + log(((StateUpdateAlert) alert).message()); + break; + case METADATA_RECEIVED: + log("metadata received"); + break; + case DHT_ERROR: + log("dht error"); + log(((DhtErrorAlert) alert).message()); + break; + default: + break; + } + } + }; + s.addListener(l); + if (s.isRunning() != true) + s.start(); + if (link.startsWith("magnet:?")) { + waitForNodesInDHT(s); + byte[] data = s.fetchMagnet(link, 30); + TorrentInfo ti = TorrentInfo.bdecode(data); + log(Entry.bdecode(data).toString()); + log("is valid ? =" + ti.isValid()); + s.download(ti, saveDir); + log("torrent added with name = " + ti.name()); + //storrent.addTh(s.find(ti.infoHash()), name); + log(s.find(ti.infoHash()).isValid() + " isvalid"); + log("torrent added to session"); + //this.videoname = ti.name(); + int i = 0; + while (i < 20) { + TimeUnit.SECONDS.sleep(1); + log(s.find(ti.infoHash()).status().state() + " state"); + log(s.find(ti.infoHash()).status().progress() * 100 + " progress"); + i++; + } + } + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/PieceMap.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/PieceMap.java new file mode 100644 index 0000000..17afcfa --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/PieceMap.java @@ -0,0 +1,39 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.PiecesTracker; +import com.frostwire.jlibtorrent.TorrentInfo; + +import java.io.File; + +/** + * @author gubatron + * @author aldenml + */ +public final class PieceMap { + + + public static void main(String[] args) throws Throwable { + + // comment this line for a real application + args = new String[]{"/Users/aldenml/Downloads/ReSet_Resynthformation_SOSEP051_FrostClick_FrostWire_6_28_2014.torrent"}; + + File torrentFile = new File(args[0]); + + TorrentInfo ti = new TorrentInfo(torrentFile); + + int numFiles = ti.numFiles(); + int numPieces = ti.numPieces(); + + System.out.println("Num Pieces: " + numPieces); + + PiecesTracker tracker = new PiecesTracker(ti); + + for (int i = 0; i < numPieces / 2; i++) { + tracker.setComplete(i, true); + } + + for (int i = 0; i < numFiles; i++) { + System.out.println("File index (seq)completed: " + tracker.getSequentialDownloadedBytes(i)); + } + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/PluginTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/PluginTest.java new file mode 100644 index 0000000..ca4ae15 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/PluginTest.java @@ -0,0 +1,50 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.AlertListener; +import com.frostwire.jlibtorrent.BDecodeNode; +import com.frostwire.jlibtorrent.Entry; +import com.frostwire.jlibtorrent.Plugin; +import com.frostwire.jlibtorrent.SessionHandle; +import com.frostwire.jlibtorrent.SessionManager; +import com.frostwire.jlibtorrent.UdpEndpoint; +import com.frostwire.jlibtorrent.alerts.Alert; + +/** + * @author gubatron + * @author aldenml + */ +public final class PluginTest { + + public static void main(String[] args) throws Throwable { + + SessionManager s = new SessionManager(); + + s.addListener(new AlertListener() { + @Override + public int[] types() { + return null; + } + + @Override + public void alert(Alert alert) { + System.out.println(alert); + } + }); + + s.start(); + + SessionHandle h = new SessionHandle(s.swig()); + h.addExtension(new Plugin() { + @Override + public boolean onDhtRequest(String query, UdpEndpoint source, BDecodeNode message, Entry response) { + System.out.println("DHT MSG: " + query + ", from: " + source); + return false; + } + }); + + System.out.println("Press ENTER to exit"); + System.in.read(); + + s.stop(); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/PosixTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/PosixTest.java new file mode 100644 index 0000000..1328799 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/PosixTest.java @@ -0,0 +1,104 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.AlertListener; +import com.frostwire.jlibtorrent.SessionManager; +import com.frostwire.jlibtorrent.TorrentInfo; +import com.frostwire.jlibtorrent.alerts.AddTorrentAlert; +import com.frostwire.jlibtorrent.alerts.Alert; +import com.frostwire.jlibtorrent.alerts.AlertType; +import com.frostwire.jlibtorrent.alerts.BlockFinishedAlert; +import com.frostwire.jlibtorrent.swig.libtorrent; +import com.frostwire.jlibtorrent.swig.posix_stat_t; +import com.frostwire.jlibtorrent.swig.posix_wrapper; + +import java.io.File; +import java.util.concurrent.CountDownLatch; + +/** + * @author gubatron + * @author aldenml + */ +public final class PosixTest { + + public static void main(String[] args) throws Throwable { + + posix_wrapper p = new posix_wrapper() { + + @Override + public int open(String path, int flags, int mode) { + System.out.println("open: " + path); + return super.open(path, flags, mode); + } + + @Override + public int stat(String path, posix_stat_t buf) { + System.out.println("stat: " + path); + return super.stat(path, buf); + } + + @Override + public int mkdir(String path, int mode) { + System.out.println("mkdir: " + path); + return super.mkdir(path, mode); + } + + @Override + public int rename(String oldpath, String newpath) { + System.out.println("rename: " + newpath); + return super.rename(oldpath, newpath); + } + + @Override + public int remove(String path) { + System.out.println("remove: " + path); + return super.remove(path); + } + }; + + p.swigReleaseOwnership(); + libtorrent.set_posix_wrapper(p); + + // comment this line for a real application + args = new String[]{"/Users/aldenml/Downloads/Honey_Larochelle_Hijack_FrostClick_FrostWire_MP3_May_06_2016.torrent"}; + + File torrentFile = new File(args[0]); + + final SessionManager s = new SessionManager(); + + final CountDownLatch signal = new CountDownLatch(1); + + s.addListener(new AlertListener() { + @Override + public int[] types() { + return null; + } + + @Override + public void alert(Alert alert) { + AlertType type = alert.type(); + + switch (type) { + case ADD_TORRENT: + System.out.println("Torrent added"); + ((AddTorrentAlert) alert).handle().resume(); + break; + case BLOCK_FINISHED: + BlockFinishedAlert a = (BlockFinishedAlert) alert; + int p = (int) (a.handle().status().progress() * 100); + System.out.println("Progress: " + p + " for torrent name: " + a.torrentName()); + System.out.println(s.stats().totalDownload()); + break; + } + } + }); + + s.start(); + + TorrentInfo ti = new TorrentInfo(torrentFile); + s.download(ti, torrentFile.getParentFile()); + + signal.await(); + + s.stop(); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/PrintMetrics.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/PrintMetrics.java new file mode 100644 index 0000000..ac2f7e0 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/PrintMetrics.java @@ -0,0 +1,18 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.LibTorrent; +import com.frostwire.jlibtorrent.StatsMetric; + +/** + * @author gubatron + * @author aldenml + */ +public final class PrintMetrics { + + public static void main(String[] args) throws Throwable { + + for (StatsMetric m : LibTorrent.sessionStatsMetrics()) { + System.out.println(m); + } + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/ReadBEncoded.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/ReadBEncoded.java new file mode 100644 index 0000000..210c941 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/ReadBEncoded.java @@ -0,0 +1,23 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.BDecodeNode; +import com.frostwire.jlibtorrent.Utils; + +import java.io.File; + +/** + * @author gubatron + * @author aldenml + */ +public final class ReadBEncoded { + + public static void main(String[] args) throws Throwable { + args = new String[]{"/Users/aldenml/Downloads/303dde355f99c9b903efaeba57e23194a7a6713f.resume"}; + + byte[] data = Utils.readFileToByteArray(new File(args[0])); + + BDecodeNode n = BDecodeNode.bdecode(data); + + System.out.println(n); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/ReadTorrent.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/ReadTorrent.java new file mode 100644 index 0000000..8eab2d4 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/ReadTorrent.java @@ -0,0 +1,35 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.TorrentInfo; + +import java.io.File; +import java.io.RandomAccessFile; +import java.nio.MappedByteBuffer; +import java.nio.channels.FileChannel; + +/** + * @author gubatron + * @author aldenml + */ +public final class ReadTorrent { + + public static void main(String[] args) throws Throwable { + args = new String[]{"/Users/aldenml/Downloads/Honey_Larochelle_Hijack_FrostClick_FrostWire_MP3_May_06_2016.torrent"}; + + File torrentFile = new File(args[0]); + + System.out.println("Reading all in memory"); + TorrentInfo ti = new TorrentInfo(torrentFile); + System.out.println("info-hash: " + ti.infoHash()); + System.out.println(ti.toEntry()); + + System.out.println("Reading with memory mapped"); + FileChannel fc = new RandomAccessFile(args[0], "r").getChannel(); + MappedByteBuffer buffer = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()); + TorrentInfo ti2 = new TorrentInfo(buffer); + System.out.println("info-hash: " + ti2.infoHash()); + System.out.println("creator: " + ti2.creator()); + System.out.println("comment: " + ti2.comment()); + System.out.println(ti2.toEntry()); + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/ResumeTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/ResumeTest.java new file mode 100644 index 0000000..8c51083 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/ResumeTest.java @@ -0,0 +1,101 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.AlertListener; +import com.frostwire.jlibtorrent.Entry; +import com.frostwire.jlibtorrent.SessionManager; +import com.frostwire.jlibtorrent.TorrentHandle; +import com.frostwire.jlibtorrent.TorrentInfo; +import com.frostwire.jlibtorrent.TorrentStatus; +import com.frostwire.jlibtorrent.Utils; +import com.frostwire.jlibtorrent.Vectors; +import com.frostwire.jlibtorrent.alerts.AddTorrentAlert; +import com.frostwire.jlibtorrent.alerts.Alert; +import com.frostwire.jlibtorrent.alerts.AlertType; +import com.frostwire.jlibtorrent.alerts.SaveResumeDataAlert; +import com.frostwire.jlibtorrent.alerts.StatsAlert; +import com.frostwire.jlibtorrent.swig.add_torrent_params; +import com.frostwire.jlibtorrent.swig.byte_vector; + +import java.io.File; +import java.io.IOException; +import java.util.concurrent.CountDownLatch; + +public final class ResumeTest { + + public static void main(String[] args) throws Throwable { + File torrentFile = new File("/Users/aldenml/Downloads/FROSTCLICK_FROSTWIRE_CREATIVE_COMMONS_MIXTAPE_VOL_6__MP3__December_2017.torrent"); + + final SessionManager s = new SessionManager(); + final CountDownLatch signal = new CountDownLatch(10); + final CountDownLatch signalResumeData = new CountDownLatch(1); + s.addListener(new AlertListener() { + @Override + public int[] types() { + return null; + } + + @Override + public void alert(Alert alert) { + AlertType type = alert.type(); + + switch (type) { + case ADD_TORRENT: + System.out.println("Torrent added"); + ((AddTorrentAlert) alert).handle().resume(); + break; + case TORRENT_FINISHED: + System.out.println("Torrent finished"); + //((TorrentFinishedAlert) alert).handle().saveResumeData(TorrentHandle.SAVE_INFO_DICT); + break; + case TORRENT_PAUSED: + System.out.println("Torrent paused"); + break; + case SAVE_RESUME_DATA: + System.out.println("Torrent saveResumeData"); + serializeResumeData((SaveResumeDataAlert) alert); + signalResumeData.countDown(); + break; + case STATS: + TorrentHandle th = ((StatsAlert) alert).handle(); + if (th.status().isFinished()) { + TorrentStatus ts = th.status(); + System.out.println(String.format("seeding time=%d\nactive time=%d\n", + ts.seedingDuration(), ts.activeDuration())); + signal.countDown(); + } + break; + } + } + }); + + s.start(); + TorrentInfo ti = new TorrentInfo(torrentFile); + s.download(ti, torrentFile.getParentFile()); + signal.await(); + + // save resume data just before restarting session + s.find(ti.infoHash()).saveResumeData(TorrentHandle.SAVE_INFO_DICT); + + signalResumeData.await(); + + System.out.println(Entry.bdecode(new File("resume.dat")).toString()); + + s.restart(); + s.download(ti, torrentFile.getParentFile(), new File("resume.dat"), null, null); + + System.in.read(); + s.stop(); + } + + private static void serializeResumeData(SaveResumeDataAlert alert) { + File resume = new File("resume.dat"); + if (resume.exists()) + return; + byte_vector data = add_torrent_params.write_resume_data(alert.params().swig()).bencode(); + try { + Utils.writeByteArrayToFile(resume, Vectors.byte_vector2bytes(data), false); + } catch (IOException e) { + System.err.println("Error saving resume data"); + } + } +} diff --git a/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/SessionTest.java b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/SessionTest.java new file mode 100644 index 0000000..550b877 --- /dev/null +++ b/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/SessionTest.java @@ -0,0 +1,36 @@ +package com.frostwire.jlibtorrent.demo; + +import com.frostwire.jlibtorrent.AlertListener; +import com.frostwire.jlibtorrent.SessionManager; +import com.frostwire.jlibtorrent.alerts.Alert; + +/** + * @author gubatron + * @author aldenml + */ +public final class SessionTest { + + public static void main(String[] args) throws Throwable { + + SessionManager s = new SessionManager(); + + s.addListener(new AlertListener() { + @Override + public int[] types() { + return null; + } + + @Override + public void alert(Alert alert) { + System.out.println(alert); + } + }); + + s.start(); + + System.out.println("Press ENTER to exit"); + System.in.read(); + + s.stop(); + } +} diff --git a/frostwire-jlibtorrent/src/test/resources/AJC_and_The_Envelope_Pushers_Fallen_Star_FrostClick_FrostWire_MP3_January_16_2017.torrent b/frostwire-jlibtorrent/src/test/resources/AJC_and_The_Envelope_Pushers_Fallen_Star_FrostClick_FrostWire_MP3_January_16_2017.torrent new file mode 100644 index 0000000..4f287f1 Binary files /dev/null and b/frostwire-jlibtorrent/src/test/resources/AJC_and_The_Envelope_Pushers_Fallen_Star_FrostClick_FrostWire_MP3_January_16_2017.torrent differ diff --git a/frostwire-jlibtorrent/src/test/resources/Honey_Larochelle_Hijack_FrostClick_FrostWire_MP3_May_06_2016.torrent b/frostwire-jlibtorrent/src/test/resources/Honey_Larochelle_Hijack_FrostClick_FrostWire_MP3_May_06_2016.torrent new file mode 100644 index 0000000..2aff6b4 Binary files /dev/null and b/frostwire-jlibtorrent/src/test/resources/Honey_Larochelle_Hijack_FrostClick_FrostWire_MP3_May_06_2016.torrent differ diff --git a/frostwire-jlibtorrent/src/test/resources/Shinobi_Ninja_FrostWire_Mixtape__MP3_128K_Oct_02_2015.torrent b/frostwire-jlibtorrent/src/test/resources/Shinobi_Ninja_FrostWire_Mixtape__MP3_128K_Oct_02_2015.torrent new file mode 100644 index 0000000..dd413aa Binary files /dev/null and b/frostwire-jlibtorrent/src/test/resources/Shinobi_Ninja_FrostWire_Mixtape__MP3_128K_Oct_02_2015.torrent differ diff --git a/frostwire-jlibtorrent/src/test/resources/test1.torrent b/frostwire-jlibtorrent/src/test/resources/test1.torrent new file mode 100644 index 0000000..cf06f31 Binary files /dev/null and b/frostwire-jlibtorrent/src/test/resources/test1.torrent differ diff --git a/frostwire-jlibtorrent/src/test/resources/test2.torrent b/frostwire-jlibtorrent/src/test/resources/test2.torrent new file mode 100644 index 0000000..0781c54 Binary files /dev/null and b/frostwire-jlibtorrent/src/test/resources/test2.torrent differ diff --git a/frostwire-jlibtorrent/src/test/resources/test3.torrent b/frostwire-jlibtorrent/src/test/resources/test3.torrent new file mode 100644 index 0000000..d25d4f4 Binary files /dev/null and b/frostwire-jlibtorrent/src/test/resources/test3.torrent differ diff --git a/frostwire-jlibtorrent/src/test/resources/test4.torrent b/frostwire-jlibtorrent/src/test/resources/test4.torrent new file mode 100644 index 0000000..5a006d1 Binary files /dev/null and b/frostwire-jlibtorrent/src/test/resources/test4.torrent differ diff --git a/frostwire-jlibtorrent/src/test/resources/test5.torrent b/frostwire-jlibtorrent/src/test/resources/test5.torrent new file mode 100644 index 0000000..92c6a27 Binary files /dev/null and b/frostwire-jlibtorrent/src/test/resources/test5.torrent differ diff --git a/frostwire-jlibtorrent/swig/Jamfile b/frostwire-jlibtorrent/swig/Jamfile new file mode 100644 index 0000000..9109478 --- /dev/null +++ b/frostwire-jlibtorrent/swig/Jamfile @@ -0,0 +1,93 @@ +import os ; +import feature : feature ; + +BOOST_ROOT = [ os.environ BOOST_ROOT ] ; +ECHO "BOOST_ROOT = "$(BOOST_ROOT) ; +if ! $(BOOST_ROOT) +{ + EXIT "You need to define BOOST_ROOT" ; +} + +OPENSSL_ROOT = [ os.environ OPENSSL_ROOT ] ; +ECHO "OPENSSL_ROOT = "$(OPENSSL_ROOT) ; +if ! $(OPENSSL_ROOT) +{ + EXIT "You need to define OPENSSL_ROOT" ; +} + +LIBTORRENT_ROOT = [ os.environ LIBTORRENT_ROOT ] ; +ECHO "LIBTORRENT_ROOT = "$(LIBTORRENT_ROOT) ; +if ! $(LIBTORRENT_ROOT) +{ + EXIT "You need to define LIBTORRENT_ROOT" ; +} + +use-project /torrent : $(LIBTORRENT_ROOT) ; + +rule libtorrent_linking ( properties * ) +{ + local result ; + + result += off ; + result += on ; + result += openssl ; + result += off ; + result += off ; + + if freebsd in $(properties) + { + result += /torrent//torrent/shared ; + } + else + { + result += /torrent//torrent/static ; + } + + return $(result) ; +} + +feature iostream : off on : composite propagated link-incompatible ; +feature.compose off : BOOST_NO_IOSTREAM ; + +feature o2 : off s1 s2 : composite propagated link-incompatible ; +feature.compose s1 : -Os ; +feature.compose s2 : -Oz ; + +# feature lto : on gold : composite propagated link-incompatible ; +# feature.compose on : -flto -flto ; +# feature.compose gold : -flto -flto +# -fuse-ld=gold ; + +feature ssl : on off : composite propagated link-incompatible ; +feature.compose on : + $(OPENSSL_ROOT)/include + $(OPENSSL_ROOT)/lib + ; + +lib jlibtorrent + + : # sources + libtorrent_jni.cpp + + : # requirements + @libtorrent_linking + . + # o2 + darwin:s1 + android:s1 + linux:s1 + windows:s1 + # lto + # darwin:off + # android:off + # linux:off + # windows:off + + space + + : # default build + shared + + : # usage-requirements + . + ; diff --git a/frostwire-jlibtorrent/swig/Jamroot.jam b/frostwire-jlibtorrent/swig/Jamroot.jam new file mode 100644 index 0000000..e69de29 diff --git a/frostwire-jlibtorrent/swig/README.md b/frostwire-jlibtorrent/swig/README.md new file mode 100644 index 0000000..f3f2e9d --- /dev/null +++ b/frostwire-jlibtorrent/swig/README.md @@ -0,0 +1,23 @@ +# libtorrent.i, libtorrent.h + +libtorrent.i contains SWIG extensions, ignores, and directives needed to wrap the libtorrent library. +It includes `libtorrent.h` where other C++ functions are defined manually. + +# run-swig.sh + +Whenever you make changes to libtorrent.i and you need SWIG to re-write java classes in the parent java folders you must run this file manually. + +It's not invoked by any of the build-scripts. The build-scripts assume the autogenerated java code by SWIG is already there. + +# build-utils.shinc, build-macos.sh, build-linux-x86_64.sh, build-android-arm.sh, build-andriod-arm64.sh, build-android-x86.sh, build-android-x86_64.sh + +These are scripts meant to be run on your local machine so that you can debug and test any changes you may have done. + +Otherwise you'll have to push your local changes to your repository, which should be configured with Travis-CI, and AWS S3 to have travis remotely build your latest changes. + +This is a very slow process, therefore we have these build scripts which are meant to be identical to ../travis.yml + +# package-remote-build.sh + +This script downloads the latest .so, .dlls and .dylib files from https://s3.amazonaws.com/gubatron-jlibtorrent/release///, places them inside the swig/bin/release// and then invokes the parent folder's `gradle build` command to generate all the release .jars we distribute at +https://github.com/frostwire/frostwire-jlibtorrent/releases diff --git a/frostwire-jlibtorrent/swig/android-ndk-r21d.zip b/frostwire-jlibtorrent/swig/android-ndk-r21d.zip new file mode 100644 index 0000000..a3e709b Binary files /dev/null and b/frostwire-jlibtorrent/swig/android-ndk-r21d.zip differ diff --git a/frostwire-jlibtorrent/swig/build-android-arm.sh b/frostwire-jlibtorrent/swig/build-android-arm.sh new file mode 100755 index 0000000..640b013 --- /dev/null +++ b/frostwire-jlibtorrent/swig/build-android-arm.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# This script is meant to run here inside the swig folder +# It's supposed to be a one step build for the java jar and android (.so enclosing) jars (armv7 and x86) +# Output .jar files will be at: +# ../build/libs/${LIBRARY_NAME}-.jar +# ../build/libs/${LIBRARY_NAME}-android-arm-.jar +# remote android-arm build with travis is available at https://s3.amazonaws.com/gubatron-jlibtorrent/release/android/arm64-v8a/libjlibtorrent.so +source build-utils.shinc +check_min_req_vars +export os_arch=arm +export os_build=android +export android_api=21 +export SHARED_LIB=lib${LIBRARY_NAME}.so +export CXX=g++ +export NDK_VERSION=r21d +prepare_android_toolchain +abort_if_var_unset "ANDROID_TOOLCHAIN" ${ANDROID_TOOLCHAIN} +export CC=${ANDROID_TOOLCHAIN}/bin/armv7a-linux-androideabi${android_api}-clang +export run_openssl_configure="./Configure linux-${os_arch}v4 ${OPENSSL_NO_OPTS} -march=armv7-a -mfpu=neon -fPIC --prefix=${OPENSSL_ROOT}"; +export run_readelf="${ANDROID_TOOLCHAIN}/bin/arm-linux-androideabi-readelf -d bin/release/${os_build}/${os_arch}eabi-v7a/${SHARED_LIB}" +export run_bjam="${BOOST_ROOT}/b2 -j8 --user-config=config/${os_build}-${os_arch}-config.jam variant=release toolset=clang-linux-${os_arch} target-os=${os_build} location=bin/release/${os_build}/${os_arch}eabi-v7a" +export run_strip="${ANDROID_TOOLCHAIN}/bin/arm-linux-androideabi-strip --strip-unneeded -x -g bin/release/${os_build}/${os_arch}eabi-v7a/${SHARED_LIB}" +export run_objcopy="${ANDROID_TOOLCHAIN}/bin/arm-linux-androideabi-objcopy --only-keep-debug bin/release/${os_build}/${os_arch}eabi-v7a/${SHARED_LIB} bin/release/${os_build}/{$os_arch}eabi-v7a/${SHARED_LIB}.debug" +export PATH=$ANDROID_TOOLCHAIN/arm-linux-androideabi/bin:$PATH; +sed -i 's/RANLIB = ranlib/RANLIB = "${ANDROID_TOOLCHAIN}\/bin\/arm-linux-androideabi-ranlib"/g' ${BOOST_ROOT}/tools/build/src/tools/gcc.jam; +create_folder_if_it_doesnt_exist ${SRC} +prompt_msg "About to prepare BOOST ${BOOST_VERSION}" +prepare_boost +prepare_openssl +build_openssl +prepare_android_standalone_toolchain +export CC=${ANDROID_TOOLCHAIN}/bin/armv7a-linux-androideabi${android_api}-clang++ +prepare_libtorrent +./run-swig.sh +build_libraries diff --git a/frostwire-jlibtorrent/swig/build-android-arm64.sh b/frostwire-jlibtorrent/swig/build-android-arm64.sh new file mode 100755 index 0000000..461a8f8 --- /dev/null +++ b/frostwire-jlibtorrent/swig/build-android-arm64.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +# This script is meant to run here inside the swig folder +# It's supposed to be a one step build for the java jar and android (.so enclosing) jars (armv8 and x86) +# Output .jar files will be at: +# ../build/libs/${LIBRARY_NAME}-.jar +# ../build/libs/${LIBRARY_NAME}-android-arm64-.jar +# remote android-arm build with travis is available at https://s3.amazonaws.com/gubatron-jlibtorrent/release/android/arm64-v8a/libjlibtorrent.so +source build-utils.shinc +check_min_req_vars +export os_arch=arm64 +export os_build=android +export android_api=21 +export SHARED_LIB=lib${LIBRARY_NAME}.so +export CXX=g++ +export NDK_VERSION=r21d +prepare_android_toolchain +abort_if_var_unset "ANDROID_TOOLCHAIN" ${ANDROID_TOOLCHAIN} +export CC=${ANDROID_TOOLCHAIN}/bin/aarch64-linux-android${android_api}-clang +export run_openssl_configure="./Configure linux-aarch64 ${OPENSSL_NO_OPTS} -march=armv8-a+crypto -mfpu=neon -fPIC --prefix=${OPENSSL_ROOT}"; +export run_readelf="${ANDROID_TOOLCHAIN}/bin/aarch64-linux-android-readelf -d bin/release/${os_build}/${os_arch}-v8a/${SHARED_LIB}" +export run_bjam="${BOOST_ROOT}/b2 -j8 --user-config=config/${os_build}-${os_arch}-config.jam variant=release toolset=clang-${os_arch} target-os=${os_build} location=bin/release/${os_build}/${os_arch}-v8a" +export run_strip="${ANDROID_TOOLCHAIN}/bin/aarch64-linux-android-strip --strip-unneeded -x -g bin/release/${os_build}/${os_arch}-v8a/${SHARED_LIB}" +export run_objcopy="${ANDROID_TOOLCHAIN}/bin/aarch64-linux-android-objcopy --only-keep-debug bin/release/${os_build}/${os_arch}-v8a/${SHARED_LIB} bin/release/${os_build}/{$os_arch}-v8a/${SHARED_LIB}.debug" +export PATH=$ANDROID_TOOLCHAIN/aarch64-linux-android/bin:$PATH; +sed -i 's/RANLIB = ranlib/RANLIB = "${ANDROID_TOOLCHAIN}\/bin\/aarch64-linux-android-ranlib"/g' ${BOOST_ROOT}/tools/build/src/tools/gcc.jam; +create_folder_if_it_doesnt_exist ${SRC} +prompt_msg "About to prepare BOOST ${BOOST_VERSION}" +prepare_boost +prepare_openssl +build_openssl +export CC=${ANDROID_TOOLCHAIN}/bin/aarch64-linux-android${android_api}-clang++ +prepare_libtorrent +./run-swig.sh +build_libraries diff --git a/frostwire-jlibtorrent/swig/build-android-x86.sh b/frostwire-jlibtorrent/swig/build-android-x86.sh new file mode 100755 index 0000000..c0f5ded --- /dev/null +++ b/frostwire-jlibtorrent/swig/build-android-x86.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +# This script is meant to run here inside the swig folder +# It's supposed to be a one step build for the java jar and android (.so enclosing) jars (armv7 and x86) +# Output .jar files will be at: +# ../build/libs/jlibtorrent-.jar +# ../build/libs/${LIBRARY_NAME}-android-x86-.jar +# remote android-x86 build with travis is available at https://s3.amazonaws.com/gubatron-${LIBRARY_NAME}/release/android/x86/lib${LIBRARY_NAME}.so +source build-utils.shinc +check_min_req_vars +export os_arch=x86 +export os_build=android +export android_api=21 +export SHARED_LIB=lib${LIBRARY_NAME}.so +export CXX=g++ +export NDK_VERSION=r21d +prepare_android_toolchain +abort_if_var_unset "ANDROID_TOOLCHAIN" ${ANDROID_TOOLCHAIN} +export run_openssl_configure="./Configure linux-elf ${OPENSSL_NO_OPTS} -fPIC -mstackrealign --prefix=${OPENSSL_ROOT}" +export run_readelf="${ANDROID_TOOLCHAIN}/bin/i686-linux-android-readelf -d bin/release/${os_build}/${os_arch}/${SHARED_LIB}" +export run_bjam="${BOOST_ROOT}/b2 -j8 -q --debug-building --user-config=config/${os_build}-${os_arch}-config.jam variant=release toolset=clang-${os_arch} target-os=${os_build} location=bin/release/${os_build}/${os_arch}" +export run_strip="${ANDROID_TOOLCHAIN}/bin/i686-linux-android-strip --strip-unneeded -x -g bin/release/${os_build}/${os_arch}/${SHARED_LIB}" +export run_objcopy="${ANDROID_TOOLCHAIN}/bin/i686-linux-android-objcopy --only-keep-debug bin/release/${os_build}/${os_arch}/${SHARED_LIB} bin/release/${os_build}/{$os_arch}/${SHARED_LIB}.debug" +export PATH=$ANDROID_TOOLCHAIN/i686-linux-android/bin:$PATH; +sed -i 's/RANLIB = ranlib/RANLIB = "${ANDROID_TOOLCHAIN}\/bin\/i686-linux-android-ranlib"/g' ${BOOST_ROOT}/tools/build/src/tools/gcc.jam; +create_folder_if_it_doesnt_exist ${SRC} +prompt_msg "About to prepare BOOST ${BOOST_VERSION}" +prepare_boost +export CC=${ANDROID_TOOLCHAIN}/bin/i686-linux-android${android_api}-clang +prepare_openssl +build_openssl +export CC=${ANDROID_TOOLCHAIN}/bin/i686-linux-android${android_api}-clang++ +export CXXFLAGS="-fPIC -std=c++14 -DANDROID -D__STDC_FORMAT_MACROS -DWITH_IPP=OFF -D__USE_FILE_OFFSET64 -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -fvisibility=hidden -mstackrealign" +export LDFLAGS="-static-libstdc++" +prepare_libtorrent +./run-swig.sh +build_libraries diff --git a/frostwire-jlibtorrent/swig/build-android-x86_64.sh b/frostwire-jlibtorrent/swig/build-android-x86_64.sh new file mode 100755 index 0000000..38f6c86 --- /dev/null +++ b/frostwire-jlibtorrent/swig/build-android-x86_64.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# This script is meant to run here inside the swig folder +# It's supposed to be a one step build for the java jar and android (.so enclosing) jars (armv7 and x86) +# Output .jar files will be at: +# ../build/libs/jlibtorrent-.jar +# ../build/libs/${LIBRARY_NAME}-android-x86_64-.jar +# remote android-x86 build with travis is available at https://s3.amazonaws.com/gubatron-${LIBRARY_NAME}/release/android/x86_64/lib${LIBRARY_NAME}.so +source build-utils.shinc +check_min_req_vars +export os_arch=x86_64 +export os_build=android +export android_api=21 +export SHARED_LIB=lib${LIBRARY_NAME}.so +export CXX=g++ +export NDK_VERSION=r21d +prepare_android_toolchain +abort_if_var_unset "ANDROID_TOOLCHAIN" ${ANDROID_TOOLCHAIN} +export run_openssl_configure="./Configure linux-x86_64 ${OPENSSL_NO_OPTS} -fPIC -mstackrealign --prefix=${OPENSSL_ROOT}"; +export run_readelf="${ANDROID_TOOLCHAIN}/bin/i686-linux-android-readelf -d bin/release/${os_build}/${os_arch}/${SHARED_LIB}" +export run_bjam="${BOOST_ROOT}/b2 -j8 --user-config=config/${os_build}-${os_arch}-config.jam variant=release toolset=clang-${os_arch} target-os=${os_build} location=bin/release/${os_build}/${os_arch}" +export run_strip="${ANDROID_TOOLCHAIN}/bin/i686-linux-android-strip --strip-unneeded -x -g bin/release/${os_build}/${os_arch}/${SHARED_LIB}" +export run_objcopy="${ANDROID_TOOLCHAIN}/bin/i686-linux-android-objcopy --only-keep-debug bin/release/${os_build}/${os_arch}/${SHARED_LIB} bin/release/${os_build}/{$os_arch}/${SHARED_LIB}.debug" +export PATH=$ANDROID_TOOLCHAIN/i686-linux-android/bin:$PATH; +sed -i 's/RANLIB = ranlib/RANLIB = "${ANDROID_TOOLCHAIN}\/bin\/i686-linux-android-ranlib"/g' ${BOOST_ROOT}/tools/build/src/tools/gcc.jam; +create_folder_if_it_doesnt_exist ${SRC} +prompt_msg "About to prepare BOOST ${BOOST_VERSION}" +prepare_boost +# openssl compilation fails for x86_64 if we use the c++ compiler +export CC=${ANDROID_TOOLCHAIN}/bin/x86_64-linux-android${android_api}-clang +prepare_openssl +build_openssl +export CC=${ANDROID_TOOLCHAIN}/bin/x86_64-linux-android${android_api}-clang++ +prepare_libtorrent +./run-swig.sh +build_libraries diff --git a/frostwire-jlibtorrent/swig/build-utils.shinc b/frostwire-jlibtorrent/swig/build-utils.shinc new file mode 100644 index 0000000..6e33080 --- /dev/null +++ b/frostwire-jlibtorrent/swig/build-utils.shinc @@ -0,0 +1,319 @@ +#!/usr/bin/env bash +unset_env_variables() { + # The user's build environment might already have pre-set + # flags that can interfere with the compilation process + echo "unset_env_variables()" + unset CPPFLAGS + unset BOOST_LIB_PATH + unset BOOST_ROOT + unset BOOST_LIB_SUFFIX #BOOST_LIB_SUFFIX=-mt + unset OPENSSL_ROOT_DIR + unset OPENSSL_BIN_PATH + unset OPENSSL_INCLUDE_PATH + unset OPENSSL_LIB_PATH +} +unset_env_variables + +LIBRARY_VERSION=`cat ../build.gradle | grep "version '" | awk '{ print $2 }' | sed "s/'//g"` +LIBRARY_NAME=jlibtorrent +LIBTORRENT_REVISION=77172672c8db2f6bcef17d867d9a81faae77ec1e # bump version to 1.2.12 (branch:RC_1_2) Jan 7, 2021 correct condition in Jamfile when building against OpenSSL on windows +OPENSSL_VERSION="1.1.1i" +BOOST_VERSION="73" +# TEMP NOTES ON BOOST ISSUES, DEC 13 2020 +# Reverting to boost 1.73. +# To build on macOS you need to comment the following line on ${BOOST_ROOT}/tools/build/src/tools/darwin.jam +# 'flags darwin.compile.c++ OPTIONS $(condition) : -fcoalesce-templates ;' +# We might have to do this in Travis CI + +# 1.74 seems to require -frtti linking +#In file included from /Users/gubatron/src/libtorrent/src/announce_entry.cpp:34: +#In file included from /Users/gubatron/src/libtorrent/include/libtorrent/announce_entry.hpp:41: +#In file included from /Users/gubatron/src/libtorrent/include/libtorrent/socket.hpp:53: +#In file included from /Users/gubatron/src/boost_1_74_0/boost/asio/ip/tcp.hpp:19: +#In file included from /Users/gubatron/src/boost_1_74_0/boost/asio/basic_socket_acceptor.hpp:19: +#In file included from /Users/gubatron/src/boost_1_74_0/boost/asio/any_io_executor.hpp:22: +#In file included from /Users/gubatron/src/boost_1_74_0/boost/asio/execution.hpp:19: +#/Users/gubatron/src/boost_1_74_0/boost/asio/execution/any_executor.hpp:811:12: error: use of typeid requires -frtti +# return typeid(void); + +# 1.75 causes swig to not generate error_code.java and other error handling classes +# With boost 1.75 swig will issue these boost related warnings, something must have changed +# Warning 315: Nothing known about 'boost::system::generic_category' +# 'boost::system::system_category' +BOOST_MAJOR="1" +BOOST_MINOR="0" +SWIG=`pwd` +SRC="${HOME}/src" +BOOST_ROOT="${SRC}/boost_${BOOST_MAJOR}_${BOOST_VERSION}_${BOOST_MINOR}" +LIBTORRENT_ROOT="${SRC}/libtorrent" +OPENSSL_SOURCE="${SRC}/openssl-${OPENSSL_VERSION}" +OPENSSL_ROOT="${SRC}/openssl" +export OPENSSL_NO_OPTS="no-afalgeng no-async no-autoalginit no-autoerrinit no-capieng no-cms no-comp no-deprecated no-dgram no-dso no-dtls no-dynamic-engine no-egd no-engine no-err no-filenames no-gost no-hw no-makedepend no-multiblock no-nextprotoneg no-posix-io no-psk no-rdrand no-sctp no-shared no-sock no-srp no-srtp no-static-engine no-stdio no-threads no-ui-console no-zlib no-zlib-dynamic -fno-strict-aliasing -fvisibility=hidden -Os" + +prompt_msg() { + echo + echo "=============================================================================" + echo $1 + echo "=============================================================================" + echo +} + + +create_folder_if_it_doesnt_exist() { + if [[ ! -d $1 ]]; then mkdir -p $1; fi; +} + +abort_if_var_unset() { + var_name=${1} + var_value=${2} + if [[ ! -n ${var_value} ]]; then + prompt_msg "Error ${var_name} not set. Aborting" + exit 1 + fi + echo ${var_name} set to ${var_value} +} + +check_min_req_vars() { + abort_if_var_unset "LIBTORRENT_REVISION" ${LIBTORRENT_REVISION} + abort_if_var_unset "LIBRARY_VERSION" ${LIBRARY_VERSION} + abort_if_var_unset "LIBRARY_NAME" ${LIBRARY_NAME} + abort_if_var_unset "OPENSSL_VERSION" ${OPENSSL_VERSION} + abort_if_var_unset "BOOST_VERSION" ${BOOST_VERSION} + abort_if_var_unset "BOOST_MAJOR" ${BOOST_MAJOR} + abort_if_var_unset "BOOST_MINOR" ${BOOST_MINOR} + abort_if_var_unset "SWIG" ${SWIG} + abort_if_var_unset "SRC" ${SRC} + abort_if_var_unset "BOOST_ROOT" ${BOOST_ROOT} + abort_if_var_unset "LIBTORRENT_ROOT" ${LIBTORRENT_ROOT} + abort_if_var_unset "OPENSSL_SOURCE" ${OPENSSL_SOURCE} + abort_if_var_unset "OPENSSL_ROOT" ${OPENSSL_ROOT} + abort_if_var_unset "OPENSSL_NO_OPTS" ${OPENSSL_NO_OPTS} +} + +prepare_boost() { + abort_if_var_unset "BOOST_ROOT" ${BOOST_ROOT} + abort_if_var_unset "BOOST_VERSION" ${BOOST_VERSION} + abort_if_var_unset "BOOST_MAJOR" ${BOOST_MAJOR} + abort_if_var_unset "BOOST_MINOR" ${BOOST_MINOR} + + if ! [ -x "$(command -v wget)" ]; then + echo "Error: wget is not installed." + exit 1 + fi + + pushd ${SRC} + echo "Checking for ${BOOST_ROOT}..." + if [ ! -d ${BOOST_ROOT} ]; then + prompt_msg "Downloading BOOST ${BOOST_MAJOR}_${BOOST_VERSION}_${BOOST_MINOR}" + wget -4 -O boost.zip https://dl.bintray.com/boostorg/release/${BOOST_MAJOR}.${BOOST_VERSION}.${BOOST_MINOR}/source/boost_${BOOST_MAJOR}_${BOOST_VERSION}_${BOOST_MINOR}.zip + unzip -qq boost.zip + rm -f boost.zip + fi + pushd ${BOOST_ROOT} + pwd + ./bootstrap.sh + ./b2 + ./b2 /headers + popd + popd +} + +download_android_ndk() { + abort_if_var_unset "NDK_VERSION" ${NDK_VERSION} + if [ ! -f android-ndk-${NDK_VERSION}.zip ]; then + prompt_msg "download_android_ndk: Downloading android-ndk-${NDK_VERSION}" + wget -4 -O android-ndk-${NDK_VERSION}.zip https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-${host_os}-x86_64.zip; + prompt_msg "download_android_ndk: Extracting NDK...wait"; + unzip -qq android-ndk-${NDK_VERSION}.zip; + fi +} + +prepare_android_toolchain() { + abort_if_var_unset "SRC" ${SRC} + abort_if_var_unset "NDK_VERSION" ${NDK_VERSION} + abort_if_var_unset "os_arch" ${os_arch} + abort_if_var_unset "android_api" ${android_api} + pushd ${SRC} + + host_os="linux" + if [[ "$OSTYPE" == "darwin"* ]]; then + host_os="darwin" + fi + + + download_android_ndk + + export NDK=$PWD/android-ndk-${NDK_VERSION} + prompt_msg "prepare_android_toolchain: NDK=${NDK}" + + # Use the prebuilt toolchain path + export ANDROID_TOOLCHAIN=${NDK}/toolchains/llvm/prebuilt/linux-x86_64 + echo "ANDROID_TOOLCHAIN=${ANDROID_TOOLCHAIN}" + popd +} + +prepare_android_standalone_toolchain() { + abort_if_var_unset "SRC" ${SRC} + abort_if_var_unset "NDK_VERSION" ${NDK_VERSION} + abort_if_var_unset "os_arch" ${os_arch} + abort_if_var_unset "android_api" ${android_api} + pushd ${SRC} + + host_os="linux" + if [[ "$OSTYPE" == "darwin"* ]]; then + host_os="darwin" + fi + + download_android_ndk + + export NDK=$PWD/android-ndk-${NDK_VERSION} + prompt_msg "NDK=${NDK}" + + if [ -d standalone_toolchain ]; then + rm -fr standalone_toolchain + fi + + #try this command to get path of the prebuilt toolchain in the warnings + $NDK/build/tools/make_standalone_toolchain.py --arch ${os_arch} --api ${android_api} --stl libc++ --install-dir standalone_toolchain + #./build/tools/make_standalone_toolchain.py --arch x86 --api 21 --stl libc++ --install-dir standalone_toolchain + #./build/tools/make_standalone_toolchain.py --arch x86_64 --api 21 --stl libc++ --install-dir standalone_toolchain + #./build/tools/make_standalone_toolchain.py --arch arm --api 21 --stl libc++ --install-dir standalone_toolchain + #./build/tools/make_standalone_toolchain.py --arch arm64 --api 21 --stl libc++ --install-dir standalone_toolchain + + # Use the standalone toolchain path + export ANDROID_TOOLCHAIN=${PWD}/standalone_toolchain + prompt_msg "prepare_android_standalone_toolchain: ANDROID_TOOLCHAIN=${ANDROID_TOOLCHAIN}" + popd +} + + +prepare_openssl() { + abort_if_var_unset "SRC" ${SRC} + abort_if_var_unset "OPENSSL_VERSION" ${OPENSSL_VERSION} + abort_if_var_unset "OPENSSL_SOURCE" ${OPENSSL_SOURCE} + if [ ! -d ${OPENSSL_SOURCE} ]; then + prompt_msg "Downloading OPENSSL ${OPENSSL_VERSION} to '{$OPENSSL_SOURCE}'" + pushd ${SRC} + #wget -nv -4 -O openssl.tar.gz https://www.openssl.org/source/openssl-1.1.1i.tar.gz + wget -4 --no-check-certificate -O openssl.tar.gz https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz + tar xvfz openssl.tar.gz + rm -f openssl.tar.gz + # avoid GDI dependency in windows, fix double return statement on threads_none.c + if [[ $os_build == "windows" ]]; then + sed -i 's/if defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0333/if 0/g' ${OPENSSL_SOURCE}/crypto/cryptlib.c; + sed -i 's/MessageBox.*//g' ${OPENSSL_SOURCE}/crypto/cryptlib.c; + sed -i 's/return return 0;/return 0;/g' ${OPENSSL_SOURCE}/crypto/threads_none.c; + fi + popd + fi +} + +build_openssl() { + abort_if_var_unset "OPENSSL_SOURCE" ${OPENSSL_SOURCE} + abort_if_var_unset "run_openssl_configure" ${run_openssl_configure} + prompt_msg "build_openssl: run_openssl_configure=[${run_openssl_configure}]" + if [ -d ${OPENSSL_ROOT} ]; then + rm -fr ${OPENSSL_ROOT} + fi + if [ -d ${OPENSSL_SOURCE} ]; then + pushd ${OPENSSL_SOURCE} + make clean + $run_openssl_configure + make -j 8 + make install_sw + popd + fi + if [[ $os_build == "windows" ]]; then + pushd ${OPENSSL_ROOT}/lib + if [ -L libcrypto.lib ]; then + rm libcrypto.lib + fi + if [ -L libssl.lib ]; then + rm libssl.lib + fi + ln -s libcrypto.a libcrypto.lib + ln -s libssl.a libssl.lib + popd + fi +} + +prepare_libtorrent() { + echo "prepare_libtorrent started..." + abort_if_var_unset "SRC" ${SRC} + abort_if_var_unset "LIBTORRENT_ROOT" ${LIBTORRENT_ROOT} + abort_if_var_unset "LIBTORRENT_REVISION" ${LIBTORRENT_REVISION} + if [ ! -d ${LIBTORRENT_ROOT} ]; then + pushd ${SRC} + git clone https://github.com/arvidn/libtorrent + popd + fi + pushd ${LIBTORRENT_ROOT} + prompt_msg "Checking if you have any uncommited changes" + git status + prompt_msg "Abort with Ctrl-C if there's pending changes above or you will lose them" + git fetch origin RC_1_2 + git reset --hard ${LIBTORRENT_REVISION} + git submodule init + git submodule update + make clean + popd + echo "prepare_libtorrent finished." +} + +build_libraries() { + abort_if_var_unset "OPENSSL_ROOT" ${OPENSSL_ROOT} + abort_if_var_unset "SWIG" ${SWIG} + abort_if_var_unset "os_build" ${os_build} + abort_if_var_unset "os_arch" ${os_arch} + abort_if_var_unset "SHARED_LIB" ${SHARED_LIB} + abort_if_var_unset "run_bjam" ${run_bjam} + abort_if_var_unset "run_objcopy" ${run_objcopy} + abort_if_var_unset "run_strip" ${run_strip} + abort_if_var_unset "run_readelf" ${run_readelf} + set -x + cd ${SWIG} + if [[ $os_build == "windows" && $os_arch == "x86" ]]; then + pwd + sed -i 's/ JNICALL Java_com_frostwire/ JNICALL _Java_com_frostwire/g' libtorrent_jni.cpp; + fi + export PATH=${PATH}:${BOOST_ROOT}/tools/build/src/engine + echo "Added boost tools to PATH:" + echo ${PATH} + export OPENSSL_ROOT=${OPENSSL_ROOT} + export LIBTORRENT_ROOT=${LIBTORRENT_ROOT} + export BOOST_ROOT=${BOOST_ROOT} + export BOOST_BUILD_PATH=${BOOST_ROOT} + $run_bjam + $run_objcopy + $run_strip + + # fix libjlibtorrent.dll -> jlibtorrent.dll + if [[ $os_build == "windows" ]]; then + cp bin/release/windows/${os_arch}/libjlibtorrent.dll bin/release/windows/${os_arch}/jlibtorrent.dll + fi + + cd .. + + # so that tests pass when running on mac or linux we copy the shared library to the root folder + if [[ $os_build == "macosx" || $os_build == "linux" ]]; then + cp swig/bin/release/${os_build}/${os_arch}/${SHARED_LIB} . + fi + gradle clean + gradle build +} + +cleanup_objects() { + abort_if_var_unset "SWIG" ${SWIG} + # cleanup (when it's finally working, enable this) + if [ -d ${SWIG}/bin ]; then + cd ${SWIG}/bin + find . -type f | egrep -v '.*\.so$|.*\.dll$|.*\.dylib$|.*\.debug$' | xargs rm + find . -empty -type d | xargs rm -r + else + echo ${SWIG}/bin folder not found, nothing to clean + fi + cd ${SWIG} + cd .. + find . -type f | egrep '\d.\d.\d.\d\d.jar$' + cd ${SWIG} +} diff --git a/frostwire-jlibtorrent/swig/cleanup_objects.sh b/frostwire-jlibtorrent/swig/cleanup_objects.sh new file mode 100755 index 0000000..1b2bdd2 --- /dev/null +++ b/frostwire-jlibtorrent/swig/cleanup_objects.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +source build-utils.shinc +cleanup_objects diff --git a/frostwire-jlibtorrent/swig/config/android-arm-config.jam b/frostwire-jlibtorrent/swig/config/android-arm-config.jam new file mode 100644 index 0000000..baeda5e --- /dev/null +++ b/frostwire-jlibtorrent/swig/config/android-arm-config.jam @@ -0,0 +1,24 @@ +import os ; + +ANDROID_TOOLCHAIN = [ os.environ ANDROID_TOOLCHAIN ] ; +ANDROID_API = [ os.environ android_api ] ; + +using clang-linux : arm : $(ANDROID_TOOLCHAIN)/bin/armv7a-linux-androideabi$(ANDROID_API)-clang++ : + -fPIC + -march=armv7-a + -mfpu=neon + -std=c++14 + -DANDROID + -D__STDC_FORMAT_MACROS + -D_FILE_OFFSET_BITS=64 + -frtti + -fno-strict-aliasing + -fvisibility=hidden + -static-libstdc++ + -fuse-ld=bfd + # debug information + -g + -gdwarf-4 + -fdebug-macro + -ggdb + ; diff --git a/frostwire-jlibtorrent/swig/config/android-arm64-config.jam b/frostwire-jlibtorrent/swig/config/android-arm64-config.jam new file mode 100644 index 0000000..ab2e86c --- /dev/null +++ b/frostwire-jlibtorrent/swig/config/android-arm64-config.jam @@ -0,0 +1,19 @@ +import os ; + +ANDROID_TOOLCHAIN = [ os.environ ANDROID_TOOLCHAIN ] ; +ANDROID_API = [ os.environ android_api ] ; + +using clang : arm64 : $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android$(ANDROID_API)-clang++ : + -fPIC + -march=armv8-a+crc + -std=c++14 + -DANDROID + -fno-strict-aliasing + -fvisibility=hidden + -static-libstdc++ + # debug information + -g + -gdwarf-4 + -fdebug-macro + -ggdb + ; diff --git a/frostwire-jlibtorrent/swig/config/android-x86-config.jam b/frostwire-jlibtorrent/swig/config/android-x86-config.jam new file mode 100644 index 0000000..52379bd --- /dev/null +++ b/frostwire-jlibtorrent/swig/config/android-x86-config.jam @@ -0,0 +1,25 @@ +import os ; + +ANDROID_TOOLCHAIN = [ os.environ ANDROID_TOOLCHAIN ] ; +ANDROID_API = [ os.environ android_api ] ; + +using clang : x86 : $(ANDROID_TOOLCHAIN)/bin/i686-linux-android$(ANDROID_API)-clang++ : + -fPIC + -std=c++14 + -DANDROID + -D__STDC_FORMAT_MACROS + -D__USE_FILE_OFFSET64 + -D_FILE_OFFSET_BITS=64 + -DWITH_IPP=OFF + -frtti + -fno-strict-aliasing + -fvisibility=hidden + -static-libstdc++ + # x86 devices have stack alignment issues, http://b.android.com/222239 + -mstackrealign + # debug information + -g + -gdwarf-4 + -fdebug-macro + -ggdb + ; diff --git a/frostwire-jlibtorrent/swig/config/android-x86_64-config.jam b/frostwire-jlibtorrent/swig/config/android-x86_64-config.jam new file mode 100644 index 0000000..4db966f --- /dev/null +++ b/frostwire-jlibtorrent/swig/config/android-x86_64-config.jam @@ -0,0 +1,17 @@ +import os ; + +ANDROID_TOOLCHAIN = [ os.environ ANDROID_TOOLCHAIN ] ; +android_api = [ os.environ android_api ] ; +using clang : x86_64 : $(ANDROID_TOOLCHAIN)/bin/x86_64-linux-android$(android_api)-clang++ : + -fPIC + -std=c++14 + -DANDROID + -fno-strict-aliasing + -fvisibility=hidden + -static-libstdc++ + # debug information + -g + -gdwarf-4 + -fdebug-macro + -ggdb + ; diff --git a/frostwire-jlibtorrent/swig/config/freebsd-x86_64-config.jam b/frostwire-jlibtorrent/swig/config/freebsd-x86_64-config.jam new file mode 100644 index 0000000..e0fb9c8 --- /dev/null +++ b/frostwire-jlibtorrent/swig/config/freebsd-x86_64-config.jam @@ -0,0 +1,8 @@ +import os ; + +using clang : x86_64 : clang++ : + -fPIC + -std=c++14 + -fno-strict-aliasing + -fvisibility=hidden + ; diff --git a/frostwire-jlibtorrent/swig/config/linux-x86-config.jam b/frostwire-jlibtorrent/swig/config/linux-x86-config.jam new file mode 100644 index 0000000..e6cbfd4 --- /dev/null +++ b/frostwire-jlibtorrent/swig/config/linux-x86-config.jam @@ -0,0 +1,17 @@ +import os ; + +using gcc : x86 : g++-7 : + -fPIC + -m32 + -std=c++14 + -fno-strict-aliasing + -fvisibility=hidden + -m32 + -static-libstdc++ + -static-libgcc + "-z noexecstack" + # debug information + -g + -gdwarf-4 + -ggdb + ; diff --git a/frostwire-jlibtorrent/swig/config/linux-x86_64-config.jam b/frostwire-jlibtorrent/swig/config/linux-x86_64-config.jam new file mode 100644 index 0000000..b16ee1a --- /dev/null +++ b/frostwire-jlibtorrent/swig/config/linux-x86_64-config.jam @@ -0,0 +1,15 @@ +import os ; + +using gcc : x86_64 : g++-7 : + -fPIC + -std=c++14 + -fno-strict-aliasing + -fvisibility=hidden + -static-libstdc++ + -static-libgcc + "-z noexecstack" + # debug information + -g + -gdwarf-4 + -ggdb + ; diff --git a/frostwire-jlibtorrent/swig/config/macosx-x86_64-config.jam b/frostwire-jlibtorrent/swig/config/macosx-x86_64-config.jam new file mode 100644 index 0000000..6e2af15 --- /dev/null +++ b/frostwire-jlibtorrent/swig/config/macosx-x86_64-config.jam @@ -0,0 +1,9 @@ +import os ; + +using darwin : x86_64 : clang++ : + -std=c++14 + -mmacosx-version-min=10.9 + -fno-strict-aliasing + -fvisibility=hidden + -D_DARWIN_C_SOURCE + ; diff --git a/frostwire-jlibtorrent/swig/config/windows-x86-config.jam b/frostwire-jlibtorrent/swig/config/windows-x86-config.jam new file mode 100644 index 0000000..73f39ad --- /dev/null +++ b/frostwire-jlibtorrent/swig/config/windows-x86-config.jam @@ -0,0 +1,11 @@ +import os ; + +using gcc : x86 : i686-w64-mingw32-g++-posix : + -std=c++14 + -fno-strict-aliasing + -fvisibility=hidden + -DBOOST_ASIO_DISABLE_CONNECTEX + -DBOOST_USE_WINAPI_VERSION=0x0600 + -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic + -static-libgcc + ; diff --git a/frostwire-jlibtorrent/swig/config/windows-x86_64-config.jam b/frostwire-jlibtorrent/swig/config/windows-x86_64-config.jam new file mode 100644 index 0000000..b6c1161 --- /dev/null +++ b/frostwire-jlibtorrent/swig/config/windows-x86_64-config.jam @@ -0,0 +1,11 @@ +import os ; + +using gcc : x86_64 : x86_64-w64-mingw32-g++-posix : + -std=c++14 + -fno-strict-aliasing + -fvisibility=hidden + -DBOOST_ASIO_DISABLE_CONNECTEX + -DBOOST_USE_WINAPI_VERSION=0x0600 + -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic + -static-libgcc + ; diff --git a/frostwire-jlibtorrent/swig/jni.h b/frostwire-jlibtorrent/swig/jni.h new file mode 100644 index 0000000..c3e38cc --- /dev/null +++ b/frostwire-jlibtorrent/swig/jni.h @@ -0,0 +1,1995 @@ +/* + * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +/* + * We used part of Netscape's Java Runtime Interface (JRI) as the starting + * point of our design and implementation. + */ + +/****************************************************************************** + * Java Runtime Interface + * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved. + *****************************************************************************/ + +#ifndef _JAVASOFT_JNI_H_ +#define _JAVASOFT_JNI_H_ + +#include +#include + +/* jni_md.h contains the machine-dependent typedefs for jbyte, jint + and jlong */ + +//#include "jni_md.h" +#ifdef _WIN32 + +#define JNIEXPORT __declspec(dllexport) +#define JNIIMPORT __declspec(dllimport) +#define JNICALL __stdcall + +typedef long jint; +typedef __int64 jlong; +typedef signed char jbyte; + +#else /* _WIN32 not defined. */ + +#define JNIEXPORT __attribute__((visibility("default"))) +#define JNIIMPORT __attribute__((visibility("default"))) +#define JNICALL + +typedef int jint; +#ifdef _LP64 /* 64-bit Solaris */ +typedef long jlong; +#else +typedef long long jlong; +#endif + +typedef signed char jbyte; + +#endif +// end jni_md.h + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * JNI Types + */ + +#ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H + +typedef unsigned char jboolean; +typedef unsigned short jchar; +typedef short jshort; +typedef float jfloat; +typedef double jdouble; + +typedef jint jsize; + +#ifdef __cplusplus + +class _jobject {}; +class _jclass : public _jobject {}; +class _jthrowable : public _jobject {}; +class _jstring : public _jobject {}; +class _jarray : public _jobject {}; +class _jbooleanArray : public _jarray {}; +class _jbyteArray : public _jarray {}; +class _jcharArray : public _jarray {}; +class _jshortArray : public _jarray {}; +class _jintArray : public _jarray {}; +class _jlongArray : public _jarray {}; +class _jfloatArray : public _jarray {}; +class _jdoubleArray : public _jarray {}; +class _jobjectArray : public _jarray {}; + +typedef _jobject *jobject; +typedef _jclass *jclass; +typedef _jthrowable *jthrowable; +typedef _jstring *jstring; +typedef _jarray *jarray; +typedef _jbooleanArray *jbooleanArray; +typedef _jbyteArray *jbyteArray; +typedef _jcharArray *jcharArray; +typedef _jshortArray *jshortArray; +typedef _jintArray *jintArray; +typedef _jlongArray *jlongArray; +typedef _jfloatArray *jfloatArray; +typedef _jdoubleArray *jdoubleArray; +typedef _jobjectArray *jobjectArray; + +#else + +struct _jobject; + +typedef struct _jobject *jobject; +typedef jobject jclass; +typedef jobject jthrowable; +typedef jobject jstring; +typedef jobject jarray; +typedef jarray jbooleanArray; +typedef jarray jbyteArray; +typedef jarray jcharArray; +typedef jarray jshortArray; +typedef jarray jintArray; +typedef jarray jlongArray; +typedef jarray jfloatArray; +typedef jarray jdoubleArray; +typedef jarray jobjectArray; + +#endif + +typedef jobject jweak; + +typedef union jvalue { + jboolean z; + jbyte b; + jchar c; + jshort s; + jint i; + jlong j; + jfloat f; + jdouble d; + jobject l; +} jvalue; + +struct _jfieldID; +typedef struct _jfieldID *jfieldID; + +struct _jmethodID; +typedef struct _jmethodID *jmethodID; + +/* Return values from jobjectRefType */ +typedef enum _jobjectType { + JNIInvalidRefType = 0, + JNILocalRefType = 1, + JNIGlobalRefType = 2, + JNIWeakGlobalRefType = 3 +} jobjectRefType; + + +#endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */ + +/* + * jboolean constants + */ + +#define JNI_FALSE 0 +#define JNI_TRUE 1 + +/* + * possible return values for JNI functions. + */ + +#define JNI_OK 0 /* success */ +#define JNI_ERR (-1) /* unknown error */ +#define JNI_EDETACHED (-2) /* thread detached from the VM */ +#define JNI_EVERSION (-3) /* JNI version error */ +#define JNI_ENOMEM (-4) /* not enough memory */ +#define JNI_EEXIST (-5) /* VM already created */ +#define JNI_EINVAL (-6) /* invalid arguments */ + +/* + * used in ReleaseScalarArrayElements + */ + +#define JNI_COMMIT 1 +#define JNI_ABORT 2 + +/* + * used in RegisterNatives to describe native method name, signature, + * and function pointer. + */ + +typedef struct { + char *name; + char *signature; + void *fnPtr; +} JNINativeMethod; + +/* + * JNI Native Method Interface. + */ + +struct JNINativeInterface_; + +struct JNIEnv_; + +#ifdef __cplusplus +typedef JNIEnv_ JNIEnv; +#else +typedef const struct JNINativeInterface_ *JNIEnv; +#endif + +/* + * JNI Invocation Interface. + */ + +struct JNIInvokeInterface_; + +struct JavaVM_; + +#ifdef __cplusplus +typedef JavaVM_ JavaVM; +#else +typedef const struct JNIInvokeInterface_ *JavaVM; +#endif + +struct JNINativeInterface_ { + void *reserved0; + void *reserved1; + void *reserved2; + + void *reserved3; + jint (JNICALL *GetVersion)(JNIEnv *env); + + jclass (JNICALL *DefineClass) + (JNIEnv *env, const char *name, jobject loader, const jbyte *buf, + jsize len); + jclass (JNICALL *FindClass) + (JNIEnv *env, const char *name); + + jmethodID (JNICALL *FromReflectedMethod) + (JNIEnv *env, jobject method); + jfieldID (JNICALL *FromReflectedField) + (JNIEnv *env, jobject field); + + jobject (JNICALL *ToReflectedMethod) + (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic); + + jclass (JNICALL *GetSuperclass) + (JNIEnv *env, jclass sub); + jboolean (JNICALL *IsAssignableFrom) + (JNIEnv *env, jclass sub, jclass sup); + + jobject (JNICALL *ToReflectedField) + (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic); + + jint (JNICALL *Throw) + (JNIEnv *env, jthrowable obj); + jint (JNICALL *ThrowNew) + (JNIEnv *env, jclass clazz, const char *msg); + jthrowable (JNICALL *ExceptionOccurred) + (JNIEnv *env); + void (JNICALL *ExceptionDescribe) + (JNIEnv *env); + void (JNICALL *ExceptionClear) + (JNIEnv *env); + void (JNICALL *FatalError) + (JNIEnv *env, const char *msg); + + jint (JNICALL *PushLocalFrame) + (JNIEnv *env, jint capacity); + jobject (JNICALL *PopLocalFrame) + (JNIEnv *env, jobject result); + + jobject (JNICALL *NewGlobalRef) + (JNIEnv *env, jobject lobj); + void (JNICALL *DeleteGlobalRef) + (JNIEnv *env, jobject gref); + void (JNICALL *DeleteLocalRef) + (JNIEnv *env, jobject obj); + jboolean (JNICALL *IsSameObject) + (JNIEnv *env, jobject obj1, jobject obj2); + jobject (JNICALL *NewLocalRef) + (JNIEnv *env, jobject ref); + jint (JNICALL *EnsureLocalCapacity) + (JNIEnv *env, jint capacity); + + jobject (JNICALL *AllocObject) + (JNIEnv *env, jclass clazz); + jobject (JNICALL *NewObject) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jobject (JNICALL *NewObjectV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jobject (JNICALL *NewObjectA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jclass (JNICALL *GetObjectClass) + (JNIEnv *env, jobject obj); + jboolean (JNICALL *IsInstanceOf) + (JNIEnv *env, jobject obj, jclass clazz); + + jmethodID (JNICALL *GetMethodID) + (JNIEnv *env, jclass clazz, const char *name, const char *sig); + + jobject (JNICALL *CallObjectMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jobject (JNICALL *CallObjectMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jobject (JNICALL *CallObjectMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); + + jboolean (JNICALL *CallBooleanMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jboolean (JNICALL *CallBooleanMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jboolean (JNICALL *CallBooleanMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); + + jbyte (JNICALL *CallByteMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jbyte (JNICALL *CallByteMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jbyte (JNICALL *CallByteMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jchar (JNICALL *CallCharMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jchar (JNICALL *CallCharMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jchar (JNICALL *CallCharMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jshort (JNICALL *CallShortMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jshort (JNICALL *CallShortMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jshort (JNICALL *CallShortMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jint (JNICALL *CallIntMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jint (JNICALL *CallIntMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jint (JNICALL *CallIntMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jlong (JNICALL *CallLongMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jlong (JNICALL *CallLongMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jlong (JNICALL *CallLongMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jfloat (JNICALL *CallFloatMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jfloat (JNICALL *CallFloatMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jfloat (JNICALL *CallFloatMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jdouble (JNICALL *CallDoubleMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jdouble (JNICALL *CallDoubleMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jdouble (JNICALL *CallDoubleMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + void (JNICALL *CallVoidMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + void (JNICALL *CallVoidMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + void (JNICALL *CallVoidMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); + + jobject (JNICALL *CallNonvirtualObjectMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jobject (JNICALL *CallNonvirtualObjectMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jobject (JNICALL *CallNonvirtualObjectMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue * args); + + jboolean (JNICALL *CallNonvirtualBooleanMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jboolean (JNICALL *CallNonvirtualBooleanMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jboolean (JNICALL *CallNonvirtualBooleanMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue * args); + + jbyte (JNICALL *CallNonvirtualByteMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jbyte (JNICALL *CallNonvirtualByteMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jbyte (JNICALL *CallNonvirtualByteMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jchar (JNICALL *CallNonvirtualCharMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jchar (JNICALL *CallNonvirtualCharMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jchar (JNICALL *CallNonvirtualCharMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jshort (JNICALL *CallNonvirtualShortMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jshort (JNICALL *CallNonvirtualShortMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jshort (JNICALL *CallNonvirtualShortMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jint (JNICALL *CallNonvirtualIntMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jint (JNICALL *CallNonvirtualIntMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jint (JNICALL *CallNonvirtualIntMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jlong (JNICALL *CallNonvirtualLongMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jlong (JNICALL *CallNonvirtualLongMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jlong (JNICALL *CallNonvirtualLongMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jfloat (JNICALL *CallNonvirtualFloatMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jfloat (JNICALL *CallNonvirtualFloatMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jfloat (JNICALL *CallNonvirtualFloatMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jdouble (JNICALL *CallNonvirtualDoubleMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jdouble (JNICALL *CallNonvirtualDoubleMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jdouble (JNICALL *CallNonvirtualDoubleMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + void (JNICALL *CallNonvirtualVoidMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + void (JNICALL *CallNonvirtualVoidMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + void (JNICALL *CallNonvirtualVoidMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue * args); + + jfieldID (JNICALL *GetFieldID) + (JNIEnv *env, jclass clazz, const char *name, const char *sig); + + jobject (JNICALL *GetObjectField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jboolean (JNICALL *GetBooleanField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jbyte (JNICALL *GetByteField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jchar (JNICALL *GetCharField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jshort (JNICALL *GetShortField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jint (JNICALL *GetIntField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jlong (JNICALL *GetLongField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jfloat (JNICALL *GetFloatField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jdouble (JNICALL *GetDoubleField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + + void (JNICALL *SetObjectField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val); + void (JNICALL *SetBooleanField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val); + void (JNICALL *SetByteField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val); + void (JNICALL *SetCharField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val); + void (JNICALL *SetShortField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val); + void (JNICALL *SetIntField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jint val); + void (JNICALL *SetLongField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val); + void (JNICALL *SetFloatField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val); + void (JNICALL *SetDoubleField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val); + + jmethodID (JNICALL *GetStaticMethodID) + (JNIEnv *env, jclass clazz, const char *name, const char *sig); + + jobject (JNICALL *CallStaticObjectMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jobject (JNICALL *CallStaticObjectMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jobject (JNICALL *CallStaticObjectMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jboolean (JNICALL *CallStaticBooleanMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jboolean (JNICALL *CallStaticBooleanMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jboolean (JNICALL *CallStaticBooleanMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jbyte (JNICALL *CallStaticByteMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jbyte (JNICALL *CallStaticByteMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jbyte (JNICALL *CallStaticByteMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jchar (JNICALL *CallStaticCharMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jchar (JNICALL *CallStaticCharMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jchar (JNICALL *CallStaticCharMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jshort (JNICALL *CallStaticShortMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jshort (JNICALL *CallStaticShortMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jshort (JNICALL *CallStaticShortMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jint (JNICALL *CallStaticIntMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jint (JNICALL *CallStaticIntMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jint (JNICALL *CallStaticIntMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jlong (JNICALL *CallStaticLongMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jlong (JNICALL *CallStaticLongMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jlong (JNICALL *CallStaticLongMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jfloat (JNICALL *CallStaticFloatMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jfloat (JNICALL *CallStaticFloatMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jfloat (JNICALL *CallStaticFloatMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jdouble (JNICALL *CallStaticDoubleMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jdouble (JNICALL *CallStaticDoubleMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jdouble (JNICALL *CallStaticDoubleMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + void (JNICALL *CallStaticVoidMethod) + (JNIEnv *env, jclass cls, jmethodID methodID, ...); + void (JNICALL *CallStaticVoidMethodV) + (JNIEnv *env, jclass cls, jmethodID methodID, va_list args); + void (JNICALL *CallStaticVoidMethodA) + (JNIEnv *env, jclass cls, jmethodID methodID, const jvalue * args); + + jfieldID (JNICALL *GetStaticFieldID) + (JNIEnv *env, jclass clazz, const char *name, const char *sig); + jobject (JNICALL *GetStaticObjectField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jboolean (JNICALL *GetStaticBooleanField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jbyte (JNICALL *GetStaticByteField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jchar (JNICALL *GetStaticCharField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jshort (JNICALL *GetStaticShortField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jint (JNICALL *GetStaticIntField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jlong (JNICALL *GetStaticLongField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jfloat (JNICALL *GetStaticFloatField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jdouble (JNICALL *GetStaticDoubleField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + + void (JNICALL *SetStaticObjectField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value); + void (JNICALL *SetStaticBooleanField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value); + void (JNICALL *SetStaticByteField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value); + void (JNICALL *SetStaticCharField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value); + void (JNICALL *SetStaticShortField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value); + void (JNICALL *SetStaticIntField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value); + void (JNICALL *SetStaticLongField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value); + void (JNICALL *SetStaticFloatField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value); + void (JNICALL *SetStaticDoubleField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value); + + jstring (JNICALL *NewString) + (JNIEnv *env, const jchar *unicode, jsize len); + jsize (JNICALL *GetStringLength) + (JNIEnv *env, jstring str); + const jchar *(JNICALL *GetStringChars) + (JNIEnv *env, jstring str, jboolean *isCopy); + void (JNICALL *ReleaseStringChars) + (JNIEnv *env, jstring str, const jchar *chars); + + jstring (JNICALL *NewStringUTF) + (JNIEnv *env, const char *utf); + jsize (JNICALL *GetStringUTFLength) + (JNIEnv *env, jstring str); + const char* (JNICALL *GetStringUTFChars) + (JNIEnv *env, jstring str, jboolean *isCopy); + void (JNICALL *ReleaseStringUTFChars) + (JNIEnv *env, jstring str, const char* chars); + + + jsize (JNICALL *GetArrayLength) + (JNIEnv *env, jarray array); + + jobjectArray (JNICALL *NewObjectArray) + (JNIEnv *env, jsize len, jclass clazz, jobject init); + jobject (JNICALL *GetObjectArrayElement) + (JNIEnv *env, jobjectArray array, jsize index); + void (JNICALL *SetObjectArrayElement) + (JNIEnv *env, jobjectArray array, jsize index, jobject val); + + jbooleanArray (JNICALL *NewBooleanArray) + (JNIEnv *env, jsize len); + jbyteArray (JNICALL *NewByteArray) + (JNIEnv *env, jsize len); + jcharArray (JNICALL *NewCharArray) + (JNIEnv *env, jsize len); + jshortArray (JNICALL *NewShortArray) + (JNIEnv *env, jsize len); + jintArray (JNICALL *NewIntArray) + (JNIEnv *env, jsize len); + jlongArray (JNICALL *NewLongArray) + (JNIEnv *env, jsize len); + jfloatArray (JNICALL *NewFloatArray) + (JNIEnv *env, jsize len); + jdoubleArray (JNICALL *NewDoubleArray) + (JNIEnv *env, jsize len); + + jboolean * (JNICALL *GetBooleanArrayElements) + (JNIEnv *env, jbooleanArray array, jboolean *isCopy); + jbyte * (JNICALL *GetByteArrayElements) + (JNIEnv *env, jbyteArray array, jboolean *isCopy); + jchar * (JNICALL *GetCharArrayElements) + (JNIEnv *env, jcharArray array, jboolean *isCopy); + jshort * (JNICALL *GetShortArrayElements) + (JNIEnv *env, jshortArray array, jboolean *isCopy); + jint * (JNICALL *GetIntArrayElements) + (JNIEnv *env, jintArray array, jboolean *isCopy); + jlong * (JNICALL *GetLongArrayElements) + (JNIEnv *env, jlongArray array, jboolean *isCopy); + jfloat * (JNICALL *GetFloatArrayElements) + (JNIEnv *env, jfloatArray array, jboolean *isCopy); + jdouble * (JNICALL *GetDoubleArrayElements) + (JNIEnv *env, jdoubleArray array, jboolean *isCopy); + + void (JNICALL *ReleaseBooleanArrayElements) + (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode); + void (JNICALL *ReleaseByteArrayElements) + (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode); + void (JNICALL *ReleaseCharArrayElements) + (JNIEnv *env, jcharArray array, jchar *elems, jint mode); + void (JNICALL *ReleaseShortArrayElements) + (JNIEnv *env, jshortArray array, jshort *elems, jint mode); + void (JNICALL *ReleaseIntArrayElements) + (JNIEnv *env, jintArray array, jint *elems, jint mode); + void (JNICALL *ReleaseLongArrayElements) + (JNIEnv *env, jlongArray array, jlong *elems, jint mode); + void (JNICALL *ReleaseFloatArrayElements) + (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode); + void (JNICALL *ReleaseDoubleArrayElements) + (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode); + + void (JNICALL *GetBooleanArrayRegion) + (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf); + void (JNICALL *GetByteArrayRegion) + (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf); + void (JNICALL *GetCharArrayRegion) + (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf); + void (JNICALL *GetShortArrayRegion) + (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf); + void (JNICALL *GetIntArrayRegion) + (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf); + void (JNICALL *GetLongArrayRegion) + (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf); + void (JNICALL *GetFloatArrayRegion) + (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf); + void (JNICALL *GetDoubleArrayRegion) + (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf); + + void (JNICALL *SetBooleanArrayRegion) + (JNIEnv *env, jbooleanArray array, jsize start, jsize l, const jboolean *buf); + void (JNICALL *SetByteArrayRegion) + (JNIEnv *env, jbyteArray array, jsize start, jsize len, const jbyte *buf); + void (JNICALL *SetCharArrayRegion) + (JNIEnv *env, jcharArray array, jsize start, jsize len, const jchar *buf); + void (JNICALL *SetShortArrayRegion) + (JNIEnv *env, jshortArray array, jsize start, jsize len, const jshort *buf); + void (JNICALL *SetIntArrayRegion) + (JNIEnv *env, jintArray array, jsize start, jsize len, const jint *buf); + void (JNICALL *SetLongArrayRegion) + (JNIEnv *env, jlongArray array, jsize start, jsize len, const jlong *buf); + void (JNICALL *SetFloatArrayRegion) + (JNIEnv *env, jfloatArray array, jsize start, jsize len, const jfloat *buf); + void (JNICALL *SetDoubleArrayRegion) + (JNIEnv *env, jdoubleArray array, jsize start, jsize len, const jdouble *buf); + + jint (JNICALL *RegisterNatives) + (JNIEnv *env, jclass clazz, const JNINativeMethod *methods, + jint nMethods); + jint (JNICALL *UnregisterNatives) + (JNIEnv *env, jclass clazz); + + jint (JNICALL *MonitorEnter) + (JNIEnv *env, jobject obj); + jint (JNICALL *MonitorExit) + (JNIEnv *env, jobject obj); + + jint (JNICALL *GetJavaVM) + (JNIEnv *env, JavaVM **vm); + + void (JNICALL *GetStringRegion) + (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf); + void (JNICALL *GetStringUTFRegion) + (JNIEnv *env, jstring str, jsize start, jsize len, char *buf); + + void * (JNICALL *GetPrimitiveArrayCritical) + (JNIEnv *env, jarray array, jboolean *isCopy); + void (JNICALL *ReleasePrimitiveArrayCritical) + (JNIEnv *env, jarray array, void *carray, jint mode); + + const jchar * (JNICALL *GetStringCritical) + (JNIEnv *env, jstring string, jboolean *isCopy); + void (JNICALL *ReleaseStringCritical) + (JNIEnv *env, jstring string, const jchar *cstring); + + jweak (JNICALL *NewWeakGlobalRef) + (JNIEnv *env, jobject obj); + void (JNICALL *DeleteWeakGlobalRef) + (JNIEnv *env, jweak ref); + + jboolean (JNICALL *ExceptionCheck) + (JNIEnv *env); + + jobject (JNICALL *NewDirectByteBuffer) + (JNIEnv* env, void* address, jlong capacity); + void* (JNICALL *GetDirectBufferAddress) + (JNIEnv* env, jobject buf); + jlong (JNICALL *GetDirectBufferCapacity) + (JNIEnv* env, jobject buf); + + /* New JNI 1.6 Features */ + + jobjectRefType (JNICALL *GetObjectRefType) + (JNIEnv* env, jobject obj); +}; + +/* + * We use inlined functions for C++ so that programmers can write: + * + * env->FindClass("java/lang/String") + * + * in C++ rather than: + * + * (*env)->FindClass(env, "java/lang/String") + * + * in C. + */ + +struct JNIEnv_ { + const struct JNINativeInterface_ *functions; +#ifdef __cplusplus + + jint GetVersion() { + return functions->GetVersion(this); + } + jclass DefineClass(const char *name, jobject loader, const jbyte *buf, + jsize len) { + return functions->DefineClass(this, name, loader, buf, len); + } + jclass FindClass(const char *name) { + return functions->FindClass(this, name); + } + jmethodID FromReflectedMethod(jobject method) { + return functions->FromReflectedMethod(this,method); + } + jfieldID FromReflectedField(jobject field) { + return functions->FromReflectedField(this,field); + } + + jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) { + return functions->ToReflectedMethod(this, cls, methodID, isStatic); + } + + jclass GetSuperclass(jclass sub) { + return functions->GetSuperclass(this, sub); + } + jboolean IsAssignableFrom(jclass sub, jclass sup) { + return functions->IsAssignableFrom(this, sub, sup); + } + + jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) { + return functions->ToReflectedField(this,cls,fieldID,isStatic); + } + + jint Throw(jthrowable obj) { + return functions->Throw(this, obj); + } + jint ThrowNew(jclass clazz, const char *msg) { + return functions->ThrowNew(this, clazz, msg); + } + jthrowable ExceptionOccurred() { + return functions->ExceptionOccurred(this); + } + void ExceptionDescribe() { + functions->ExceptionDescribe(this); + } + void ExceptionClear() { + functions->ExceptionClear(this); + } + void FatalError(const char *msg) { + functions->FatalError(this, msg); + } + + jint PushLocalFrame(jint capacity) { + return functions->PushLocalFrame(this,capacity); + } + jobject PopLocalFrame(jobject result) { + return functions->PopLocalFrame(this,result); + } + + jobject NewGlobalRef(jobject lobj) { + return functions->NewGlobalRef(this,lobj); + } + void DeleteGlobalRef(jobject gref) { + functions->DeleteGlobalRef(this,gref); + } + void DeleteLocalRef(jobject obj) { + functions->DeleteLocalRef(this, obj); + } + + jboolean IsSameObject(jobject obj1, jobject obj2) { + return functions->IsSameObject(this,obj1,obj2); + } + + jobject NewLocalRef(jobject ref) { + return functions->NewLocalRef(this,ref); + } + jint EnsureLocalCapacity(jint capacity) { + return functions->EnsureLocalCapacity(this,capacity); + } + + jobject AllocObject(jclass clazz) { + return functions->AllocObject(this,clazz); + } + jobject NewObject(jclass clazz, jmethodID methodID, ...) { + va_list args; + jobject result; + va_start(args, methodID); + result = functions->NewObjectV(this,clazz,methodID,args); + va_end(args); + return result; + } + jobject NewObjectV(jclass clazz, jmethodID methodID, + va_list args) { + return functions->NewObjectV(this,clazz,methodID,args); + } + jobject NewObjectA(jclass clazz, jmethodID methodID, + const jvalue *args) { + return functions->NewObjectA(this,clazz,methodID,args); + } + + jclass GetObjectClass(jobject obj) { + return functions->GetObjectClass(this,obj); + } + jboolean IsInstanceOf(jobject obj, jclass clazz) { + return functions->IsInstanceOf(this,obj,clazz); + } + + jmethodID GetMethodID(jclass clazz, const char *name, + const char *sig) { + return functions->GetMethodID(this,clazz,name,sig); + } + + jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jobject result; + va_start(args,methodID); + result = functions->CallObjectMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jobject CallObjectMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallObjectMethodV(this,obj,methodID,args); + } + jobject CallObjectMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallObjectMethodA(this,obj,methodID,args); + } + + jboolean CallBooleanMethod(jobject obj, + jmethodID methodID, ...) { + va_list args; + jboolean result; + va_start(args,methodID); + result = functions->CallBooleanMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jboolean CallBooleanMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallBooleanMethodV(this,obj,methodID,args); + } + jboolean CallBooleanMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallBooleanMethodA(this,obj,methodID, args); + } + + jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jbyte result; + va_start(args,methodID); + result = functions->CallByteMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jbyte CallByteMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallByteMethodV(this,obj,methodID,args); + } + jbyte CallByteMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallByteMethodA(this,obj,methodID,args); + } + + jchar CallCharMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jchar result; + va_start(args,methodID); + result = functions->CallCharMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jchar CallCharMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallCharMethodV(this,obj,methodID,args); + } + jchar CallCharMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallCharMethodA(this,obj,methodID,args); + } + + jshort CallShortMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jshort result; + va_start(args,methodID); + result = functions->CallShortMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jshort CallShortMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallShortMethodV(this,obj,methodID,args); + } + jshort CallShortMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallShortMethodA(this,obj,methodID,args); + } + + jint CallIntMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jint result; + va_start(args,methodID); + result = functions->CallIntMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jint CallIntMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallIntMethodV(this,obj,methodID,args); + } + jint CallIntMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallIntMethodA(this,obj,methodID,args); + } + + jlong CallLongMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jlong result; + va_start(args,methodID); + result = functions->CallLongMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jlong CallLongMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallLongMethodV(this,obj,methodID,args); + } + jlong CallLongMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallLongMethodA(this,obj,methodID,args); + } + + jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jfloat result; + va_start(args,methodID); + result = functions->CallFloatMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jfloat CallFloatMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallFloatMethodV(this,obj,methodID,args); + } + jfloat CallFloatMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallFloatMethodA(this,obj,methodID,args); + } + + jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jdouble result; + va_start(args,methodID); + result = functions->CallDoubleMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jdouble CallDoubleMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallDoubleMethodV(this,obj,methodID,args); + } + jdouble CallDoubleMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallDoubleMethodA(this,obj,methodID,args); + } + + void CallVoidMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + va_start(args,methodID); + functions->CallVoidMethodV(this,obj,methodID,args); + va_end(args); + } + void CallVoidMethodV(jobject obj, jmethodID methodID, + va_list args) { + functions->CallVoidMethodV(this,obj,methodID,args); + } + void CallVoidMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + functions->CallVoidMethodA(this,obj,methodID,args); + } + + jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jobject result; + va_start(args,methodID); + result = functions->CallNonvirtualObjectMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualObjectMethodV(this,obj,clazz, + methodID,args); + } + jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualObjectMethodA(this,obj,clazz, + methodID,args); + } + + jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jboolean result; + va_start(args,methodID); + result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualBooleanMethodV(this,obj,clazz, + methodID,args); + } + jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualBooleanMethodA(this,obj,clazz, + methodID, args); + } + + jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jbyte result; + va_start(args,methodID); + result = functions->CallNonvirtualByteMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualByteMethodV(this,obj,clazz, + methodID,args); + } + jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualByteMethodA(this,obj,clazz, + methodID,args); + } + + jchar CallNonvirtualCharMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jchar result; + va_start(args,methodID); + result = functions->CallNonvirtualCharMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualCharMethodV(this,obj,clazz, + methodID,args); + } + jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualCharMethodA(this,obj,clazz, + methodID,args); + } + + jshort CallNonvirtualShortMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jshort result; + va_start(args,methodID); + result = functions->CallNonvirtualShortMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualShortMethodV(this,obj,clazz, + methodID,args); + } + jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualShortMethodA(this,obj,clazz, + methodID,args); + } + + jint CallNonvirtualIntMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jint result; + va_start(args,methodID); + result = functions->CallNonvirtualIntMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jint CallNonvirtualIntMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualIntMethodV(this,obj,clazz, + methodID,args); + } + jint CallNonvirtualIntMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualIntMethodA(this,obj,clazz, + methodID,args); + } + + jlong CallNonvirtualLongMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jlong result; + va_start(args,methodID); + result = functions->CallNonvirtualLongMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualLongMethodV(this,obj,clazz, + methodID,args); + } + jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualLongMethodA(this,obj,clazz, + methodID,args); + } + + jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jfloat result; + va_start(args,methodID); + result = functions->CallNonvirtualFloatMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz, + jmethodID methodID, + va_list args) { + return functions->CallNonvirtualFloatMethodV(this,obj,clazz, + methodID,args); + } + jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz, + jmethodID methodID, + const jvalue * args) { + return functions->CallNonvirtualFloatMethodA(this,obj,clazz, + methodID,args); + } + + jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jdouble result; + va_start(args,methodID); + result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz, + jmethodID methodID, + va_list args) { + return functions->CallNonvirtualDoubleMethodV(this,obj,clazz, + methodID,args); + } + jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz, + jmethodID methodID, + const jvalue * args) { + return functions->CallNonvirtualDoubleMethodA(this,obj,clazz, + methodID,args); + } + + void CallNonvirtualVoidMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + va_start(args,methodID); + functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); + va_end(args); + } + void CallNonvirtualVoidMethodV(jobject obj, jclass clazz, + jmethodID methodID, + va_list args) { + functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); + } + void CallNonvirtualVoidMethodA(jobject obj, jclass clazz, + jmethodID methodID, + const jvalue * args) { + functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args); + } + + jfieldID GetFieldID(jclass clazz, const char *name, + const char *sig) { + return functions->GetFieldID(this,clazz,name,sig); + } + + jobject GetObjectField(jobject obj, jfieldID fieldID) { + return functions->GetObjectField(this,obj,fieldID); + } + jboolean GetBooleanField(jobject obj, jfieldID fieldID) { + return functions->GetBooleanField(this,obj,fieldID); + } + jbyte GetByteField(jobject obj, jfieldID fieldID) { + return functions->GetByteField(this,obj,fieldID); + } + jchar GetCharField(jobject obj, jfieldID fieldID) { + return functions->GetCharField(this,obj,fieldID); + } + jshort GetShortField(jobject obj, jfieldID fieldID) { + return functions->GetShortField(this,obj,fieldID); + } + jint GetIntField(jobject obj, jfieldID fieldID) { + return functions->GetIntField(this,obj,fieldID); + } + jlong GetLongField(jobject obj, jfieldID fieldID) { + return functions->GetLongField(this,obj,fieldID); + } + jfloat GetFloatField(jobject obj, jfieldID fieldID) { + return functions->GetFloatField(this,obj,fieldID); + } + jdouble GetDoubleField(jobject obj, jfieldID fieldID) { + return functions->GetDoubleField(this,obj,fieldID); + } + + void SetObjectField(jobject obj, jfieldID fieldID, jobject val) { + functions->SetObjectField(this,obj,fieldID,val); + } + void SetBooleanField(jobject obj, jfieldID fieldID, + jboolean val) { + functions->SetBooleanField(this,obj,fieldID,val); + } + void SetByteField(jobject obj, jfieldID fieldID, + jbyte val) { + functions->SetByteField(this,obj,fieldID,val); + } + void SetCharField(jobject obj, jfieldID fieldID, + jchar val) { + functions->SetCharField(this,obj,fieldID,val); + } + void SetShortField(jobject obj, jfieldID fieldID, + jshort val) { + functions->SetShortField(this,obj,fieldID,val); + } + void SetIntField(jobject obj, jfieldID fieldID, + jint val) { + functions->SetIntField(this,obj,fieldID,val); + } + void SetLongField(jobject obj, jfieldID fieldID, + jlong val) { + functions->SetLongField(this,obj,fieldID,val); + } + void SetFloatField(jobject obj, jfieldID fieldID, + jfloat val) { + functions->SetFloatField(this,obj,fieldID,val); + } + void SetDoubleField(jobject obj, jfieldID fieldID, + jdouble val) { + functions->SetDoubleField(this,obj,fieldID,val); + } + + jmethodID GetStaticMethodID(jclass clazz, const char *name, + const char *sig) { + return functions->GetStaticMethodID(this,clazz,name,sig); + } + + jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, + ...) { + va_list args; + jobject result; + va_start(args,methodID); + result = functions->CallStaticObjectMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID, + va_list args) { + return functions->CallStaticObjectMethodV(this,clazz,methodID,args); + } + jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID, + const jvalue *args) { + return functions->CallStaticObjectMethodA(this,clazz,methodID,args); + } + + jboolean CallStaticBooleanMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jboolean result; + va_start(args,methodID); + result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jboolean CallStaticBooleanMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticBooleanMethodV(this,clazz,methodID,args); + } + jboolean CallStaticBooleanMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticBooleanMethodA(this,clazz,methodID,args); + } + + jbyte CallStaticByteMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jbyte result; + va_start(args,methodID); + result = functions->CallStaticByteMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jbyte CallStaticByteMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticByteMethodV(this,clazz,methodID,args); + } + jbyte CallStaticByteMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticByteMethodA(this,clazz,methodID,args); + } + + jchar CallStaticCharMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jchar result; + va_start(args,methodID); + result = functions->CallStaticCharMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jchar CallStaticCharMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticCharMethodV(this,clazz,methodID,args); + } + jchar CallStaticCharMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticCharMethodA(this,clazz,methodID,args); + } + + jshort CallStaticShortMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jshort result; + va_start(args,methodID); + result = functions->CallStaticShortMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jshort CallStaticShortMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticShortMethodV(this,clazz,methodID,args); + } + jshort CallStaticShortMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticShortMethodA(this,clazz,methodID,args); + } + + jint CallStaticIntMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jint result; + va_start(args,methodID); + result = functions->CallStaticIntMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jint CallStaticIntMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticIntMethodV(this,clazz,methodID,args); + } + jint CallStaticIntMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticIntMethodA(this,clazz,methodID,args); + } + + jlong CallStaticLongMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jlong result; + va_start(args,methodID); + result = functions->CallStaticLongMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jlong CallStaticLongMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticLongMethodV(this,clazz,methodID,args); + } + jlong CallStaticLongMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticLongMethodA(this,clazz,methodID,args); + } + + jfloat CallStaticFloatMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jfloat result; + va_start(args,methodID); + result = functions->CallStaticFloatMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jfloat CallStaticFloatMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticFloatMethodV(this,clazz,methodID,args); + } + jfloat CallStaticFloatMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticFloatMethodA(this,clazz,methodID,args); + } + + jdouble CallStaticDoubleMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jdouble result; + va_start(args,methodID); + result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jdouble CallStaticDoubleMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticDoubleMethodV(this,clazz,methodID,args); + } + jdouble CallStaticDoubleMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticDoubleMethodA(this,clazz,methodID,args); + } + + void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) { + va_list args; + va_start(args,methodID); + functions->CallStaticVoidMethodV(this,cls,methodID,args); + va_end(args); + } + void CallStaticVoidMethodV(jclass cls, jmethodID methodID, + va_list args) { + functions->CallStaticVoidMethodV(this,cls,methodID,args); + } + void CallStaticVoidMethodA(jclass cls, jmethodID methodID, + const jvalue * args) { + functions->CallStaticVoidMethodA(this,cls,methodID,args); + } + + jfieldID GetStaticFieldID(jclass clazz, const char *name, + const char *sig) { + return functions->GetStaticFieldID(this,clazz,name,sig); + } + jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticObjectField(this,clazz,fieldID); + } + jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticBooleanField(this,clazz,fieldID); + } + jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticByteField(this,clazz,fieldID); + } + jchar GetStaticCharField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticCharField(this,clazz,fieldID); + } + jshort GetStaticShortField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticShortField(this,clazz,fieldID); + } + jint GetStaticIntField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticIntField(this,clazz,fieldID); + } + jlong GetStaticLongField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticLongField(this,clazz,fieldID); + } + jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticFloatField(this,clazz,fieldID); + } + jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticDoubleField(this,clazz,fieldID); + } + + void SetStaticObjectField(jclass clazz, jfieldID fieldID, + jobject value) { + functions->SetStaticObjectField(this,clazz,fieldID,value); + } + void SetStaticBooleanField(jclass clazz, jfieldID fieldID, + jboolean value) { + functions->SetStaticBooleanField(this,clazz,fieldID,value); + } + void SetStaticByteField(jclass clazz, jfieldID fieldID, + jbyte value) { + functions->SetStaticByteField(this,clazz,fieldID,value); + } + void SetStaticCharField(jclass clazz, jfieldID fieldID, + jchar value) { + functions->SetStaticCharField(this,clazz,fieldID,value); + } + void SetStaticShortField(jclass clazz, jfieldID fieldID, + jshort value) { + functions->SetStaticShortField(this,clazz,fieldID,value); + } + void SetStaticIntField(jclass clazz, jfieldID fieldID, + jint value) { + functions->SetStaticIntField(this,clazz,fieldID,value); + } + void SetStaticLongField(jclass clazz, jfieldID fieldID, + jlong value) { + functions->SetStaticLongField(this,clazz,fieldID,value); + } + void SetStaticFloatField(jclass clazz, jfieldID fieldID, + jfloat value) { + functions->SetStaticFloatField(this,clazz,fieldID,value); + } + void SetStaticDoubleField(jclass clazz, jfieldID fieldID, + jdouble value) { + functions->SetStaticDoubleField(this,clazz,fieldID,value); + } + + jstring NewString(const jchar *unicode, jsize len) { + return functions->NewString(this,unicode,len); + } + jsize GetStringLength(jstring str) { + return functions->GetStringLength(this,str); + } + const jchar *GetStringChars(jstring str, jboolean *isCopy) { + return functions->GetStringChars(this,str,isCopy); + } + void ReleaseStringChars(jstring str, const jchar *chars) { + functions->ReleaseStringChars(this,str,chars); + } + + jstring NewStringUTF(const char *utf) { + return functions->NewStringUTF(this,utf); + } + jsize GetStringUTFLength(jstring str) { + return functions->GetStringUTFLength(this,str); + } + const char* GetStringUTFChars(jstring str, jboolean *isCopy) { + return functions->GetStringUTFChars(this,str,isCopy); + } + void ReleaseStringUTFChars(jstring str, const char* chars) { + functions->ReleaseStringUTFChars(this,str,chars); + } + + jsize GetArrayLength(jarray array) { + return functions->GetArrayLength(this,array); + } + + jobjectArray NewObjectArray(jsize len, jclass clazz, + jobject init) { + return functions->NewObjectArray(this,len,clazz,init); + } + jobject GetObjectArrayElement(jobjectArray array, jsize index) { + return functions->GetObjectArrayElement(this,array,index); + } + void SetObjectArrayElement(jobjectArray array, jsize index, + jobject val) { + functions->SetObjectArrayElement(this,array,index,val); + } + + jbooleanArray NewBooleanArray(jsize len) { + return functions->NewBooleanArray(this,len); + } + jbyteArray NewByteArray(jsize len) { + return functions->NewByteArray(this,len); + } + jcharArray NewCharArray(jsize len) { + return functions->NewCharArray(this,len); + } + jshortArray NewShortArray(jsize len) { + return functions->NewShortArray(this,len); + } + jintArray NewIntArray(jsize len) { + return functions->NewIntArray(this,len); + } + jlongArray NewLongArray(jsize len) { + return functions->NewLongArray(this,len); + } + jfloatArray NewFloatArray(jsize len) { + return functions->NewFloatArray(this,len); + } + jdoubleArray NewDoubleArray(jsize len) { + return functions->NewDoubleArray(this,len); + } + + jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) { + return functions->GetBooleanArrayElements(this,array,isCopy); + } + jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) { + return functions->GetByteArrayElements(this,array,isCopy); + } + jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) { + return functions->GetCharArrayElements(this,array,isCopy); + } + jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) { + return functions->GetShortArrayElements(this,array,isCopy); + } + jint * GetIntArrayElements(jintArray array, jboolean *isCopy) { + return functions->GetIntArrayElements(this,array,isCopy); + } + jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) { + return functions->GetLongArrayElements(this,array,isCopy); + } + jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) { + return functions->GetFloatArrayElements(this,array,isCopy); + } + jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) { + return functions->GetDoubleArrayElements(this,array,isCopy); + } + + void ReleaseBooleanArrayElements(jbooleanArray array, + jboolean *elems, + jint mode) { + functions->ReleaseBooleanArrayElements(this,array,elems,mode); + } + void ReleaseByteArrayElements(jbyteArray array, + jbyte *elems, + jint mode) { + functions->ReleaseByteArrayElements(this,array,elems,mode); + } + void ReleaseCharArrayElements(jcharArray array, + jchar *elems, + jint mode) { + functions->ReleaseCharArrayElements(this,array,elems,mode); + } + void ReleaseShortArrayElements(jshortArray array, + jshort *elems, + jint mode) { + functions->ReleaseShortArrayElements(this,array,elems,mode); + } + void ReleaseIntArrayElements(jintArray array, + jint *elems, + jint mode) { + functions->ReleaseIntArrayElements(this,array,elems,mode); + } + void ReleaseLongArrayElements(jlongArray array, + jlong *elems, + jint mode) { + functions->ReleaseLongArrayElements(this,array,elems,mode); + } + void ReleaseFloatArrayElements(jfloatArray array, + jfloat *elems, + jint mode) { + functions->ReleaseFloatArrayElements(this,array,elems,mode); + } + void ReleaseDoubleArrayElements(jdoubleArray array, + jdouble *elems, + jint mode) { + functions->ReleaseDoubleArrayElements(this,array,elems,mode); + } + + void GetBooleanArrayRegion(jbooleanArray array, + jsize start, jsize len, jboolean *buf) { + functions->GetBooleanArrayRegion(this,array,start,len,buf); + } + void GetByteArrayRegion(jbyteArray array, + jsize start, jsize len, jbyte *buf) { + functions->GetByteArrayRegion(this,array,start,len,buf); + } + void GetCharArrayRegion(jcharArray array, + jsize start, jsize len, jchar *buf) { + functions->GetCharArrayRegion(this,array,start,len,buf); + } + void GetShortArrayRegion(jshortArray array, + jsize start, jsize len, jshort *buf) { + functions->GetShortArrayRegion(this,array,start,len,buf); + } + void GetIntArrayRegion(jintArray array, + jsize start, jsize len, jint *buf) { + functions->GetIntArrayRegion(this,array,start,len,buf); + } + void GetLongArrayRegion(jlongArray array, + jsize start, jsize len, jlong *buf) { + functions->GetLongArrayRegion(this,array,start,len,buf); + } + void GetFloatArrayRegion(jfloatArray array, + jsize start, jsize len, jfloat *buf) { + functions->GetFloatArrayRegion(this,array,start,len,buf); + } + void GetDoubleArrayRegion(jdoubleArray array, + jsize start, jsize len, jdouble *buf) { + functions->GetDoubleArrayRegion(this,array,start,len,buf); + } + + void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, + const jboolean *buf) { + functions->SetBooleanArrayRegion(this,array,start,len,buf); + } + void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, + const jbyte *buf) { + functions->SetByteArrayRegion(this,array,start,len,buf); + } + void SetCharArrayRegion(jcharArray array, jsize start, jsize len, + const jchar *buf) { + functions->SetCharArrayRegion(this,array,start,len,buf); + } + void SetShortArrayRegion(jshortArray array, jsize start, jsize len, + const jshort *buf) { + functions->SetShortArrayRegion(this,array,start,len,buf); + } + void SetIntArrayRegion(jintArray array, jsize start, jsize len, + const jint *buf) { + functions->SetIntArrayRegion(this,array,start,len,buf); + } + void SetLongArrayRegion(jlongArray array, jsize start, jsize len, + const jlong *buf) { + functions->SetLongArrayRegion(this,array,start,len,buf); + } + void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, + const jfloat *buf) { + functions->SetFloatArrayRegion(this,array,start,len,buf); + } + void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, + const jdouble *buf) { + functions->SetDoubleArrayRegion(this,array,start,len,buf); + } + + jint RegisterNatives(jclass clazz, const JNINativeMethod *methods, + jint nMethods) { + return functions->RegisterNatives(this,clazz,methods,nMethods); + } + jint UnregisterNatives(jclass clazz) { + return functions->UnregisterNatives(this,clazz); + } + + jint MonitorEnter(jobject obj) { + return functions->MonitorEnter(this,obj); + } + jint MonitorExit(jobject obj) { + return functions->MonitorExit(this,obj); + } + + jint GetJavaVM(JavaVM **vm) { + return functions->GetJavaVM(this,vm); + } + + void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) { + functions->GetStringRegion(this,str,start,len,buf); + } + void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) { + functions->GetStringUTFRegion(this,str,start,len,buf); + } + + void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) { + return functions->GetPrimitiveArrayCritical(this,array,isCopy); + } + void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) { + functions->ReleasePrimitiveArrayCritical(this,array,carray,mode); + } + + const jchar * GetStringCritical(jstring string, jboolean *isCopy) { + return functions->GetStringCritical(this,string,isCopy); + } + void ReleaseStringCritical(jstring string, const jchar *cstring) { + functions->ReleaseStringCritical(this,string,cstring); + } + + jweak NewWeakGlobalRef(jobject obj) { + return functions->NewWeakGlobalRef(this,obj); + } + void DeleteWeakGlobalRef(jweak ref) { + functions->DeleteWeakGlobalRef(this,ref); + } + + jboolean ExceptionCheck() { + return functions->ExceptionCheck(this); + } + + jobject NewDirectByteBuffer(void* address, jlong capacity) { + return functions->NewDirectByteBuffer(this, address, capacity); + } + void* GetDirectBufferAddress(jobject buf) { + return functions->GetDirectBufferAddress(this, buf); + } + jlong GetDirectBufferCapacity(jobject buf) { + return functions->GetDirectBufferCapacity(this, buf); + } + jobjectRefType GetObjectRefType(jobject obj) { + return functions->GetObjectRefType(this, obj); + } + +#endif /* __cplusplus */ +}; + +typedef struct JavaVMOption { + char *optionString; + void *extraInfo; +} JavaVMOption; + +typedef struct JavaVMInitArgs { + jint version; + + jint nOptions; + JavaVMOption *options; + jboolean ignoreUnrecognized; +} JavaVMInitArgs; + +typedef struct JavaVMAttachArgs { + jint version; + + char *name; + jobject group; +} JavaVMAttachArgs; + +/* These will be VM-specific. */ + +#define JDK1_2 +#define JDK1_4 + +/* End VM-specific. */ + +struct JNIInvokeInterface_ { + void *reserved0; + void *reserved1; + void *reserved2; + + jint (JNICALL *DestroyJavaVM)(JavaVM *vm); + +#if defined(__ANDROID__) + jint (JNICALL *AttachCurrentThread)(JavaVM *vm, JNIEnv **penv, void *args); +#else + jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args); +#endif + + jint (JNICALL *DetachCurrentThread)(JavaVM *vm); + + jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version); + + jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args); +}; + +struct JavaVM_ { + const struct JNIInvokeInterface_ *functions; +#ifdef __cplusplus + + jint DestroyJavaVM() { + return functions->DestroyJavaVM(this); + } +#if defined(__ANDROID__) + jint AttachCurrentThread(JNIEnv **penv, void *args) { +#else + jint AttachCurrentThread(void **penv, void *args) { +#endif + return functions->AttachCurrentThread(this, penv, args); + } + jint DetachCurrentThread() { + return functions->DetachCurrentThread(this); + } + + jint GetEnv(void **penv, jint version) { + return functions->GetEnv(this, penv, version); + } + jint AttachCurrentThreadAsDaemon(void **penv, void *args) { + return functions->AttachCurrentThreadAsDaemon(this, penv, args); + } +#endif +}; + +#ifdef _JNI_IMPLEMENTATION_ +#define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT +#else +#define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT +#endif +_JNI_IMPORT_OR_EXPORT_ jint JNICALL +JNI_GetDefaultJavaVMInitArgs(void *args); + +_JNI_IMPORT_OR_EXPORT_ jint JNICALL +JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args); + +_JNI_IMPORT_OR_EXPORT_ jint JNICALL +JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *); + +/* Defined by native libraries. */ +JNIEXPORT jint JNICALL +JNI_OnLoad(JavaVM *vm, void *reserved); + +JNIEXPORT void JNICALL +JNI_OnUnload(JavaVM *vm, void *reserved); + +#define JNI_VERSION_1_1 0x00010001 +#define JNI_VERSION_1_2 0x00010002 +#define JNI_VERSION_1_4 0x00010004 +#define JNI_VERSION_1_6 0x00010006 +#define JNI_VERSION_1_8 0x00010008 + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ + +#endif /* !_JAVASOFT_JNI_H_ */ diff --git a/frostwire-jlibtorrent/swig/libtorrent.h b/frostwire-jlibtorrent/swig/libtorrent.h new file mode 100644 index 0000000..e01d408 --- /dev/null +++ b/frostwire-jlibtorrent/swig/libtorrent.h @@ -0,0 +1,494 @@ +#ifndef _WIN32 +#include +#endif + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +std::vector ed25519_create_seed() { + std::array seed = libtorrent::dht::ed25519_create_seed(); + return std::vector(seed.data(), seed.end()); +} + +std::pair, std::vector> ed25519_create_keypair( + std::vector& seed) { + using namespace libtorrent::dht; + + public_key pk; + secret_key sk; + + std::array s; + std::copy_n(seed.begin(), 32, s.begin()); + + std::tie(pk, sk) = ed25519_create_keypair(s); + + return std::make_pair(std::vector(pk.bytes.begin(), pk.bytes.end()), + std::vector(sk.bytes.begin(), sk.bytes.end())); +} + +std::vector ed25519_sign(std::vector& msg, + std::vector& pk, std::vector& sk) { + using namespace libtorrent::dht; + + public_key pk1((char*)pk.data()); + secret_key sk1((char*)sk.data()); + + signature sig = ed25519_sign({reinterpret_cast(msg.data()), static_cast(msg.size())}, + pk1, sk1); + return std::vector(sig.bytes.begin(), sig.bytes.end()); +} + +bool ed25519_verify(std::vector& sig, + std::vector& msg, + std::vector& pk) { + using namespace libtorrent::dht; + + signature sig1((char*)sig.data()); + public_key pk1((char*)pk.data()); + + return ed25519_verify(sig1, {reinterpret_cast(msg.data()), static_cast(msg.size())}, pk1); +} + +std::vector ed25519_add_scalar_public(std::vector& pk, + std::vector& scalar) { + using namespace libtorrent::dht; + + public_key pk1((char*)pk.data()); + + std::array s; + std::copy_n(scalar.begin(), 32, s.begin()); + + public_key ret = ed25519_add_scalar(pk1, s); + return std::vector(ret.bytes.begin(), ret.bytes.end()); +} + +std::vector ed25519_add_scalar_secret(std::vector& sk, + std::vector& scalar) { + using namespace libtorrent::dht; + + secret_key sk1((char*)sk.data()); + + std::array s; + std::copy_n(scalar.begin(), 32, s.begin()); + + secret_key ret = ed25519_add_scalar(sk1, s); + return std::vector(ret.bytes.begin(), ret.bytes.end()); +} + +std::vector ed25519_key_exchange(std::vector& pk, + std::vector& sk) { + using namespace libtorrent::dht; + + public_key pk1((char*)pk.data()); + secret_key sk1((char*)sk.data()); + + std::array secret = ed25519_key_exchange(pk1, sk1); + return std::vector(secret.begin(), secret.end()); +} + +struct alert_notify_callback { + + virtual ~alert_notify_callback() { + } + + virtual void on_alert() { + } +}; + +struct add_files_listener { + + virtual ~add_files_listener() { + } + + virtual bool pred(std::string const& p) { + return true; + } +}; + +void add_files_ex(libtorrent::file_storage& fs, std::string const& file, + add_files_listener* listener, libtorrent::create_flags_t flags) { + add_files(fs, file, std::bind(&add_files_listener::pred, listener, std::placeholders::_1), flags); +} + +struct set_piece_hashes_listener { + + virtual ~set_piece_hashes_listener() { + } + + virtual void progress(int i) { + } + + void progress_index(libtorrent::piece_index_t i) { + progress(static_cast(i)); + } +}; + +void set_piece_hashes_ex(libtorrent::create_torrent& t, std::string const& p, + set_piece_hashes_listener* listener, libtorrent::error_code& ec) { + set_piece_hashes(t, p, std::bind(&set_piece_hashes_listener::progress_index, listener, std::placeholders::_1), ec); +} + +int boost_version() { + return BOOST_VERSION; +} + +const char* boost_lib_version() { + return BOOST_LIB_VERSION; +} + +int openssl_version_number() { + return OPENSSL_VERSION_NUMBER; +} + +const char* openssl_version_text() { + return OPENSSL_VERSION_TEXT; +} + +int find_metric_idx_s(std::string const& name) { + return libtorrent::find_metric_idx(name); +} + +void dht_put_item_cb(libtorrent::entry& e, std::array& sig, std::int64_t& seq, + std::string salt, libtorrent::dht::public_key pk, libtorrent::dht::secret_key sk, + libtorrent::entry data) { + using namespace libtorrent::dht; + + e = data; + std::vector buf; + bencode(std::back_inserter(buf), e); + signature sign; + ++seq; + sign = sign_mutable_item(buf, salt, sequence_number(seq), pk, sk); + sig = sign.bytes; +} + +struct swig_plugin : libtorrent::plugin { + + virtual ~swig_plugin() { + } + + libtorrent::feature_flags_t implemented_features() { + return libtorrent::plugin::dht_request_feature; + } + + virtual bool on_dht_request(libtorrent::string_view query, + libtorrent::udp::endpoint const& source, + libtorrent::bdecode_node const& message, libtorrent::entry& response) { + return false; + } +}; + +// enum_net functions, very useful for networking +struct ip_interface +{ + libtorrent::address interface_address; + libtorrent::address netmask; + std::vector name; + std::vector friendly_name; + std::vector description; + bool preferred; +}; + +struct ip_route +{ + libtorrent::address destination; + libtorrent::address netmask; + libtorrent::address gateway; + libtorrent::address source_hint; + std::vector name; + int mtu; +}; + +std::vector enum_net_interfaces(libtorrent::session* s) +{ + std::vector ret; + boost::system::error_code ec; + auto v = libtorrent::enum_net_interfaces(s->get_io_service(), ec); + for (auto& e : v) + { + ip_interface iface; + iface.interface_address = e.interface_address; + iface.netmask = e.netmask; + iface.name = {e.name, e.name + sizeof(e.name)}; + iface.friendly_name = {e.friendly_name, e.friendly_name + sizeof(e.friendly_name)}; + iface.description = {e.description, e.description + sizeof(e.description)}; + iface.preferred = e.preferred; + ret.push_back(iface); + } + return ret; +} + +std::vector enum_routes(libtorrent::session* s) +{ + std::vector ret; + boost::system::error_code ec; + auto v = libtorrent::enum_routes(s->get_io_service(), ec); + for (auto& e : v) + { + ip_route r; + r.destination = e.destination; + r.netmask = e.netmask; + r.gateway = e.gateway; + r.name = {e.name, e.name + sizeof(e.name)}; + r.mtu = e.mtu; + ret.push_back(r); + } + return ret; +} + +void copy_byte_vector_to_char_array(std::vector source, char* target, const unsigned int target_size) +{ + std::memset(target, 0, target_size); + for (unsigned int i=0; i < source.size() || i <= target_size; i++) { + target[i] = source[i]; + } +} + +//boost::optional

get_gateway(ip_interface const& iface, span routes); +//@see enum_net.hpp -> struct libtorrent::ip_interface +//@see enum_net.hpp -> struct libtorrent::ip_route +libtorrent::address get_gateway(ip_interface const& iface, std::vector& routes) +{ + // convert our libtorrent.h defined types to native libtorrent:: types from enum_net.hpp + libtorrent::ip_interface lt_iface; + lt_iface.interface_address = iface.interface_address; + lt_iface.netmask = iface.netmask; + lt_iface.preferred = iface.preferred; + + copy_byte_vector_to_char_array(iface.name, lt_iface.name, sizeof(lt_iface.name)); // 64 + copy_byte_vector_to_char_array(iface.friendly_name, lt_iface.friendly_name, sizeof(lt_iface.friendly_name)); // 128 + copy_byte_vector_to_char_array(iface.description, lt_iface.description, sizeof(lt_iface.description)); // 128 + + // convert ip_route_vector to vector (cannot use const, gnu g++ explodes in linux/android thinking there's an ambiguity) + std::vector lt_routes; + for (auto const& r : routes) { + libtorrent::ip_route lt_ip_route; + lt_ip_route.destination = r.destination; + lt_ip_route.netmask = r.netmask; + lt_ip_route.gateway = r.gateway; + lt_ip_route.source_hint = r.source_hint; + lt_ip_route.mtu = r.mtu; + copy_byte_vector_to_char_array(r.name, lt_ip_route.name, sizeof(lt_ip_route.name)); //64 + lt_routes.push_back(lt_ip_route); + } + + return libtorrent::get_gateway(lt_iface, lt_routes).get(); +} + +bool arm_neon_support() +{ + return libtorrent::aux::arm_neon_support; +} + +#if defined TORRENT_ANDROID || defined TORRENT_BSD +#define WRAP_POSIX 1 +#else +#define WRAP_POSIX 0 +#endif + +struct posix_stat_t { + int64_t size; + int64_t atime; + int64_t mtime; + int64_t ctime; + int mode; +}; + +#if WRAP_POSIX +void* get_libc() { +#if defined TORRENT_ANDROID + static void* h = dlopen("libc.so", RTLD_NOW); +#elif defined TORRENT_BSD + static void* h = dlopen("libc.dylib", RTLD_NOW); +#else + static void* h = nullptr; +#endif + return h; +} + +int posix_open(const char* path, int flags, mode_t mode) { + typedef int func_t(const char*, int, ...); + static func_t* f = (func_t*) dlsym(get_libc(), "open"); +#if defined TORRENT_ANDROID + flags |= O_LARGEFILE; +#endif + return (*f)(path, flags, mode); +} + +int posix_stat(const char *path, struct ::stat *buf) { + typedef int func_t(const char*, struct ::stat*); +#if defined TORRENT_ANDROID && __ANDROID_API__ < 21 + static func_t* f = (func_t*) dlsym(get_libc(), "stat"); +#else + static func_t* f = (func_t*) dlsym(get_libc(), "stat64"); +#endif + return (*f)(path, buf); +} + +int posix_mkdir(const char *path, mode_t mode) { + typedef int func_t(const char*, mode_t); + static func_t* f = (func_t*) dlsym(get_libc(), "mkdir"); + return (*f)(path, mode); +} + +int posix_rename(const char *oldpath, const char *newpath) { + typedef int func_t(const char*, const char*); + static func_t* f = (func_t*) dlsym(get_libc(), "rename"); + return (*f)(oldpath, newpath); +} + +int posix_remove(const char *path) { + typedef int func_t(const char*); + static func_t* f = (func_t*) dlsym(get_libc(), "remove"); + return (*f)(path); +} +#endif + +struct posix_wrapper { + + virtual ~posix_wrapper() { + } + + virtual int open(const char* path, int flags, int mode) { +#if WRAP_POSIX + return posix_open(path, flags, mode); +#else + return -1; +#endif + } + + virtual int stat(const char *path, posix_stat_t *buf) { +#if WRAP_POSIX + struct ::stat t; + int r = posix_stat(path, &t); + buf->size = t.st_size; + buf->atime = t.st_atime; + buf->mtime = t.st_mtime; + buf->ctime = t.st_ctime; + buf->mode = t.st_mode; + return r; +#else + return -1; +#endif + } + + virtual int mkdir(const char *path, int mode) { +#if WRAP_POSIX + return posix_mkdir(path, mode); +#else + return -1; +#endif + } + + virtual int rename(const char *oldpath, const char *newpath) { +#if WRAP_POSIX + return posix_rename(oldpath, newpath); +#else + return -1; +#endif + } + + virtual int remove(const char *path) { +#if WRAP_POSIX + return posix_remove(path); +#else + return -1; +#endif + } +}; + +posix_wrapper* g_posix_wrapper = NULL; + +void set_posix_wrapper(posix_wrapper *obj) { + g_posix_wrapper = obj; +} + +#if WRAP_POSIX +extern "C" { + +int open(const char *path, int flags, ...) { + mode_t mode = 0; + if (flags & O_CREAT) { + va_list v; + va_start(v, flags); + mode = (mode_t) va_arg(v, int); + va_end(v); + } + + return g_posix_wrapper != NULL ? + g_posix_wrapper->open(path, flags, mode) : + posix_open(path, flags, mode); +} + +int stat(const char *path, struct ::stat *buf) { + if (g_posix_wrapper != NULL) { + posix_stat_t t; + int r = g_posix_wrapper->stat(path, &t); + buf->st_size = t.size; + buf->st_atime = t.atime; + buf->st_mtime = t.mtime; + buf->st_ctime = t.ctime; + buf->st_mode = t.mode; + return r; + } else { + return posix_stat(path, buf); + } +} + +int mkdir(const char *path, mode_t mode) { + return g_posix_wrapper != NULL ? + g_posix_wrapper->mkdir(path, mode) : + posix_mkdir(path, mode); +} + +int rename(const char *oldpath, const char *newpath) { + return g_posix_wrapper != NULL ? + g_posix_wrapper->rename(oldpath, newpath) : + posix_rename(oldpath, newpath); +} + +int remove(const char *path) { + return g_posix_wrapper != NULL ? + g_posix_wrapper->remove(path) : + posix_remove(path); +} + +} +#endif diff --git a/frostwire-jlibtorrent/swig/libtorrent.i b/frostwire-jlibtorrent/swig/libtorrent.i new file mode 100644 index 0000000..4bb7900 --- /dev/null +++ b/frostwire-jlibtorrent/swig/libtorrent.i @@ -0,0 +1,2108 @@ +%module (jniclassname="libtorrent_jni", directors="1") libtorrent + +// suppress Warning 317: Specialization of non-template ''. +#pragma SWIG nowarn=317 +// suppress Warning 341: The 'using' keyword in type aliasing is not fully supported yet. +#pragma SWIG nowarn=341 +// suppress Warning 401: Nothing known about base class ''. Ignored. +#pragma SWIG nowarn=401 +// supress Warning 402: Base class '' is incomplete. +#pragma SWIG nowarn=402 +// Overloaded method ignored, using instead. +#pragma SWIG nowarn=516 + +%{ +// BEGIN common set include ------------------------------------------------------ + +#include "libtorrent/version.hpp" +#include "libtorrent/error_code.hpp" +#include "libtorrent/peer_request.hpp" +#include "libtorrent/file_storage.hpp" +#include "libtorrent/bdecode.hpp" +#include "libtorrent/bencode.hpp" +#include "libtorrent/peer_info.hpp" +#include "libtorrent/torrent_flags.hpp" +#include "libtorrent/torrent_info.hpp" +#include "libtorrent/pex_flags.hpp" +#include "libtorrent/torrent_status.hpp" +#include "libtorrent/torrent_handle.hpp" +#include "libtorrent/add_torrent_params.hpp" +#include "libtorrent/operations.hpp" +#include "libtorrent/session_stats.hpp" +#include "libtorrent/close_reason.hpp" +#include "libtorrent/alert.hpp" +#include "libtorrent/alert_types.hpp" +#include "libtorrent/session_settings.hpp" +#include "libtorrent/settings_pack.hpp" +#include "libtorrent/peer_class.hpp" +#include "libtorrent/peer_class_type_filter.hpp" +#include "libtorrent/session_types.hpp" +#include "libtorrent/ip_filter.hpp" +#include "libtorrent/session_handle.hpp" +#include "libtorrent/kademlia/dht_state.hpp" +#include "libtorrent/kademlia/dht_settings.hpp" +#include "libtorrent/session.hpp" +#include "libtorrent/peer_connection_handle.hpp" +#include "libtorrent/magnet_uri.hpp" +#include "libtorrent/create_torrent.hpp" +#include "libtorrent/fingerprint.hpp" + +#include "libtorrent.h" + +using piece_index_t = libtorrent::piece_index_t; +using file_index_t = libtorrent::file_index_t; +using peer_class_t = libtorrent::peer_class_t; +using port_mapping_t = libtorrent::port_mapping_t; +using queue_position_t = libtorrent::queue_position_t; +using download_priority_t = libtorrent::download_priority_t; +using disconnect_severity_t = libtorrent::disconnect_severity_t; + +// END common set include ------------------------------------------------------ +%} + +#ifdef SWIGJAVA + +%pragma(java) jniclasscode=%{ + + public static String jlibtorrentVersion() { + // extracted from the gradle with the run-swig step + return "$JLIBTORRENT_VERSION$"; + } + + static { + try { + String path = System.getProperty("jlibtorrent.jni.path", ""); + if ("".equals(path)) { + try { + System.loadLibrary("jlibtorrent-" + jlibtorrentVersion()); + } catch (LinkageError e) { + // give it a try to the name without version + System.loadLibrary("jlibtorrent"); + } + } else { + System.load(path); + } + } catch (LinkageError e) { + throw new LinkageError( + "Look for your architecture binary instructions at: https://github.com/frostwire/frostwire-jlibtorrent", e); + } + } + + public static final native long directBufferAddress(java.nio.Buffer buffer); + public static final native long directBufferCapacity(java.nio.Buffer buffer); +%} + +%exception { + try { + $action + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return $null; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return $null; + } +} + +%{ +#ifdef __cplusplus +extern "C" { +#endif + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_directBufferAddress(JNIEnv *jenv, jclass jcls, jobject jbuf) { + try { + return reinterpret_cast(jenv->GetDirectBufferAddress(jbuf)); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + } + + return 0; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_directBufferCapacity(JNIEnv *jenv, jclass jcls, jobject jbuf) { + try { + return reinterpret_cast(jenv->GetDirectBufferCapacity(jbuf)); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + } + + return 0; +} + +#ifdef __cplusplus +} +#endif +%} + +#endif // SWIGJAVA + +%include +%include +%include +%include +%include + +%apply std::int8_t { char }; +%apply std::int64_t { void* }; +%apply std::int64_t { std::time_t }; + +%define TYPE_INTEGRAL_CONVERSION_EX(name, underlying_type, api_type, java_type) +%typemap(jni) name, const name& "java_type" +%typemap(jtype) name, const name& "java_type" +%typemap(jstype) name, const name& "java_type" + +%typemap(in) name { + $1 = name(static_cast($input)); +} +%typemap(out) name { + $result = static_cast(static_cast($1)); +} +%typemap(javain) name, const name& "$javainput" +%typemap(javaout) name, const name& { + return $jnicall; + } +%enddef + +%define TYPE_INTEGRAL_CONVERSION(name, underlying_type, java_type) +TYPE_INTEGRAL_CONVERSION_EX(name, underlying_type, underlying_type, java_type) +%enddef + +TYPE_INTEGRAL_CONVERSION(piece_index_t, std::int32_t, int) +TYPE_INTEGRAL_CONVERSION(file_index_t, std::int32_t, int) +TYPE_INTEGRAL_CONVERSION_EX(peer_class_t, std::uint32_t, std::int32_t, int) +TYPE_INTEGRAL_CONVERSION(port_mapping_t, int, int) +TYPE_INTEGRAL_CONVERSION(queue_position_t, int, int) +TYPE_INTEGRAL_CONVERSION(disconnect_severity_t, std::uint8_t, int) + +namespace std { + + template class vector { + public: + typedef size_t size_type; + typedef T value_type; + typedef const value_type& const_reference; + vector(); + size_type size() const; + size_type capacity() const; + void reserve(size_type n); + bool empty() const; + void clear(); + void push_back(const value_type& x); + %extend { + const_reference get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i class vector { + public: + typedef size_t size_type; + typedef int8_t value_type; + typedef int8_t const_reference; + vector(); + size_type size() const; + size_type capacity() const; + void reserve(size_type n); + bool empty() const; + void clear(); + void push_back(const value_type& x); + void resize(size_type count); + %extend { + int8_t get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && isize()); + if (i>=0 && i class map { + // add typemaps here + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + map(); + map(const map &); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + const T& get(const K& key) throw (std::out_of_range) { + std::map::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void set(const K& key, const T& x) { + (*self)[key] = x; + } + void erase(const K& key) throw (std::out_of_range) { + std::map::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map::iterator i = self->find(key); + return i != self->end(); + } + std::vector keys() { + std::vector v; + for(std::map::iterator it = self->begin(), + end(self->end()); it != end; ++it) { + v.push_back(it->first); + } + return v; + } + } + }; + + template + class bitset + { + public: + bool test(std::size_t pos) const; + + bool all() const; + bool any() const; + bool none() const; + + std::size_t count() const; + std::size_t size() const; + + %extend + { + bool get(std::size_t pos) { + return (*self)[pos]; + } + } + }; + + %template(piece_index_int_pair) pair; + %template(string_int_pair) pair; + %template(string_string_pair) pair; + %template(string_view_bdecode_node_pair) pair; + %template(byte_vectors_pair) pair, vector>; + %template(sha1_hash_udp_endpoint_pair) pair; + %template(address_sha1_hash_pair) pair; + + %template(byte_vector) vector; + %template(string_vector) vector; + %template(string_int_pair_vector) vector>; + %template(string_string_pair_vector) vector>; + %template(piece_index_int_pair_vector) vector>; + + %template(int_vector) vector; + %template(int64_vector) vector; + %template(sha1_hash_vector) vector; + %template(torrent_status_vector) vector; + %template(torrent_handle_vector) vector; + %template(file_slice_vector) vector; + %template(dht_routing_bucket_vector) vector; + %template(dht_lookup_vector) vector; + + %template(block_info_vector) vector; + %template(partial_piece_info_vector) vector; + %template(peer_info_vector) vector; + %template(stats_metric_vector) vector; + + %template(entry_vector) vector; + %template(web_seed_entry_vector) vector; + %template(announce_endpoint_vector) vector; + %template(announce_entry_vector) vector; + %template(tcp_endpoint_vector) vector; + %template(udp_endpoint_vector) vector; + %template(piece_index_vector) vector; + %template(file_index_vector) vector; + %template(sha1_hash_udp_endpoint_pair_vector) vector>; + %template(address_sha1_hash_pair_vector) vector>; + + %template(file_index_string_map) map; + %template(string_long_map) map; + %template(string_entry_map) map; + + %template(alert_ptr_vector) vector; + + %template(ip_interface_vector) vector; + %template(ip_route_vector) vector; + %template(port_mapping_t_vector) vector; + + %template(bitset_96) bitset<96>; +}; + +namespace libtorrent { + + namespace flags + { + template + struct bitfield_flag + { + static bitfield_flag all(); + + %extend + { + bool nonZero() + { + return $self->operator bool(); + } + + bool eq(bitfield_flag const f) + { + return $self->operator==(f); + } + + bool ne(bitfield_flag const f) + { + return $self->operator!=(f); + } + + bitfield_flag or_(bitfield_flag const other) + { + return *$self | other; + } + + bitfield_flag and_(bitfield_flag const other) + { + return *$self & other; + } + + bitfield_flag xor(bitfield_flag const other) + { + return *$self ^ other; + } + + bitfield_flag inv() + { + return $self->operator~(); + } + + int to_int() + { + return static_cast(static_cast(*$self)); + } + } + }; + } + + struct alert_category_tag; + %template(alert_category_t) flags::bitfield_flag; + struct add_piece_flags_tag; + %template(add_piece_flags_t) flags::bitfield_flag; + struct status_flags_tag; + %template(status_flags_t) flags::bitfield_flag; + struct deadline_flags_tag; + %template(deadline_flags_t) flags::bitfield_flag; + struct session_flags_tag; + %template(session_flags_t) flags::bitfield_flag; + struct pause_flags_tag; + %template(pause_flags_t) flags::bitfield_flag; + struct resume_data_flags_tag; + %template(resume_data_flags_t) flags::bitfield_flag; + struct picker_flags_tag; + %template(picker_flags_t) flags::bitfield_flag; + struct remove_flags_tag; + %template(remove_flags_t) flags::bitfield_flag; + struct save_state_flags_tag; + %template(save_state_flags_t) flags::bitfield_flag; + struct torrent_flags_tag; + %template(torrent_flags_t) flags::bitfield_flag; + struct peer_flags_tag; + %template(peer_flags_t) flags::bitfield_flag; + struct peer_source_flags_tag; + %template(peer_source_flags_t) flags::bitfield_flag; + struct pex_flags_tag; + %template(pex_flags_t) flags::bitfield_flag; + struct bandwidth_state_flags_tag; + %template(bandwidth_state_flags_t) flags::bitfield_flag; + struct file_flags_tag; + %template(file_flags_t) flags::bitfield_flag; + struct create_flags_tag; + %template(create_flags_t) flags::bitfield_flag; + struct reopen_network_flags_tag; + %template(reopen_network_flags_t) flags::bitfield_flag; + struct reannounce_flags_tag; + %template(reannounce_flags_t) flags::bitfield_flag; + + typedef sha1_hash peer_id; + + namespace dht { + typedef sha1_hash node_id; + typedef int announce_flags_t; + } + + enum storage_mode_t { + storage_mode_allocate, + storage_mode_sparse + }; + + enum class move_flags_t : std::uint8_t { + always_replace_files, + fail_if_exist, + dont_replace + }; + + enum class connection_type : std::uint8_t { + bittorrent, + url_seed, + http_seed + }; + + enum class portmap_transport : std::uint8_t + { + natpmp, upnp + }; + + enum class portmap_protocol : std::uint8_t + { + none, tcp, udp + }; + + template + struct span { + + span(); + + size_t size() const; + bool empty() const; + + T front() const; + T back() const; + + span first(size_t const n) const; + span last(size_t const n) const; + + span subspan(size_t const offset) const; + span subspan(size_t const offset, size_t const count) const; + + %extend { + T get(size_t const idx) { + return (*self)[idx]; + } + } + }; + + template <> + struct span { + + span(); + + size_t size() const; + bool empty() const; + + int8_t front() const; + int8_t back() const; + + span first(size_t const n) const; + span last(size_t const n) const; + + span subspan(size_t const offset) const; + span subspan(size_t const offset, size_t const count) const; + + %extend { + int8_t get(size_t const idx) { + return (*self)[idx]; + } + void set(size_t const idx, int8_t val) { + (*self)[idx] = val; + } + } + }; + + template <> + struct span { + + span(); + + size_t size() const; + bool empty() const; + + int8_t front() const; + int8_t back() const; + + span first(size_t const n) const; + span last(size_t const n) const; + + span subspan(size_t const offset) const; + span subspan(size_t const offset, size_t const count) const; + + %extend { + int8_t get(size_t const idx) { + return (*self)[idx]; + } + } + }; + + %template(byte_span) span; + %template(byte_const_span) span; + + class sha1_hash { + public: + + static size_t size(); + + sha1_hash(); + sha1_hash(sha1_hash const& other); + + static sha1_hash max(); + static sha1_hash min(); + + void clear(); + bool is_all_zeros(); + int count_leading_zeroes(); + + %extend { + + sha1_hash(std::vector const& s) { + return new libtorrent::sha1_hash({reinterpret_cast(s.data()), static_cast(s.size())}); + } + + int hash_code() { + char const* data = $self->data(); + int result = 1; + for (int i = 0; i < int($self->size()); i++) { + result = 31 * result + data[i]; + } + return result; + } + + std::vector to_bytes() { + std::string s = $self->to_string(); + return std::vector(s.begin(), s.end()); + } + + std::string to_hex() { + return libtorrent::aux::to_hex(*$self); + } + + bool op_eq(sha1_hash const& n) const { + return *$self == n; + } + + bool op_ne(sha1_hash const& n) const { + return *$self != n; + } + + bool op_lt(sha1_hash const& n) const { + return *$self < n; + } + + static int compare(sha1_hash const& h1, sha1_hash const& h2) { + return h1 == h2 ? 0 : (h1 < h2 ? -1 : 1); + } + } + }; + + template + struct bloom_filter { + + bool find(sha1_hash const& k) const; + void set(sha1_hash const& k); + + void clear(); + + float size() const; + + bloom_filter(); + + %extend { + std::vector to_bytes() const { + std::string s = $self->to_string(); + return std::vector(s.begin(), s.end()); + } + + void from_bytes(std::vector const& v) { + $self->from_string(reinterpret_cast(&v[0])); + } + } + }; + + %template(bloom_filter_128) bloom_filter<128>; + %template(bloom_filter_256) bloom_filter<256>; + + class string_view { + public: + %extend { + std::vector to_bytes() { + std::string s = $self->to_string(); + return std::vector(s.begin(), s.end()); + } + } + }; + + class address { + public: + + address(); + address(address const& other); + + bool is_v4(); + bool is_v6(); + + std::string to_string(boost::system::error_code ec); + + bool is_loopback(); + bool is_unspecified(); + bool is_multicast(); + + %extend { + bool op_lt(const address& a2) { + return *$self < a2; + } + + static int compare(const address& a1, const address& a2) { + return a1 == a2 ? 0 : (a1 < a2 ? -1 : 1); + } + + static address from_string(std::string const& str, boost::system::error_code& ec) + { + return boost::asio::ip::make_address(str, ec); + } + } + }; + + %rename(tcp_endpoint) tcp::endpoint; + %rename(udp_endpoint) udp::endpoint; + + namespace tcp { + + class endpoint { + public: + endpoint(); + endpoint(address address, unsigned short port); + endpoint(endpoint const& other); + + unsigned short port(); + address address(); + }; + } + + namespace udp { + + class endpoint { + public: + endpoint(); + endpoint(address address, unsigned short port); + endpoint(endpoint const& other); + + unsigned short port(); + address address(); + }; + } + + class entry { + public: + typedef std::map dictionary_type; + typedef std::string string_type; + typedef std::vector list_type; + typedef std::int64_t integer_type; + typedef std::vector preformatted_type; + + enum data_type + { + int_t, + string_t, + list_t, + dictionary_t, + undefined_t, + preformatted_t + }; + + data_type type() const; + + entry(dictionary_type); + entry(span); + entry(string_type); + entry(list_type); + entry(integer_type); + + entry(data_type t); + + entry(entry const& e); + + entry(); + + const integer_type& integer() const; + const string_type& string() const; + list_type& list(); + dictionary_type& dict(); + + entry* find_key(string_view key); + + std::string to_string() const; + + %extend { + + entry& get(std::string const& key) { + return $self->operator[](key); + } + + void set(std::string const& key, std::string const& value) { + $self->operator[](key) = value; + } + + void set(std::string const& key, std::vector const& value) { + $self->operator[](key) = std::string(value.begin(), value.end()); + } + + void set(std::string const& key, long long const& value) { + $self->operator[](key) = value; + } + + void set(std::string const& key, libtorrent::entry const& value) { + $self->operator[](key) = value; + } + + std::vector string_bytes() { + std::string s = $self->string(); + return std::vector(s.begin(), s.end()); + } + + std::vector preformatted_bytes() { + std::vector v = $self->preformatted(); + return std::vector(v.begin(), v.end()); + } + + std::vector bencode() { + std::vector buffer; + libtorrent::bencode(std::back_inserter(buffer), *$self); + return buffer; + } + + static entry from_string_bytes(std::vector const& string_bytes) { + return libtorrent::entry(std::string(string_bytes.begin(), string_bytes.end())); + } + + static entry from_preformatted_bytes(std::vector const& preformatted_bytes) { + return libtorrent::entry(std::vector(preformatted_bytes.begin(), preformatted_bytes.end())); + } + + static entry bdecode(std::vector& buffer) { + return libtorrent::bdecode({reinterpret_cast(buffer.data()), static_cast(buffer.size())}); + } + } + }; + + template + struct typed_bitfield { + typed_bitfield(); + explicit typed_bitfield(int bits); + typed_bitfield(int bits, bool val); + typed_bitfield(typed_bitfield const& rhs); + + bool get_bit(IndexType const index) const; + void clear_bit(IndexType const index); + void set_bit(IndexType const index); + IndexType end_index() const; + + bool all_set() const; + bool none_set() const; + int size() const; + int num_words() const; + bool empty() const; + int count() const; + int find_first_set() const; + int find_last_clear() const; + void resize(int bits, bool val); + void resize(int bits); + void set_all(); + void clear_all(); + void clear(); + }; + %template(piece_index_bitfield) typed_bitfield; + + struct peer_class_info { + bool ignore_unchoke_slots; + int connection_limit_factor; + std::string label; + int upload_limit; + int download_limit; + int upload_priority; + int download_priority; + }; + + %extend peer_info { + + std::vector get_client() { + std::string s = $self->client; + return {s.begin(), s.end()}; + } + + int64_t get_last_request() { + return libtorrent::total_milliseconds($self->last_request); + } + + int64_t get_last_active() { + return libtorrent::total_milliseconds($self->last_active); + } + + int64_t get_download_queue_time() { + return libtorrent::total_milliseconds($self->download_queue_time); + } + + std::int32_t get_flags() { + return std::int32_t(static_cast($self->flags)); + } + + std::int8_t get_source() { + return std::int8_t(static_cast($self->source)); + } + + std::int8_t get_read_state() { + return std::int8_t(static_cast($self->read_state)); + } + + std::int8_t get_write_state() { + return std::int8_t(static_cast($self->write_state)); + } + } + + struct announce_endpoint + { + libtorrent::error_code last_error; + tcp::endpoint local_endpoint; + + int scrape_incomplete; + int scrape_complete; + int scrape_downloaded; + + std::uint8_t fails; + bool updating; + + bool is_working() const; + + %extend + { + std::vector get_message() + { + std::string s = $self->message; + return {s.begin(), s.end()}; + } + + int64_t get_next_announce() + { + return libtorrent::total_milliseconds($self->next_announce.time_since_epoch()); + } + + int64_t get_min_announce() + { + return libtorrent::total_milliseconds($self->min_announce.time_since_epoch()); + } + } + private: + announce_endpoint(); + }; + + struct announce_entry + { + std::vector endpoints; + + std::uint8_t tier; + std::uint8_t fail_limit; + + enum tracker_source + { + source_torrent = 1, + source_client = 2, + source_magnet_link = 4, + source_tex = 8 + }; + + std::uint8_t source; + bool verified; + + %extend + { + announce_entry(std::vector const& u) + { + return new libtorrent::announce_entry( + {reinterpret_cast(u.data()), u.size()}); + } + + std::vector get_url() + { + std::string s = $self->url; + return {s.begin(), s.end()}; + } + + void set_url(std::vector const& s) + { + $self->url = {s.begin(), s.end()}; + } + + std::vector get_trackerid() + { + std::string s = $self->trackerid; + return {s.begin(), s.end()}; + } + + void set_trackerid(std::vector const& s) + { + $self->trackerid = {s.begin(), s.end()}; + } + } + }; + + // for torrent_status + struct torrent_handle; +}; + +%ignore libtorrent::TORRENT_CFG; +%ignore libtorrent::detail; +%ignore libtorrent::aux; +%ignore libtorrent::parse_int; +%ignore libtorrent::bdecode; +%ignore libtorrent::get_bdecode_category; +%ignore libtorrent::set_piece_hashes(create_torrent&, std::string const&, std::function const&, error_code&); +%ignore libtorrent::hash_value; +%ignore libtorrent::internal_file_entry; +%ignore libtorrent::print_entry; +%ignore libtorrent::fingerprint; +%ignore libtorrent::generate_fingerprint(std::string, int, int, int); +%ignore libtorrent::generate_fingerprint(std::string, int, int); +%ignore libtorrent::generate_fingerprint(std::string, int); +%ignore libtorrent::add_files(file_storage&, std::string const&, std::function, create_flags_t); +%ignore libtorrent::add_files(file_storage&, std::string const&, std::function); +%ignore libtorrent::parse_magnet_uri; +%ignore libtorrent::ip_filter::export_filter; +%ignore libtorrent::add_torrent_params::add_torrent_params; +%ignore libtorrent::add_torrent_params::extensions; +%ignore libtorrent::add_torrent_params::storage; +%ignore libtorrent::add_torrent_params::userdata; +%ignore libtorrent::add_torrent_params::ti; +%ignore libtorrent::add_torrent_params::unfinished_pieces; +%ignore libtorrent::add_torrent_params::renamed_files; +%ignore libtorrent::add_torrent_params::tracker_tiers; +%ignore libtorrent::add_torrent_params::merkle_tree; +%ignore libtorrent::add_torrent_params::banned_peers; +%ignore libtorrent::add_torrent_params::peers; +%ignore libtorrent::add_torrent_params::file_priorities; +%ignore libtorrent::add_torrent_params::dht_nodes; +%ignore libtorrent::add_torrent_params::http_seeds; +%ignore libtorrent::add_torrent_params::url_seeds; +%ignore libtorrent::add_torrent_params::trackers; +%ignore libtorrent::add_torrent_params::piece_priorities; +%ignore libtorrent::add_torrent_params::deprecated1; +%ignore libtorrent::add_torrent_params::deprecated2; +%ignore libtorrent::add_torrent_params::deprecated3; +%ignore libtorrent::add_torrent_params::deprecated4; +%ignore libtorrent::add_torrent_params::deprecated5; +%ignore libtorrent::alert::timestamp; +%ignore libtorrent::performance_alert::bittyrant_with_no_uplimit; +%ignore libtorrent::performance_alert::deprecated_bittyrant_with_no_uplimit; +%ignore libtorrent::performance_alert::performance_warning_t::bittyrant_with_no_uplimit; +%ignore libtorrent::session_params::session_params(settings_pack&&, std::vector>); +%ignore libtorrent::session_params::session_params(settings_pack const&, std::vector>); +%ignore libtorrent::session_params::session_params(session_params&&); +%ignore libtorrent::session_params::session_params(settings_pack&& sp); +%ignore libtorrent::session_params::extensions; +%ignore libtorrent::session_params::dht_storage_constructor; +%ignore libtorrent::session::session(session_params&&, io_service&); +%ignore libtorrent::session::session(session_params const&, io_service&); +%ignore libtorrent::session::session(settings_pack&&, io_service&, session_flags_t const); +%ignore libtorrent::session::session(settings_pack const&, io_service&, session_flags_t const); +%ignore libtorrent::session::session(settings_pack&&, io_service&); +%ignore libtorrent::session::session(settings_pack const&, io_service&); +%ignore libtorrent::session::session(session_params&&); +%ignore libtorrent::session::session(settings_pack&&, session_flags_t const); +%ignore libtorrent::session::session(settings_pack&&); +%ignore libtorrent::session_proxy::session_proxy(session_proxy&&); +%ignore libtorrent::session_handle::session_handle(aux::session_impl*); +%ignore libtorrent::session_handle::session_handle(session_handle&&); +%ignore libtorrent::session_handle::get_torrent_status; +%ignore libtorrent::session_handle::get_io_service; +%ignore libtorrent::session_handle::get_connection_queue; +%ignore libtorrent::session_handle::add_extension(std::function(torrent_handle const&, void*)>); +%ignore libtorrent::session_handle::add_extension(std::shared_ptr); +%ignore libtorrent::session_handle::dht_put_item(std::array, std::function&, std::int64_t&, std::string const&)>, std::string); +%ignore libtorrent::session_handle::dht_put_item(std::array, std::function&, std::int64_t&, std::string const&)>); +%ignore libtorrent::session_handle::dht_get_item(std::array, std::string); +%ignore libtorrent::session_handle::dht_get_item(std::array); +%ignore libtorrent::session_handle::dht_direct_request(udp::endpoint const&, entry const&, void*); +%ignore libtorrent::session_handle::set_load_function; +%ignore libtorrent::session_handle::set_alert_notify; +%ignore libtorrent::session_handle::native_handle; +%ignore libtorrent::session_handle::set_dht_storage; +%ignore libtorrent::session_handle::get_cache_info; +%ignore libtorrent::session_handle::wait_for_alert; +%ignore libtorrent::session_handle::add_default_plugins; +%ignore libtorrent::session_handle::add_torrent(add_torrent_params&&, error_code&); +%ignore libtorrent::session_handle::async_add_torrent(add_torrent_params&&); +%ignore libtorrent::session_handle::apply_settings(settings_pack&&); +%ignore libtorrent::session_stats_alert::counters; +%ignore libtorrent::picker_log_alert::blocks; +%ignore libtorrent::peer_connection_handle::peer_connection_handle; +%ignore libtorrent::peer_connection_handle::native_handle; +%ignore libtorrent::peer_connection_handle::add_extension; +%ignore libtorrent::peer_connection_handle::find_plugin; +%ignore libtorrent::peer_connection_handle::time_of_last_unchoke; +%ignore libtorrent::peer_connection_handle::should_log; +%ignore libtorrent::peer_connection_handle::peer_log; +%ignore libtorrent::bt_peer_connection_handle::switch_send_crypto; +%ignore libtorrent::bt_peer_connection_handle::switch_recv_crypto; +%ignore libtorrent::bt_peer_connection_handle::native_handle; +%ignore libtorrent::torrent_handle::torrent_handle; +%ignore libtorrent::torrent_handle::add_extension; +%ignore libtorrent::torrent_handle::add_piece; +%ignore libtorrent::torrent_handle::http_seeds; +%ignore libtorrent::torrent_handle::url_seeds; +%ignore libtorrent::torrent_handle::get_storage_impl; +%ignore libtorrent::torrent_handle::file_status; +%ignore libtorrent::torrent_handle::use_interface; +%ignore libtorrent::torrent_handle::native_handle; +%ignore libtorrent::torrent_handle::torrent_file; +%ignore libtorrent::torrent_handle::get_full_peer_list; +%ignore libtorrent::torrent_handle::set_metadata; +%ignore libtorrent::torrent_handle::set_ssl_certificate_buffer; +%ignore libtorrent::torrent_handle::queue_position; +%ignore libtorrent::torrent_handle::queue_position_set; +%ignore libtorrent::torrent_handle::piece_priority; +%ignore libtorrent::torrent_handle::prioritize_pieces; +%ignore libtorrent::torrent_handle::get_piece_priorities; +%ignore libtorrent::torrent_handle::file_priority; +%ignore libtorrent::torrent_handle::prioritize_files; +%ignore libtorrent::torrent_handle::get_file_priorities; +%ignore libtorrent::block_info::set_peer; +%ignore libtorrent::partial_piece_info::blocks; +%ignore libtorrent::partial_piece_info::deprecated_state_t; +%ignore libtorrent::partial_piece_info::deprecated_piece_state; +%ignore libtorrent::stats_alert::transferred; +%ignore libtorrent::stats_alert::deprecated1; +%ignore libtorrent::stats_alert::deprecated2; +%ignore libtorrent::stats_alert::deprecated3; +%ignore libtorrent::stats_alert::deprecated4; +%ignore libtorrent::dht_mutable_item_alert::dht_mutable_item_alert; +%ignore libtorrent::dht_mutable_item_alert::key; +%ignore libtorrent::dht_mutable_item_alert::signature; +%ignore libtorrent::dht_mutable_item_alert::seq; +%ignore libtorrent::dht_mutable_item_alert::salt; +%ignore libtorrent::dht_put_alert::dht_put_alert; +%ignore libtorrent::dht_put_alert::public_key; +%ignore libtorrent::dht_put_alert::signature; +%ignore libtorrent::dht_put_alert::salt; +%ignore libtorrent::dht_put_alert::seq; +%ignore libtorrent::dht_direct_response_alert::dht_direct_response_alert; +%ignore libtorrent::dht_direct_response_alert::userdata; +%ignore libtorrent::from_span; +%ignore libtorrent::from_span_t; +%ignore libtorrent::torrent_info::torrent_info(char const*, int, error_code&); +%ignore libtorrent::torrent_info::torrent_info(char const*, int, error_code&, int); +%ignore libtorrent::torrent_info::torrent_info(span, error_code&, from_span_t); +%ignore libtorrent::torrent_info::metadata; +%ignore libtorrent::torrent_info::load; +%ignore libtorrent::torrent_info::unload; +%ignore libtorrent::torrent_info::hash_for_piece_ptr; +%ignore libtorrent::torrent_info::parse_info_section; +%ignore libtorrent::torrent_info::swap; +%ignore libtorrent::torrent_info::add_merkle_nodes; +%ignore libtorrent::torrent_info::build_merkle_list; +%ignore libtorrent::torrent_info::parse_torrent_file; +%ignore libtorrent::torrent_info::piece_range; +%ignore libtorrent::sanitize_append_path_element; +%ignore libtorrent::verify_encoding; +%ignore libtorrent::read_piece_alert::read_piece_alert; +%ignore libtorrent::read_piece_alert::buffer; +%ignore libtorrent::bdecode_node::bdecode_node(bdecode_node&&); +%ignore libtorrent::bdecode_node::non_owning; +%ignore libtorrent::bdecode_node::data_section; +%ignore libtorrent::bdecode_node::list_string_value_at; +%ignore libtorrent::bdecode_node::dict_find; +%ignore libtorrent::bdecode_node::dict_find_dict; +%ignore libtorrent::bdecode_node::dict_find_list; +%ignore libtorrent::bdecode_node::dict_find_string; +%ignore libtorrent::bdecode_node::dict_find_int; +%ignore libtorrent::bdecode_node::dict_find_string_value; +%ignore libtorrent::bdecode_node::dict_find_int_value; +%ignore libtorrent::bdecode_node::string_value; +%ignore libtorrent::bdecode_node::string_ptr; +%ignore libtorrent::bdecode_node::swap; +%ignore libtorrent::bdecode_node::reserve; +%ignore libtorrent::bdecode_node::switch_underlying_buffer; +%ignore libtorrent::bdecode_node::has_soft_error; +%ignore libtorrent::errors::make_error_code; +%ignore libtorrent::bdecode_errors::make_error_code; +%ignore libtorrent::apply_pack; +%ignore libtorrent::apply_pack_impl; +%ignore libtorrent::load_pack_from_dict; +%ignore libtorrent::save_settings_to_dict; +%ignore libtorrent::run_all_updates; +%ignore libtorrent::error_code; +%ignore libtorrent::settings_pack::settings_pack(settings_pack&&); +%ignore libtorrent::settings_pack::deprecated; +%ignore libtorrent::settings_pack::deprecated_ignore_limits_on_local_network; +%ignore libtorrent::settings_pack::deprecated_rate_limit_utp; +%ignore libtorrent::settings_pack::deprecated_local_upload_rate_limit; +%ignore libtorrent::settings_pack::deprecated_local_download_rate_limit; +%ignore libtorrent::settings_pack::deprecated_half_open_limit; +%ignore libtorrent::settings_pack::deprecated_utp_delayed_ack; +%ignore libtorrent::settings_pack::deprecated_ignore_resume_timestamps; +%ignore libtorrent::settings_pack::deprecated_network_threads; +%ignore libtorrent::settings_pack::deprecated_lock_disk_cache; +%ignore libtorrent::settings_pack::deprecated_use_write_cache; +%ignore libtorrent::settings_pack::deprecated_lazy_bitfield; +%ignore libtorrent::settings_pack::deprecated_guided_read_cache; +%ignore libtorrent::settings_pack::deprecated_hashing_threads; +%ignore libtorrent::settings_pack::deprecated_contiguous_recv_buffer; +%ignore libtorrent::settings_pack::deprecated_default_cache_min_age; +%ignore libtorrent::settings_pack::deprecated_low_prio_disk; +%ignore libtorrent::settings_pack::deprecated_announce_double_nat; +%ignore libtorrent::settings_pack::deprecated_use_disk_read_ahead; +%ignore libtorrent::settings_pack::deprecated_active_loaded_limit; +%ignore libtorrent::settings_pack::deprecated_mmap_cache; +%ignore libtorrent::settings_pack::deprecated_dont_flush_write_cache; +%ignore libtorrent::settings_pack::deprecated_file_checks_delay_per_block; +%ignore libtorrent::settings_pack::deprecated_use_disk_cache_pool; +%ignore libtorrent::settings_pack::deprecated_cache_buffer_chunk_size; +%ignore libtorrent::settings_pack::deprecated_lock_files; +%ignore libtorrent::settings_pack::deprecated_ssl_listen; +%ignore libtorrent::settings_pack::deprecated_force_proxy; +%ignore libtorrent::settings_pack::deprecated_broadcast_lsd; +%ignore libtorrent::settings_pack::deprecated_upnp_ignore_nonrouters; +%ignore libtorrent::settings_pack::deprecated_bittyrant_choker; +%ignore libtorrent::settings_pack::bittyrant_choker; +%ignore libtorrent::storage_params::pool; +%ignore libtorrent::storage_params::priorities; +%ignore libtorrent::ipv6_peer::addr; +%ignore libtorrent::proxy_settings::proxy_settings; +%ignore libtorrent::torrent_status::torrent_status(torrent_status&&); +%ignore libtorrent::torrent_status::allocating; +%ignore libtorrent::torrent_status::unused_enum_for_backwards_compatibility_allocating; +%ignore libtorrent::torrent_status::_dummy_string_; +%ignore libtorrent::torrent_status::torrent_file; +%ignore libtorrent::torrent_status::next_announce; +%ignore libtorrent::torrent_status::deprecated_announce_interval_; +%ignore libtorrent::torrent_status::deprecated_priority; +%ignore libtorrent::torrent_status::unused_enum_for_backwards_compatibility; +%ignore libtorrent::torrent_status::deprecated_is_loaded; +%ignore libtorrent::torrent_status::last_upload; +%ignore libtorrent::torrent_status::last_download; +%ignore libtorrent::torrent_status::active_duration; +%ignore libtorrent::torrent_status::finished_duration; +%ignore libtorrent::torrent_status::seeding_duration; +%ignore libtorrent::torrent_status::queue_position; +%ignore libtorrent::torrent_status::deprecated_time_since_upload; +%ignore libtorrent::torrent_status::deprecated_time_since_download; +%ignore libtorrent::torrent_status::deprecated_active_time; +%ignore libtorrent::torrent_status::deprecated_finished_time; +%ignore libtorrent::torrent_status::deprecated_seeding_time; +%ignore libtorrent::torrent_status::deprecated_last_scrape; +%ignore libtorrent::torrent_status::deprecated_ip_filter_applies; +%ignore libtorrent::torrent_status::deprecated_upload_mode; +%ignore libtorrent::torrent_status::deprecated_share_mode; +%ignore libtorrent::torrent_status::deprecated_super_seeding; +%ignore libtorrent::torrent_status::deprecated_paused; +%ignore libtorrent::torrent_status::deprecated_auto_managed; +%ignore libtorrent::torrent_status::deprecated_sequential_download; +%ignore libtorrent::torrent_status::deprecated_seed_mode; +%ignore libtorrent::torrent_status::deprecated_stop_when_ready; +%ignore libtorrent::file_storage::file_storage(file_storage&&); +%ignore libtorrent::file_storage::file_path_hash; +%ignore libtorrent::file_storage::all_path_hashes; +%ignore libtorrent::file_storage::file_name_ptr; +%ignore libtorrent::file_storage::file_name_len; +%ignore libtorrent::file_storage::apply_pointer_offset; +%ignore libtorrent::file_storage::add_file(std::string const&, std::int64_t, std::uint32_t, std::time_t, string_view); +%ignore libtorrent::file_storage::file_range; +%ignore libtorrent::file_storage::piece_range; +%ignore libtorrent::torrent_info::internal_set_creator; +%ignore libtorrent::torrent_info::internal_set_creation_date; +%ignore libtorrent::torrent_info::internal_set_comment; +%ignore libtorrent::file_storage::sanitize_symlinks; +%ignore libtorrent::create_torrent::add_url_seed(string_view); +%ignore libtorrent::create_torrent::add_http_seed(string_view); +%ignore libtorrent::create_torrent::add_tracker(string_view); +%ignore libtorrent::create_torrent::add_tracker(string_view, int); +%ignore libtorrent::create_torrent::add_collection(string_view); +%ignore libtorrent::create_torrent::set_root_cert; +%ignore libtorrent::get_file_attributes; +%ignore libtorrent::get_symlink_path; +%ignore libtorrent::stats_metric::name; +%ignore libtorrent::peer_log_alert::event_type; +%ignore libtorrent::dht_lookup::type; +%ignore libtorrent::error_to_close_reason; +%ignore libtorrent::storage_error; +%ignore libtorrent::user_alert_id; +%ignore libtorrent::bdecode_category; +%ignore libtorrent::http_category; +%ignore libtorrent::libtorrent_category; +%ignore libtorrent::dht_announce_alert::ip; +%ignore libtorrent::external_ip_alert::external_address; +%ignore libtorrent::listen_failed_alert::address; +%ignore libtorrent::listen_succeeded_alert::address; +%ignore libtorrent::incoming_connection_alert::endpoint; +%ignore libtorrent::peer_alert::endpoint; +%ignore libtorrent::dht_direct_response_alert::endpoint; +%ignore libtorrent::dht_outgoing_get_peers_alert::endpoint; +%ignore libtorrent::dht_pkt_alert::node; +%ignore libtorrent::udp_error_alert::endpoint; +%ignore libtorrent::dht_sample_infohashes_alert::endpoint; +%ignore libtorrent::dht_sample_infohashes_alert::interval; +%ignore libtorrent::peer_info::client; +%ignore libtorrent::peer_info::last_request; +%ignore libtorrent::peer_info::last_active; +%ignore libtorrent::peer_info::download_queue_time; +%ignore libtorrent::peer_info::deprecated_dl_rate; +%ignore libtorrent::peer_info::estimated_reciprocation_rate; +%ignore libtorrent::tracker_alert::local_endpoint; +%ignore libtorrent::dht::extract_node_ids; +%ignore libtorrent::dht::read_dht_state; +%ignore libtorrent::dht::save_dht_state; +%ignore libtorrent::dht::read_dht_settings; +%ignore libtorrent::dht::save_dht_settings; +%ignore libtorrent::find_metric_idx; + +%ignore libtorrent::errors::deprecated_120; +%ignore libtorrent::errors::deprecated_121; +%ignore libtorrent::errors::deprecated_122; +%ignore libtorrent::errors::deprecated_123; +%ignore libtorrent::errors::deprecated_124; + +%ignore boost::throws; +%ignore boost::detail::throws; +%ignore boost::system::generic_category; +%ignore boost::system::system_category; +%ignore boost::system::error_category; +%ignore boost::system::error_condition; +%ignore boost::system::system_error; +%ignore boost::system::error_code::error_code(int, const error_category&); +%ignore boost::system::error_code::assign; +%ignore boost::system::error_code::category; +%ignore boost::system::error_code::default_error_condition; +%ignore boost::system::error_code::unspecified_bool_true; +%ignore boost::system::error_code::operator std::error_code; +%ignore boost::system::operator==(const error_code&, const error_condition&); +%ignore boost::system::operator==(const error_condition&, const error_code&); +%ignore boost::system::operator!=(const error_code&, const error_condition&); +%ignore boost::system::operator!=(const error_condition&, const error_code&); +%ignore boost::system::operator!=(const error_condition&, const error_condition&); +%ignore boost::system::hash_value; +%ignore boost::system::errc::make_error_condition; +%ignore boost::asio; + +%ignore operator=; +%ignore operator!; +%ignore operator++; +%ignore operator--; +%ignore operator+=; +%ignore operator<<=; +%ignore operator>>=; +%ignore operator~; +%ignore operator^; +%ignore operator^=; +%ignore operator&; +%ignore operator&=; +%ignore operator|=; +%ignore operator int; +%ignore operator(); +%ignore operator<<; +%ignore operator>>; +%ignore operator[]; +%ignore operator unspecified_bool_type; + +%rename(op_eq) operator==; +%rename(op_ne) operator!=; +%rename(op_lt) operator<; +%rename(op_gt) operator>; +%rename(op_lte) operator<=; +%rename(op_gte) operator>=; +%rename(op_bool) operator bool; + +%rename(libtorrent_no_error) libtorrent::errors::no_error; +%rename(libtorrent_errors) libtorrent::errors::error_code_enum; +%rename(bdecode_no_error) libtorrent::bdecode_errors::no_error; +%rename(bdecode_errors) libtorrent::bdecode_errors::error_code_enum; + +%rename("$ignore", regextarget=1, %$isconstructor) ".*_alert$"; + +%ignore dht_put_item_cb; + +%feature("director") add_files_listener; +%feature("director") set_piece_hashes_listener; + +%feature("director") alert_notify_callback; +%feature("director") swig_plugin; +%feature("director") posix_wrapper; + +%ignore swig_plugin::implemented_features; +%ignore set_piece_hashes_listener::progress_index; + +%ignore WRAP_POSIX; +%ignore get_libc; +%ignore posix_open; +%ignore posix_stat; +%ignore posix_mkdir; +%ignore posix_rename; +%ignore posix_remove; +%ignore ::open; +%ignore ::stat; +%ignore ::mkdir; +%ignore ::rename; +%ignore ::remove; +%ignore g_posix_wrapper; + +// BEGIN common set include ------------------------------------------------------ + +%include +%include + +%include "libtorrent/version.hpp" +%include "libtorrent/error_code.hpp" +%include "libtorrent/peer_request.hpp" +%include "libtorrent/file_storage.hpp" +%include "libtorrent/bdecode.hpp" +%include "libtorrent/bencode.hpp" +%include "libtorrent/peer_info.hpp" +%include "libtorrent/torrent_flags.hpp" +%include "libtorrent/torrent_info.hpp" +%include "libtorrent/pex_flags.hpp" +%include "libtorrent/torrent_status.hpp" +%include "libtorrent/torrent_handle.hpp" +%include "libtorrent/add_torrent_params.hpp" +%include "libtorrent/operations.hpp" +%include "libtorrent/session_stats.hpp" +%include "libtorrent/close_reason.hpp" +%include "libtorrent/alert.hpp" +%include "libtorrent/alert_types.hpp" +%include "libtorrent/session_settings.hpp" +%include "libtorrent/settings_pack.hpp" +%include "libtorrent/peer_class_type_filter.hpp" +%include "libtorrent/session_types.hpp" +%include "libtorrent/ip_filter.hpp" +%include "libtorrent/session_handle.hpp" +%include "libtorrent/kademlia/dht_state.hpp" +%include "libtorrent/kademlia/dht_settings.hpp" +%include "libtorrent/session.hpp" +%include "libtorrent/peer_connection_handle.hpp" +%include "libtorrent/magnet_uri.hpp" +%include "libtorrent/create_torrent.hpp" +%include "libtorrent/fingerprint.hpp" + +%include "libtorrent.h" + +// END common set include ------------------------------------------------------ + +namespace libtorrent { + +// alert types conversion due to lack of polymorphic return type +%extend alert { +#define CAST_ALERT_METHOD(name) \ + static libtorrent::##name const* cast_to_##name(alert const* a) { \ + return libtorrent::alert_cast(a); \ + } + + CAST_ALERT_METHOD(torrent_removed_alert) + CAST_ALERT_METHOD(read_piece_alert) + CAST_ALERT_METHOD(file_completed_alert) + CAST_ALERT_METHOD(file_renamed_alert) + CAST_ALERT_METHOD(file_rename_failed_alert) + CAST_ALERT_METHOD(performance_alert) + CAST_ALERT_METHOD(state_changed_alert) + CAST_ALERT_METHOD(tracker_error_alert) + CAST_ALERT_METHOD(tracker_warning_alert) + CAST_ALERT_METHOD(scrape_reply_alert) + CAST_ALERT_METHOD(scrape_failed_alert) + CAST_ALERT_METHOD(tracker_reply_alert) + CAST_ALERT_METHOD(dht_reply_alert) + CAST_ALERT_METHOD(tracker_announce_alert) + CAST_ALERT_METHOD(hash_failed_alert) + CAST_ALERT_METHOD(peer_ban_alert) + CAST_ALERT_METHOD(peer_unsnubbed_alert) + CAST_ALERT_METHOD(peer_snubbed_alert) + CAST_ALERT_METHOD(peer_error_alert) + CAST_ALERT_METHOD(peer_connect_alert) + CAST_ALERT_METHOD(peer_disconnected_alert) + CAST_ALERT_METHOD(invalid_request_alert) + CAST_ALERT_METHOD(torrent_finished_alert) + CAST_ALERT_METHOD(piece_finished_alert) + CAST_ALERT_METHOD(request_dropped_alert) + CAST_ALERT_METHOD(block_timeout_alert) + CAST_ALERT_METHOD(block_finished_alert) + CAST_ALERT_METHOD(block_downloading_alert) + CAST_ALERT_METHOD(unwanted_block_alert) + CAST_ALERT_METHOD(storage_moved_alert) + CAST_ALERT_METHOD(storage_moved_failed_alert) + CAST_ALERT_METHOD(torrent_deleted_alert) + CAST_ALERT_METHOD(torrent_delete_failed_alert) + CAST_ALERT_METHOD(save_resume_data_alert) + CAST_ALERT_METHOD(save_resume_data_failed_alert) + CAST_ALERT_METHOD(torrent_paused_alert) + CAST_ALERT_METHOD(torrent_resumed_alert) + CAST_ALERT_METHOD(torrent_checked_alert) + CAST_ALERT_METHOD(url_seed_alert) + CAST_ALERT_METHOD(file_error_alert) + CAST_ALERT_METHOD(metadata_failed_alert) + CAST_ALERT_METHOD(metadata_received_alert) + CAST_ALERT_METHOD(udp_error_alert) + CAST_ALERT_METHOD(external_ip_alert) + CAST_ALERT_METHOD(listen_failed_alert) + CAST_ALERT_METHOD(listen_succeeded_alert) + CAST_ALERT_METHOD(portmap_error_alert) + CAST_ALERT_METHOD(portmap_alert) + CAST_ALERT_METHOD(portmap_log_alert) + CAST_ALERT_METHOD(fastresume_rejected_alert) + CAST_ALERT_METHOD(peer_blocked_alert) + CAST_ALERT_METHOD(dht_announce_alert) + CAST_ALERT_METHOD(dht_get_peers_alert) + CAST_ALERT_METHOD(stats_alert) + CAST_ALERT_METHOD(cache_flushed_alert) + CAST_ALERT_METHOD(lsd_peer_alert) + CAST_ALERT_METHOD(trackerid_alert) + CAST_ALERT_METHOD(dht_bootstrap_alert) + CAST_ALERT_METHOD(torrent_error_alert) + CAST_ALERT_METHOD(torrent_need_cert_alert) + CAST_ALERT_METHOD(incoming_connection_alert) + CAST_ALERT_METHOD(add_torrent_alert) + CAST_ALERT_METHOD(state_update_alert) + CAST_ALERT_METHOD(session_stats_alert) + CAST_ALERT_METHOD(dht_error_alert) + CAST_ALERT_METHOD(dht_immutable_item_alert) + CAST_ALERT_METHOD(dht_mutable_item_alert) + CAST_ALERT_METHOD(dht_put_alert) + CAST_ALERT_METHOD(i2p_alert) + CAST_ALERT_METHOD(dht_outgoing_get_peers_alert) + CAST_ALERT_METHOD(log_alert) + CAST_ALERT_METHOD(torrent_log_alert) + CAST_ALERT_METHOD(peer_log_alert) + CAST_ALERT_METHOD(lsd_error_alert) + CAST_ALERT_METHOD(dht_stats_alert) + CAST_ALERT_METHOD(incoming_request_alert) + CAST_ALERT_METHOD(dht_log_alert) + CAST_ALERT_METHOD(dht_pkt_alert) + CAST_ALERT_METHOD(dht_get_peers_reply_alert) + CAST_ALERT_METHOD(dht_direct_response_alert) + CAST_ALERT_METHOD(picker_log_alert) + CAST_ALERT_METHOD(session_error_alert) + CAST_ALERT_METHOD(dht_live_nodes_alert) + CAST_ALERT_METHOD(session_stats_header_alert) + CAST_ALERT_METHOD(dht_sample_infohashes_alert) + CAST_ALERT_METHOD(block_uploaded_alert) + CAST_ALERT_METHOD(alerts_dropped_alert) +} + +%extend alert { + + int64_t get_timestamp() { + return libtorrent::total_milliseconds($self->timestamp().time_since_epoch()); + } +} + +%extend session_handle { + + void dht_get_item(std::vector& key, std::vector& salt) { + if (key.size() != 32) { + throw std::invalid_argument("Public key must be of size 32"); + } + std::array pk; + std::copy_n(key.begin(), 32, pk.begin()); + + $self->dht_get_item(pk, std::string(salt.begin(), salt.end())); + } + + void dht_put_item(std::vector& key, std::vector& sk, entry& data, std::vector& salt) { + if (key.size() != 32) { + throw std::invalid_argument("Public key must be of size 32"); + } + if (sk.size() != 64) { + throw std::invalid_argument("Private key must be of size 64"); + } + std::array pk; + std::copy_n(key.begin(), 32, pk.begin()); + + using namespace std::placeholders; + using namespace libtorrent::dht; + + $self->dht_put_item(pk, std::bind(&dht_put_item_cb, _1, _2, _3, _4, + public_key((char*)key.data()), secret_key((char*)sk.data()), data), + std::string(salt.begin(), salt.end())); + } + + void dht_direct_request(udp::endpoint const& ep, entry const& e, int64_t userdata) { + $self->dht_direct_request(ep, e, (void*)userdata); + } + + alert* wait_for_alert_ms(int64_t max_wait) { + return $self->wait_for_alert(libtorrent::milliseconds(max_wait)); + } + + void set_alert_notify_callback(alert_notify_callback* cb) { + $self->set_alert_notify(std::bind(&alert_notify_callback::on_alert, cb)); + } + + void add_extension(swig_plugin* ext) { + $self->add_extension(std::shared_ptr(ext)); + } +} + +%extend bdecode_node { + + std::string list_string_value_at_s(int i, std::string default_val = "") { + return $self->list_string_value_at(i, default_val).to_string(); + } + + bdecode_node dict_find_s(std::string key) const { + return $self->dict_find(key); + } + + bdecode_node dict_find_dict_s(std::string key) const { + return $self->dict_find_dict(key); + } + + bdecode_node dict_find_list_s(std::string key) const { + return $self->dict_find_list(key); + } + + bdecode_node dict_find_string_s(std::string key) const { + return $self->dict_find_string(key); + } + + bdecode_node dict_find_int_s(std::string key) const { + return $self->dict_find_int(key); + } + + std::string dict_find_string_value_s(std::string key, std::string default_value = "") const { + return $self->dict_find_string_value(key, default_value).to_string(); + } + + std::int64_t dict_find_int_value_s(std::string key, std::int64_t default_val = 0) const { + return $self->dict_find_int_value(key, default_val); + } + + std::string string_value_s() const { + return $self->string_value().to_string(); + } + + static std::string to_string(bdecode_node const& e, bool single_line, int indent) { + return libtorrent::print_entry(e, single_line, indent); + } + + static int bdecode(std::vector& buffer, bdecode_node& ret, error_code& ec) { + return libtorrent::bdecode((char const*)&buffer[0], (char const*)&buffer[0] + buffer.size(), ret, ec); + } +} + +%extend add_torrent_params { + + libtorrent::torrent_info const* ti_ptr() { + return $self->ti.get(); + } + + void set_ti(libtorrent::torrent_info const& ti) { + $self->ti = std::make_shared(ti); + } + + void set_renamed_files(std::map const& renamed_files) { + $self->renamed_files = renamed_files; + } + + std::vector get_tracker_tiers() { + return $self->tracker_tiers; + } + + void set_tracker_tiers(std::vector const& tracker_tiers) { + $self->tracker_tiers = tracker_tiers; + } + + void set_merkle_tree(std::vector const& merkle_tree) { + $self->merkle_tree = merkle_tree; + } + + std::vector get_banned_peers() { + return $self->banned_peers; + } + + void set_banned_peers(std::vector const& banned_peers) { + $self->banned_peers = banned_peers; + } + + std::vector get_peers() { + return $self->peers; + } + + void set_peers(std::vector const& peers) { + $self->peers = peers; + } + + void set_file_priorities2(std::vector const& file_priorities) { + std::vector v(file_priorities.size()); + for (std::size_t i = 0; i < v.size(); i++) + v[i] = download_priority_t{std::uint8_t(file_priorities[i])}; + $self->file_priorities = v; + } + + std::vector> get_dht_nodes() { + return $self->dht_nodes; + } + + void set_dht_nodes(std::vector> const& dht_nodes) { + $self->dht_nodes = dht_nodes; + } + + void set_http_seeds(std::vector const& http_seeds) { + $self->http_seeds = http_seeds; + } + + std::vector get_url_seeds() { + return $self->url_seeds; + } + + void set_url_seeds(std::vector const& url_seeds) { + $self->url_seeds = url_seeds; + } + + std::vector get_trackers() { + return $self->trackers; + } + + void set_trackers(std::vector const& trackers) { + $self->trackers = trackers; + } + + void set_piece_priorities2(std::vector const& piece_priorities) { + std::vector v(piece_priorities.size()); + for (std::size_t i = 0; i < v.size(); i++) + v[i] = download_priority_t{std::uint8_t(piece_priorities[i])}; + $self->piece_priorities = v; + } + + static libtorrent::add_torrent_params create_instance() { + return libtorrent::add_torrent_params(); + } + + static libtorrent::add_torrent_params create_instance_disabled_storage() { + return libtorrent::add_torrent_params(libtorrent::disabled_storage_constructor); + } + + static libtorrent::add_torrent_params create_instance_zero_storage() { + return libtorrent::add_torrent_params(libtorrent::zero_storage_constructor); + } + + void set_default_storage() + { + $self->storage = libtorrent::default_storage_constructor; + } + + void set_disabled_storage() + { + $self->storage = libtorrent::disabled_storage_constructor; + } + + void set_zero_storage() + { + $self->storage = libtorrent::zero_storage_constructor; + } + + static libtorrent::add_torrent_params read_resume_data(libtorrent::bdecode_node const& rd, error_code& ec) { + return libtorrent::read_resume_data(rd, ec); + } + + static libtorrent::add_torrent_params read_resume_data(std::vector const& buffer, error_code& ec) { + return libtorrent::read_resume_data({(char const*)&buffer[0], static_cast(buffer.size())}, ec); + } + + static libtorrent::entry write_resume_data(add_torrent_params const& atp) { + return libtorrent::write_resume_data(atp); + } + + static std::vector write_resume_data_buf(add_torrent_params const& atp) { + auto v = libtorrent::write_resume_data_buf(atp); + return {v.begin(), v.end()}; + } + + static add_torrent_params parse_magnet_uri(std::string const& uri, error_code& ec) { + return libtorrent::parse_magnet_uri(uri, ec); + } +} + +%extend torrent_info { + + torrent_info(int64_t buffer_ptr, int size, error_code& ec) { + return new libtorrent::torrent_info(reinterpret_cast(buffer_ptr), size, ec); + } +}; + +%extend torrent_handle { + + void add_piece_bytes(int piece, std::vector const& data, add_piece_flags_t flags = {}) { + $self->add_piece(piece_index_t(piece), (char const*)&data[0], flags); + } + + libtorrent::torrent_info const* torrent_file_ptr() { + return $self->torrent_file().get(); + } + + std::vector get_url_seeds() const { + std::set s = $self->url_seeds(); + return {s.begin(), s.end()}; + } + + std::vector get_http_seeds() const { + std::set s = $self->http_seeds(); + return {s.begin(), s.end()}; + } + + void set_ssl_certificate_buffer2(std::vector const& certificate + , std::vector const& private_key + , std::vector const& dh_params) + { + std::string cert{certificate.begin(), certificate.end()}; + std::string pk{private_key.begin(), private_key.end()}; + std::string dh{dh_params.begin(), dh_params.end()}; + $self->set_ssl_certificate_buffer(cert, pk, dh); + } + + int queue_position2() const + { + return static_cast($self->queue_position()); + } + + void queue_position_set2(int p) + { + $self->queue_position_set(queue_position_t{p}); + } + + int piece_priority2(piece_index_t index) + { + return int(static_cast($self->piece_priority(index))); + } + + void piece_priority2(piece_index_t index, int priority) + { + $self->piece_priority(index, download_priority_t{std::uint8_t(priority)}); + } + + void prioritize_pieces2(std::vector const& pieces) + { + std::vector v(pieces.size()); + for (std::size_t i = 0; i < v.size(); i++) + v[i] = download_priority_t{std::uint8_t(pieces[i])}; + $self->prioritize_pieces(v); + } + + void prioritize_pieces2(std::vector> const& pieces) + { + std::vector> v(pieces.size()); + for (std::size_t i = 0; i < v.size(); i++) + v[i] = std::pair(pieces[i].first, download_priority_t{std::uint8_t(pieces[i].second)}); + $self->prioritize_pieces(v); + } + + std::vector get_piece_priorities2() const + { + std::vector v = $self->get_piece_priorities(); + std::vector r(v.size()); + for (std::size_t i = 0; i < v.size(); i++) + r[i] = int(static_cast(v[i])); + return r; + } + + int file_priority2(file_index_t index) + { + return int(static_cast($self->file_priority(index))); + } + + void file_priority2(file_index_t index, int priority) + { + $self->file_priority(index, download_priority_t{std::uint8_t(priority)}); + } + + void prioritize_files2(std::vector const& files) + { + std::vector v(files.size()); + for (std::size_t i = 0; i < v.size(); i++) + v[i] = download_priority_t{std::uint8_t(files[i])}; + $self->prioritize_files(v); + } + + std::vector get_file_priorities2() const + { + std::vector v = $self->get_file_priorities(); + std::vector r(v.size()); + for (std::size_t i = 0; i < v.size(); i++) + r[i] = int(static_cast(v[i])); + return r; + } +} + +%extend dht_mutable_item_alert { + + std::vector get_key() { + std::array arr = $self->key; + return std::vector(arr.begin(), arr.end()); + } + + std::vector get_signature() { + std::array arr = $self->signature; + return std::vector(arr.begin(), arr.end()); + } + + int64_t get_seq() { + return int64_t($self->seq); + } + + std::vector get_salt() { + std::string s = $self->salt; + return std::vector(s.begin(), s.end()); + } +} + +%extend dht_put_alert { + + std::vector get_public_key() { + std::array arr = $self->public_key; + return std::vector(arr.begin(), arr.end()); + } + + std::vector get_signature() { + std::array arr = $self->signature; + return std::vector(arr.begin(), arr.end()); + } + + std::vector get_salt() { + std::string s = $self->salt; + return std::vector(s.begin(), s.end()); + } + + int64_t get_seq() { + return int64_t($self->seq); + } +} + +%extend stats_alert { + int get_transferred(int index) { + return $self->transferred[index]; + } +} + +%extend session_stats_alert { + long long get_value(int index) { + return $self->counters()[index]; + } +} + +%extend read_piece_alert { + + int64_t buffer_ptr() { + return reinterpret_cast($self->buffer.get()); + } +} + +%extend peer_connection_handle { + + int64_t get_time_of_last_unchoke() { + return libtorrent::total_milliseconds($self->time_of_last_unchoke() - libtorrent::clock_type::now()); + } +}; + +%extend torrent_status { + + torrent_info const* torrent_file_ptr() { + return $self->torrent_file.lock().get(); + } + + int64_t get_next_announce() { + return libtorrent::total_milliseconds($self->next_announce); + } + + int64_t get_last_upload() { + return libtorrent::total_milliseconds($self->last_upload.time_since_epoch()); + } + + int64_t get_last_download() { + return libtorrent::total_milliseconds($self->last_download.time_since_epoch()); + } + + int64_t get_active_duration() { + return libtorrent::total_milliseconds($self->active_duration); + } + + int64_t get_finished_duration() { + return libtorrent::total_milliseconds($self->finished_duration); + } + + int64_t get_seeding_duration() { + return libtorrent::total_milliseconds($self->seeding_duration); + } + + int get_queue_position() + { + return static_cast($self->queue_position); + } +} + +%extend stats_metric { + std::string get_name() { + return std::string($self->name); + } +} + +%extend peer_log_alert { + std::string get_event_type() { + return std::string($self->event_type); + } +} + +%extend dht_lookup { + + std::string get_type() { + return std::string($self->type); + } +} + +%extend dht_direct_response_alert { + + int64_t get_userdata() { + return (int64_t)$self->userdata; + } +} + +%extend create_torrent { + + void add_url_seed(std::string const& url) { + $self->add_url_seed(url); + } + + void add_http_seed(std::string const& url) { + $self->add_http_seed(url); + } + + void add_tracker(std::string const& url, int tier) { + $self->add_tracker(url, tier); + } + + void add_collection(std::string const& c) { + $self->add_collection(c); + } + + void set_root_cert2(std::vector const& pem) + { + std::string s{pem.begin(), pem.end()}; + $self->set_root_cert(s); + } +} + +%extend file_storage { + + void add_file(std::string const& path, std::int64_t file_size, + libtorrent::file_flags_t file_flags, std::time_t mtime, std::string const& symlink_path) { + $self->add_file(path, file_size, file_flags, mtime, symlink_path); + } +} + +%extend dht_announce_alert { + + address get_ip() { + return $self->ip; + } +} + +%extend external_ip_alert { + + address get_external_address() { + return $self->external_address; + } +} + +%extend listen_failed_alert { + + address get_address() { + return $self->address; + } +} + +%extend listen_succeeded_alert { + + address get_address() { + return $self->address; + } +} + +%extend incoming_connection_alert { + + tcp::endpoint get_endpoint() { + return $self->endpoint; + } +} + +%extend peer_alert { + + tcp::endpoint get_endpoint() { + return $self->endpoint; + } +} + +%extend dht_direct_response_alert { + + udp::endpoint get_endpoint() { + return $self->endpoint; + } +} + +%extend dht_outgoing_get_peers_alert { + + udp::endpoint get_endpoint() { + return $self->endpoint; + } +} + +%extend dht_pkt_alert { + + udp::endpoint get_node() { + return $self->node; + } +} + +%extend udp_error_alert { + + udp::endpoint get_endpoint() { + return $self->endpoint; + } +} + +%extend dht_sample_infohashes_alert { + + udp::endpoint get_endpoint() { + return $self->endpoint; + } + + std::int64_t get_interval() { + return libtorrent::total_milliseconds($self->interval); + } +} + +%extend tracker_alert { + + tcp::endpoint get_local_endpoint() { + return $self->local_endpoint; + } +} + +} diff --git a/frostwire-jlibtorrent/swig/libtorrent_jni.cpp b/frostwire-jlibtorrent/swig/libtorrent_jni.cpp new file mode 100644 index 0000000..b39aca8 --- /dev/null +++ b/frostwire-jlibtorrent/swig/libtorrent_jni.cpp @@ -0,0 +1,71444 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * This file is not intended to be easily readable and contains a number of + * coding conventions designed to improve portability and efficiency. Do not make + * changes to this file unless you know what you are doing--modify the SWIG + * interface file instead. + * ----------------------------------------------------------------------------- */ + + +#ifndef SWIGJAVA +#define SWIGJAVA +#endif + +#define SWIG_DIRECTORS + + +#ifdef __cplusplus +/* SwigValueWrapper is described in swig.swg */ +template class SwigValueWrapper { + struct SwigMovePointer { + T *ptr; + SwigMovePointer(T *p) : ptr(p) { } + ~SwigMovePointer() { delete ptr; } + SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; } + } pointer; + SwigValueWrapper& operator=(const SwigValueWrapper& rhs); + SwigValueWrapper(const SwigValueWrapper& rhs); +public: + SwigValueWrapper() : pointer(0) { } + SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; } + operator T&() const { return *pointer.ptr; } + T *operator&() { return pointer.ptr; } +}; + +template T SwigValueInit() { + return T(); +} +#endif + +/* ----------------------------------------------------------------------------- + * This section contains generic SWIG labels for method/variable + * declarations/attributes, and other compiler dependent labels. + * ----------------------------------------------------------------------------- */ + +/* template workaround for compilers that cannot correctly implement the C++ standard */ +#ifndef SWIGTEMPLATEDISAMBIGUATOR +# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) +# define SWIGTEMPLATEDISAMBIGUATOR template +# elif defined(__HP_aCC) +/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ +/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ +# define SWIGTEMPLATEDISAMBIGUATOR template +# else +# define SWIGTEMPLATEDISAMBIGUATOR +# endif +#endif + +/* inline attribute */ +#ifndef SWIGINLINE +# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) +# define SWIGINLINE inline +# else +# define SWIGINLINE +# endif +#endif + +/* attribute recognised by some compilers to avoid 'unused' warnings */ +#ifndef SWIGUNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +# elif defined(__ICC) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +#endif + +#ifndef SWIG_MSC_UNSUPPRESS_4505 +# if defined(_MSC_VER) +# pragma warning(disable : 4505) /* unreferenced local function has been removed */ +# endif +#endif + +#ifndef SWIGUNUSEDPARM +# ifdef __cplusplus +# define SWIGUNUSEDPARM(p) +# else +# define SWIGUNUSEDPARM(p) p SWIGUNUSED +# endif +#endif + +/* internal SWIG method */ +#ifndef SWIGINTERN +# define SWIGINTERN static SWIGUNUSED +#endif + +/* internal inline SWIG method */ +#ifndef SWIGINTERNINLINE +# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE +#endif + +/* exporting methods */ +#if defined(__GNUC__) +# if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) +# ifndef GCC_HASCLASSVISIBILITY +# define GCC_HASCLASSVISIBILITY +# endif +# endif +#endif + +#ifndef SWIGEXPORT +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# if defined(STATIC_LINKED) +# define SWIGEXPORT +# else +# define SWIGEXPORT __declspec(dllexport) +# endif +# else +# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) +# define SWIGEXPORT __attribute__ ((visibility("default"))) +# else +# define SWIGEXPORT +# endif +# endif +#endif + +/* calling conventions for Windows */ +#ifndef SWIGSTDCALL +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# define SWIGSTDCALL __stdcall +# else +# define SWIGSTDCALL +# endif +#endif + +/* Deal with Microsoft's attempt at deprecating C standard runtime functions */ +#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) +# define _CRT_SECURE_NO_DEPRECATE +#endif + +/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ +#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) +# define _SCL_SECURE_NO_DEPRECATE +#endif + +/* Deal with Apple's deprecated 'AssertMacros.h' from Carbon-framework */ +#if defined(__APPLE__) && !defined(__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES) +# define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0 +#endif + +/* Intel's compiler complains if a variable which was never initialised is + * cast to void, which is a common idiom which we use to indicate that we + * are aware a variable isn't used. So we just silence that warning. + * See: https://github.com/swig/swig/issues/192 for more discussion. + */ +#ifdef __INTEL_COMPILER +# pragma warning disable 592 +#endif + + +/* Fix for jlong on some versions of gcc on Windows */ +#if defined(__GNUC__) && !defined(__INTEL_COMPILER) + typedef long long __int64; +#endif + +/* Fix for jlong on 64-bit x86 Solaris */ +#if defined(__x86_64) +# ifdef _LP64 +# undef _LP64 +# endif +#endif + +#include +#include +#include + + +/* Support for throwing Java exceptions */ +typedef enum { + SWIG_JavaOutOfMemoryError = 1, + SWIG_JavaIOException, + SWIG_JavaRuntimeException, + SWIG_JavaIndexOutOfBoundsException, + SWIG_JavaArithmeticException, + SWIG_JavaIllegalArgumentException, + SWIG_JavaNullPointerException, + SWIG_JavaDirectorPureVirtual, + SWIG_JavaUnknownError, + SWIG_JavaIllegalStateException, +} SWIG_JavaExceptionCodes; + +typedef struct { + SWIG_JavaExceptionCodes code; + const char *java_exception; +} SWIG_JavaExceptions_t; + + +static void SWIGUNUSED SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionCodes code, const char *msg) { + jclass excep; + static const SWIG_JavaExceptions_t java_exceptions[] = { + { SWIG_JavaOutOfMemoryError, "java/lang/OutOfMemoryError" }, + { SWIG_JavaIOException, "java/io/IOException" }, + { SWIG_JavaRuntimeException, "java/lang/RuntimeException" }, + { SWIG_JavaIndexOutOfBoundsException, "java/lang/IndexOutOfBoundsException" }, + { SWIG_JavaArithmeticException, "java/lang/ArithmeticException" }, + { SWIG_JavaIllegalArgumentException, "java/lang/IllegalArgumentException" }, + { SWIG_JavaNullPointerException, "java/lang/NullPointerException" }, + { SWIG_JavaDirectorPureVirtual, "java/lang/RuntimeException" }, + { SWIG_JavaUnknownError, "java/lang/UnknownError" }, + { SWIG_JavaIllegalStateException, "java/lang/IllegalStateException" }, + { (SWIG_JavaExceptionCodes)0, "java/lang/UnknownError" } + }; + const SWIG_JavaExceptions_t *except_ptr = java_exceptions; + + while (except_ptr->code != code && except_ptr->code) + except_ptr++; + + jenv->ExceptionClear(); + excep = jenv->FindClass(except_ptr->java_exception); + if (excep) + jenv->ThrowNew(excep, msg); +} + + +/* Contract support */ + +#define SWIG_contract_assert(nullreturn, expr, msg) if (!(expr)) {SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, msg); return nullreturn; } else + +/* Errors in SWIG */ +#define SWIG_UnknownError -1 +#define SWIG_IOError -2 +#define SWIG_RuntimeError -3 +#define SWIG_IndexError -4 +#define SWIG_TypeError -5 +#define SWIG_DivisionByZero -6 +#define SWIG_OverflowError -7 +#define SWIG_SyntaxError -8 +#define SWIG_ValueError -9 +#define SWIG_SystemError -10 +#define SWIG_AttributeError -11 +#define SWIG_MemoryError -12 +#define SWIG_NullReferenceError -13 + + + +/* ----------------------------------------------------------------------------- + * director_common.swg + * + * This file contains support for director classes which is common between + * languages. + * ----------------------------------------------------------------------------- */ + +/* + Use -DSWIG_DIRECTOR_STATIC if you prefer to avoid the use of the + 'Swig' namespace. This could be useful for multi-modules projects. +*/ +#ifdef SWIG_DIRECTOR_STATIC +/* Force anonymous (static) namespace */ +#define Swig +#endif +/* ----------------------------------------------------------------------------- + * director.swg + * + * This file contains support for director classes so that Java proxy + * methods can be called from C++. + * ----------------------------------------------------------------------------- */ + +#if defined(DEBUG_DIRECTOR_OWNED) || defined(DEBUG_DIRECTOR_EXCEPTION) || defined(DEBUG_DIRECTOR_THREAD_NAME) +#include +#endif + +#include + +#if defined(SWIG_JAVA_USE_THREAD_NAME) + +#if !defined(SWIG_JAVA_GET_THREAD_NAME) +namespace Swig { + SWIGINTERN int GetThreadName(char *name, size_t len); +} + +#if defined(__linux__) + +#include +SWIGINTERN int Swig::GetThreadName(char *name, size_t len) { + (void)len; +#if defined(PR_GET_NAME) + return prctl(PR_GET_NAME, (unsigned long)name, 0, 0, 0); +#else + (void)name; + return 1; +#endif +} + +#elif defined(__unix__) || defined(__APPLE__) + +#include +SWIGINTERN int Swig::GetThreadName(char *name, size_t len) { + return pthread_getname_np(pthread_self(), name, len); +} + +#else + +SWIGINTERN int Swig::GetThreadName(char *name, size_t len) { + (void)len; + (void)name; + return 1; +} +#endif + +#endif + +#endif + +namespace Swig { + + /* Java object wrapper */ + class JObjectWrapper { + public: + JObjectWrapper() : jthis_(NULL), weak_global_(true) { + } + + ~JObjectWrapper() { + jthis_ = NULL; + weak_global_ = true; + } + + bool set(JNIEnv *jenv, jobject jobj, bool mem_own, bool weak_global) { + if (!jthis_) { + weak_global_ = weak_global || !mem_own; // hold as weak global if explicitly requested or not owned + if (jobj) + jthis_ = weak_global_ ? jenv->NewWeakGlobalRef(jobj) : jenv->NewGlobalRef(jobj); +#if defined(DEBUG_DIRECTOR_OWNED) + std::cout << "JObjectWrapper::set(" << jobj << ", " << (weak_global ? "weak_global" : "global_ref") << ") -> " << jthis_ << std::endl; +#endif + return true; + } else { +#if defined(DEBUG_DIRECTOR_OWNED) + std::cout << "JObjectWrapper::set(" << jobj << ", " << (weak_global ? "weak_global" : "global_ref") << ") -> already set" << std::endl; +#endif + return false; + } + } + + jobject get(JNIEnv *jenv) const { +#if defined(DEBUG_DIRECTOR_OWNED) + std::cout << "JObjectWrapper::get("; + if (jthis_) + std::cout << jthis_; + else + std::cout << "null"; + std::cout << ") -> return new local ref" << std::endl; +#endif + return (jthis_ ? jenv->NewLocalRef(jthis_) : jthis_); + } + + void release(JNIEnv *jenv) { +#if defined(DEBUG_DIRECTOR_OWNED) + std::cout << "JObjectWrapper::release(" << jthis_ << "): " << (weak_global_ ? "weak global ref" : "global ref") << std::endl; +#endif + if (jthis_) { + if (weak_global_) { + if (jenv->IsSameObject(jthis_, NULL) == JNI_FALSE) + jenv->DeleteWeakGlobalRef((jweak)jthis_); + } else + jenv->DeleteGlobalRef(jthis_); + } + + jthis_ = NULL; + weak_global_ = true; + } + + /* Only call peek if you know what you are doing wrt to weak/global references */ + jobject peek() { + return jthis_; + } + + /* Java proxy releases ownership of C++ object, C++ object is now + responsible for destruction (creates NewGlobalRef to pin Java proxy) */ + void java_change_ownership(JNIEnv *jenv, jobject jself, bool take_or_release) { + if (take_or_release) { /* Java takes ownership of C++ object's lifetime. */ + if (!weak_global_) { + jenv->DeleteGlobalRef(jthis_); + jthis_ = jenv->NewWeakGlobalRef(jself); + weak_global_ = true; + } + } else { + /* Java releases ownership of C++ object's lifetime */ + if (weak_global_) { + jenv->DeleteWeakGlobalRef((jweak)jthis_); + jthis_ = jenv->NewGlobalRef(jself); + weak_global_ = false; + } + } + } + + private: + /* pointer to Java object */ + jobject jthis_; + /* Local or global reference flag */ + bool weak_global_; + }; + + /* Local JNI reference deleter */ + class LocalRefGuard { + JNIEnv *jenv_; + jobject jobj_; + + // non-copyable + LocalRefGuard(const LocalRefGuard &); + LocalRefGuard &operator=(const LocalRefGuard &); + public: + LocalRefGuard(JNIEnv *jenv, jobject jobj): jenv_(jenv), jobj_(jobj) {} + ~LocalRefGuard() { + if (jobj_) + jenv_->DeleteLocalRef(jobj_); + } + }; + + /* director base class */ + class Director { + /* pointer to Java virtual machine */ + JavaVM *swig_jvm_; + + protected: +#if defined (_MSC_VER) && (_MSC_VER<1300) + class JNIEnvWrapper; + friend class JNIEnvWrapper; +#endif + /* Utility class for managing the JNI environment */ + class JNIEnvWrapper { + const Director *director_; + JNIEnv *jenv_; + int env_status; + public: + JNIEnvWrapper(const Director *director) : director_(director), jenv_(0), env_status(0) { +#if defined(__ANDROID__) + JNIEnv **jenv = &jenv_; +#else + void **jenv = (void **)&jenv_; +#endif + env_status = director_->swig_jvm_->GetEnv((void **)&jenv_, JNI_VERSION_1_2); + JavaVMAttachArgs args; + args.version = JNI_VERSION_1_2; + args.group = NULL; + args.name = NULL; +#if defined(SWIG_JAVA_USE_THREAD_NAME) + char thread_name[64]; // MAX_TASK_COMM_LEN=16 is hard-coded in the Linux kernel and MacOS has MAXTHREADNAMESIZE=64. + if (Swig::GetThreadName(thread_name, sizeof(thread_name)) == 0) { + args.name = thread_name; +#if defined(DEBUG_DIRECTOR_THREAD_NAME) + std::cout << "JNIEnvWrapper: thread name: " << thread_name << std::endl; + } else { + std::cout << "JNIEnvWrapper: Couldn't set Java thread name" << std::endl; +#endif + } +#endif +#if defined(SWIG_JAVA_ATTACH_CURRENT_THREAD_AS_DAEMON) + // Attach a daemon thread to the JVM. Useful when the JVM should not wait for + // the thread to exit upon shutdown. Only for jdk-1.4 and later. + director_->swig_jvm_->AttachCurrentThreadAsDaemon(jenv, &args); +#else + director_->swig_jvm_->AttachCurrentThread(jenv, &args); +#endif + } + ~JNIEnvWrapper() { +#if !defined(SWIG_JAVA_NO_DETACH_CURRENT_THREAD) + // Some JVMs, eg jdk-1.4.2 and lower on Solaris have a bug and crash with the DetachCurrentThread call. + // However, without this call, the JVM hangs on exit when the thread was not created by the JVM and creates a memory leak. + if (env_status == JNI_EDETACHED) + director_->swig_jvm_->DetachCurrentThread(); +#endif + } + JNIEnv *getJNIEnv() const { + return jenv_; + } + }; + + /* Java object wrapper */ + JObjectWrapper swig_self_; + + /* Disconnect director from Java object */ + void swig_disconnect_director_self(const char *disconn_method) { + JNIEnvWrapper jnienv(this) ; + JNIEnv *jenv = jnienv.getJNIEnv() ; + jobject jobj = swig_self_.get(jenv); + LocalRefGuard ref_deleter(jenv, jobj); +#if defined(DEBUG_DIRECTOR_OWNED) + std::cout << "Swig::Director::disconnect_director_self(" << jobj << ")" << std::endl; +#endif + if (jobj && jenv->IsSameObject(jobj, NULL) == JNI_FALSE) { + jmethodID disconn_meth = jenv->GetMethodID(jenv->GetObjectClass(jobj), disconn_method, "()V"); + if (disconn_meth) { +#if defined(DEBUG_DIRECTOR_OWNED) + std::cout << "Swig::Director::disconnect_director_self upcall to " << disconn_method << std::endl; +#endif + jenv->CallVoidMethod(jobj, disconn_meth); + } + } + } + + public: + Director(JNIEnv *jenv) : swig_jvm_((JavaVM *) NULL), swig_self_() { + /* Acquire the Java VM pointer */ + jenv->GetJavaVM(&swig_jvm_); + } + + virtual ~Director() { + JNIEnvWrapper jnienv(this) ; + JNIEnv *jenv = jnienv.getJNIEnv() ; + swig_self_.release(jenv); + } + + bool swig_set_self(JNIEnv *jenv, jobject jself, bool mem_own, bool weak_global) { + return swig_self_.set(jenv, jself, mem_own, weak_global); + } + + jobject swig_get_self(JNIEnv *jenv) const { + return swig_self_.get(jenv); + } + + // Change C++ object's ownership, relative to Java + void swig_java_change_ownership(JNIEnv *jenv, jobject jself, bool take_or_release) { + swig_self_.java_change_ownership(jenv, jself, take_or_release); + } + }; + + // Zero initialized bool array + template class BoolArray { + bool array_[N]; + public: + BoolArray() { + memset(array_, 0, sizeof(array_)); + } + bool& operator[](size_t n) { + return array_[n]; + } + bool operator[](size_t n) const { + return array_[n]; + } + }; + + // Utility classes and functions for exception handling. + + // Simple holder for a Java string during exception handling, providing access to a c-style string + class JavaString { + public: + JavaString(JNIEnv *jenv, jstring jstr) : jenv_(jenv), jstr_(jstr), cstr_(0) { + if (jenv_ && jstr_) + cstr_ = (const char *) jenv_->GetStringUTFChars(jstr_, NULL); + } + + ~JavaString() { + if (jenv_ && jstr_ && cstr_) + jenv_->ReleaseStringUTFChars(jstr_, cstr_); + } + + const char *c_str(const char *null_string = "null JavaString") const { + return cstr_ ? cstr_ : null_string; + } + + private: + // non-copyable + JavaString(const JavaString &); + JavaString &operator=(const JavaString &); + + JNIEnv *jenv_; + jstring jstr_; + const char *cstr_; + }; + + // Helper class to extract the exception message from a Java throwable + class JavaExceptionMessage { + public: + JavaExceptionMessage(JNIEnv *jenv, jthrowable throwable) : message_(jenv, exceptionMessageFromThrowable(jenv, throwable)) { + } + + // Return a C string of the exception message in the jthrowable passed in the constructor + // If no message is available, null_string is return instead + const char *message(const char *null_string = "Could not get exception message in JavaExceptionMessage") const { + return message_.c_str(null_string); + } + + private: + // non-copyable + JavaExceptionMessage(const JavaExceptionMessage &); + JavaExceptionMessage &operator=(const JavaExceptionMessage &); + + // Get exception message by calling Java method Throwable.getMessage() + static jstring exceptionMessageFromThrowable(JNIEnv *jenv, jthrowable throwable) { + jstring jmsg = NULL; + if (jenv && throwable) { + jenv->ExceptionClear(); // Cannot invoke methods with any pending exceptions + jclass throwclz = jenv->GetObjectClass(throwable); + if (throwclz) { + // All Throwable classes have a getMessage() method, so call it to extract the exception message + jmethodID getMessageMethodID = jenv->GetMethodID(throwclz, "getMessage", "()Ljava/lang/String;"); + if (getMessageMethodID) + jmsg = (jstring)jenv->CallObjectMethod(throwable, getMessageMethodID); + } + if (jmsg == NULL && jenv->ExceptionCheck()) + jenv->ExceptionClear(); + } + return jmsg; + } + + JavaString message_; + }; + + // C++ Exception class for handling Java exceptions thrown during a director method Java upcall + class DirectorException : public std::exception { + public: + + // Construct exception from a Java throwable + DirectorException(JNIEnv *jenv, jthrowable throwable) : jenv_(jenv), throwable_(throwable), classname_(0), msg_(0) { + + // Call Java method Object.getClass().getName() to obtain the throwable's class name (delimited by '/') + if (jenv && throwable) { + jenv->ExceptionClear(); // Cannot invoke methods with any pending exceptions + jclass throwclz = jenv->GetObjectClass(throwable); + if (throwclz) { + jclass clzclz = jenv->GetObjectClass(throwclz); + if (clzclz) { + jmethodID getNameMethodID = jenv->GetMethodID(clzclz, "getName", "()Ljava/lang/String;"); + if (getNameMethodID) { + jstring jstr_classname = (jstring)(jenv->CallObjectMethod(throwclz, getNameMethodID)); + // Copy strings, since there is no guarantee that jenv will be active when handled + if (jstr_classname) { + JavaString jsclassname(jenv, jstr_classname); + const char *classname = jsclassname.c_str(0); + if (classname) + classname_ = copypath(classname); + } + } + } + } + } + + JavaExceptionMessage exceptionmsg(jenv, throwable); + msg_ = copystr(exceptionmsg.message(0)); + } + + // More general constructor for handling as a java.lang.RuntimeException + DirectorException(const char *msg) : jenv_(0), throwable_(0), classname_(0), msg_(msg ? copystr(msg) : 0) { + } + + ~DirectorException() throw() { + delete[] classname_; + delete[] msg_; + } + + const char *what() const throw() { + return msg_ ? msg_ : "Unspecified DirectorException message"; + } + + // Reconstruct and raise/throw the Java Exception that caused the DirectorException + // Note that any error in the JNI exception handling results in a Java RuntimeException + void throwException(JNIEnv *jenv) const { + if (jenv) { + if (jenv == jenv_ && throwable_) { + // Throw original exception if not already pending + jthrowable throwable = jenv->ExceptionOccurred(); + if (throwable && jenv->IsSameObject(throwable, throwable_) == JNI_FALSE) { + jenv->ExceptionClear(); + throwable = 0; + } + if (!throwable) + jenv->Throw(throwable_); + } else { + // Try and reconstruct original exception, but original stacktrace is not reconstructed + jenv->ExceptionClear(); + + jmethodID ctorMethodID = 0; + jclass throwableclass = 0; + if (classname_) { + throwableclass = jenv->FindClass(classname_); + if (throwableclass) + ctorMethodID = jenv->GetMethodID(throwableclass, "", "(Ljava/lang/String;)V"); + } + + if (ctorMethodID) { + jenv->ThrowNew(throwableclass, what()); + } else { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, what()); + } + } + } + } + + // Deprecated - use throwException + void raiseJavaException(JNIEnv *jenv) const { + throwException(jenv); + } + + // Create and throw the DirectorException + static void raise(JNIEnv *jenv, jthrowable throwable) { + throw DirectorException(jenv, throwable); + } + + private: + static char *copypath(const char *srcmsg) { + char *target = copystr(srcmsg); + for (char *c=target; *c; ++c) { + if ('.' == *c) + *c = '/'; + } + return target; + } + + static char *copystr(const char *srcmsg) { + char *target = 0; + if (srcmsg) { + size_t msglen = strlen(srcmsg) + 1; + target = new char[msglen]; + strncpy(target, srcmsg, msglen); + } + return target; + } + + JNIEnv *jenv_; + jthrowable throwable_; + const char *classname_; + const char *msg_; + }; + + // Helper method to determine if a Java throwable matches a particular Java class type + // Note side effect of clearing any pending exceptions + SWIGINTERN bool ExceptionMatches(JNIEnv *jenv, jthrowable throwable, const char *classname) { + bool matches = false; + + if (throwable && jenv && classname) { + // Exceptions need to be cleared for correct behavior. + // The caller of ExceptionMatches should restore pending exceptions if desired - + // the caller already has the throwable. + jenv->ExceptionClear(); + + jclass clz = jenv->FindClass(classname); + if (clz) { + jclass classclz = jenv->GetObjectClass(clz); + jmethodID isInstanceMethodID = jenv->GetMethodID(classclz, "isInstance", "(Ljava/lang/Object;)Z"); + if (isInstanceMethodID) { + matches = jenv->CallBooleanMethod(clz, isInstanceMethodID, throwable) != 0; + } + } + +#if defined(DEBUG_DIRECTOR_EXCEPTION) + if (jenv->ExceptionCheck()) { + // Typically occurs when an invalid classname argument is passed resulting in a ClassNotFoundException + JavaExceptionMessage exc(jenv, jenv->ExceptionOccurred()); + std::cout << "Error: ExceptionMatches: class '" << classname << "' : " << exc.message() << std::endl; + } +#endif + } + return matches; + } +} + +namespace Swig { + namespace { + jclass jclass_libtorrent_jni = NULL; + jmethodID director_method_ids[9]; + } +} + +// BEGIN common set include ------------------------------------------------------ + +#include "libtorrent/version.hpp" +#include "libtorrent/error_code.hpp" +#include "libtorrent/peer_request.hpp" +#include "libtorrent/file_storage.hpp" +#include "libtorrent/bdecode.hpp" +#include "libtorrent/bencode.hpp" +#include "libtorrent/peer_info.hpp" +#include "libtorrent/torrent_flags.hpp" +#include "libtorrent/torrent_info.hpp" +#include "libtorrent/pex_flags.hpp" +#include "libtorrent/torrent_status.hpp" +#include "libtorrent/torrent_handle.hpp" +#include "libtorrent/add_torrent_params.hpp" +#include "libtorrent/operations.hpp" +#include "libtorrent/session_stats.hpp" +#include "libtorrent/close_reason.hpp" +#include "libtorrent/alert.hpp" +#include "libtorrent/alert_types.hpp" +#include "libtorrent/session_settings.hpp" +#include "libtorrent/settings_pack.hpp" +#include "libtorrent/peer_class.hpp" +#include "libtorrent/peer_class_type_filter.hpp" +#include "libtorrent/session_types.hpp" +#include "libtorrent/ip_filter.hpp" +#include "libtorrent/session_handle.hpp" +#include "libtorrent/kademlia/dht_state.hpp" +#include "libtorrent/kademlia/dht_settings.hpp" +#include "libtorrent/session.hpp" +#include "libtorrent/peer_connection_handle.hpp" +#include "libtorrent/magnet_uri.hpp" +#include "libtorrent/create_torrent.hpp" +#include "libtorrent/fingerprint.hpp" + +#include "libtorrent.h" + +using piece_index_t = libtorrent::piece_index_t; +using file_index_t = libtorrent::file_index_t; +using peer_class_t = libtorrent::peer_class_t; +using port_mapping_t = libtorrent::port_mapping_t; +using queue_position_t = libtorrent::queue_position_t; +using download_priority_t = libtorrent::download_priority_t; +using disconnect_severity_t = libtorrent::disconnect_severity_t; + +// END common set include ------------------------------------------------------ + + +#ifdef __cplusplus +extern "C" { +#endif + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_directBufferAddress(JNIEnv *jenv, jclass jcls, jobject jbuf) { + try { + return reinterpret_cast(jenv->GetDirectBufferAddress(jbuf)); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + } + + return 0; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_directBufferCapacity(JNIEnv *jenv, jclass jcls, jobject jbuf) { + try { + return reinterpret_cast(jenv->GetDirectBufferCapacity(jbuf)); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + } + + return 0; +} + +#ifdef __cplusplus +} +#endif + + +#include // Use the C99 official header + + +#include +#include + + +#include + + +SWIGINTERN void SWIG_JavaException(JNIEnv *jenv, int code, const char *msg) { + SWIG_JavaExceptionCodes exception_code = SWIG_JavaUnknownError; + switch(code) { + case SWIG_MemoryError: + exception_code = SWIG_JavaOutOfMemoryError; + break; + case SWIG_IOError: + exception_code = SWIG_JavaIOException; + break; + case SWIG_SystemError: + case SWIG_RuntimeError: + exception_code = SWIG_JavaRuntimeException; + break; + case SWIG_OverflowError: + case SWIG_IndexError: + exception_code = SWIG_JavaIndexOutOfBoundsException; + break; + case SWIG_DivisionByZero: + exception_code = SWIG_JavaArithmeticException; + break; + case SWIG_SyntaxError: + case SWIG_ValueError: + case SWIG_TypeError: + exception_code = SWIG_JavaIllegalArgumentException; + break; + case SWIG_UnknownError: + default: + exception_code = SWIG_JavaUnknownError; + break; + } + SWIG_JavaThrowException(jenv, exception_code, msg); +} + + +#include +#include + + +#include + +SWIGINTERN int8_t std_vector_Sl_int8_t_Sg__get(std::vector< int8_t > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< signed char >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_std_string_Sg__get(std::vector< std::string > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< std::string >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i >::const_reference std_vector_Sl_std_pair_Sl_std_string_Sc_int_Sg__Sg__get(std::vector< std::pair< std::string,int > > *self,int i){ + int size = int(self->size()); + if (i>=0 && i > *self,int i,std::vector< std::pair< std::string,int > >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i >::const_reference std_vector_Sl_std_pair_Sl_std_string_Sc_std_string_Sg__Sg__get(std::vector< std::pair< std::string,std::string > > *self,int i){ + int size = int(self->size()); + if (i>=0 && i > *self,int i,std::vector< std::pair< std::string,std::string > >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i >::const_reference std_vector_Sl_std_pair_Sl_piece_index_t_Sc_int_Sg__Sg__get(std::vector< std::pair< piece_index_t,int > > *self,int i){ + int size = int(self->size()); + if (i>=0 && i > *self,int i,std::vector< std::pair< piece_index_t,int > >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_int_Sg__get(std::vector< int > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< int >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_long_SS_long_Sg__get(std::vector< long long > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< long long >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_libtorrent_sha1_hash_Sg__get(std::vector< libtorrent::sha1_hash > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::sha1_hash >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_libtorrent_torrent_status_Sg__get(std::vector< libtorrent::torrent_status > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::torrent_status >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_libtorrent_torrent_handle_Sg__get(std::vector< libtorrent::torrent_handle > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::torrent_handle >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_libtorrent_file_slice_Sg__get(std::vector< libtorrent::file_slice > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::file_slice >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_libtorrent_dht_routing_bucket_Sg__get(std::vector< libtorrent::dht_routing_bucket > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::dht_routing_bucket >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_libtorrent_dht_lookup_Sg__get(std::vector< libtorrent::dht_lookup > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::dht_lookup >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_libtorrent_block_info_Sg__get(std::vector< libtorrent::block_info > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::block_info >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_libtorrent_partial_piece_info_Sg__get(std::vector< libtorrent::partial_piece_info > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::partial_piece_info >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_libtorrent_peer_info_Sg__get(std::vector< libtorrent::peer_info > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::peer_info >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_libtorrent_stats_metric_Sg__get(std::vector< libtorrent::stats_metric > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::stats_metric >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_libtorrent_entry_Sg__get(std::vector< libtorrent::entry > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::entry >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_libtorrent_web_seed_entry_Sg__get(std::vector< libtorrent::web_seed_entry > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::web_seed_entry >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_libtorrent_announce_endpoint_Sg__get(std::vector< libtorrent::announce_endpoint > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::announce_endpoint >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_libtorrent_announce_entry_Sg__get(std::vector< libtorrent::announce_entry > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::announce_entry >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_libtorrent_tcp_endpoint_Sg__get(std::vector< libtorrent::tcp::endpoint > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::tcp::endpoint >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_libtorrent_udp_endpoint_Sg__get(std::vector< libtorrent::udp::endpoint > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::udp::endpoint >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_piece_index_t_Sg__get(std::vector< piece_index_t > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< piece_index_t >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_file_index_t_Sg__get(std::vector< file_index_t > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< file_index_t >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i >::const_reference std_vector_Sl_std_pair_Sl_libtorrent_sha1_hash_Sc_libtorrent_udp_endpoint_Sg__Sg__get(std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *self,int i){ + int size = int(self->size()); + if (i>=0 && i > *self,int i,std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i >::const_reference std_vector_Sl_std_pair_Sl_libtorrent_address_Sc_libtorrent_sha1_hash_Sg__Sg__get(std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *self,int i){ + int size = int(self->size()); + if (i>=0 && i > *self,int i,std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i *self,file_index_t const &key){ + std::map::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } +SWIGINTERN void std_map_Sl_file_index_t_Sc_std_string_Sg__set(std::map< file_index_t,std::string > *self,file_index_t const &key,std::string const &x){ + (*self)[key] = x; + } +SWIGINTERN void std_map_Sl_file_index_t_Sc_std_string_Sg__erase(std::map< file_index_t,std::string > *self,file_index_t const &key){ + std::map::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } +SWIGINTERN bool std_map_Sl_file_index_t_Sc_std_string_Sg__has_key(std::map< file_index_t,std::string > *self,file_index_t const &key){ + std::map::iterator i = self->find(key); + return i != self->end(); + } +SWIGINTERN std::vector< file_index_t > std_map_Sl_file_index_t_Sc_std_string_Sg__keys(std::map< file_index_t,std::string > *self){ + std::vector v; + for(std::map::iterator it = self->begin(), + end(self->end()); it != end; ++it) { + v.push_back(it->first); + } + return v; + } +SWIGINTERN long const &std_map_Sl_std_string_Sc_long_Sg__get(std::map< std::string,long > *self,std::string const &key){ + std::map::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } +SWIGINTERN void std_map_Sl_std_string_Sc_long_Sg__set(std::map< std::string,long > *self,std::string const &key,long const &x){ + (*self)[key] = x; + } +SWIGINTERN void std_map_Sl_std_string_Sc_long_Sg__erase(std::map< std::string,long > *self,std::string const &key){ + std::map::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } +SWIGINTERN bool std_map_Sl_std_string_Sc_long_Sg__has_key(std::map< std::string,long > *self,std::string const &key){ + std::map::iterator i = self->find(key); + return i != self->end(); + } +SWIGINTERN std::vector< std::string > std_map_Sl_std_string_Sc_long_Sg__keys(std::map< std::string,long > *self){ + std::vector v; + for(std::map::iterator it = self->begin(), + end(self->end()); it != end; ++it) { + v.push_back(it->first); + } + return v; + } +SWIGINTERN libtorrent::entry const &std_map_Sl_std_string_Sc_libtorrent_entry_Sg__get(std::map< std::string,libtorrent::entry > *self,std::string const &key){ + std::map::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } +SWIGINTERN void std_map_Sl_std_string_Sc_libtorrent_entry_Sg__set(std::map< std::string,libtorrent::entry > *self,std::string const &key,libtorrent::entry const &x){ + (*self)[key] = x; + } +SWIGINTERN void std_map_Sl_std_string_Sc_libtorrent_entry_Sg__erase(std::map< std::string,libtorrent::entry > *self,std::string const &key){ + std::map::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } +SWIGINTERN bool std_map_Sl_std_string_Sc_libtorrent_entry_Sg__has_key(std::map< std::string,libtorrent::entry > *self,std::string const &key){ + std::map::iterator i = self->find(key); + return i != self->end(); + } +SWIGINTERN std::vector< std::string > std_map_Sl_std_string_Sc_libtorrent_entry_Sg__keys(std::map< std::string,libtorrent::entry > *self){ + std::vector v; + for(std::map::iterator it = self->begin(), + end(self->end()); it != end; ++it) { + v.push_back(it->first); + } + return v; + } +SWIGINTERN std::vector< libtorrent::alert * >::const_reference std_vector_Sl_libtorrent_alert_Sm__Sg__get(std::vector< libtorrent::alert * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< libtorrent::alert * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_ip_interface_Sg__get(std::vector< ip_interface > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< ip_interface >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_ip_route_Sg__get(std::vector< ip_route > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< ip_route >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_port_mapping_t_Sg__get(std::vector< port_mapping_t > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< port_mapping_t >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i *self,std::size_t pos){ + return (*self)[pos]; + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_alert_category_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_alert_category_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_alert_category_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_alert_category_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_alert_category_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_alert_category_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_alert_category_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_alert_category_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_add_piece_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_add_piece_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_add_piece_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_add_piece_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_add_piece_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_add_piece_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_add_piece_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_add_piece_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_status_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_status_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_status_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_status_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_status_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_status_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_status_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_status_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_deadline_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_deadline_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_deadline_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_deadline_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_deadline_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_deadline_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_deadline_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_deadline_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_session_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_session_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_session_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_session_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_session_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_session_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_session_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_session_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pause_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pause_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pause_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pause_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pause_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pause_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pause_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pause_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_resume_data_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_resume_data_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_resume_data_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_resume_data_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_resume_data_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_resume_data_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_resume_data_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_resume_data_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_picker_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_picker_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_picker_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_picker_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_picker_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_picker_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_picker_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_picker_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_remove_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_remove_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_remove_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_remove_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_remove_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_remove_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_remove_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_remove_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_save_state_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_save_state_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_save_state_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_save_state_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_save_state_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_save_state_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_save_state_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_save_state_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint64_t_Sc_libtorrent_torrent_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint64_t_Sc_libtorrent_torrent_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint64_t_Sc_libtorrent_torrent_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint64_t_Sc_libtorrent_torrent_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint64_t_Sc_libtorrent_torrent_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint64_t_Sc_libtorrent_torrent_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint64_t_Sc_libtorrent_torrent_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint64_t_Sc_libtorrent_torrent_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_peer_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_peer_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_peer_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_peer_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_peer_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_peer_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_peer_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_peer_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_peer_source_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_peer_source_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_peer_source_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_peer_source_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_peer_source_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_peer_source_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_peer_source_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_peer_source_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pex_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pex_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pex_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pex_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pex_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pex_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pex_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pex_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_bandwidth_state_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_bandwidth_state_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_bandwidth_state_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_bandwidth_state_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_bandwidth_state_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_bandwidth_state_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_bandwidth_state_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_bandwidth_state_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_file_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_file_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_file_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_file_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_file_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_file_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_file_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_file_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_create_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_create_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_create_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_create_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_create_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_create_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_create_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_create_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reopen_network_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reopen_network_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reopen_network_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reopen_network_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reopen_network_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reopen_network_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reopen_network_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reopen_network_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reannounce_flags_tag_Sg__nonZero(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *self){ + return self->operator bool(); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reannounce_flags_tag_Sg__eq(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > const f){ + return self->operator==(f); + } +SWIGINTERN bool libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reannounce_flags_tag_Sg__ne(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > const f){ + return self->operator!=(f); + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reannounce_flags_tag_Sg__or_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > const other){ + return *self | other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reannounce_flags_tag_Sg__and_(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > const other){ + return *self & other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reannounce_flags_tag_Sg__xor(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *self,libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > const other){ + return *self ^ other; + } +SWIGINTERN libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reannounce_flags_tag_Sg__inv(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *self){ + return self->operator~(); + } +SWIGINTERN int libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reannounce_flags_tag_Sg__to_int(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *self){ + return static_cast(static_cast(*self)); + } +SWIGINTERN int8_t libtorrent_span_Sl_char_Sg__get(libtorrent::span< char > *self,size_t const idx){ + return (*self)[idx]; + } +SWIGINTERN void libtorrent_span_Sl_char_Sg__set(libtorrent::span< char > *self,size_t const idx,int8_t val){ + (*self)[idx] = val; + } +SWIGINTERN int8_t libtorrent_span_Sl_char_SS_const_Sg__get(libtorrent::span< char const > *self,size_t const idx){ + return (*self)[idx]; + } +SWIGINTERN libtorrent::sha1_hash *new_libtorrent_sha1_hash__SWIG_2(std::vector< int8_t > const &s){ + return new libtorrent::sha1_hash({reinterpret_cast(s.data()), static_cast(s.size())}); + } +SWIGINTERN int libtorrent_sha1_hash_hash_code(libtorrent::sha1_hash *self){ + char const* data = self->data(); + int result = 1; + for (int i = 0; i < int(self->size()); i++) { + result = 31 * result + data[i]; + } + return result; + } +SWIGINTERN std::vector< int8_t > libtorrent_sha1_hash_to_bytes(libtorrent::sha1_hash *self){ + std::string s = self->to_string(); + return std::vector(s.begin(), s.end()); + } +SWIGINTERN std::string libtorrent_sha1_hash_to_hex(libtorrent::sha1_hash *self){ + return libtorrent::aux::to_hex(*self); + } +SWIGINTERN bool libtorrent_sha1_hash_op_eq(libtorrent::sha1_hash const *self,libtorrent::sha1_hash const &n){ + return *self == n; + } +SWIGINTERN bool libtorrent_sha1_hash_op_ne(libtorrent::sha1_hash const *self,libtorrent::sha1_hash const &n){ + return *self != n; + } +SWIGINTERN bool libtorrent_sha1_hash_op_lt(libtorrent::sha1_hash const *self,libtorrent::sha1_hash const &n){ + return *self < n; + } +SWIGINTERN int libtorrent_sha1_hash_compare(libtorrent::sha1_hash const &h1,libtorrent::sha1_hash const &h2){ + return h1 == h2 ? 0 : (h1 < h2 ? -1 : 1); + } +SWIGINTERN std::vector< int8_t > libtorrent_bloom_filter_Sl_128_Sg__to_bytes(libtorrent::bloom_filter< 128 > const *self){ + std::string s = self->to_string(); + return std::vector(s.begin(), s.end()); + } +SWIGINTERN void libtorrent_bloom_filter_Sl_128_Sg__from_bytes(libtorrent::bloom_filter< 128 > *self,std::vector< int8_t > const &v){ + self->from_string(reinterpret_cast(&v[0])); + } +SWIGINTERN std::vector< int8_t > libtorrent_bloom_filter_Sl_256_Sg__to_bytes(libtorrent::bloom_filter< 256 > const *self){ + std::string s = self->to_string(); + return std::vector(s.begin(), s.end()); + } +SWIGINTERN void libtorrent_bloom_filter_Sl_256_Sg__from_bytes(libtorrent::bloom_filter< 256 > *self,std::vector< int8_t > const &v){ + self->from_string(reinterpret_cast(&v[0])); + } +SWIGINTERN std::vector< int8_t > libtorrent_string_view_to_bytes(libtorrent::string_view *self){ + std::string s = self->to_string(); + return std::vector(s.begin(), s.end()); + } +SWIGINTERN bool libtorrent_address_op_lt(libtorrent::address *self,libtorrent::address const &a2){ + return *self < a2; + } +SWIGINTERN int libtorrent_address_compare(libtorrent::address const &a1,libtorrent::address const &a2){ + return a1 == a2 ? 0 : (a1 < a2 ? -1 : 1); + } +SWIGINTERN libtorrent::address libtorrent_address_from_string(std::string const &str,boost::system::error_code &ec){ + return boost::asio::ip::make_address(str, ec); + } +SWIGINTERN libtorrent::entry &libtorrent_entry_get(libtorrent::entry *self,std::string const &key){ + return self->operator[](key); + } +SWIGINTERN void libtorrent_entry_set__SWIG_0(libtorrent::entry *self,std::string const &key,std::string const &value){ + self->operator[](key) = value; + } +SWIGINTERN void libtorrent_entry_set__SWIG_1(libtorrent::entry *self,std::string const &key,std::vector< int8_t > const &value){ + self->operator[](key) = std::string(value.begin(), value.end()); + } +SWIGINTERN void libtorrent_entry_set__SWIG_2(libtorrent::entry *self,std::string const &key,long long const &value){ + self->operator[](key) = value; + } +SWIGINTERN void libtorrent_entry_set__SWIG_3(libtorrent::entry *self,std::string const &key,libtorrent::entry const &value){ + self->operator[](key) = value; + } +SWIGINTERN std::vector< int8_t > libtorrent_entry_string_bytes(libtorrent::entry *self){ + std::string s = self->string(); + return std::vector(s.begin(), s.end()); + } +SWIGINTERN std::vector< int8_t > libtorrent_entry_preformatted_bytes(libtorrent::entry *self){ + std::vector v = self->preformatted(); + return std::vector(v.begin(), v.end()); + } +SWIGINTERN std::vector< int8_t > libtorrent_entry_bencode(libtorrent::entry *self){ + std::vector buffer; + libtorrent::bencode(std::back_inserter(buffer), *self); + return buffer; + } +SWIGINTERN libtorrent::entry libtorrent_entry_from_string_bytes(std::vector< int8_t > const &string_bytes){ + return libtorrent::entry(std::string(string_bytes.begin(), string_bytes.end())); + } +SWIGINTERN libtorrent::entry libtorrent_entry_from_preformatted_bytes(std::vector< int8_t > const &preformatted_bytes){ + return libtorrent::entry(std::vector(preformatted_bytes.begin(), preformatted_bytes.end())); + } +SWIGINTERN libtorrent::entry libtorrent_entry_bdecode(std::vector< int8_t > &buffer){ + return libtorrent::bdecode({reinterpret_cast(buffer.data()), static_cast(buffer.size())}); + } +SWIGINTERN std::vector< int8_t > libtorrent_announce_endpoint_get_message(libtorrent::announce_endpoint *self){ + std::string s = self->message; + return {s.begin(), s.end()}; + } +SWIGINTERN int64_t libtorrent_announce_endpoint_get_next_announce(libtorrent::announce_endpoint *self){ + return libtorrent::total_milliseconds(self->next_announce.time_since_epoch()); + } +SWIGINTERN int64_t libtorrent_announce_endpoint_get_min_announce(libtorrent::announce_endpoint *self){ + return libtorrent::total_milliseconds(self->min_announce.time_since_epoch()); + } +SWIGINTERN libtorrent::announce_entry *new_libtorrent_announce_entry(std::vector< int8_t > const &u){ + return new libtorrent::announce_entry( + {reinterpret_cast(u.data()), u.size()}); + } +SWIGINTERN std::vector< int8_t > libtorrent_announce_entry_get_url(libtorrent::announce_entry *self){ + std::string s = self->url; + return {s.begin(), s.end()}; + } +SWIGINTERN void libtorrent_announce_entry_set_url(libtorrent::announce_entry *self,std::vector< int8_t > const &s){ + self->url = {s.begin(), s.end()}; + } +SWIGINTERN std::vector< int8_t > libtorrent_announce_entry_get_trackerid(libtorrent::announce_entry *self){ + std::string s = self->trackerid; + return {s.begin(), s.end()}; + } +SWIGINTERN void libtorrent_announce_entry_set_trackerid(libtorrent::announce_entry *self,std::vector< int8_t > const &s){ + self->trackerid = {s.begin(), s.end()}; + } +SWIGINTERN void libtorrent_file_storage_add_file__SWIG_4(libtorrent::file_storage *self,std::string const &path,std::int64_t file_size,libtorrent::file_flags_t file_flags,std::time_t mtime,std::string const &symlink_path){ + self->add_file(path, file_size, file_flags, mtime, symlink_path); + } +SWIGINTERN std::string libtorrent_bdecode_node_list_string_value_at_s__SWIG_0(libtorrent::bdecode_node *self,int i,std::string default_val=""){ + return self->list_string_value_at(i, default_val).to_string(); + } +SWIGINTERN libtorrent::bdecode_node libtorrent_bdecode_node_dict_find_s(libtorrent::bdecode_node const *self,std::string key){ + return self->dict_find(key); + } +SWIGINTERN libtorrent::bdecode_node libtorrent_bdecode_node_dict_find_dict_s(libtorrent::bdecode_node const *self,std::string key){ + return self->dict_find_dict(key); + } +SWIGINTERN libtorrent::bdecode_node libtorrent_bdecode_node_dict_find_list_s(libtorrent::bdecode_node const *self,std::string key){ + return self->dict_find_list(key); + } +SWIGINTERN libtorrent::bdecode_node libtorrent_bdecode_node_dict_find_string_s(libtorrent::bdecode_node const *self,std::string key){ + return self->dict_find_string(key); + } +SWIGINTERN libtorrent::bdecode_node libtorrent_bdecode_node_dict_find_int_s(libtorrent::bdecode_node const *self,std::string key){ + return self->dict_find_int(key); + } +SWIGINTERN std::string libtorrent_bdecode_node_dict_find_string_value_s__SWIG_0(libtorrent::bdecode_node const *self,std::string key,std::string default_value=""){ + return self->dict_find_string_value(key, default_value).to_string(); + } +SWIGINTERN std::int64_t libtorrent_bdecode_node_dict_find_int_value_s__SWIG_0(libtorrent::bdecode_node const *self,std::string key,std::int64_t default_val=0){ + return self->dict_find_int_value(key, default_val); + } +SWIGINTERN std::string libtorrent_bdecode_node_string_value_s(libtorrent::bdecode_node const *self){ + return self->string_value().to_string(); + } +SWIGINTERN std::string libtorrent_bdecode_node_to_string(libtorrent::bdecode_node const &e,bool single_line,int indent){ + return libtorrent::print_entry(e, single_line, indent); + } +SWIGINTERN int libtorrent_bdecode_node_bdecode(std::vector< int8_t > &buffer,libtorrent::bdecode_node &ret,libtorrent::error_code &ec){ + return libtorrent::bdecode((char const*)&buffer[0], (char const*)&buffer[0] + buffer.size(), ret, ec); + } +SWIGINTERN std::vector< int8_t > libtorrent_peer_info_get_client(libtorrent::peer_info *self){ + std::string s = self->client; + return {s.begin(), s.end()}; + } +SWIGINTERN int64_t libtorrent_peer_info_get_last_request(libtorrent::peer_info *self){ + return libtorrent::total_milliseconds(self->last_request); + } +SWIGINTERN int64_t libtorrent_peer_info_get_last_active(libtorrent::peer_info *self){ + return libtorrent::total_milliseconds(self->last_active); + } +SWIGINTERN int64_t libtorrent_peer_info_get_download_queue_time(libtorrent::peer_info *self){ + return libtorrent::total_milliseconds(self->download_queue_time); + } +SWIGINTERN std::int32_t libtorrent_peer_info_get_flags(libtorrent::peer_info *self){ + return std::int32_t(static_cast(self->flags)); + } +SWIGINTERN std::int8_t libtorrent_peer_info_get_source(libtorrent::peer_info *self){ + return std::int8_t(static_cast(self->source)); + } +SWIGINTERN std::int8_t libtorrent_peer_info_get_read_state(libtorrent::peer_info *self){ + return std::int8_t(static_cast(self->read_state)); + } +SWIGINTERN std::int8_t libtorrent_peer_info_get_write_state(libtorrent::peer_info *self){ + return std::int8_t(static_cast(self->write_state)); + } +SWIGINTERN libtorrent::torrent_info *new_libtorrent_torrent_info__SWIG_4(int64_t buffer_ptr,int size,libtorrent::error_code &ec){ + return new libtorrent::torrent_info(reinterpret_cast(buffer_ptr), size, ec); + } +SWIGINTERN libtorrent::torrent_info const *libtorrent_torrent_status_torrent_file_ptr(libtorrent::torrent_status *self){ + return self->torrent_file.lock().get(); + } +SWIGINTERN int64_t libtorrent_torrent_status_get_next_announce(libtorrent::torrent_status *self){ + return libtorrent::total_milliseconds(self->next_announce); + } +SWIGINTERN int64_t libtorrent_torrent_status_get_last_upload(libtorrent::torrent_status *self){ + return libtorrent::total_milliseconds(self->last_upload.time_since_epoch()); + } +SWIGINTERN int64_t libtorrent_torrent_status_get_last_download(libtorrent::torrent_status *self){ + return libtorrent::total_milliseconds(self->last_download.time_since_epoch()); + } +SWIGINTERN int64_t libtorrent_torrent_status_get_active_duration(libtorrent::torrent_status *self){ + return libtorrent::total_milliseconds(self->active_duration); + } +SWIGINTERN int64_t libtorrent_torrent_status_get_finished_duration(libtorrent::torrent_status *self){ + return libtorrent::total_milliseconds(self->finished_duration); + } +SWIGINTERN int64_t libtorrent_torrent_status_get_seeding_duration(libtorrent::torrent_status *self){ + return libtorrent::total_milliseconds(self->seeding_duration); + } +SWIGINTERN int libtorrent_torrent_status_get_queue_position(libtorrent::torrent_status *self){ + return static_cast(self->queue_position); + } +SWIGINTERN void libtorrent_torrent_handle_add_piece_bytes__SWIG_0(libtorrent::torrent_handle *self,int piece,std::vector< int8_t > const &data,libtorrent::add_piece_flags_t flags={}){ + self->add_piece(piece_index_t(piece), (char const*)&data[0], flags); + } +SWIGINTERN libtorrent::torrent_info const *libtorrent_torrent_handle_torrent_file_ptr(libtorrent::torrent_handle *self){ + return self->torrent_file().get(); + } +SWIGINTERN std::vector< std::string > libtorrent_torrent_handle_get_url_seeds(libtorrent::torrent_handle const *self){ + std::set s = self->url_seeds(); + return {s.begin(), s.end()}; + } +SWIGINTERN std::vector< std::string > libtorrent_torrent_handle_get_http_seeds(libtorrent::torrent_handle const *self){ + std::set s = self->http_seeds(); + return {s.begin(), s.end()}; + } +SWIGINTERN void libtorrent_torrent_handle_set_ssl_certificate_buffer2(libtorrent::torrent_handle *self,std::vector< int8_t > const &certificate,std::vector< int8_t > const &private_key,std::vector< int8_t > const &dh_params){ + std::string cert{certificate.begin(), certificate.end()}; + std::string pk{private_key.begin(), private_key.end()}; + std::string dh{dh_params.begin(), dh_params.end()}; + self->set_ssl_certificate_buffer(cert, pk, dh); + } +SWIGINTERN int libtorrent_torrent_handle_queue_position2(libtorrent::torrent_handle const *self){ + return static_cast(self->queue_position()); + } +SWIGINTERN void libtorrent_torrent_handle_queue_position_set2(libtorrent::torrent_handle *self,int p){ + self->queue_position_set(queue_position_t{p}); + } +SWIGINTERN int libtorrent_torrent_handle_piece_priority2__SWIG_0(libtorrent::torrent_handle *self,piece_index_t index){ + return int(static_cast(self->piece_priority(index))); + } +SWIGINTERN void libtorrent_torrent_handle_piece_priority2__SWIG_1(libtorrent::torrent_handle *self,piece_index_t index,int priority){ + self->piece_priority(index, download_priority_t{std::uint8_t(priority)}); + } +SWIGINTERN void libtorrent_torrent_handle_prioritize_pieces2__SWIG_0(libtorrent::torrent_handle *self,std::vector< int > const &pieces){ + std::vector v(pieces.size()); + for (std::size_t i = 0; i < v.size(); i++) + v[i] = download_priority_t{std::uint8_t(pieces[i])}; + self->prioritize_pieces(v); + } +SWIGINTERN void libtorrent_torrent_handle_prioritize_pieces2__SWIG_1(libtorrent::torrent_handle *self,std::vector< std::pair< piece_index_t,int > > const &pieces){ + std::vector> v(pieces.size()); + for (std::size_t i = 0; i < v.size(); i++) + v[i] = std::pair(pieces[i].first, download_priority_t{std::uint8_t(pieces[i].second)}); + self->prioritize_pieces(v); + } +SWIGINTERN std::vector< int > libtorrent_torrent_handle_get_piece_priorities2(libtorrent::torrent_handle const *self){ + std::vector v = self->get_piece_priorities(); + std::vector r(v.size()); + for (std::size_t i = 0; i < v.size(); i++) + r[i] = int(static_cast(v[i])); + return r; + } +SWIGINTERN int libtorrent_torrent_handle_file_priority2__SWIG_0(libtorrent::torrent_handle *self,file_index_t index){ + return int(static_cast(self->file_priority(index))); + } +SWIGINTERN void libtorrent_torrent_handle_file_priority2__SWIG_1(libtorrent::torrent_handle *self,file_index_t index,int priority){ + self->file_priority(index, download_priority_t{std::uint8_t(priority)}); + } +SWIGINTERN void libtorrent_torrent_handle_prioritize_files2(libtorrent::torrent_handle *self,std::vector< int > const &files){ + std::vector v(files.size()); + for (std::size_t i = 0; i < v.size(); i++) + v[i] = download_priority_t{std::uint8_t(files[i])}; + self->prioritize_files(v); + } +SWIGINTERN std::vector< int > libtorrent_torrent_handle_get_file_priorities2(libtorrent::torrent_handle const *self){ + std::vector v = self->get_file_priorities(); + std::vector r(v.size()); + for (std::size_t i = 0; i < v.size(); i++) + r[i] = int(static_cast(v[i])); + return r; + } +SWIGINTERN libtorrent::torrent_info const *libtorrent_add_torrent_params_ti_ptr(libtorrent::add_torrent_params *self){ + return self->ti.get(); + } +SWIGINTERN void libtorrent_add_torrent_params_set_ti(libtorrent::add_torrent_params *self,libtorrent::torrent_info const &ti){ + self->ti = std::make_shared(ti); + } +SWIGINTERN void libtorrent_add_torrent_params_set_renamed_files(libtorrent::add_torrent_params *self,std::map< file_index_t,std::string > const &renamed_files){ + self->renamed_files = renamed_files; + } +SWIGINTERN std::vector< int > libtorrent_add_torrent_params_get_tracker_tiers(libtorrent::add_torrent_params *self){ + return self->tracker_tiers; + } +SWIGINTERN void libtorrent_add_torrent_params_set_tracker_tiers(libtorrent::add_torrent_params *self,std::vector< int > const &tracker_tiers){ + self->tracker_tiers = tracker_tiers; + } +SWIGINTERN void libtorrent_add_torrent_params_set_merkle_tree(libtorrent::add_torrent_params *self,std::vector< libtorrent::sha1_hash > const &merkle_tree){ + self->merkle_tree = merkle_tree; + } +SWIGINTERN std::vector< libtorrent::tcp::endpoint > libtorrent_add_torrent_params_get_banned_peers(libtorrent::add_torrent_params *self){ + return self->banned_peers; + } +SWIGINTERN void libtorrent_add_torrent_params_set_banned_peers(libtorrent::add_torrent_params *self,std::vector< libtorrent::tcp::endpoint > const &banned_peers){ + self->banned_peers = banned_peers; + } +SWIGINTERN std::vector< libtorrent::tcp::endpoint > libtorrent_add_torrent_params_get_peers(libtorrent::add_torrent_params *self){ + return self->peers; + } +SWIGINTERN void libtorrent_add_torrent_params_set_peers(libtorrent::add_torrent_params *self,std::vector< libtorrent::tcp::endpoint > const &peers){ + self->peers = peers; + } +SWIGINTERN void libtorrent_add_torrent_params_set_file_priorities2(libtorrent::add_torrent_params *self,std::vector< std::int8_t > const &file_priorities){ + std::vector v(file_priorities.size()); + for (std::size_t i = 0; i < v.size(); i++) + v[i] = download_priority_t{std::uint8_t(file_priorities[i])}; + self->file_priorities = v; + } +SWIGINTERN std::vector< std::pair< std::string,int > > libtorrent_add_torrent_params_get_dht_nodes(libtorrent::add_torrent_params *self){ + return self->dht_nodes; + } +SWIGINTERN void libtorrent_add_torrent_params_set_dht_nodes(libtorrent::add_torrent_params *self,std::vector< std::pair< std::string,int > > const &dht_nodes){ + self->dht_nodes = dht_nodes; + } +SWIGINTERN void libtorrent_add_torrent_params_set_http_seeds(libtorrent::add_torrent_params *self,std::vector< std::string > const &http_seeds){ + self->http_seeds = http_seeds; + } +SWIGINTERN std::vector< std::string > libtorrent_add_torrent_params_get_url_seeds(libtorrent::add_torrent_params *self){ + return self->url_seeds; + } +SWIGINTERN void libtorrent_add_torrent_params_set_url_seeds(libtorrent::add_torrent_params *self,std::vector< std::string > const &url_seeds){ + self->url_seeds = url_seeds; + } +SWIGINTERN std::vector< std::string > libtorrent_add_torrent_params_get_trackers(libtorrent::add_torrent_params *self){ + return self->trackers; + } +SWIGINTERN void libtorrent_add_torrent_params_set_trackers(libtorrent::add_torrent_params *self,std::vector< std::string > const &trackers){ + self->trackers = trackers; + } +SWIGINTERN void libtorrent_add_torrent_params_set_piece_priorities2(libtorrent::add_torrent_params *self,std::vector< std::int8_t > const &piece_priorities){ + std::vector v(piece_priorities.size()); + for (std::size_t i = 0; i < v.size(); i++) + v[i] = download_priority_t{std::uint8_t(piece_priorities[i])}; + self->piece_priorities = v; + } +SWIGINTERN libtorrent::add_torrent_params libtorrent_add_torrent_params_create_instance(){ + return libtorrent::add_torrent_params(); + } +SWIGINTERN libtorrent::add_torrent_params libtorrent_add_torrent_params_create_instance_disabled_storage(){ + return libtorrent::add_torrent_params(libtorrent::disabled_storage_constructor); + } +SWIGINTERN libtorrent::add_torrent_params libtorrent_add_torrent_params_create_instance_zero_storage(){ + return libtorrent::add_torrent_params(libtorrent::zero_storage_constructor); + } +SWIGINTERN void libtorrent_add_torrent_params_set_default_storage(libtorrent::add_torrent_params *self){ + self->storage = libtorrent::default_storage_constructor; + } +SWIGINTERN void libtorrent_add_torrent_params_set_disabled_storage(libtorrent::add_torrent_params *self){ + self->storage = libtorrent::disabled_storage_constructor; + } +SWIGINTERN void libtorrent_add_torrent_params_set_zero_storage(libtorrent::add_torrent_params *self){ + self->storage = libtorrent::zero_storage_constructor; + } +SWIGINTERN libtorrent::add_torrent_params libtorrent_add_torrent_params_read_resume_data__SWIG_0(libtorrent::bdecode_node const &rd,libtorrent::error_code &ec){ + return libtorrent::read_resume_data(rd, ec); + } +SWIGINTERN libtorrent::add_torrent_params libtorrent_add_torrent_params_read_resume_data__SWIG_1(std::vector< int8_t > const &buffer,libtorrent::error_code &ec){ + return libtorrent::read_resume_data({(char const*)&buffer[0], static_cast(buffer.size())}, ec); + } +SWIGINTERN libtorrent::entry libtorrent_add_torrent_params_write_resume_data(libtorrent::add_torrent_params const &atp){ + return libtorrent::write_resume_data(atp); + } +SWIGINTERN std::vector< int8_t > libtorrent_add_torrent_params_write_resume_data_buf(libtorrent::add_torrent_params const &atp){ + auto v = libtorrent::write_resume_data_buf(atp); + return {v.begin(), v.end()}; + } +SWIGINTERN libtorrent::add_torrent_params libtorrent_add_torrent_params_parse_magnet_uri(std::string const &uri,libtorrent::error_code &ec){ + return libtorrent::parse_magnet_uri(uri, ec); + } +SWIGINTERN std::string libtorrent_stats_metric_get_name(libtorrent::stats_metric *self){ + return std::string(self->name); + } +SWIGINTERN libtorrent::torrent_removed_alert const *libtorrent_alert_cast_to_torrent_removed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::read_piece_alert const *libtorrent_alert_cast_to_read_piece_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::file_completed_alert const *libtorrent_alert_cast_to_file_completed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::file_renamed_alert const *libtorrent_alert_cast_to_file_renamed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::file_rename_failed_alert const *libtorrent_alert_cast_to_file_rename_failed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::performance_alert const *libtorrent_alert_cast_to_performance_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::state_changed_alert const *libtorrent_alert_cast_to_state_changed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::tracker_error_alert const *libtorrent_alert_cast_to_tracker_error_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::tracker_warning_alert const *libtorrent_alert_cast_to_tracker_warning_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::scrape_reply_alert const *libtorrent_alert_cast_to_scrape_reply_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::scrape_failed_alert const *libtorrent_alert_cast_to_scrape_failed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::tracker_reply_alert const *libtorrent_alert_cast_to_tracker_reply_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::dht_reply_alert const *libtorrent_alert_cast_to_dht_reply_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::tracker_announce_alert const *libtorrent_alert_cast_to_tracker_announce_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::hash_failed_alert const *libtorrent_alert_cast_to_hash_failed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::peer_ban_alert const *libtorrent_alert_cast_to_peer_ban_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::peer_unsnubbed_alert const *libtorrent_alert_cast_to_peer_unsnubbed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::peer_snubbed_alert const *libtorrent_alert_cast_to_peer_snubbed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::peer_error_alert const *libtorrent_alert_cast_to_peer_error_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::peer_connect_alert const *libtorrent_alert_cast_to_peer_connect_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::peer_disconnected_alert const *libtorrent_alert_cast_to_peer_disconnected_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::invalid_request_alert const *libtorrent_alert_cast_to_invalid_request_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::torrent_finished_alert const *libtorrent_alert_cast_to_torrent_finished_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::piece_finished_alert const *libtorrent_alert_cast_to_piece_finished_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::request_dropped_alert const *libtorrent_alert_cast_to_request_dropped_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::block_timeout_alert const *libtorrent_alert_cast_to_block_timeout_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::block_finished_alert const *libtorrent_alert_cast_to_block_finished_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::block_downloading_alert const *libtorrent_alert_cast_to_block_downloading_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::unwanted_block_alert const *libtorrent_alert_cast_to_unwanted_block_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::storage_moved_alert const *libtorrent_alert_cast_to_storage_moved_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::storage_moved_failed_alert const *libtorrent_alert_cast_to_storage_moved_failed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::torrent_deleted_alert const *libtorrent_alert_cast_to_torrent_deleted_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::torrent_delete_failed_alert const *libtorrent_alert_cast_to_torrent_delete_failed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::save_resume_data_alert const *libtorrent_alert_cast_to_save_resume_data_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::save_resume_data_failed_alert const *libtorrent_alert_cast_to_save_resume_data_failed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::torrent_paused_alert const *libtorrent_alert_cast_to_torrent_paused_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::torrent_resumed_alert const *libtorrent_alert_cast_to_torrent_resumed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::torrent_checked_alert const *libtorrent_alert_cast_to_torrent_checked_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::url_seed_alert const *libtorrent_alert_cast_to_url_seed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::file_error_alert const *libtorrent_alert_cast_to_file_error_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::metadata_failed_alert const *libtorrent_alert_cast_to_metadata_failed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::metadata_received_alert const *libtorrent_alert_cast_to_metadata_received_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::udp_error_alert const *libtorrent_alert_cast_to_udp_error_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::external_ip_alert const *libtorrent_alert_cast_to_external_ip_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::listen_failed_alert const *libtorrent_alert_cast_to_listen_failed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::listen_succeeded_alert const *libtorrent_alert_cast_to_listen_succeeded_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::portmap_error_alert const *libtorrent_alert_cast_to_portmap_error_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::portmap_alert const *libtorrent_alert_cast_to_portmap_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::portmap_log_alert const *libtorrent_alert_cast_to_portmap_log_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::fastresume_rejected_alert const *libtorrent_alert_cast_to_fastresume_rejected_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::peer_blocked_alert const *libtorrent_alert_cast_to_peer_blocked_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::dht_announce_alert const *libtorrent_alert_cast_to_dht_announce_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::dht_get_peers_alert const *libtorrent_alert_cast_to_dht_get_peers_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::stats_alert const *libtorrent_alert_cast_to_stats_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::cache_flushed_alert const *libtorrent_alert_cast_to_cache_flushed_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::lsd_peer_alert const *libtorrent_alert_cast_to_lsd_peer_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::trackerid_alert const *libtorrent_alert_cast_to_trackerid_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::dht_bootstrap_alert const *libtorrent_alert_cast_to_dht_bootstrap_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::torrent_error_alert const *libtorrent_alert_cast_to_torrent_error_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::torrent_need_cert_alert const *libtorrent_alert_cast_to_torrent_need_cert_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::incoming_connection_alert const *libtorrent_alert_cast_to_incoming_connection_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::add_torrent_alert const *libtorrent_alert_cast_to_add_torrent_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::state_update_alert const *libtorrent_alert_cast_to_state_update_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::session_stats_alert const *libtorrent_alert_cast_to_session_stats_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::dht_error_alert const *libtorrent_alert_cast_to_dht_error_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::dht_immutable_item_alert const *libtorrent_alert_cast_to_dht_immutable_item_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::dht_mutable_item_alert const *libtorrent_alert_cast_to_dht_mutable_item_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::dht_put_alert const *libtorrent_alert_cast_to_dht_put_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::i2p_alert const *libtorrent_alert_cast_to_i2p_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::dht_outgoing_get_peers_alert const *libtorrent_alert_cast_to_dht_outgoing_get_peers_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::log_alert const *libtorrent_alert_cast_to_log_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::torrent_log_alert const *libtorrent_alert_cast_to_torrent_log_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::peer_log_alert const *libtorrent_alert_cast_to_peer_log_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::lsd_error_alert const *libtorrent_alert_cast_to_lsd_error_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::dht_stats_alert const *libtorrent_alert_cast_to_dht_stats_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::incoming_request_alert const *libtorrent_alert_cast_to_incoming_request_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::dht_log_alert const *libtorrent_alert_cast_to_dht_log_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::dht_pkt_alert const *libtorrent_alert_cast_to_dht_pkt_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::dht_get_peers_reply_alert const *libtorrent_alert_cast_to_dht_get_peers_reply_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::dht_direct_response_alert const *libtorrent_alert_cast_to_dht_direct_response_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::picker_log_alert const *libtorrent_alert_cast_to_picker_log_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::session_error_alert const *libtorrent_alert_cast_to_session_error_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::dht_live_nodes_alert const *libtorrent_alert_cast_to_dht_live_nodes_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::session_stats_header_alert const *libtorrent_alert_cast_to_session_stats_header_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::dht_sample_infohashes_alert const *libtorrent_alert_cast_to_dht_sample_infohashes_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::block_uploaded_alert const *libtorrent_alert_cast_to_block_uploaded_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN libtorrent::alerts_dropped_alert const *libtorrent_alert_cast_to_alerts_dropped_alert(libtorrent::alert const *a){ return libtorrent::alert_cast(a); } +SWIGINTERN int64_t libtorrent_alert_get_timestamp(libtorrent::alert *self){ + return libtorrent::total_milliseconds(self->timestamp().time_since_epoch()); + } +SWIGINTERN libtorrent::tcp::endpoint libtorrent_peer_alert_get_endpoint(libtorrent::peer_alert *self){ + return self->endpoint; + } +SWIGINTERN libtorrent::tcp::endpoint libtorrent_tracker_alert_get_local_endpoint(libtorrent::tracker_alert *self){ + return self->local_endpoint; + } +SWIGINTERN int64_t libtorrent_read_piece_alert_buffer_ptr(libtorrent::read_piece_alert *self){ + return reinterpret_cast(self->buffer.get()); + } +SWIGINTERN libtorrent::udp::endpoint libtorrent_udp_error_alert_get_endpoint(libtorrent::udp_error_alert *self){ + return self->endpoint; + } +SWIGINTERN libtorrent::address libtorrent_external_ip_alert_get_external_address(libtorrent::external_ip_alert *self){ + return self->external_address; + } +SWIGINTERN libtorrent::address libtorrent_listen_failed_alert_get_address(libtorrent::listen_failed_alert *self){ + return self->address; + } +SWIGINTERN libtorrent::address libtorrent_listen_succeeded_alert_get_address(libtorrent::listen_succeeded_alert *self){ + return self->address; + } +SWIGINTERN libtorrent::address libtorrent_dht_announce_alert_get_ip(libtorrent::dht_announce_alert *self){ + return self->ip; + } +SWIGINTERN int libtorrent_stats_alert_get_transferred(libtorrent::stats_alert *self,int index){ + return self->transferred[index]; + } +SWIGINTERN libtorrent::tcp::endpoint libtorrent_incoming_connection_alert_get_endpoint(libtorrent::incoming_connection_alert *self){ + return self->endpoint; + } +SWIGINTERN long long libtorrent_session_stats_alert_get_value(libtorrent::session_stats_alert *self,int index){ + return self->counters()[index]; + } +SWIGINTERN std::vector< int8_t > libtorrent_dht_mutable_item_alert_get_key(libtorrent::dht_mutable_item_alert *self){ + std::array arr = self->key; + return std::vector(arr.begin(), arr.end()); + } +SWIGINTERN std::vector< int8_t > libtorrent_dht_mutable_item_alert_get_signature(libtorrent::dht_mutable_item_alert *self){ + std::array arr = self->signature; + return std::vector(arr.begin(), arr.end()); + } +SWIGINTERN int64_t libtorrent_dht_mutable_item_alert_get_seq(libtorrent::dht_mutable_item_alert *self){ + return int64_t(self->seq); + } +SWIGINTERN std::vector< int8_t > libtorrent_dht_mutable_item_alert_get_salt(libtorrent::dht_mutable_item_alert *self){ + std::string s = self->salt; + return std::vector(s.begin(), s.end()); + } +SWIGINTERN std::vector< int8_t > libtorrent_dht_put_alert_get_public_key(libtorrent::dht_put_alert *self){ + std::array arr = self->public_key; + return std::vector(arr.begin(), arr.end()); + } +SWIGINTERN std::vector< int8_t > libtorrent_dht_put_alert_get_signature(libtorrent::dht_put_alert *self){ + std::array arr = self->signature; + return std::vector(arr.begin(), arr.end()); + } +SWIGINTERN std::vector< int8_t > libtorrent_dht_put_alert_get_salt(libtorrent::dht_put_alert *self){ + std::string s = self->salt; + return std::vector(s.begin(), s.end()); + } +SWIGINTERN int64_t libtorrent_dht_put_alert_get_seq(libtorrent::dht_put_alert *self){ + return int64_t(self->seq); + } +SWIGINTERN libtorrent::udp::endpoint libtorrent_dht_outgoing_get_peers_alert_get_endpoint(libtorrent::dht_outgoing_get_peers_alert *self){ + return self->endpoint; + } +SWIGINTERN std::string libtorrent_peer_log_alert_get_event_type(libtorrent::peer_log_alert *self){ + return std::string(self->event_type); + } +SWIGINTERN std::string libtorrent_dht_lookup_get_type(libtorrent::dht_lookup *self){ + return std::string(self->type); + } +SWIGINTERN libtorrent::udp::endpoint libtorrent_dht_pkt_alert_get_node(libtorrent::dht_pkt_alert *self){ + return self->node; + } +SWIGINTERN int64_t libtorrent_dht_direct_response_alert_get_userdata(libtorrent::dht_direct_response_alert *self){ + return (int64_t)self->userdata; + } +SWIGINTERN libtorrent::udp::endpoint libtorrent_dht_direct_response_alert_get_endpoint(libtorrent::dht_direct_response_alert *self){ + return self->endpoint; + } +SWIGINTERN libtorrent::udp::endpoint libtorrent_dht_sample_infohashes_alert_get_endpoint(libtorrent::dht_sample_infohashes_alert *self){ + return self->endpoint; + } +SWIGINTERN std::int64_t libtorrent_dht_sample_infohashes_alert_get_interval(libtorrent::dht_sample_infohashes_alert *self){ + return libtorrent::total_milliseconds(self->interval); + } +SWIGINTERN void libtorrent_session_handle_dht_get_item__SWIG_1(libtorrent::session_handle *self,std::vector< int8_t > &key,std::vector< int8_t > &salt){ + if (key.size() != 32) { + throw std::invalid_argument("Public key must be of size 32"); + } + std::array pk; + std::copy_n(key.begin(), 32, pk.begin()); + + self->dht_get_item(pk, std::string(salt.begin(), salt.end())); + } +SWIGINTERN void libtorrent_session_handle_dht_put_item__SWIG_1(libtorrent::session_handle *self,std::vector< int8_t > &key,std::vector< int8_t > &sk,libtorrent::entry &data,std::vector< int8_t > &salt){ + if (key.size() != 32) { + throw std::invalid_argument("Public key must be of size 32"); + } + if (sk.size() != 64) { + throw std::invalid_argument("Private key must be of size 64"); + } + std::array pk; + std::copy_n(key.begin(), 32, pk.begin()); + + using namespace std::placeholders; + using namespace libtorrent::dht; + + self->dht_put_item(pk, std::bind(&dht_put_item_cb, _1, _2, _3, _4, + public_key((char*)key.data()), secret_key((char*)sk.data()), data), + std::string(salt.begin(), salt.end())); + } +SWIGINTERN void libtorrent_session_handle_dht_direct_request__SWIG_1(libtorrent::session_handle *self,libtorrent::udp::endpoint const &ep,libtorrent::entry const &e,int64_t userdata){ + self->dht_direct_request(ep, e, (void*)userdata); + } +SWIGINTERN libtorrent::alert *libtorrent_session_handle_wait_for_alert_ms(libtorrent::session_handle *self,int64_t max_wait){ + return self->wait_for_alert(libtorrent::milliseconds(max_wait)); + } +SWIGINTERN void libtorrent_session_handle_set_alert_notify_callback(libtorrent::session_handle *self,alert_notify_callback *cb){ + self->set_alert_notify(std::bind(&alert_notify_callback::on_alert, cb)); + } +SWIGINTERN void libtorrent_session_handle_add_extension(libtorrent::session_handle *self,swig_plugin *ext){ + self->add_extension(std::shared_ptr(ext)); + } +SWIGINTERN int64_t libtorrent_peer_connection_handle_get_time_of_last_unchoke(libtorrent::peer_connection_handle *self){ + return libtorrent::total_milliseconds(self->time_of_last_unchoke() - libtorrent::clock_type::now()); + } +SWIGINTERN void libtorrent_create_torrent_add_url_seed(libtorrent::create_torrent *self,std::string const &url){ + self->add_url_seed(url); + } +SWIGINTERN void libtorrent_create_torrent_add_http_seed(libtorrent::create_torrent *self,std::string const &url){ + self->add_http_seed(url); + } +SWIGINTERN void libtorrent_create_torrent_add_tracker(libtorrent::create_torrent *self,std::string const &url,int tier){ + self->add_tracker(url, tier); + } +SWIGINTERN void libtorrent_create_torrent_add_collection(libtorrent::create_torrent *self,std::string const &c){ + self->add_collection(c); + } +SWIGINTERN void libtorrent_create_torrent_set_root_cert2(libtorrent::create_torrent *self,std::vector< int8_t > const &pem){ + std::string s{pem.begin(), pem.end()}; + self->set_root_cert(s); + } + + +/* --------------------------------------------------- + * C++ director class methods + * --------------------------------------------------- */ + +#include "libtorrent_jni.h" + +SwigDirector_alert_notify_callback::SwigDirector_alert_notify_callback(JNIEnv *jenv) : alert_notify_callback(), Swig::Director(jenv) { +} + +SwigDirector_alert_notify_callback::~SwigDirector_alert_notify_callback() { + swig_disconnect_director_self("swigDirectorDisconnect"); +} + + +void SwigDirector_alert_notify_callback::on_alert() { + JNIEnvWrapper swigjnienv(this) ; + JNIEnv * jenv = swigjnienv.getJNIEnv() ; + jobject swigjobj = (jobject) NULL ; + + if (!swig_override[0]) { + alert_notify_callback::on_alert(); + return; + } + swigjobj = swig_get_self(jenv); + if (swigjobj && jenv->IsSameObject(swigjobj, NULL) == JNI_FALSE) { + jenv->CallStaticVoidMethod(Swig::jclass_libtorrent_jni, Swig::director_method_ids[0], swigjobj); + jthrowable swigerror = jenv->ExceptionOccurred(); + if (swigerror) { + Swig::DirectorException::raise(jenv, swigerror); + } + + } else { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null upcall object in alert_notify_callback::on_alert "); + } + if (swigjobj) jenv->DeleteLocalRef(swigjobj); +} + +void SwigDirector_alert_notify_callback::swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global) { + static struct { + const char *mname; + const char *mdesc; + jmethodID base_methid; + } methods[] = { + { + "on_alert", "()V", NULL + } + }; + + static jclass baseclass = 0 ; + + if (swig_set_self(jenv, jself, swig_mem_own, weak_global)) { + if (!baseclass) { + baseclass = jenv->FindClass("com/frostwire/jlibtorrent/swig/alert_notify_callback"); + if (!baseclass) return; + baseclass = (jclass) jenv->NewGlobalRef(baseclass); + } + bool derived = (jenv->IsSameObject(baseclass, jcls) ? false : true); + for (int i = 0; i < 1; ++i) { + if (!methods[i].base_methid) { + methods[i].base_methid = jenv->GetMethodID(baseclass, methods[i].mname, methods[i].mdesc); + if (!methods[i].base_methid) return; + } + swig_override[i] = false; + if (derived) { + jmethodID methid = jenv->GetMethodID(jcls, methods[i].mname, methods[i].mdesc); + swig_override[i] = (methid != methods[i].base_methid); + jenv->ExceptionClear(); + } + } + } +} + + +SwigDirector_add_files_listener::SwigDirector_add_files_listener(JNIEnv *jenv) : add_files_listener(), Swig::Director(jenv) { +} + +SwigDirector_add_files_listener::~SwigDirector_add_files_listener() { + swig_disconnect_director_self("swigDirectorDisconnect"); +} + + +bool SwigDirector_add_files_listener::pred(std::string const &p) { + bool c_result = SwigValueInit< bool >() ; + jboolean jresult = 0 ; + JNIEnvWrapper swigjnienv(this) ; + JNIEnv * jenv = swigjnienv.getJNIEnv() ; + jobject swigjobj = (jobject) NULL ; + jstring jp = 0 ; + + if (!swig_override[0]) { + return add_files_listener::pred(p); + } + swigjobj = swig_get_self(jenv); + if (swigjobj && jenv->IsSameObject(swigjobj, NULL) == JNI_FALSE) { + jp = jenv->NewStringUTF((&p)->c_str()); + Swig::LocalRefGuard p_refguard(jenv, jp); + jresult = (jboolean) jenv->CallStaticBooleanMethod(Swig::jclass_libtorrent_jni, Swig::director_method_ids[1], swigjobj, jp); + jthrowable swigerror = jenv->ExceptionOccurred(); + if (swigerror) { + Swig::DirectorException::raise(jenv, swigerror); + } + + c_result = jresult ? true : false; + } else { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null upcall object in add_files_listener::pred "); + } + if (swigjobj) jenv->DeleteLocalRef(swigjobj); + return c_result; +} + +void SwigDirector_add_files_listener::swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global) { + static struct { + const char *mname; + const char *mdesc; + jmethodID base_methid; + } methods[] = { + { + "pred", "(Ljava/lang/String;)Z", NULL + } + }; + + static jclass baseclass = 0 ; + + if (swig_set_self(jenv, jself, swig_mem_own, weak_global)) { + if (!baseclass) { + baseclass = jenv->FindClass("com/frostwire/jlibtorrent/swig/add_files_listener"); + if (!baseclass) return; + baseclass = (jclass) jenv->NewGlobalRef(baseclass); + } + bool derived = (jenv->IsSameObject(baseclass, jcls) ? false : true); + for (int i = 0; i < 1; ++i) { + if (!methods[i].base_methid) { + methods[i].base_methid = jenv->GetMethodID(baseclass, methods[i].mname, methods[i].mdesc); + if (!methods[i].base_methid) return; + } + swig_override[i] = false; + if (derived) { + jmethodID methid = jenv->GetMethodID(jcls, methods[i].mname, methods[i].mdesc); + swig_override[i] = (methid != methods[i].base_methid); + jenv->ExceptionClear(); + } + } + } +} + + +SwigDirector_set_piece_hashes_listener::SwigDirector_set_piece_hashes_listener(JNIEnv *jenv) : set_piece_hashes_listener(), Swig::Director(jenv) { +} + +SwigDirector_set_piece_hashes_listener::~SwigDirector_set_piece_hashes_listener() { + swig_disconnect_director_self("swigDirectorDisconnect"); +} + + +void SwigDirector_set_piece_hashes_listener::progress(int i) { + JNIEnvWrapper swigjnienv(this) ; + JNIEnv * jenv = swigjnienv.getJNIEnv() ; + jobject swigjobj = (jobject) NULL ; + jint ji ; + + if (!swig_override[0]) { + set_piece_hashes_listener::progress(i); + return; + } + swigjobj = swig_get_self(jenv); + if (swigjobj && jenv->IsSameObject(swigjobj, NULL) == JNI_FALSE) { + ji = (jint) i; + jenv->CallStaticVoidMethod(Swig::jclass_libtorrent_jni, Swig::director_method_ids[2], swigjobj, ji); + jthrowable swigerror = jenv->ExceptionOccurred(); + if (swigerror) { + Swig::DirectorException::raise(jenv, swigerror); + } + + } else { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null upcall object in set_piece_hashes_listener::progress "); + } + if (swigjobj) jenv->DeleteLocalRef(swigjobj); +} + +void SwigDirector_set_piece_hashes_listener::swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global) { + static struct { + const char *mname; + const char *mdesc; + jmethodID base_methid; + } methods[] = { + { + "progress", "(I)V", NULL + } + }; + + static jclass baseclass = 0 ; + + if (swig_set_self(jenv, jself, swig_mem_own, weak_global)) { + if (!baseclass) { + baseclass = jenv->FindClass("com/frostwire/jlibtorrent/swig/set_piece_hashes_listener"); + if (!baseclass) return; + baseclass = (jclass) jenv->NewGlobalRef(baseclass); + } + bool derived = (jenv->IsSameObject(baseclass, jcls) ? false : true); + for (int i = 0; i < 1; ++i) { + if (!methods[i].base_methid) { + methods[i].base_methid = jenv->GetMethodID(baseclass, methods[i].mname, methods[i].mdesc); + if (!methods[i].base_methid) return; + } + swig_override[i] = false; + if (derived) { + jmethodID methid = jenv->GetMethodID(jcls, methods[i].mname, methods[i].mdesc); + swig_override[i] = (methid != methods[i].base_methid); + jenv->ExceptionClear(); + } + } + } +} + + +SwigDirector_swig_plugin::SwigDirector_swig_plugin(JNIEnv *jenv) : swig_plugin(), Swig::Director(jenv) { +} + +SwigDirector_swig_plugin::~SwigDirector_swig_plugin() { + swig_disconnect_director_self("swigDirectorDisconnect"); +} + + +bool SwigDirector_swig_plugin::on_dht_request(libtorrent::string_view query, libtorrent::udp::endpoint const &source, libtorrent::bdecode_node const &message, libtorrent::entry &response) { + bool c_result = SwigValueInit< bool >() ; + jboolean jresult = 0 ; + JNIEnvWrapper swigjnienv(this) ; + JNIEnv * jenv = swigjnienv.getJNIEnv() ; + jobject swigjobj = (jobject) NULL ; + jlong jquery ; + jlong jsource = 0 ; + jlong jmessage = 0 ; + jlong jresponse = 0 ; + + if (!swig_override[0]) { + return swig_plugin::on_dht_request(query,source,message,response); + } + swigjobj = swig_get_self(jenv); + if (swigjobj && jenv->IsSameObject(swigjobj, NULL) == JNI_FALSE) { + jquery = 0; + *((libtorrent::string_view **)&jquery) = new libtorrent::string_view((const libtorrent::string_view &)query); + *(libtorrent::udp::endpoint **)&jsource = (libtorrent::udp::endpoint *) &source; + *(libtorrent::bdecode_node **)&jmessage = (libtorrent::bdecode_node *) &message; + *(libtorrent::entry **)&jresponse = (libtorrent::entry *) &response; + jresult = (jboolean) jenv->CallStaticBooleanMethod(Swig::jclass_libtorrent_jni, Swig::director_method_ids[3], swigjobj, jquery, jsource, jmessage, jresponse); + jthrowable swigerror = jenv->ExceptionOccurred(); + if (swigerror) { + Swig::DirectorException::raise(jenv, swigerror); + } + + c_result = jresult ? true : false; + } else { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null upcall object in swig_plugin::on_dht_request "); + } + if (swigjobj) jenv->DeleteLocalRef(swigjobj); + return c_result; +} + +void SwigDirector_swig_plugin::swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global) { + static struct { + const char *mname; + const char *mdesc; + jmethodID base_methid; + } methods[] = { + { + "on_dht_request", "(Lcom/frostwire/jlibtorrent/swig/string_view;Lcom/frostwire/jlibtorrent/swig/udp_endpoint;Lcom/frostwire/jlibtorrent/swig/bdecode_node;Lcom/frostwire/jlibtorrent/swig/entry;)Z", NULL + } + }; + + static jclass baseclass = 0 ; + + if (swig_set_self(jenv, jself, swig_mem_own, weak_global)) { + if (!baseclass) { + baseclass = jenv->FindClass("com/frostwire/jlibtorrent/swig/swig_plugin"); + if (!baseclass) return; + baseclass = (jclass) jenv->NewGlobalRef(baseclass); + } + bool derived = (jenv->IsSameObject(baseclass, jcls) ? false : true); + for (int i = 0; i < 1; ++i) { + if (!methods[i].base_methid) { + methods[i].base_methid = jenv->GetMethodID(baseclass, methods[i].mname, methods[i].mdesc); + if (!methods[i].base_methid) return; + } + swig_override[i] = false; + if (derived) { + jmethodID methid = jenv->GetMethodID(jcls, methods[i].mname, methods[i].mdesc); + swig_override[i] = (methid != methods[i].base_methid); + jenv->ExceptionClear(); + } + } + } +} + + +SwigDirector_posix_wrapper::SwigDirector_posix_wrapper(JNIEnv *jenv) : posix_wrapper(), Swig::Director(jenv) { +} + +SwigDirector_posix_wrapper::~SwigDirector_posix_wrapper() { + swig_disconnect_director_self("swigDirectorDisconnect"); +} + + +int SwigDirector_posix_wrapper::open(char const *path, int flags, int mode) { + int c_result = SwigValueInit< int >() ; + jint jresult = 0 ; + JNIEnvWrapper swigjnienv(this) ; + JNIEnv * jenv = swigjnienv.getJNIEnv() ; + jobject swigjobj = (jobject) NULL ; + jstring jpath = 0 ; + jint jflags ; + jint jmode ; + + if (!swig_override[0]) { + return posix_wrapper::open(path,flags,mode); + } + swigjobj = swig_get_self(jenv); + if (swigjobj && jenv->IsSameObject(swigjobj, NULL) == JNI_FALSE) { + jpath = 0; + if (path) { + jpath = jenv->NewStringUTF((const char *)path); + if (!jpath) return c_result; + } + Swig::LocalRefGuard path_refguard(jenv, jpath); + jflags = (jint) flags; + jmode = (jint) mode; + jresult = (jint) jenv->CallStaticIntMethod(Swig::jclass_libtorrent_jni, Swig::director_method_ids[4], swigjobj, jpath, jflags, jmode); + jthrowable swigerror = jenv->ExceptionOccurred(); + if (swigerror) { + Swig::DirectorException::raise(jenv, swigerror); + } + + c_result = (int)jresult; + } else { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null upcall object in posix_wrapper::open "); + } + if (swigjobj) jenv->DeleteLocalRef(swigjobj); + return c_result; +} + +int SwigDirector_posix_wrapper::stat(char const *path, posix_stat_t *buf) { + int c_result = SwigValueInit< int >() ; + jint jresult = 0 ; + JNIEnvWrapper swigjnienv(this) ; + JNIEnv * jenv = swigjnienv.getJNIEnv() ; + jobject swigjobj = (jobject) NULL ; + jstring jpath = 0 ; + jlong jbuf = 0 ; + + if (!swig_override[1]) { + return posix_wrapper::stat(path,buf); + } + swigjobj = swig_get_self(jenv); + if (swigjobj && jenv->IsSameObject(swigjobj, NULL) == JNI_FALSE) { + jpath = 0; + if (path) { + jpath = jenv->NewStringUTF((const char *)path); + if (!jpath) return c_result; + } + Swig::LocalRefGuard path_refguard(jenv, jpath); + *((posix_stat_t **)&jbuf) = (posix_stat_t *) buf; + jresult = (jint) jenv->CallStaticIntMethod(Swig::jclass_libtorrent_jni, Swig::director_method_ids[5], swigjobj, jpath, jbuf); + jthrowable swigerror = jenv->ExceptionOccurred(); + if (swigerror) { + Swig::DirectorException::raise(jenv, swigerror); + } + + c_result = (int)jresult; + } else { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null upcall object in posix_wrapper::stat "); + } + if (swigjobj) jenv->DeleteLocalRef(swigjobj); + return c_result; +} + +int SwigDirector_posix_wrapper::mkdir(char const *path, int mode) { + int c_result = SwigValueInit< int >() ; + jint jresult = 0 ; + JNIEnvWrapper swigjnienv(this) ; + JNIEnv * jenv = swigjnienv.getJNIEnv() ; + jobject swigjobj = (jobject) NULL ; + jstring jpath = 0 ; + jint jmode ; + + if (!swig_override[2]) { + return posix_wrapper::mkdir(path,mode); + } + swigjobj = swig_get_self(jenv); + if (swigjobj && jenv->IsSameObject(swigjobj, NULL) == JNI_FALSE) { + jpath = 0; + if (path) { + jpath = jenv->NewStringUTF((const char *)path); + if (!jpath) return c_result; + } + Swig::LocalRefGuard path_refguard(jenv, jpath); + jmode = (jint) mode; + jresult = (jint) jenv->CallStaticIntMethod(Swig::jclass_libtorrent_jni, Swig::director_method_ids[6], swigjobj, jpath, jmode); + jthrowable swigerror = jenv->ExceptionOccurred(); + if (swigerror) { + Swig::DirectorException::raise(jenv, swigerror); + } + + c_result = (int)jresult; + } else { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null upcall object in posix_wrapper::mkdir "); + } + if (swigjobj) jenv->DeleteLocalRef(swigjobj); + return c_result; +} + +int SwigDirector_posix_wrapper::rename(char const *oldpath, char const *newpath) { + int c_result = SwigValueInit< int >() ; + jint jresult = 0 ; + JNIEnvWrapper swigjnienv(this) ; + JNIEnv * jenv = swigjnienv.getJNIEnv() ; + jobject swigjobj = (jobject) NULL ; + jstring joldpath = 0 ; + jstring jnewpath = 0 ; + + if (!swig_override[3]) { + return posix_wrapper::rename(oldpath,newpath); + } + swigjobj = swig_get_self(jenv); + if (swigjobj && jenv->IsSameObject(swigjobj, NULL) == JNI_FALSE) { + joldpath = 0; + if (oldpath) { + joldpath = jenv->NewStringUTF((const char *)oldpath); + if (!joldpath) return c_result; + } + Swig::LocalRefGuard oldpath_refguard(jenv, joldpath); + jnewpath = 0; + if (newpath) { + jnewpath = jenv->NewStringUTF((const char *)newpath); + if (!jnewpath) return c_result; + } + Swig::LocalRefGuard newpath_refguard(jenv, jnewpath); + jresult = (jint) jenv->CallStaticIntMethod(Swig::jclass_libtorrent_jni, Swig::director_method_ids[7], swigjobj, joldpath, jnewpath); + jthrowable swigerror = jenv->ExceptionOccurred(); + if (swigerror) { + Swig::DirectorException::raise(jenv, swigerror); + } + + c_result = (int)jresult; + } else { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null upcall object in posix_wrapper::rename "); + } + if (swigjobj) jenv->DeleteLocalRef(swigjobj); + return c_result; +} + +int SwigDirector_posix_wrapper::remove(char const *path) { + int c_result = SwigValueInit< int >() ; + jint jresult = 0 ; + JNIEnvWrapper swigjnienv(this) ; + JNIEnv * jenv = swigjnienv.getJNIEnv() ; + jobject swigjobj = (jobject) NULL ; + jstring jpath = 0 ; + + if (!swig_override[4]) { + return posix_wrapper::remove(path); + } + swigjobj = swig_get_self(jenv); + if (swigjobj && jenv->IsSameObject(swigjobj, NULL) == JNI_FALSE) { + jpath = 0; + if (path) { + jpath = jenv->NewStringUTF((const char *)path); + if (!jpath) return c_result; + } + Swig::LocalRefGuard path_refguard(jenv, jpath); + jresult = (jint) jenv->CallStaticIntMethod(Swig::jclass_libtorrent_jni, Swig::director_method_ids[8], swigjobj, jpath); + jthrowable swigerror = jenv->ExceptionOccurred(); + if (swigerror) { + Swig::DirectorException::raise(jenv, swigerror); + } + + c_result = (int)jresult; + } else { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null upcall object in posix_wrapper::remove "); + } + if (swigjobj) jenv->DeleteLocalRef(swigjobj); + return c_result; +} + +void SwigDirector_posix_wrapper::swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global) { + static struct { + const char *mname; + const char *mdesc; + jmethodID base_methid; + } methods[] = { + { + "open", "(Ljava/lang/String;II)I", NULL + }, + { + "stat", "(Ljava/lang/String;Lcom/frostwire/jlibtorrent/swig/posix_stat_t;)I", NULL + }, + { + "mkdir", "(Ljava/lang/String;I)I", NULL + }, + { + "rename", "(Ljava/lang/String;Ljava/lang/String;)I", NULL + }, + { + "remove", "(Ljava/lang/String;)I", NULL + } + }; + + static jclass baseclass = 0 ; + + if (swig_set_self(jenv, jself, swig_mem_own, weak_global)) { + if (!baseclass) { + baseclass = jenv->FindClass("com/frostwire/jlibtorrent/swig/posix_wrapper"); + if (!baseclass) return; + baseclass = (jclass) jenv->NewGlobalRef(baseclass); + } + bool derived = (jenv->IsSameObject(baseclass, jcls) ? false : true); + for (int i = 0; i < 5; ++i) { + if (!methods[i].base_methid) { + methods[i].base_methid = jenv->GetMethodID(baseclass, methods[i].mname, methods[i].mdesc); + if (!methods[i].base_methid) return; + } + swig_override[i] = false; + if (derived) { + jmethodID methid = jenv->GetMethodID(jcls, methods[i].mname, methods[i].mdesc); + swig_override[i] = (methid != methods[i].base_methid); + jenv->ExceptionClear(); + } + } + } +} + + + +#ifdef __cplusplus +extern "C" { +#endif + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1piece_1index_1int_1pair_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::pair< piece_index_t,int > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::pair< piece_index_t,int > *)new std::pair< piece_index_t,int >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< piece_index_t,int > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1piece_1index_1int_1pair_1_1SWIG_11(JNIEnv *jenv, jclass jcls, int jarg1, jint jarg2) { + jlong jresult = 0 ; + piece_index_t arg1 ; + int arg2 ; + std::pair< piece_index_t,int > *result = 0 ; + + (void)jenv; + (void)jcls; + { + arg1 = piece_index_t(static_cast(jarg1)); + } + arg2 = (int)jarg2; + { + try { + result = (std::pair< piece_index_t,int > *)new std::pair< piece_index_t,int >(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< piece_index_t,int > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1piece_1index_1int_1pair_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::pair< piece_index_t,int > *arg1 = 0 ; + std::pair< piece_index_t,int > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< piece_index_t,int > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::pair< piece_index_t,int > const & reference is null"); + return 0; + } + { + try { + result = (std::pair< piece_index_t,int > *)new std::pair< piece_index_t,int >((std::pair< piece_index_t,int > const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< piece_index_t,int > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1int_1pair_1first_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + std::pair< piece_index_t,int > *arg1 = (std::pair< piece_index_t,int > *) 0 ; + piece_index_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< piece_index_t,int > **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + if (arg1) (arg1)->first = arg2; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1int_1pair_1first_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + std::pair< piece_index_t,int > *arg1 = (std::pair< piece_index_t,int > *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< piece_index_t,int > **)&jarg1; + result = ((arg1)->first); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1int_1pair_1second_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + std::pair< piece_index_t,int > *arg1 = (std::pair< piece_index_t,int > *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< piece_index_t,int > **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->second = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1int_1pair_1second_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + std::pair< piece_index_t,int > *arg1 = (std::pair< piece_index_t,int > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< piece_index_t,int > **)&jarg1; + result = (int) ((arg1)->second); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1piece_1index_1int_1pair(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::pair< piece_index_t,int > *arg1 = (std::pair< piece_index_t,int > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::pair< piece_index_t,int > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1int_1pair_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::pair< std::string,int > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::pair< std::string,int > *)new std::pair< std::string,int >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< std::string,int > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1int_1pair_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jstring jarg1, jint jarg2) { + jlong jresult = 0 ; + std::string arg1 ; + int arg2 ; + std::pair< std::string,int > *result = 0 ; + + (void)jenv; + (void)jcls; + if(!jarg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(jarg1, 0); + if (!arg1_pstr) return 0; + (&arg1)->assign(arg1_pstr); + jenv->ReleaseStringUTFChars(jarg1, arg1_pstr); + arg2 = (int)jarg2; + { + try { + result = (std::pair< std::string,int > *)new std::pair< std::string,int >(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< std::string,int > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1int_1pair_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::pair< std::string,int > *arg1 = 0 ; + std::pair< std::string,int > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< std::string,int > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::pair< std::string,int > const & reference is null"); + return 0; + } + { + try { + result = (std::pair< std::string,int > *)new std::pair< std::string,int >((std::pair< std::string,int > const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< std::string,int > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1int_1pair_1first_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + std::pair< std::string,int > *arg1 = (std::pair< std::string,int > *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< std::string,int > **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if (arg1) (arg1)->first = *arg2; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1int_1pair_1first_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + std::pair< std::string,int > *arg1 = (std::pair< std::string,int > *) 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< std::string,int > **)&jarg1; + result = (std::string *) & ((arg1)->first); + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1int_1pair_1second_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + std::pair< std::string,int > *arg1 = (std::pair< std::string,int > *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< std::string,int > **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->second = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1int_1pair_1second_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + std::pair< std::string,int > *arg1 = (std::pair< std::string,int > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< std::string,int > **)&jarg1; + result = (int) ((arg1)->second); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1string_1int_1pair(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::pair< std::string,int > *arg1 = (std::pair< std::string,int > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::pair< std::string,int > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1string_1pair_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::pair< std::string,std::string > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::pair< std::string,std::string > *)new std::pair< std::string,std::string >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< std::string,std::string > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1string_1pair_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jstring jarg1, jstring jarg2) { + jlong jresult = 0 ; + std::string arg1 ; + std::string arg2 ; + std::pair< std::string,std::string > *result = 0 ; + + (void)jenv; + (void)jcls; + if(!jarg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(jarg1, 0); + if (!arg1_pstr) return 0; + (&arg1)->assign(arg1_pstr); + jenv->ReleaseStringUTFChars(jarg1, arg1_pstr); + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + (&arg2)->assign(arg2_pstr); + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + result = (std::pair< std::string,std::string > *)new std::pair< std::string,std::string >(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< std::string,std::string > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1string_1pair_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::pair< std::string,std::string > *arg1 = 0 ; + std::pair< std::string,std::string > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< std::string,std::string > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::pair< std::string,std::string > const & reference is null"); + return 0; + } + { + try { + result = (std::pair< std::string,std::string > *)new std::pair< std::string,std::string >((std::pair< std::string,std::string > const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< std::string,std::string > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1string_1pair_1first_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + std::pair< std::string,std::string > *arg1 = (std::pair< std::string,std::string > *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< std::string,std::string > **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if (arg1) (arg1)->first = *arg2; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1string_1pair_1first_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + std::pair< std::string,std::string > *arg1 = (std::pair< std::string,std::string > *) 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< std::string,std::string > **)&jarg1; + result = (std::string *) & ((arg1)->first); + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1string_1pair_1second_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + std::pair< std::string,std::string > *arg1 = (std::pair< std::string,std::string > *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< std::string,std::string > **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if (arg1) (arg1)->second = *arg2; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1string_1pair_1second_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + std::pair< std::string,std::string > *arg1 = (std::pair< std::string,std::string > *) 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< std::string,std::string > **)&jarg1; + result = (std::string *) & ((arg1)->second); + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1string_1string_1pair(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::pair< std::string,std::string > *arg1 = (std::pair< std::string,std::string > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::pair< std::string,std::string > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1view_1bdecode_1node_1pair_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::pair< libtorrent::string_view,libtorrent::bdecode_node > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::pair< libtorrent::string_view,libtorrent::bdecode_node > *)new std::pair< libtorrent::string_view,libtorrent::bdecode_node >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< libtorrent::string_view,libtorrent::bdecode_node > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1view_1bdecode_1node_1pair_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::string_view arg1 ; + libtorrent::bdecode_node arg2 ; + libtorrent::string_view *argp1 ; + libtorrent::bdecode_node *argp2 ; + std::pair< libtorrent::string_view,libtorrent::bdecode_node > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + argp1 = *(libtorrent::string_view **)&jarg1; + if (!argp1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::string_view"); + return 0; + } + arg1 = *argp1; + argp2 = *(libtorrent::bdecode_node **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::bdecode_node"); + return 0; + } + arg2 = *argp2; + { + try { + result = (std::pair< libtorrent::string_view,libtorrent::bdecode_node > *)new std::pair< libtorrent::string_view,libtorrent::bdecode_node >(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< libtorrent::string_view,libtorrent::bdecode_node > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1view_1bdecode_1node_1pair_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::pair< libtorrent::string_view,libtorrent::bdecode_node > *arg1 = 0 ; + std::pair< libtorrent::string_view,libtorrent::bdecode_node > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< libtorrent::string_view,libtorrent::bdecode_node > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::pair< libtorrent::string_view,libtorrent::bdecode_node > const & reference is null"); + return 0; + } + { + try { + result = (std::pair< libtorrent::string_view,libtorrent::bdecode_node > *)new std::pair< libtorrent::string_view,libtorrent::bdecode_node >((std::pair< libtorrent::string_view,libtorrent::bdecode_node > const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< libtorrent::string_view,libtorrent::bdecode_node > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1view_1bdecode_1node_1pair_1first_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::pair< libtorrent::string_view,libtorrent::bdecode_node > *arg1 = (std::pair< libtorrent::string_view,libtorrent::bdecode_node > *) 0 ; + libtorrent::string_view *arg2 = (libtorrent::string_view *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::pair< libtorrent::string_view,libtorrent::bdecode_node > **)&jarg1; + arg2 = *(libtorrent::string_view **)&jarg2; + if (arg1) (arg1)->first = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1view_1bdecode_1node_1pair_1first_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::pair< libtorrent::string_view,libtorrent::bdecode_node > *arg1 = (std::pair< libtorrent::string_view,libtorrent::bdecode_node > *) 0 ; + libtorrent::string_view *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< libtorrent::string_view,libtorrent::bdecode_node > **)&jarg1; + result = (libtorrent::string_view *)& ((arg1)->first); + *(libtorrent::string_view **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1view_1bdecode_1node_1pair_1second_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::pair< libtorrent::string_view,libtorrent::bdecode_node > *arg1 = (std::pair< libtorrent::string_view,libtorrent::bdecode_node > *) 0 ; + libtorrent::bdecode_node *arg2 = (libtorrent::bdecode_node *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::pair< libtorrent::string_view,libtorrent::bdecode_node > **)&jarg1; + arg2 = *(libtorrent::bdecode_node **)&jarg2; + if (arg1) (arg1)->second = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1view_1bdecode_1node_1pair_1second_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::pair< libtorrent::string_view,libtorrent::bdecode_node > *arg1 = (std::pair< libtorrent::string_view,libtorrent::bdecode_node > *) 0 ; + libtorrent::bdecode_node *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< libtorrent::string_view,libtorrent::bdecode_node > **)&jarg1; + result = (libtorrent::bdecode_node *)& ((arg1)->second); + *(libtorrent::bdecode_node **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1string_1view_1bdecode_1node_1pair(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::pair< libtorrent::string_view,libtorrent::bdecode_node > *arg1 = (std::pair< libtorrent::string_view,libtorrent::bdecode_node > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::pair< libtorrent::string_view,libtorrent::bdecode_node > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1byte_1vectors_1pair_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::pair< std::vector< int8_t >,std::vector< int8_t > > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::pair< std::vector< int8_t >,std::vector< int8_t > > *)new std::pair< std::vector< int8_t >,std::vector< int8_t > >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< std::vector< int8_t >,std::vector< int8_t > > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1byte_1vectors_1pair_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + std::vector< int8_t > arg1 ; + std::vector< int8_t > arg2 ; + std::vector< int8_t > *argp1 ; + std::vector< int8_t > *argp2 ; + std::pair< std::vector< int8_t >,std::vector< int8_t > > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + argp1 = *(std::vector< int8_t > **)&jarg1; + if (!argp1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null std::vector< int8_t >"); + return 0; + } + arg1 = *argp1; + argp2 = *(std::vector< int8_t > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null std::vector< int8_t >"); + return 0; + } + arg2 = *argp2; + { + try { + result = (std::pair< std::vector< int8_t >,std::vector< int8_t > > *)new std::pair< std::vector< int8_t >,std::vector< int8_t > >(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< std::vector< int8_t >,std::vector< int8_t > > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1byte_1vectors_1pair_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::pair< std::vector< int8_t >,std::vector< int8_t > > *arg1 = 0 ; + std::pair< std::vector< int8_t >,std::vector< int8_t > > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< std::vector< int8_t >,std::vector< int8_t > > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::pair< std::vector< int8_t >,std::vector< int8_t > > const & reference is null"); + return 0; + } + { + try { + result = (std::pair< std::vector< int8_t >,std::vector< int8_t > > *)new std::pair< std::vector< int8_t >,std::vector< int8_t > >((std::pair< std::vector< int8_t >,std::vector< int8_t > > const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< std::vector< int8_t >,std::vector< int8_t > > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1vectors_1pair_1first_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::pair< std::vector< int8_t >,std::vector< int8_t > > *arg1 = (std::pair< std::vector< int8_t >,std::vector< int8_t > > *) 0 ; + std::vector< int8_t > *arg2 = (std::vector< int8_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::pair< std::vector< int8_t >,std::vector< int8_t > > **)&jarg1; + arg2 = *(std::vector< int8_t > **)&jarg2; + if (arg1) (arg1)->first = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1vectors_1pair_1first_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::pair< std::vector< int8_t >,std::vector< int8_t > > *arg1 = (std::pair< std::vector< int8_t >,std::vector< int8_t > > *) 0 ; + std::vector< int8_t > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< std::vector< int8_t >,std::vector< int8_t > > **)&jarg1; + result = (std::vector< int8_t > *)& ((arg1)->first); + *(std::vector< int8_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1vectors_1pair_1second_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::pair< std::vector< int8_t >,std::vector< int8_t > > *arg1 = (std::pair< std::vector< int8_t >,std::vector< int8_t > > *) 0 ; + std::vector< int8_t > *arg2 = (std::vector< int8_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::pair< std::vector< int8_t >,std::vector< int8_t > > **)&jarg1; + arg2 = *(std::vector< int8_t > **)&jarg2; + if (arg1) (arg1)->second = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1vectors_1pair_1second_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::pair< std::vector< int8_t >,std::vector< int8_t > > *arg1 = (std::pair< std::vector< int8_t >,std::vector< int8_t > > *) 0 ; + std::vector< int8_t > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< std::vector< int8_t >,std::vector< int8_t > > **)&jarg1; + result = (std::vector< int8_t > *)& ((arg1)->second); + *(std::vector< int8_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1byte_1vectors_1pair(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::pair< std::vector< int8_t >,std::vector< int8_t > > *arg1 = (std::pair< std::vector< int8_t >,std::vector< int8_t > > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::pair< std::vector< int8_t >,std::vector< int8_t > > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1sha1_1hash_1udp_1endpoint_1pair_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *)new std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1sha1_1hash_1udp_1endpoint_1pair_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::sha1_hash arg1 ; + libtorrent::udp::endpoint arg2 ; + libtorrent::sha1_hash *argp1 ; + libtorrent::udp::endpoint *argp2 ; + std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + argp1 = *(libtorrent::sha1_hash **)&jarg1; + if (!argp1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::sha1_hash"); + return 0; + } + arg1 = *argp1; + argp2 = *(libtorrent::udp::endpoint **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::udp::endpoint"); + return 0; + } + arg2 = *argp2; + { + try { + result = (std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *)new std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint >(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1sha1_1hash_1udp_1endpoint_1pair_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *arg1 = 0 ; + std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > const & reference is null"); + return 0; + } + { + try { + result = (std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *)new std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint >((std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1udp_1endpoint_1pair_1first_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *arg1 = (std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *) 0 ; + libtorrent::sha1_hash *arg2 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (arg1) (arg1)->first = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1udp_1endpoint_1pair_1first_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *arg1 = (std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > **)&jarg1; + result = (libtorrent::sha1_hash *)& ((arg1)->first); + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1udp_1endpoint_1pair_1second_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *arg1 = (std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *) 0 ; + libtorrent::udp::endpoint *arg2 = (libtorrent::udp::endpoint *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > **)&jarg1; + arg2 = *(libtorrent::udp::endpoint **)&jarg2; + if (arg1) (arg1)->second = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1udp_1endpoint_1pair_1second_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *arg1 = (std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *) 0 ; + libtorrent::udp::endpoint *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > **)&jarg1; + result = (libtorrent::udp::endpoint *)& ((arg1)->second); + *(libtorrent::udp::endpoint **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1sha1_1hash_1udp_1endpoint_1pair(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *arg1 = (std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1address_1sha1_1hash_1pair_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::pair< libtorrent::address,libtorrent::sha1_hash > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::pair< libtorrent::address,libtorrent::sha1_hash > *)new std::pair< libtorrent::address,libtorrent::sha1_hash >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< libtorrent::address,libtorrent::sha1_hash > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1address_1sha1_1hash_1pair_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::address arg1 ; + libtorrent::sha1_hash arg2 ; + libtorrent::address *argp1 ; + libtorrent::sha1_hash *argp2 ; + std::pair< libtorrent::address,libtorrent::sha1_hash > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + argp1 = *(libtorrent::address **)&jarg1; + if (!argp1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::address"); + return 0; + } + arg1 = *argp1; + argp2 = *(libtorrent::sha1_hash **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::sha1_hash"); + return 0; + } + arg2 = *argp2; + { + try { + result = (std::pair< libtorrent::address,libtorrent::sha1_hash > *)new std::pair< libtorrent::address,libtorrent::sha1_hash >(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< libtorrent::address,libtorrent::sha1_hash > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1address_1sha1_1hash_1pair_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::pair< libtorrent::address,libtorrent::sha1_hash > *arg1 = 0 ; + std::pair< libtorrent::address,libtorrent::sha1_hash > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< libtorrent::address,libtorrent::sha1_hash > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::pair< libtorrent::address,libtorrent::sha1_hash > const & reference is null"); + return 0; + } + { + try { + result = (std::pair< libtorrent::address,libtorrent::sha1_hash > *)new std::pair< libtorrent::address,libtorrent::sha1_hash >((std::pair< libtorrent::address,libtorrent::sha1_hash > const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< libtorrent::address,libtorrent::sha1_hash > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1sha1_1hash_1pair_1first_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::pair< libtorrent::address,libtorrent::sha1_hash > *arg1 = (std::pair< libtorrent::address,libtorrent::sha1_hash > *) 0 ; + libtorrent::address *arg2 = (libtorrent::address *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::pair< libtorrent::address,libtorrent::sha1_hash > **)&jarg1; + arg2 = *(libtorrent::address **)&jarg2; + if (arg1) (arg1)->first = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1sha1_1hash_1pair_1first_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::pair< libtorrent::address,libtorrent::sha1_hash > *arg1 = (std::pair< libtorrent::address,libtorrent::sha1_hash > *) 0 ; + libtorrent::address *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< libtorrent::address,libtorrent::sha1_hash > **)&jarg1; + result = (libtorrent::address *)& ((arg1)->first); + *(libtorrent::address **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1sha1_1hash_1pair_1second_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::pair< libtorrent::address,libtorrent::sha1_hash > *arg1 = (std::pair< libtorrent::address,libtorrent::sha1_hash > *) 0 ; + libtorrent::sha1_hash *arg2 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::pair< libtorrent::address,libtorrent::sha1_hash > **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (arg1) (arg1)->second = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1sha1_1hash_1pair_1second_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::pair< libtorrent::address,libtorrent::sha1_hash > *arg1 = (std::pair< libtorrent::address,libtorrent::sha1_hash > *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::pair< libtorrent::address,libtorrent::sha1_hash > **)&jarg1; + result = (libtorrent::sha1_hash *)& ((arg1)->second); + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1address_1sha1_1hash_1pair(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::pair< libtorrent::address,libtorrent::sha1_hash > *arg1 = (std::pair< libtorrent::address,libtorrent::sha1_hash > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::pair< libtorrent::address,libtorrent::sha1_hash > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1byte_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< int8_t > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< int8_t > *)new std::vector< int8_t >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< int8_t > *arg1 = (std::vector< int8_t > *) 0 ; + std::vector< signed char >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int8_t > **)&jarg1; + { + try { + result = ((std::vector< int8_t > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< int8_t > *arg1 = (std::vector< int8_t > *) 0 ; + std::vector< signed char >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int8_t > **)&jarg1; + { + try { + result = ((std::vector< int8_t > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< int8_t > *arg1 = (std::vector< int8_t > *) 0 ; + std::vector< signed char >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int8_t > **)&jarg1; + arg2 = (std::vector< signed char >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< int8_t > *arg1 = (std::vector< int8_t > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int8_t > **)&jarg1; + { + try { + result = (bool)((std::vector< int8_t > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< int8_t > *arg1 = (std::vector< int8_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int8_t > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jbyte jarg2) { + std::vector< int8_t > *arg1 = (std::vector< int8_t > *) 0 ; + std::vector< signed char >::value_type *arg2 = 0 ; + std::vector< signed char >::value_type temp2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int8_t > **)&jarg1; + temp2 = (std::vector< signed char >::value_type)jarg2; + arg2 = &temp2; + { + try { + (arg1)->push_back((std::vector< signed char >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1vector_1resize(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< int8_t > *arg1 = (std::vector< int8_t > *) 0 ; + std::vector< signed char >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int8_t > **)&jarg1; + arg2 = (std::vector< signed char >::size_type)jarg2; + { + try { + (arg1)->resize(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jbyte JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jbyte jresult = 0 ; + std::vector< int8_t > *arg1 = (std::vector< int8_t > *) 0 ; + int arg2 ; + int8_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int8_t > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (int8_t)std_vector_Sl_int8_t_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jbyte)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jbyte jarg3) { + std::vector< int8_t > *arg1 = (std::vector< int8_t > *) 0 ; + int arg2 ; + std::vector< signed char >::value_type *arg3 = 0 ; + std::vector< signed char >::value_type temp3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int8_t > **)&jarg1; + arg2 = (int)jarg2; + temp3 = (std::vector< signed char >::value_type)jarg3; + arg3 = &temp3; + { + try { + try { + std_vector_Sl_int8_t_Sg__set(arg1,arg2,(signed char const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1byte_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< int8_t > *arg1 = (std::vector< int8_t > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< int8_t > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< std::string > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< std::string > *)new std::vector< std::string >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::string > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ; + std::vector< std::string >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::string > **)&jarg1; + { + try { + result = ((std::vector< std::string > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ; + std::vector< std::string >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::string > **)&jarg1; + { + try { + result = ((std::vector< std::string > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ; + std::vector< std::string >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::string > **)&jarg1; + arg2 = (std::vector< std::string >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::string > **)&jarg1; + { + try { + result = (bool)((std::vector< std::string > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::string > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ; + std::vector< std::string >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::string > **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::vector< std::string >::value_type arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + (arg1)->push_back((std::vector< std::string >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jstring jresult = 0 ; + std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ; + int arg2 ; + std::vector< std::string >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::string > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< std::string >::value_type *) &std_vector_Sl_std_string_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jstring jarg3) { + std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ; + int arg2 ; + std::vector< std::string >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::string > **)&jarg1; + arg2 = (int)jarg2; + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::vector< std::string >::value_type arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + { + try { + try { + std_vector_Sl_std_string_Sg__set(arg1,arg2,(std::string const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1string_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< std::string > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1int_1pair_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< std::pair< std::string,int > > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< std::pair< std::string,int > > *)new std::vector< std::pair< std::string,int > >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::pair< std::string,int > > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1int_1pair_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< std::pair< std::string,int > > *arg1 = (std::vector< std::pair< std::string,int > > *) 0 ; + std::vector< std::pair< std::string,int > >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< std::string,int > > **)&jarg1; + { + try { + result = ((std::vector< std::pair< std::string,int > > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1int_1pair_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< std::pair< std::string,int > > *arg1 = (std::vector< std::pair< std::string,int > > *) 0 ; + std::vector< std::pair< std::string,int > >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< std::string,int > > **)&jarg1; + { + try { + result = ((std::vector< std::pair< std::string,int > > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1int_1pair_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< std::pair< std::string,int > > *arg1 = (std::vector< std::pair< std::string,int > > *) 0 ; + std::vector< std::pair< std::string,int > >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< std::string,int > > **)&jarg1; + arg2 = (std::vector< std::pair< std::string,int > >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1int_1pair_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< std::pair< std::string,int > > *arg1 = (std::vector< std::pair< std::string,int > > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< std::string,int > > **)&jarg1; + { + try { + result = (bool)((std::vector< std::pair< std::string,int > > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1int_1pair_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< std::pair< std::string,int > > *arg1 = (std::vector< std::pair< std::string,int > > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< std::string,int > > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1int_1pair_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< std::pair< std::string,int > > *arg1 = (std::vector< std::pair< std::string,int > > *) 0 ; + std::vector< std::pair< std::string,int > >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< std::pair< std::string,int > > **)&jarg1; + arg2 = *(std::vector< std::pair< std::string,int > >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::pair< std::string,int > >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< std::pair< std::string,int > >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1int_1pair_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< std::pair< std::string,int > > *arg1 = (std::vector< std::pair< std::string,int > > *) 0 ; + int arg2 ; + std::vector< std::pair< std::string,int > >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< std::string,int > > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< std::pair< std::string,int > >::value_type *) &std_vector_Sl_std_pair_Sl_std_string_Sc_int_Sg__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::pair< std::string,int > >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1int_1pair_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< std::pair< std::string,int > > *arg1 = (std::vector< std::pair< std::string,int > > *) 0 ; + int arg2 ; + std::vector< std::pair< std::string,int > >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< std::pair< std::string,int > > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< std::pair< std::string,int > >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::pair< std::string,int > >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_std_pair_Sl_std_string_Sc_int_Sg__Sg__set(arg1,arg2,(std::pair< std::string,int > const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1string_1int_1pair_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< std::pair< std::string,int > > *arg1 = (std::vector< std::pair< std::string,int > > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< std::pair< std::string,int > > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1string_1pair_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< std::pair< std::string,std::string > > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< std::pair< std::string,std::string > > *)new std::vector< std::pair< std::string,std::string > >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::pair< std::string,std::string > > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1string_1pair_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< std::pair< std::string,std::string > > *arg1 = (std::vector< std::pair< std::string,std::string > > *) 0 ; + std::vector< std::pair< std::string,std::string > >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< std::string,std::string > > **)&jarg1; + { + try { + result = ((std::vector< std::pair< std::string,std::string > > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1string_1pair_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< std::pair< std::string,std::string > > *arg1 = (std::vector< std::pair< std::string,std::string > > *) 0 ; + std::vector< std::pair< std::string,std::string > >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< std::string,std::string > > **)&jarg1; + { + try { + result = ((std::vector< std::pair< std::string,std::string > > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1string_1pair_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< std::pair< std::string,std::string > > *arg1 = (std::vector< std::pair< std::string,std::string > > *) 0 ; + std::vector< std::pair< std::string,std::string > >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< std::string,std::string > > **)&jarg1; + arg2 = (std::vector< std::pair< std::string,std::string > >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1string_1pair_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< std::pair< std::string,std::string > > *arg1 = (std::vector< std::pair< std::string,std::string > > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< std::string,std::string > > **)&jarg1; + { + try { + result = (bool)((std::vector< std::pair< std::string,std::string > > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1string_1pair_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< std::pair< std::string,std::string > > *arg1 = (std::vector< std::pair< std::string,std::string > > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< std::string,std::string > > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1string_1pair_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< std::pair< std::string,std::string > > *arg1 = (std::vector< std::pair< std::string,std::string > > *) 0 ; + std::vector< std::pair< std::string,std::string > >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< std::pair< std::string,std::string > > **)&jarg1; + arg2 = *(std::vector< std::pair< std::string,std::string > >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::pair< std::string,std::string > >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< std::pair< std::string,std::string > >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1string_1pair_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< std::pair< std::string,std::string > > *arg1 = (std::vector< std::pair< std::string,std::string > > *) 0 ; + int arg2 ; + std::vector< std::pair< std::string,std::string > >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< std::string,std::string > > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< std::pair< std::string,std::string > >::value_type *) &std_vector_Sl_std_pair_Sl_std_string_Sc_std_string_Sg__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::pair< std::string,std::string > >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1string_1pair_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< std::pair< std::string,std::string > > *arg1 = (std::vector< std::pair< std::string,std::string > > *) 0 ; + int arg2 ; + std::vector< std::pair< std::string,std::string > >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< std::pair< std::string,std::string > > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< std::pair< std::string,std::string > >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::pair< std::string,std::string > >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_std_pair_Sl_std_string_Sc_std_string_Sg__Sg__set(arg1,arg2,(std::pair< std::string,std::string > const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1string_1string_1pair_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< std::pair< std::string,std::string > > *arg1 = (std::vector< std::pair< std::string,std::string > > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< std::pair< std::string,std::string > > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1piece_1index_1int_1pair_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< std::pair< piece_index_t,int > > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< std::pair< piece_index_t,int > > *)new std::vector< std::pair< piece_index_t,int > >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::pair< piece_index_t,int > > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1int_1pair_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< std::pair< piece_index_t,int > > *arg1 = (std::vector< std::pair< piece_index_t,int > > *) 0 ; + std::vector< std::pair< piece_index_t,int > >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< piece_index_t,int > > **)&jarg1; + { + try { + result = ((std::vector< std::pair< piece_index_t,int > > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1int_1pair_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< std::pair< piece_index_t,int > > *arg1 = (std::vector< std::pair< piece_index_t,int > > *) 0 ; + std::vector< std::pair< piece_index_t,int > >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< piece_index_t,int > > **)&jarg1; + { + try { + result = ((std::vector< std::pair< piece_index_t,int > > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1int_1pair_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< std::pair< piece_index_t,int > > *arg1 = (std::vector< std::pair< piece_index_t,int > > *) 0 ; + std::vector< std::pair< piece_index_t,int > >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< piece_index_t,int > > **)&jarg1; + arg2 = (std::vector< std::pair< piece_index_t,int > >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1int_1pair_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< std::pair< piece_index_t,int > > *arg1 = (std::vector< std::pair< piece_index_t,int > > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< piece_index_t,int > > **)&jarg1; + { + try { + result = (bool)((std::vector< std::pair< piece_index_t,int > > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1int_1pair_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< std::pair< piece_index_t,int > > *arg1 = (std::vector< std::pair< piece_index_t,int > > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< piece_index_t,int > > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1int_1pair_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< std::pair< piece_index_t,int > > *arg1 = (std::vector< std::pair< piece_index_t,int > > *) 0 ; + std::vector< std::pair< piece_index_t,int > >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< std::pair< piece_index_t,int > > **)&jarg1; + arg2 = *(std::vector< std::pair< piece_index_t,int > >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::pair< piece_index_t,int > >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< std::pair< piece_index_t,int > >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1int_1pair_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< std::pair< piece_index_t,int > > *arg1 = (std::vector< std::pair< piece_index_t,int > > *) 0 ; + int arg2 ; + std::vector< std::pair< piece_index_t,int > >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< piece_index_t,int > > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< std::pair< piece_index_t,int > >::value_type *) &std_vector_Sl_std_pair_Sl_piece_index_t_Sc_int_Sg__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::pair< piece_index_t,int > >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1int_1pair_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< std::pair< piece_index_t,int > > *arg1 = (std::vector< std::pair< piece_index_t,int > > *) 0 ; + int arg2 ; + std::vector< std::pair< piece_index_t,int > >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< std::pair< piece_index_t,int > > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< std::pair< piece_index_t,int > >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::pair< piece_index_t,int > >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_std_pair_Sl_piece_index_t_Sc_int_Sg__Sg__set(arg1,arg2,(std::pair< piece_index_t,int > const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1piece_1index_1int_1pair_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< std::pair< piece_index_t,int > > *arg1 = (std::vector< std::pair< piece_index_t,int > > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< std::pair< piece_index_t,int > > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1int_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< int > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< int > *)new std::vector< int >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_int_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< int > *arg1 = (std::vector< int > *) 0 ; + std::vector< int >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int > **)&jarg1; + { + try { + result = ((std::vector< int > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_int_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< int > *arg1 = (std::vector< int > *) 0 ; + std::vector< int >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int > **)&jarg1; + { + try { + result = ((std::vector< int > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_int_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< int > *arg1 = (std::vector< int > *) 0 ; + std::vector< int >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int > **)&jarg1; + arg2 = (std::vector< int >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_int_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< int > *arg1 = (std::vector< int > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int > **)&jarg1; + { + try { + result = (bool)((std::vector< int > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_int_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< int > *arg1 = (std::vector< int > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_int_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + std::vector< int > *arg1 = (std::vector< int > *) 0 ; + std::vector< int >::value_type *arg2 = 0 ; + std::vector< int >::value_type temp2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int > **)&jarg1; + temp2 = (std::vector< int >::value_type)jarg2; + arg2 = &temp2; + { + try { + (arg1)->push_back((std::vector< int >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_int_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jint jresult = 0 ; + std::vector< int > *arg1 = (std::vector< int > *) 0 ; + int arg2 ; + std::vector< int >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< int >::value_type *) &std_vector_Sl_int_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)*result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_int_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3) { + std::vector< int > *arg1 = (std::vector< int > *) 0 ; + int arg2 ; + std::vector< int >::value_type *arg3 = 0 ; + std::vector< int >::value_type temp3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int > **)&jarg1; + arg2 = (int)jarg2; + temp3 = (std::vector< int >::value_type)jarg3; + arg3 = &temp3; + { + try { + try { + std_vector_Sl_int_Sg__set(arg1,arg2,(int const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1int_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< int > *arg1 = (std::vector< int > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< int > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1int64_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< long long > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< long long > *)new std::vector< long long >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< long long > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_int64_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< long long > *arg1 = (std::vector< long long > *) 0 ; + std::vector< long long >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< long long > **)&jarg1; + { + try { + result = ((std::vector< long long > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_int64_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< long long > *arg1 = (std::vector< long long > *) 0 ; + std::vector< long long >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< long long > **)&jarg1; + { + try { + result = ((std::vector< long long > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_int64_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< long long > *arg1 = (std::vector< long long > *) 0 ; + std::vector< long long >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< long long > **)&jarg1; + arg2 = (std::vector< long long >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_int64_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< long long > *arg1 = (std::vector< long long > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< long long > **)&jarg1; + { + try { + result = (bool)((std::vector< long long > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_int64_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< long long > *arg1 = (std::vector< long long > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< long long > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_int64_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< long long > *arg1 = (std::vector< long long > *) 0 ; + std::vector< long long >::value_type *arg2 = 0 ; + std::vector< long long >::value_type temp2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< long long > **)&jarg1; + temp2 = (std::vector< long long >::value_type)jarg2; + arg2 = &temp2; + { + try { + (arg1)->push_back((std::vector< long long >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_int64_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< long long > *arg1 = (std::vector< long long > *) 0 ; + int arg2 ; + std::vector< long long >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< long long > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< long long >::value_type *) &std_vector_Sl_long_SS_long_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)*result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_int64_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3) { + std::vector< long long > *arg1 = (std::vector< long long > *) 0 ; + int arg2 ; + std::vector< long long >::value_type *arg3 = 0 ; + std::vector< long long >::value_type temp3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< long long > **)&jarg1; + arg2 = (int)jarg2; + temp3 = (std::vector< long long >::value_type)jarg3; + arg3 = &temp3; + { + try { + try { + std_vector_Sl_long_SS_long_Sg__set(arg1,arg2,(long long const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1int64_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< long long > *arg1 = (std::vector< long long > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< long long > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1sha1_1hash_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::sha1_hash > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::sha1_hash > *)new std::vector< libtorrent::sha1_hash >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::sha1_hash > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::sha1_hash > *arg1 = (std::vector< libtorrent::sha1_hash > *) 0 ; + std::vector< libtorrent::sha1_hash >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::sha1_hash > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::sha1_hash > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::sha1_hash > *arg1 = (std::vector< libtorrent::sha1_hash > *) 0 ; + std::vector< libtorrent::sha1_hash >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::sha1_hash > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::sha1_hash > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::sha1_hash > *arg1 = (std::vector< libtorrent::sha1_hash > *) 0 ; + std::vector< libtorrent::sha1_hash >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::sha1_hash > **)&jarg1; + arg2 = (std::vector< libtorrent::sha1_hash >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::sha1_hash > *arg1 = (std::vector< libtorrent::sha1_hash > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::sha1_hash > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::sha1_hash > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::sha1_hash > *arg1 = (std::vector< libtorrent::sha1_hash > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::sha1_hash > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::sha1_hash > *arg1 = (std::vector< libtorrent::sha1_hash > *) 0 ; + std::vector< libtorrent::sha1_hash >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::sha1_hash > **)&jarg1; + arg2 = *(std::vector< libtorrent::sha1_hash >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::sha1_hash >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< libtorrent::sha1_hash >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::sha1_hash > *arg1 = (std::vector< libtorrent::sha1_hash > *) 0 ; + int arg2 ; + std::vector< libtorrent::sha1_hash >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::sha1_hash > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::sha1_hash >::value_type *) &std_vector_Sl_libtorrent_sha1_hash_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::sha1_hash >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::sha1_hash > *arg1 = (std::vector< libtorrent::sha1_hash > *) 0 ; + int arg2 ; + std::vector< libtorrent::sha1_hash >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::sha1_hash > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< libtorrent::sha1_hash >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::sha1_hash >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_libtorrent_sha1_hash_Sg__set(arg1,arg2,(libtorrent::sha1_hash const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1sha1_1hash_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::sha1_hash > *arg1 = (std::vector< libtorrent::sha1_hash > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::sha1_hash > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1torrent_1status_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::torrent_status > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::torrent_status > *)new std::vector< libtorrent::torrent_status >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::torrent_status > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::torrent_status > *arg1 = (std::vector< libtorrent::torrent_status > *) 0 ; + std::vector< libtorrent::torrent_status >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::torrent_status > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::torrent_status > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::torrent_status > *arg1 = (std::vector< libtorrent::torrent_status > *) 0 ; + std::vector< libtorrent::torrent_status >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::torrent_status > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::torrent_status > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::torrent_status > *arg1 = (std::vector< libtorrent::torrent_status > *) 0 ; + std::vector< libtorrent::torrent_status >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::torrent_status > **)&jarg1; + arg2 = (std::vector< libtorrent::torrent_status >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::torrent_status > *arg1 = (std::vector< libtorrent::torrent_status > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::torrent_status > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::torrent_status > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::torrent_status > *arg1 = (std::vector< libtorrent::torrent_status > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::torrent_status > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::torrent_status > *arg1 = (std::vector< libtorrent::torrent_status > *) 0 ; + std::vector< libtorrent::torrent_status >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::torrent_status > **)&jarg1; + arg2 = *(std::vector< libtorrent::torrent_status >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::torrent_status >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< libtorrent::torrent_status >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::torrent_status > *arg1 = (std::vector< libtorrent::torrent_status > *) 0 ; + int arg2 ; + std::vector< libtorrent::torrent_status >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::torrent_status > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::torrent_status >::value_type *) &std_vector_Sl_libtorrent_torrent_status_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::torrent_status >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::torrent_status > *arg1 = (std::vector< libtorrent::torrent_status > *) 0 ; + int arg2 ; + std::vector< libtorrent::torrent_status >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::torrent_status > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< libtorrent::torrent_status >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::torrent_status >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_libtorrent_torrent_status_Sg__set(arg1,arg2,(libtorrent::torrent_status const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1status_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::torrent_status > *arg1 = (std::vector< libtorrent::torrent_status > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::torrent_status > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1torrent_1handle_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::torrent_handle > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::torrent_handle > *)new std::vector< libtorrent::torrent_handle >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::torrent_handle > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::torrent_handle > *arg1 = (std::vector< libtorrent::torrent_handle > *) 0 ; + std::vector< libtorrent::torrent_handle >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::torrent_handle > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::torrent_handle > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::torrent_handle > *arg1 = (std::vector< libtorrent::torrent_handle > *) 0 ; + std::vector< libtorrent::torrent_handle >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::torrent_handle > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::torrent_handle > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::torrent_handle > *arg1 = (std::vector< libtorrent::torrent_handle > *) 0 ; + std::vector< libtorrent::torrent_handle >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::torrent_handle > **)&jarg1; + arg2 = (std::vector< libtorrent::torrent_handle >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::torrent_handle > *arg1 = (std::vector< libtorrent::torrent_handle > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::torrent_handle > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::torrent_handle > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::torrent_handle > *arg1 = (std::vector< libtorrent::torrent_handle > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::torrent_handle > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::torrent_handle > *arg1 = (std::vector< libtorrent::torrent_handle > *) 0 ; + std::vector< libtorrent::torrent_handle >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::torrent_handle > **)&jarg1; + arg2 = *(std::vector< libtorrent::torrent_handle >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::torrent_handle >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< libtorrent::torrent_handle >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::torrent_handle > *arg1 = (std::vector< libtorrent::torrent_handle > *) 0 ; + int arg2 ; + std::vector< libtorrent::torrent_handle >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::torrent_handle > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::torrent_handle >::value_type *) &std_vector_Sl_libtorrent_torrent_handle_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::torrent_handle >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::torrent_handle > *arg1 = (std::vector< libtorrent::torrent_handle > *) 0 ; + int arg2 ; + std::vector< libtorrent::torrent_handle >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::torrent_handle > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< libtorrent::torrent_handle >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::torrent_handle >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_libtorrent_torrent_handle_Sg__set(arg1,arg2,(libtorrent::torrent_handle const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1handle_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::torrent_handle > *arg1 = (std::vector< libtorrent::torrent_handle > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::torrent_handle > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1file_1slice_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::file_slice > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::file_slice > *)new std::vector< libtorrent::file_slice >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::file_slice > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1slice_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::file_slice > *arg1 = (std::vector< libtorrent::file_slice > *) 0 ; + std::vector< libtorrent::file_slice >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::file_slice > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::file_slice > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1slice_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::file_slice > *arg1 = (std::vector< libtorrent::file_slice > *) 0 ; + std::vector< libtorrent::file_slice >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::file_slice > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::file_slice > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1slice_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::file_slice > *arg1 = (std::vector< libtorrent::file_slice > *) 0 ; + std::vector< libtorrent::file_slice >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::file_slice > **)&jarg1; + arg2 = (std::vector< libtorrent::file_slice >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1slice_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::file_slice > *arg1 = (std::vector< libtorrent::file_slice > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::file_slice > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::file_slice > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1slice_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::file_slice > *arg1 = (std::vector< libtorrent::file_slice > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::file_slice > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1slice_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::file_slice > *arg1 = (std::vector< libtorrent::file_slice > *) 0 ; + std::vector< libtorrent::file_slice >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::file_slice > **)&jarg1; + arg2 = *(std::vector< libtorrent::file_slice >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::file_slice >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< libtorrent::file_slice >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1slice_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::file_slice > *arg1 = (std::vector< libtorrent::file_slice > *) 0 ; + int arg2 ; + std::vector< libtorrent::file_slice >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::file_slice > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::file_slice >::value_type *) &std_vector_Sl_libtorrent_file_slice_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::file_slice >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1slice_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::file_slice > *arg1 = (std::vector< libtorrent::file_slice > *) 0 ; + int arg2 ; + std::vector< libtorrent::file_slice >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::file_slice > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< libtorrent::file_slice >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::file_slice >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_libtorrent_file_slice_Sg__set(arg1,arg2,(libtorrent::file_slice const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1file_1slice_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::file_slice > *arg1 = (std::vector< libtorrent::file_slice > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::file_slice > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1dht_1routing_1bucket_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::dht_routing_bucket > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::dht_routing_bucket > *)new std::vector< libtorrent::dht_routing_bucket >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::dht_routing_bucket > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1routing_1bucket_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::dht_routing_bucket > *arg1 = (std::vector< libtorrent::dht_routing_bucket > *) 0 ; + std::vector< libtorrent::dht_routing_bucket >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::dht_routing_bucket > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::dht_routing_bucket > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1routing_1bucket_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::dht_routing_bucket > *arg1 = (std::vector< libtorrent::dht_routing_bucket > *) 0 ; + std::vector< libtorrent::dht_routing_bucket >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::dht_routing_bucket > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::dht_routing_bucket > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1routing_1bucket_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::dht_routing_bucket > *arg1 = (std::vector< libtorrent::dht_routing_bucket > *) 0 ; + std::vector< libtorrent::dht_routing_bucket >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::dht_routing_bucket > **)&jarg1; + arg2 = (std::vector< libtorrent::dht_routing_bucket >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1routing_1bucket_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::dht_routing_bucket > *arg1 = (std::vector< libtorrent::dht_routing_bucket > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::dht_routing_bucket > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::dht_routing_bucket > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1routing_1bucket_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::dht_routing_bucket > *arg1 = (std::vector< libtorrent::dht_routing_bucket > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::dht_routing_bucket > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1routing_1bucket_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::dht_routing_bucket > *arg1 = (std::vector< libtorrent::dht_routing_bucket > *) 0 ; + std::vector< libtorrent::dht_routing_bucket >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::dht_routing_bucket > **)&jarg1; + arg2 = *(std::vector< libtorrent::dht_routing_bucket >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::dht_routing_bucket >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< libtorrent::dht_routing_bucket >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1routing_1bucket_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::dht_routing_bucket > *arg1 = (std::vector< libtorrent::dht_routing_bucket > *) 0 ; + int arg2 ; + std::vector< libtorrent::dht_routing_bucket >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::dht_routing_bucket > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::dht_routing_bucket >::value_type *) &std_vector_Sl_libtorrent_dht_routing_bucket_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::dht_routing_bucket >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1routing_1bucket_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::dht_routing_bucket > *arg1 = (std::vector< libtorrent::dht_routing_bucket > *) 0 ; + int arg2 ; + std::vector< libtorrent::dht_routing_bucket >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::dht_routing_bucket > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< libtorrent::dht_routing_bucket >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::dht_routing_bucket >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_libtorrent_dht_routing_bucket_Sg__set(arg1,arg2,(libtorrent::dht_routing_bucket const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1routing_1bucket_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::dht_routing_bucket > *arg1 = (std::vector< libtorrent::dht_routing_bucket > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::dht_routing_bucket > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1dht_1lookup_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::dht_lookup > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::dht_lookup > *)new std::vector< libtorrent::dht_lookup >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::dht_lookup > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::dht_lookup > *arg1 = (std::vector< libtorrent::dht_lookup > *) 0 ; + std::vector< libtorrent::dht_lookup >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::dht_lookup > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::dht_lookup > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::dht_lookup > *arg1 = (std::vector< libtorrent::dht_lookup > *) 0 ; + std::vector< libtorrent::dht_lookup >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::dht_lookup > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::dht_lookup > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::dht_lookup > *arg1 = (std::vector< libtorrent::dht_lookup > *) 0 ; + std::vector< libtorrent::dht_lookup >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::dht_lookup > **)&jarg1; + arg2 = (std::vector< libtorrent::dht_lookup >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::dht_lookup > *arg1 = (std::vector< libtorrent::dht_lookup > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::dht_lookup > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::dht_lookup > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::dht_lookup > *arg1 = (std::vector< libtorrent::dht_lookup > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::dht_lookup > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::dht_lookup > *arg1 = (std::vector< libtorrent::dht_lookup > *) 0 ; + std::vector< libtorrent::dht_lookup >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::dht_lookup > **)&jarg1; + arg2 = *(std::vector< libtorrent::dht_lookup >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::dht_lookup >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< libtorrent::dht_lookup >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::dht_lookup > *arg1 = (std::vector< libtorrent::dht_lookup > *) 0 ; + int arg2 ; + std::vector< libtorrent::dht_lookup >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::dht_lookup > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::dht_lookup >::value_type *) &std_vector_Sl_libtorrent_dht_lookup_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::dht_lookup >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::dht_lookup > *arg1 = (std::vector< libtorrent::dht_lookup > *) 0 ; + int arg2 ; + std::vector< libtorrent::dht_lookup >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::dht_lookup > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< libtorrent::dht_lookup >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::dht_lookup >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_libtorrent_dht_lookup_Sg__set(arg1,arg2,(libtorrent::dht_lookup const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1lookup_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::dht_lookup > *arg1 = (std::vector< libtorrent::dht_lookup > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::dht_lookup > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1block_1info_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::block_info > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::block_info > *)new std::vector< libtorrent::block_info >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::block_info > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::block_info > *arg1 = (std::vector< libtorrent::block_info > *) 0 ; + std::vector< libtorrent::block_info >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::block_info > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::block_info > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::block_info > *arg1 = (std::vector< libtorrent::block_info > *) 0 ; + std::vector< libtorrent::block_info >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::block_info > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::block_info > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::block_info > *arg1 = (std::vector< libtorrent::block_info > *) 0 ; + std::vector< libtorrent::block_info >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::block_info > **)&jarg1; + arg2 = (std::vector< libtorrent::block_info >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::block_info > *arg1 = (std::vector< libtorrent::block_info > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::block_info > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::block_info > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::block_info > *arg1 = (std::vector< libtorrent::block_info > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::block_info > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::block_info > *arg1 = (std::vector< libtorrent::block_info > *) 0 ; + std::vector< libtorrent::block_info >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::block_info > **)&jarg1; + arg2 = *(std::vector< libtorrent::block_info >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::block_info >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< libtorrent::block_info >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::block_info > *arg1 = (std::vector< libtorrent::block_info > *) 0 ; + int arg2 ; + std::vector< libtorrent::block_info >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::block_info > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::block_info >::value_type *) &std_vector_Sl_libtorrent_block_info_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::block_info >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::block_info > *arg1 = (std::vector< libtorrent::block_info > *) 0 ; + int arg2 ; + std::vector< libtorrent::block_info >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::block_info > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< libtorrent::block_info >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::block_info >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_libtorrent_block_info_Sg__set(arg1,arg2,(libtorrent::block_info const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1block_1info_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::block_info > *arg1 = (std::vector< libtorrent::block_info > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::block_info > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1partial_1piece_1info_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::partial_piece_info > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::partial_piece_info > *)new std::vector< libtorrent::partial_piece_info >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::partial_piece_info > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::partial_piece_info > *arg1 = (std::vector< libtorrent::partial_piece_info > *) 0 ; + std::vector< libtorrent::partial_piece_info >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::partial_piece_info > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::partial_piece_info > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::partial_piece_info > *arg1 = (std::vector< libtorrent::partial_piece_info > *) 0 ; + std::vector< libtorrent::partial_piece_info >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::partial_piece_info > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::partial_piece_info > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::partial_piece_info > *arg1 = (std::vector< libtorrent::partial_piece_info > *) 0 ; + std::vector< libtorrent::partial_piece_info >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::partial_piece_info > **)&jarg1; + arg2 = (std::vector< libtorrent::partial_piece_info >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::partial_piece_info > *arg1 = (std::vector< libtorrent::partial_piece_info > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::partial_piece_info > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::partial_piece_info > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::partial_piece_info > *arg1 = (std::vector< libtorrent::partial_piece_info > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::partial_piece_info > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::partial_piece_info > *arg1 = (std::vector< libtorrent::partial_piece_info > *) 0 ; + std::vector< libtorrent::partial_piece_info >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::partial_piece_info > **)&jarg1; + arg2 = *(std::vector< libtorrent::partial_piece_info >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::partial_piece_info >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< libtorrent::partial_piece_info >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::partial_piece_info > *arg1 = (std::vector< libtorrent::partial_piece_info > *) 0 ; + int arg2 ; + std::vector< libtorrent::partial_piece_info >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::partial_piece_info > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::partial_piece_info >::value_type *) &std_vector_Sl_libtorrent_partial_piece_info_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::partial_piece_info >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::partial_piece_info > *arg1 = (std::vector< libtorrent::partial_piece_info > *) 0 ; + int arg2 ; + std::vector< libtorrent::partial_piece_info >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::partial_piece_info > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< libtorrent::partial_piece_info >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::partial_piece_info >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_libtorrent_partial_piece_info_Sg__set(arg1,arg2,(libtorrent::partial_piece_info const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1partial_1piece_1info_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::partial_piece_info > *arg1 = (std::vector< libtorrent::partial_piece_info > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::partial_piece_info > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1peer_1info_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::peer_info > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::peer_info > *)new std::vector< libtorrent::peer_info >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::peer_info > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::peer_info > *arg1 = (std::vector< libtorrent::peer_info > *) 0 ; + std::vector< libtorrent::peer_info >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::peer_info > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::peer_info > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::peer_info > *arg1 = (std::vector< libtorrent::peer_info > *) 0 ; + std::vector< libtorrent::peer_info >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::peer_info > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::peer_info > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::peer_info > *arg1 = (std::vector< libtorrent::peer_info > *) 0 ; + std::vector< libtorrent::peer_info >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::peer_info > **)&jarg1; + arg2 = (std::vector< libtorrent::peer_info >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::peer_info > *arg1 = (std::vector< libtorrent::peer_info > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::peer_info > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::peer_info > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::peer_info > *arg1 = (std::vector< libtorrent::peer_info > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::peer_info > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::peer_info > *arg1 = (std::vector< libtorrent::peer_info > *) 0 ; + std::vector< libtorrent::peer_info >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::peer_info > **)&jarg1; + arg2 = *(std::vector< libtorrent::peer_info >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::peer_info >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< libtorrent::peer_info >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::peer_info > *arg1 = (std::vector< libtorrent::peer_info > *) 0 ; + int arg2 ; + std::vector< libtorrent::peer_info >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::peer_info > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::peer_info >::value_type *) &std_vector_Sl_libtorrent_peer_info_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::peer_info >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::peer_info > *arg1 = (std::vector< libtorrent::peer_info > *) 0 ; + int arg2 ; + std::vector< libtorrent::peer_info >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::peer_info > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< libtorrent::peer_info >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::peer_info >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_libtorrent_peer_info_Sg__set(arg1,arg2,(libtorrent::peer_info const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1info_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::peer_info > *arg1 = (std::vector< libtorrent::peer_info > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::peer_info > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1stats_1metric_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::stats_metric > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::stats_metric > *)new std::vector< libtorrent::stats_metric >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::stats_metric > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1metric_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::stats_metric > *arg1 = (std::vector< libtorrent::stats_metric > *) 0 ; + std::vector< libtorrent::stats_metric >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::stats_metric > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::stats_metric > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1metric_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::stats_metric > *arg1 = (std::vector< libtorrent::stats_metric > *) 0 ; + std::vector< libtorrent::stats_metric >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::stats_metric > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::stats_metric > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1metric_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::stats_metric > *arg1 = (std::vector< libtorrent::stats_metric > *) 0 ; + std::vector< libtorrent::stats_metric >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::stats_metric > **)&jarg1; + arg2 = (std::vector< libtorrent::stats_metric >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1metric_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::stats_metric > *arg1 = (std::vector< libtorrent::stats_metric > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::stats_metric > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::stats_metric > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1metric_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::stats_metric > *arg1 = (std::vector< libtorrent::stats_metric > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::stats_metric > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1metric_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::stats_metric > *arg1 = (std::vector< libtorrent::stats_metric > *) 0 ; + std::vector< libtorrent::stats_metric >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::stats_metric > **)&jarg1; + arg2 = *(std::vector< libtorrent::stats_metric >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::stats_metric >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< libtorrent::stats_metric >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1metric_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::stats_metric > *arg1 = (std::vector< libtorrent::stats_metric > *) 0 ; + int arg2 ; + std::vector< libtorrent::stats_metric >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::stats_metric > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::stats_metric >::value_type *) &std_vector_Sl_libtorrent_stats_metric_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::stats_metric >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1metric_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::stats_metric > *arg1 = (std::vector< libtorrent::stats_metric > *) 0 ; + int arg2 ; + std::vector< libtorrent::stats_metric >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::stats_metric > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< libtorrent::stats_metric >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::stats_metric >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_libtorrent_stats_metric_Sg__set(arg1,arg2,(libtorrent::stats_metric const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1stats_1metric_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::stats_metric > *arg1 = (std::vector< libtorrent::stats_metric > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::stats_metric > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1entry_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::entry > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::entry > *)new std::vector< libtorrent::entry >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::entry > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::entry > *arg1 = (std::vector< libtorrent::entry > *) 0 ; + std::vector< libtorrent::entry >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::entry > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::entry > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::entry > *arg1 = (std::vector< libtorrent::entry > *) 0 ; + std::vector< libtorrent::entry >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::entry > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::entry > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::entry > *arg1 = (std::vector< libtorrent::entry > *) 0 ; + std::vector< libtorrent::entry >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::entry > **)&jarg1; + arg2 = (std::vector< libtorrent::entry >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::entry > *arg1 = (std::vector< libtorrent::entry > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::entry > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::entry > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::entry > *arg1 = (std::vector< libtorrent::entry > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::entry > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::entry > *arg1 = (std::vector< libtorrent::entry > *) 0 ; + std::vector< libtorrent::entry >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::entry > **)&jarg1; + arg2 = *(std::vector< libtorrent::entry >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::entry >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< libtorrent::entry >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::entry > *arg1 = (std::vector< libtorrent::entry > *) 0 ; + int arg2 ; + std::vector< libtorrent::entry >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::entry > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::entry >::value_type *) &std_vector_Sl_libtorrent_entry_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::entry >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::entry > *arg1 = (std::vector< libtorrent::entry > *) 0 ; + int arg2 ; + std::vector< libtorrent::entry >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::entry > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< libtorrent::entry >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::entry >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_libtorrent_entry_Sg__set(arg1,arg2,(libtorrent::entry const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1entry_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::entry > *arg1 = (std::vector< libtorrent::entry > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::entry > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1web_1seed_1entry_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::web_seed_entry > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::web_seed_entry > *)new std::vector< libtorrent::web_seed_entry >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::web_seed_entry > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::web_seed_entry > *arg1 = (std::vector< libtorrent::web_seed_entry > *) 0 ; + std::vector< libtorrent::web_seed_entry >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::web_seed_entry > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::web_seed_entry > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::web_seed_entry > *arg1 = (std::vector< libtorrent::web_seed_entry > *) 0 ; + std::vector< libtorrent::web_seed_entry >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::web_seed_entry > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::web_seed_entry > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::web_seed_entry > *arg1 = (std::vector< libtorrent::web_seed_entry > *) 0 ; + std::vector< libtorrent::web_seed_entry >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::web_seed_entry > **)&jarg1; + arg2 = (std::vector< libtorrent::web_seed_entry >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::web_seed_entry > *arg1 = (std::vector< libtorrent::web_seed_entry > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::web_seed_entry > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::web_seed_entry > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::web_seed_entry > *arg1 = (std::vector< libtorrent::web_seed_entry > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::web_seed_entry > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::web_seed_entry > *arg1 = (std::vector< libtorrent::web_seed_entry > *) 0 ; + std::vector< libtorrent::web_seed_entry >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::web_seed_entry > **)&jarg1; + arg2 = *(std::vector< libtorrent::web_seed_entry >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::web_seed_entry >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< libtorrent::web_seed_entry >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::web_seed_entry > *arg1 = (std::vector< libtorrent::web_seed_entry > *) 0 ; + int arg2 ; + std::vector< libtorrent::web_seed_entry >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::web_seed_entry > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::web_seed_entry >::value_type *) &std_vector_Sl_libtorrent_web_seed_entry_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::web_seed_entry >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::web_seed_entry > *arg1 = (std::vector< libtorrent::web_seed_entry > *) 0 ; + int arg2 ; + std::vector< libtorrent::web_seed_entry >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::web_seed_entry > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< libtorrent::web_seed_entry >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::web_seed_entry >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_libtorrent_web_seed_entry_Sg__set(arg1,arg2,(libtorrent::web_seed_entry const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1web_1seed_1entry_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::web_seed_entry > *arg1 = (std::vector< libtorrent::web_seed_entry > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::web_seed_entry > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1announce_1endpoint_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::announce_endpoint > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::announce_endpoint > *)new std::vector< libtorrent::announce_endpoint >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::announce_endpoint > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::announce_endpoint > *arg1 = (std::vector< libtorrent::announce_endpoint > *) 0 ; + std::vector< libtorrent::announce_endpoint >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::announce_endpoint > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::announce_endpoint > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::announce_endpoint > *arg1 = (std::vector< libtorrent::announce_endpoint > *) 0 ; + std::vector< libtorrent::announce_endpoint >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::announce_endpoint > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::announce_endpoint > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::announce_endpoint > *arg1 = (std::vector< libtorrent::announce_endpoint > *) 0 ; + std::vector< libtorrent::announce_endpoint >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::announce_endpoint > **)&jarg1; + arg2 = (std::vector< libtorrent::announce_endpoint >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::announce_endpoint > *arg1 = (std::vector< libtorrent::announce_endpoint > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::announce_endpoint > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::announce_endpoint > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::announce_endpoint > *arg1 = (std::vector< libtorrent::announce_endpoint > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::announce_endpoint > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::announce_endpoint > *arg1 = (std::vector< libtorrent::announce_endpoint > *) 0 ; + std::vector< libtorrent::announce_endpoint >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::announce_endpoint > **)&jarg1; + arg2 = *(std::vector< libtorrent::announce_endpoint >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::announce_endpoint >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< libtorrent::announce_endpoint >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::announce_endpoint > *arg1 = (std::vector< libtorrent::announce_endpoint > *) 0 ; + int arg2 ; + std::vector< libtorrent::announce_endpoint >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::announce_endpoint > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::announce_endpoint >::value_type *) &std_vector_Sl_libtorrent_announce_endpoint_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::announce_endpoint >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::announce_endpoint > *arg1 = (std::vector< libtorrent::announce_endpoint > *) 0 ; + int arg2 ; + std::vector< libtorrent::announce_endpoint >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::announce_endpoint > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< libtorrent::announce_endpoint >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::announce_endpoint >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_libtorrent_announce_endpoint_Sg__set(arg1,arg2,(libtorrent::announce_endpoint const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1announce_1endpoint_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::announce_endpoint > *arg1 = (std::vector< libtorrent::announce_endpoint > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::announce_endpoint > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1announce_1entry_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::announce_entry > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::announce_entry > *)new std::vector< libtorrent::announce_entry >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::announce_entry > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::announce_entry > *arg1 = (std::vector< libtorrent::announce_entry > *) 0 ; + std::vector< libtorrent::announce_entry >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::announce_entry > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::announce_entry > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::announce_entry > *arg1 = (std::vector< libtorrent::announce_entry > *) 0 ; + std::vector< libtorrent::announce_entry >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::announce_entry > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::announce_entry > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::announce_entry > *arg1 = (std::vector< libtorrent::announce_entry > *) 0 ; + std::vector< libtorrent::announce_entry >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::announce_entry > **)&jarg1; + arg2 = (std::vector< libtorrent::announce_entry >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::announce_entry > *arg1 = (std::vector< libtorrent::announce_entry > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::announce_entry > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::announce_entry > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::announce_entry > *arg1 = (std::vector< libtorrent::announce_entry > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::announce_entry > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::announce_entry > *arg1 = (std::vector< libtorrent::announce_entry > *) 0 ; + std::vector< libtorrent::announce_entry >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::announce_entry > **)&jarg1; + arg2 = *(std::vector< libtorrent::announce_entry >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::announce_entry >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< libtorrent::announce_entry >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::announce_entry > *arg1 = (std::vector< libtorrent::announce_entry > *) 0 ; + int arg2 ; + std::vector< libtorrent::announce_entry >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::announce_entry > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::announce_entry >::value_type *) &std_vector_Sl_libtorrent_announce_entry_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::announce_entry >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::announce_entry > *arg1 = (std::vector< libtorrent::announce_entry > *) 0 ; + int arg2 ; + std::vector< libtorrent::announce_entry >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::announce_entry > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< libtorrent::announce_entry >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::announce_entry >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_libtorrent_announce_entry_Sg__set(arg1,arg2,(libtorrent::announce_entry const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1announce_1entry_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::announce_entry > *arg1 = (std::vector< libtorrent::announce_entry > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::announce_entry > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1tcp_1endpoint_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::tcp::endpoint > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::tcp::endpoint > *)new std::vector< libtorrent::tcp::endpoint >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::tcp::endpoint > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tcp_1endpoint_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::tcp::endpoint > *arg1 = (std::vector< libtorrent::tcp::endpoint > *) 0 ; + std::vector< libtorrent::tcp::endpoint >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::tcp::endpoint > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::tcp::endpoint > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tcp_1endpoint_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::tcp::endpoint > *arg1 = (std::vector< libtorrent::tcp::endpoint > *) 0 ; + std::vector< libtorrent::tcp::endpoint >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::tcp::endpoint > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::tcp::endpoint > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tcp_1endpoint_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::tcp::endpoint > *arg1 = (std::vector< libtorrent::tcp::endpoint > *) 0 ; + std::vector< libtorrent::tcp::endpoint >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::tcp::endpoint > **)&jarg1; + arg2 = (std::vector< libtorrent::tcp::endpoint >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tcp_1endpoint_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::tcp::endpoint > *arg1 = (std::vector< libtorrent::tcp::endpoint > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::tcp::endpoint > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::tcp::endpoint > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tcp_1endpoint_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::tcp::endpoint > *arg1 = (std::vector< libtorrent::tcp::endpoint > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::tcp::endpoint > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tcp_1endpoint_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::tcp::endpoint > *arg1 = (std::vector< libtorrent::tcp::endpoint > *) 0 ; + std::vector< libtorrent::tcp::endpoint >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::tcp::endpoint > **)&jarg1; + arg2 = *(std::vector< libtorrent::tcp::endpoint >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::tcp::endpoint >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< libtorrent::tcp::endpoint >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tcp_1endpoint_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::tcp::endpoint > *arg1 = (std::vector< libtorrent::tcp::endpoint > *) 0 ; + int arg2 ; + std::vector< libtorrent::tcp::endpoint >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::tcp::endpoint > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::tcp::endpoint >::value_type *) &std_vector_Sl_libtorrent_tcp_endpoint_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::tcp::endpoint >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tcp_1endpoint_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::tcp::endpoint > *arg1 = (std::vector< libtorrent::tcp::endpoint > *) 0 ; + int arg2 ; + std::vector< libtorrent::tcp::endpoint >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::tcp::endpoint > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< libtorrent::tcp::endpoint >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::tcp::endpoint >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_libtorrent_tcp_endpoint_Sg__set(arg1,arg2,(libtorrent::tcp::endpoint const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1tcp_1endpoint_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::tcp::endpoint > *arg1 = (std::vector< libtorrent::tcp::endpoint > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::tcp::endpoint > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1udp_1endpoint_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::udp::endpoint > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::udp::endpoint > *)new std::vector< libtorrent::udp::endpoint >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::udp::endpoint > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1endpoint_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::udp::endpoint > *arg1 = (std::vector< libtorrent::udp::endpoint > *) 0 ; + std::vector< libtorrent::udp::endpoint >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::udp::endpoint > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::udp::endpoint > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1endpoint_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::udp::endpoint > *arg1 = (std::vector< libtorrent::udp::endpoint > *) 0 ; + std::vector< libtorrent::udp::endpoint >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::udp::endpoint > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::udp::endpoint > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1endpoint_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::udp::endpoint > *arg1 = (std::vector< libtorrent::udp::endpoint > *) 0 ; + std::vector< libtorrent::udp::endpoint >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::udp::endpoint > **)&jarg1; + arg2 = (std::vector< libtorrent::udp::endpoint >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1endpoint_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::udp::endpoint > *arg1 = (std::vector< libtorrent::udp::endpoint > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::udp::endpoint > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::udp::endpoint > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1endpoint_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::udp::endpoint > *arg1 = (std::vector< libtorrent::udp::endpoint > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::udp::endpoint > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1endpoint_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::udp::endpoint > *arg1 = (std::vector< libtorrent::udp::endpoint > *) 0 ; + std::vector< libtorrent::udp::endpoint >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::udp::endpoint > **)&jarg1; + arg2 = *(std::vector< libtorrent::udp::endpoint >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::udp::endpoint >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< libtorrent::udp::endpoint >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1endpoint_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::udp::endpoint > *arg1 = (std::vector< libtorrent::udp::endpoint > *) 0 ; + int arg2 ; + std::vector< libtorrent::udp::endpoint >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::udp::endpoint > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::udp::endpoint >::value_type *) &std_vector_Sl_libtorrent_udp_endpoint_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::udp::endpoint >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1endpoint_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::udp::endpoint > *arg1 = (std::vector< libtorrent::udp::endpoint > *) 0 ; + int arg2 ; + std::vector< libtorrent::udp::endpoint >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::udp::endpoint > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< libtorrent::udp::endpoint >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::udp::endpoint >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_libtorrent_udp_endpoint_Sg__set(arg1,arg2,(libtorrent::udp::endpoint const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1udp_1endpoint_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::udp::endpoint > *arg1 = (std::vector< libtorrent::udp::endpoint > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::udp::endpoint > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1piece_1index_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< piece_index_t > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< piece_index_t > *)new std::vector< piece_index_t >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< piece_index_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< piece_index_t > *arg1 = (std::vector< piece_index_t > *) 0 ; + std::vector< piece_index_t >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< piece_index_t > **)&jarg1; + { + try { + result = ((std::vector< piece_index_t > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< piece_index_t > *arg1 = (std::vector< piece_index_t > *) 0 ; + std::vector< piece_index_t >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< piece_index_t > **)&jarg1; + { + try { + result = ((std::vector< piece_index_t > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< piece_index_t > *arg1 = (std::vector< piece_index_t > *) 0 ; + std::vector< piece_index_t >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< piece_index_t > **)&jarg1; + arg2 = (std::vector< piece_index_t >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< piece_index_t > *arg1 = (std::vector< piece_index_t > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< piece_index_t > **)&jarg1; + { + try { + result = (bool)((std::vector< piece_index_t > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< piece_index_t > *arg1 = (std::vector< piece_index_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< piece_index_t > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + std::vector< piece_index_t > *arg1 = (std::vector< piece_index_t > *) 0 ; + std::vector< piece_index_t >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< piece_index_t > **)&jarg1; + arg2 = *(std::vector< piece_index_t >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< piece_index_t >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< piece_index_t >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + int jresult = 0 ; + std::vector< piece_index_t > *arg1 = (std::vector< piece_index_t > *) 0 ; + int arg2 ; + std::vector< piece_index_t >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< piece_index_t > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< piece_index_t >::value_type *) &std_vector_Sl_piece_index_t_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< piece_index_t >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, int jarg3) { + std::vector< piece_index_t > *arg1 = (std::vector< piece_index_t > *) 0 ; + int arg2 ; + std::vector< piece_index_t >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< piece_index_t > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< piece_index_t >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< piece_index_t >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_piece_index_t_Sg__set(arg1,arg2,(piece_index_t const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1piece_1index_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< piece_index_t > *arg1 = (std::vector< piece_index_t > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< piece_index_t > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1file_1index_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< file_index_t > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< file_index_t > *)new std::vector< file_index_t >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< file_index_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1index_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< file_index_t > *arg1 = (std::vector< file_index_t > *) 0 ; + std::vector< file_index_t >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< file_index_t > **)&jarg1; + { + try { + result = ((std::vector< file_index_t > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1index_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< file_index_t > *arg1 = (std::vector< file_index_t > *) 0 ; + std::vector< file_index_t >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< file_index_t > **)&jarg1; + { + try { + result = ((std::vector< file_index_t > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1index_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< file_index_t > *arg1 = (std::vector< file_index_t > *) 0 ; + std::vector< file_index_t >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< file_index_t > **)&jarg1; + arg2 = (std::vector< file_index_t >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1index_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< file_index_t > *arg1 = (std::vector< file_index_t > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< file_index_t > **)&jarg1; + { + try { + result = (bool)((std::vector< file_index_t > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1index_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< file_index_t > *arg1 = (std::vector< file_index_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< file_index_t > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1index_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + std::vector< file_index_t > *arg1 = (std::vector< file_index_t > *) 0 ; + std::vector< file_index_t >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< file_index_t > **)&jarg1; + arg2 = *(std::vector< file_index_t >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< file_index_t >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< file_index_t >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1index_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + int jresult = 0 ; + std::vector< file_index_t > *arg1 = (std::vector< file_index_t > *) 0 ; + int arg2 ; + std::vector< file_index_t >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< file_index_t > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< file_index_t >::value_type *) &std_vector_Sl_file_index_t_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< file_index_t >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1index_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, int jarg3) { + std::vector< file_index_t > *arg1 = (std::vector< file_index_t > *) 0 ; + int arg2 ; + std::vector< file_index_t >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< file_index_t > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< file_index_t >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< file_index_t >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_file_index_t_Sg__set(arg1,arg2,(file_index_t const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1file_1index_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< file_index_t > *arg1 = (std::vector< file_index_t > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< file_index_t > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1sha1_1hash_1udp_1endpoint_1pair_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *)new std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1udp_1endpoint_1pair_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *arg1 = (std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *) 0 ; + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > **)&jarg1; + { + try { + result = ((std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1udp_1endpoint_1pair_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *arg1 = (std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *) 0 ; + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > **)&jarg1; + { + try { + result = ((std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1udp_1endpoint_1pair_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *arg1 = (std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *) 0 ; + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > **)&jarg1; + arg2 = (std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1udp_1endpoint_1pair_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *arg1 = (std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > **)&jarg1; + { + try { + result = (bool)((std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1udp_1endpoint_1pair_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *arg1 = (std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1udp_1endpoint_1pair_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *arg1 = (std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *) 0 ; + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > **)&jarg1; + arg2 = *(std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1udp_1endpoint_1pair_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *arg1 = (std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *) 0 ; + int arg2 ; + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >::value_type *) &std_vector_Sl_std_pair_Sl_libtorrent_sha1_hash_Sc_libtorrent_udp_endpoint_Sg__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1udp_1endpoint_1pair_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *arg1 = (std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *) 0 ; + int arg2 ; + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_std_pair_Sl_libtorrent_sha1_hash_Sc_libtorrent_udp_endpoint_Sg__Sg__set(arg1,arg2,(std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1sha1_1hash_1udp_1endpoint_1pair_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *arg1 = (std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1address_1sha1_1hash_1pair_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *)new std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1sha1_1hash_1pair_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *arg1 = (std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *) 0 ; + std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > **)&jarg1; + { + try { + result = ((std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1sha1_1hash_1pair_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *arg1 = (std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *) 0 ; + std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > **)&jarg1; + { + try { + result = ((std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1sha1_1hash_1pair_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *arg1 = (std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *) 0 ; + std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > **)&jarg1; + arg2 = (std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1sha1_1hash_1pair_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *arg1 = (std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > **)&jarg1; + { + try { + result = (bool)((std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1sha1_1hash_1pair_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *arg1 = (std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1sha1_1hash_1pair_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *arg1 = (std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *) 0 ; + std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > **)&jarg1; + arg2 = *(std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1sha1_1hash_1pair_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *arg1 = (std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *) 0 ; + int arg2 ; + std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > >::value_type *) &std_vector_Sl_std_pair_Sl_libtorrent_address_Sc_libtorrent_sha1_hash_Sg__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1sha1_1hash_1pair_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *arg1 = (std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *) 0 ; + int arg2 ; + std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_std_pair_Sl_libtorrent_address_Sc_libtorrent_sha1_hash_Sg__Sg__set(arg1,arg2,(std::pair< libtorrent::address,libtorrent::sha1_hash > const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1address_1sha1_1hash_1pair_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *arg1 = (std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< std::pair< libtorrent::address,libtorrent::sha1_hash > > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1file_1index_1string_1map_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::map< file_index_t,std::string > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::map< file_index_t,std::string > *)new std::map< file_index_t,std::string >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::map< file_index_t,std::string > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1file_1index_1string_1map_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::map< file_index_t,std::string > *arg1 = 0 ; + std::map< file_index_t,std::string > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< file_index_t,std::string > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::map< file_index_t,std::string > const & reference is null"); + return 0; + } + { + try { + result = (std::map< file_index_t,std::string > *)new std::map< file_index_t,std::string >((std::map< file_index_t,std::string > const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::map< file_index_t,std::string > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1index_1string_1map_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::map< file_index_t,std::string > *arg1 = (std::map< file_index_t,std::string > *) 0 ; + unsigned int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< file_index_t,std::string > **)&jarg1; + { + try { + result = (unsigned int)((std::map< file_index_t,std::string > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1index_1string_1map_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::map< file_index_t,std::string > *arg1 = (std::map< file_index_t,std::string > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< file_index_t,std::string > **)&jarg1; + { + try { + result = (bool)((std::map< file_index_t,std::string > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1index_1string_1map_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::map< file_index_t,std::string > *arg1 = (std::map< file_index_t,std::string > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< file_index_t,std::string > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1index_1string_1map_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jstring jresult = 0 ; + std::map< file_index_t,std::string > *arg1 = (std::map< file_index_t,std::string > *) 0 ; + file_index_t *arg2 = 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< file_index_t,std::string > **)&jarg1; + arg2 = *(file_index_t **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "file_index_t const & reference is null"); + return 0; + } + { + try { + try { + result = (std::string *) &std_map_Sl_file_index_t_Sc_std_string_Sg__get(arg1,(file_index_t const &)*arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1index_1string_1map_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2, jstring jarg3) { + std::map< file_index_t,std::string > *arg1 = (std::map< file_index_t,std::string > *) 0 ; + file_index_t *arg2 = 0 ; + std::string *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< file_index_t,std::string > **)&jarg1; + arg2 = *(file_index_t **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "file_index_t const & reference is null"); + return ; + } + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + { + try { + std_map_Sl_file_index_t_Sc_std_string_Sg__set(arg1,(file_index_t const &)*arg2,(std::string const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1index_1string_1map_1erase(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + std::map< file_index_t,std::string > *arg1 = (std::map< file_index_t,std::string > *) 0 ; + file_index_t *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< file_index_t,std::string > **)&jarg1; + arg2 = *(file_index_t **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "file_index_t const & reference is null"); + return ; + } + { + try { + try { + std_map_Sl_file_index_t_Sc_std_string_Sg__erase(arg1,(file_index_t const &)*arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1index_1string_1map_1has_1key(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jboolean jresult = 0 ; + std::map< file_index_t,std::string > *arg1 = (std::map< file_index_t,std::string > *) 0 ; + file_index_t *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< file_index_t,std::string > **)&jarg1; + arg2 = *(file_index_t **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "file_index_t const & reference is null"); + return 0; + } + { + try { + result = (bool)std_map_Sl_file_index_t_Sc_std_string_Sg__has_key(arg1,(file_index_t const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1index_1string_1map_1keys(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::map< file_index_t,std::string > *arg1 = (std::map< file_index_t,std::string > *) 0 ; + std::vector< file_index_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< file_index_t,std::string > **)&jarg1; + { + try { + result = std_map_Sl_file_index_t_Sc_std_string_Sg__keys(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< file_index_t > **)&jresult = new std::vector< file_index_t >((const std::vector< file_index_t > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1file_1index_1string_1map(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::map< file_index_t,std::string > *arg1 = (std::map< file_index_t,std::string > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::map< file_index_t,std::string > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1long_1map_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::map< std::string,long > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::map< std::string,long > *)new std::map< std::string,long >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::map< std::string,long > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1long_1map_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::map< std::string,long > *arg1 = 0 ; + std::map< std::string,long > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,long > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::map< std::string,long > const & reference is null"); + return 0; + } + { + try { + result = (std::map< std::string,long > *)new std::map< std::string,long >((std::map< std::string,long > const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::map< std::string,long > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1long_1map_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::map< std::string,long > *arg1 = (std::map< std::string,long > *) 0 ; + unsigned int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,long > **)&jarg1; + { + try { + result = (unsigned int)((std::map< std::string,long > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1long_1map_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::map< std::string,long > *arg1 = (std::map< std::string,long > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,long > **)&jarg1; + { + try { + result = (bool)((std::map< std::string,long > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1long_1map_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::map< std::string,long > *arg1 = (std::map< std::string,long > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,long > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1long_1map_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jint jresult = 0 ; + std::map< std::string,long > *arg1 = (std::map< std::string,long > *) 0 ; + std::string *arg2 = 0 ; + long *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,long > **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + try { + result = (long *) &std_map_Sl_std_string_Sc_long_Sg__get(arg1,(std::string const &)*arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)*result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1long_1map_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3) { + std::map< std::string,long > *arg1 = (std::map< std::string,long > *) 0 ; + std::string *arg2 = 0 ; + long *arg3 = 0 ; + long temp3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,long > **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + temp3 = (long)jarg3; + arg3 = &temp3; + { + try { + std_map_Sl_std_string_Sc_long_Sg__set(arg1,(std::string const &)*arg2,(long const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1long_1map_1erase(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + std::map< std::string,long > *arg1 = (std::map< std::string,long > *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,long > **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + try { + std_map_Sl_std_string_Sc_long_Sg__erase(arg1,(std::string const &)*arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1long_1map_1has_1key(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jboolean jresult = 0 ; + std::map< std::string,long > *arg1 = (std::map< std::string,long > *) 0 ; + std::string *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,long > **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + result = (bool)std_map_Sl_std_string_Sc_long_Sg__has_key(arg1,(std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1long_1map_1keys(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::map< std::string,long > *arg1 = (std::map< std::string,long > *) 0 ; + std::vector< std::string > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,long > **)&jarg1; + { + try { + result = std_map_Sl_std_string_Sc_long_Sg__keys(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::string > **)&jresult = new std::vector< std::string >((const std::vector< std::string > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1string_1long_1map(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::map< std::string,long > *arg1 = (std::map< std::string,long > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::map< std::string,long > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1entry_1map_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::map< std::string,libtorrent::entry > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::map< std::string,libtorrent::entry > *)new std::map< std::string,libtorrent::entry >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::map< std::string,libtorrent::entry > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1entry_1map_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::map< std::string,libtorrent::entry > *arg1 = 0 ; + std::map< std::string,libtorrent::entry > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,libtorrent::entry > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::map< std::string,libtorrent::entry > const & reference is null"); + return 0; + } + { + try { + result = (std::map< std::string,libtorrent::entry > *)new std::map< std::string,libtorrent::entry >((std::map< std::string,libtorrent::entry > const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::map< std::string,libtorrent::entry > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1entry_1map_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::map< std::string,libtorrent::entry > *arg1 = (std::map< std::string,libtorrent::entry > *) 0 ; + unsigned int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,libtorrent::entry > **)&jarg1; + { + try { + result = (unsigned int)((std::map< std::string,libtorrent::entry > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1entry_1map_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::map< std::string,libtorrent::entry > *arg1 = (std::map< std::string,libtorrent::entry > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,libtorrent::entry > **)&jarg1; + { + try { + result = (bool)((std::map< std::string,libtorrent::entry > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1entry_1map_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::map< std::string,libtorrent::entry > *arg1 = (std::map< std::string,libtorrent::entry > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,libtorrent::entry > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1entry_1map_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jlong jresult = 0 ; + std::map< std::string,libtorrent::entry > *arg1 = (std::map< std::string,libtorrent::entry > *) 0 ; + std::string *arg2 = 0 ; + libtorrent::entry *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,libtorrent::entry > **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + try { + result = (libtorrent::entry *) &std_map_Sl_std_string_Sc_libtorrent_entry_Sg__get(arg1,(std::string const &)*arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1entry_1map_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3, jobject jarg3_) { + std::map< std::string,libtorrent::entry > *arg1 = (std::map< std::string,libtorrent::entry > *) 0 ; + std::string *arg2 = 0 ; + libtorrent::entry *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::map< std::string,libtorrent::entry > **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + arg3 = *(libtorrent::entry **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::entry const & reference is null"); + return ; + } + { + try { + std_map_Sl_std_string_Sc_libtorrent_entry_Sg__set(arg1,(std::string const &)*arg2,(libtorrent::entry const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1entry_1map_1erase(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + std::map< std::string,libtorrent::entry > *arg1 = (std::map< std::string,libtorrent::entry > *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,libtorrent::entry > **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + try { + std_map_Sl_std_string_Sc_libtorrent_entry_Sg__erase(arg1,(std::string const &)*arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1entry_1map_1has_1key(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jboolean jresult = 0 ; + std::map< std::string,libtorrent::entry > *arg1 = (std::map< std::string,libtorrent::entry > *) 0 ; + std::string *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,libtorrent::entry > **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + result = (bool)std_map_Sl_std_string_Sc_libtorrent_entry_Sg__has_key(arg1,(std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1entry_1map_1keys(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::map< std::string,libtorrent::entry > *arg1 = (std::map< std::string,libtorrent::entry > *) 0 ; + std::vector< std::string > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::map< std::string,libtorrent::entry > **)&jarg1; + { + try { + result = std_map_Sl_std_string_Sc_libtorrent_entry_Sg__keys(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::string > **)&jresult = new std::vector< std::string >((const std::vector< std::string > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1string_1entry_1map(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::map< std::string,libtorrent::entry > *arg1 = (std::map< std::string,libtorrent::entry > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::map< std::string,libtorrent::entry > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1alert_1ptr_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::alert * > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< libtorrent::alert * > *)new std::vector< libtorrent::alert * >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::alert * > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1ptr_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::alert * > *arg1 = (std::vector< libtorrent::alert * > *) 0 ; + std::vector< libtorrent::alert * >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::alert * > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::alert * > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1ptr_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< libtorrent::alert * > *arg1 = (std::vector< libtorrent::alert * > *) 0 ; + std::vector< libtorrent::alert * >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::alert * > **)&jarg1; + { + try { + result = ((std::vector< libtorrent::alert * > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1ptr_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< libtorrent::alert * > *arg1 = (std::vector< libtorrent::alert * > *) 0 ; + std::vector< libtorrent::alert * >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::alert * > **)&jarg1; + arg2 = (std::vector< libtorrent::alert * >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1ptr_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< libtorrent::alert * > *arg1 = (std::vector< libtorrent::alert * > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::alert * > **)&jarg1; + { + try { + result = (bool)((std::vector< libtorrent::alert * > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1ptr_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< libtorrent::alert * > *arg1 = (std::vector< libtorrent::alert * > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::alert * > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1ptr_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< libtorrent::alert * > *arg1 = (std::vector< libtorrent::alert * > *) 0 ; + std::vector< libtorrent::alert * >::value_type *arg2 = 0 ; + std::vector< libtorrent::alert * >::value_type temp2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< libtorrent::alert * > **)&jarg1; + temp2 = *(std::vector< libtorrent::alert * >::value_type *)&jarg2; + arg2 = (std::vector< libtorrent::alert * >::value_type *)&temp2; + { + try { + (arg1)->push_back((std::vector< libtorrent::alert * >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1ptr_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< libtorrent::alert * > *arg1 = (std::vector< libtorrent::alert * > *) 0 ; + int arg2 ; + std::vector< libtorrent::alert * >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< libtorrent::alert * > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< libtorrent::alert * >::value_type *) &std_vector_Sl_libtorrent_alert_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::alert * >::value_type *)&jresult = *result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1ptr_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< libtorrent::alert * > *arg1 = (std::vector< libtorrent::alert * > *) 0 ; + int arg2 ; + std::vector< libtorrent::alert * >::value_type *arg3 = 0 ; + std::vector< libtorrent::alert * >::value_type temp3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< libtorrent::alert * > **)&jarg1; + arg2 = (int)jarg2; + temp3 = *(std::vector< libtorrent::alert * >::value_type *)&jarg3; + arg3 = (std::vector< libtorrent::alert * >::value_type *)&temp3; + { + try { + try { + std_vector_Sl_libtorrent_alert_Sm__Sg__set(arg1,arg2,(libtorrent::alert *const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1alert_1ptr_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< libtorrent::alert * > *arg1 = (std::vector< libtorrent::alert * > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< libtorrent::alert * > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1ip_1interface_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< ip_interface > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< ip_interface > *)new std::vector< ip_interface >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< ip_interface > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< ip_interface > *arg1 = (std::vector< ip_interface > *) 0 ; + std::vector< ip_interface >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< ip_interface > **)&jarg1; + { + try { + result = ((std::vector< ip_interface > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< ip_interface > *arg1 = (std::vector< ip_interface > *) 0 ; + std::vector< ip_interface >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< ip_interface > **)&jarg1; + { + try { + result = ((std::vector< ip_interface > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< ip_interface > *arg1 = (std::vector< ip_interface > *) 0 ; + std::vector< ip_interface >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< ip_interface > **)&jarg1; + arg2 = (std::vector< ip_interface >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< ip_interface > *arg1 = (std::vector< ip_interface > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< ip_interface > **)&jarg1; + { + try { + result = (bool)((std::vector< ip_interface > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< ip_interface > *arg1 = (std::vector< ip_interface > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< ip_interface > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< ip_interface > *arg1 = (std::vector< ip_interface > *) 0 ; + std::vector< ip_interface >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< ip_interface > **)&jarg1; + arg2 = *(std::vector< ip_interface >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< ip_interface >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< ip_interface >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< ip_interface > *arg1 = (std::vector< ip_interface > *) 0 ; + int arg2 ; + std::vector< ip_interface >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< ip_interface > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< ip_interface >::value_type *) &std_vector_Sl_ip_interface_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< ip_interface >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< ip_interface > *arg1 = (std::vector< ip_interface > *) 0 ; + int arg2 ; + std::vector< ip_interface >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< ip_interface > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< ip_interface >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< ip_interface >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_ip_interface_Sg__set(arg1,arg2,(ip_interface const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1ip_1interface_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< ip_interface > *arg1 = (std::vector< ip_interface > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< ip_interface > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1ip_1route_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< ip_route > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< ip_route > *)new std::vector< ip_route >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< ip_route > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< ip_route > *arg1 = (std::vector< ip_route > *) 0 ; + std::vector< ip_route >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< ip_route > **)&jarg1; + { + try { + result = ((std::vector< ip_route > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< ip_route > *arg1 = (std::vector< ip_route > *) 0 ; + std::vector< ip_route >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< ip_route > **)&jarg1; + { + try { + result = ((std::vector< ip_route > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< ip_route > *arg1 = (std::vector< ip_route > *) 0 ; + std::vector< ip_route >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< ip_route > **)&jarg1; + arg2 = (std::vector< ip_route >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< ip_route > *arg1 = (std::vector< ip_route > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< ip_route > **)&jarg1; + { + try { + result = (bool)((std::vector< ip_route > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< ip_route > *arg1 = (std::vector< ip_route > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< ip_route > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + std::vector< ip_route > *arg1 = (std::vector< ip_route > *) 0 ; + std::vector< ip_route >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< ip_route > **)&jarg1; + arg2 = *(std::vector< ip_route >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< ip_route >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< ip_route >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + std::vector< ip_route > *arg1 = (std::vector< ip_route > *) 0 ; + int arg2 ; + std::vector< ip_route >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< ip_route > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< ip_route >::value_type *) &std_vector_Sl_ip_route_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< ip_route >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + std::vector< ip_route > *arg1 = (std::vector< ip_route > *) 0 ; + int arg2 ; + std::vector< ip_route >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(std::vector< ip_route > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< ip_route >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< ip_route >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_ip_route_Sg__set(arg1,arg2,(ip_route const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1ip_1route_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< ip_route > *arg1 = (std::vector< ip_route > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< ip_route > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1port_1mapping_1t_1vector(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< port_mapping_t > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::vector< port_mapping_t > *)new std::vector< port_mapping_t >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< port_mapping_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_port_1mapping_1t_1vector_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< port_mapping_t > *arg1 = (std::vector< port_mapping_t > *) 0 ; + std::vector< port_mapping_t >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< port_mapping_t > **)&jarg1; + { + try { + result = ((std::vector< port_mapping_t > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_port_1mapping_1t_1vector_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< port_mapping_t > *arg1 = (std::vector< port_mapping_t > *) 0 ; + std::vector< port_mapping_t >::size_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< port_mapping_t > **)&jarg1; + { + try { + result = ((std::vector< port_mapping_t > const *)arg1)->capacity(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_port_1mapping_1t_1vector_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + std::vector< port_mapping_t > *arg1 = (std::vector< port_mapping_t > *) 0 ; + std::vector< port_mapping_t >::size_type arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< port_mapping_t > **)&jarg1; + arg2 = (std::vector< port_mapping_t >::size_type)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_port_1mapping_1t_1vector_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::vector< port_mapping_t > *arg1 = (std::vector< port_mapping_t > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< port_mapping_t > **)&jarg1; + { + try { + result = (bool)((std::vector< port_mapping_t > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_port_1mapping_1t_1vector_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + std::vector< port_mapping_t > *arg1 = (std::vector< port_mapping_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< port_mapping_t > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_port_1mapping_1t_1vector_1push_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + std::vector< port_mapping_t > *arg1 = (std::vector< port_mapping_t > *) 0 ; + std::vector< port_mapping_t >::value_type *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< port_mapping_t > **)&jarg1; + arg2 = *(std::vector< port_mapping_t >::value_type **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< port_mapping_t >::value_type const & reference is null"); + return ; + } + { + try { + (arg1)->push_back((std::vector< port_mapping_t >::value_type const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_port_1mapping_1t_1vector_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + int jresult = 0 ; + std::vector< port_mapping_t > *arg1 = (std::vector< port_mapping_t > *) 0 ; + int arg2 ; + std::vector< port_mapping_t >::value_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< port_mapping_t > **)&jarg1; + arg2 = (int)jarg2; + { + try { + try { + result = (std::vector< port_mapping_t >::value_type *) &std_vector_Sl_port_mapping_t_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return 0; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< port_mapping_t >::value_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_port_1mapping_1t_1vector_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, int jarg3) { + std::vector< port_mapping_t > *arg1 = (std::vector< port_mapping_t > *) 0 ; + int arg2 ; + std::vector< port_mapping_t >::value_type *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< port_mapping_t > **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< port_mapping_t >::value_type **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< port_mapping_t >::value_type const & reference is null"); + return ; + } + { + try { + try { + std_vector_Sl_port_mapping_t_Sg__set(arg1,arg2,(port_mapping_t const &)*arg3); + } catch(std::out_of_range &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what()); + return ; + } + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1port_1mapping_1t_1vector(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::vector< port_mapping_t > *arg1 = (std::vector< port_mapping_t > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::vector< port_mapping_t > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bitset_196_1test(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + jboolean jresult = 0 ; + std::bitset< 96 > *arg1 = (std::bitset< 96 > *) 0 ; + std::size_t arg2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::bitset< 96 > **)&jarg1; + arg2 = (std::size_t)jarg2; + { + try { + result = (bool)((std::bitset< 96 > const *)arg1)->test(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bitset_196_1all(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::bitset< 96 > *arg1 = (std::bitset< 96 > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::bitset< 96 > **)&jarg1; + { + try { + result = (bool)((std::bitset< 96 > const *)arg1)->all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bitset_196_1any(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::bitset< 96 > *arg1 = (std::bitset< 96 > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::bitset< 96 > **)&jarg1; + { + try { + result = (bool)((std::bitset< 96 > const *)arg1)->any(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bitset_196_1none(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + std::bitset< 96 > *arg1 = (std::bitset< 96 > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::bitset< 96 > **)&jarg1; + { + try { + result = (bool)((std::bitset< 96 > const *)arg1)->none(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bitset_196_1count(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::bitset< 96 > *arg1 = (std::bitset< 96 > *) 0 ; + std::size_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::bitset< 96 > **)&jarg1; + { + try { + result = ((std::bitset< 96 > const *)arg1)->count(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bitset_196_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::bitset< 96 > *arg1 = (std::bitset< 96 > *) 0 ; + std::size_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::bitset< 96 > **)&jarg1; + { + try { + result = ((std::bitset< 96 > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bitset_196_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + jboolean jresult = 0 ; + std::bitset< 96 > *arg1 = (std::bitset< 96 > *) 0 ; + std::size_t arg2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::bitset< 96 > **)&jarg1; + arg2 = (std::size_t)jarg2; + { + try { + result = (bool)std_bitset_Sl_96_Sg__get(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1bitset_196(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::bitset< 96 > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (std::bitset< 96 > *)new std::bitset< 96 >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::bitset< 96 > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1bitset_196(JNIEnv *jenv, jclass jcls, jlong jarg1) { + std::bitset< 96 > *arg1 = (std::bitset< 96 > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(std::bitset< 96 > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1category_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1category_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_alert_category_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1category_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_alert_category_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1category_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_alert_category_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1category_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_alert_category_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1category_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_alert_category_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1category_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_alert_category_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1category_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_alert_category_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1category_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_alert_category_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1alert_1category_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *)new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1alert_1category_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::alert_category_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1piece_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1piece_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_add_piece_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1piece_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_add_piece_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1piece_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_add_piece_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1piece_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_add_piece_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1piece_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_add_piece_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1piece_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_add_piece_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1piece_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_add_piece_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1piece_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_add_piece_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1add_1piece_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1add_1piece_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::add_piece_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_status_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_status_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_status_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_status_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_status_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_status_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_status_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_status_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_status_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_status_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_status_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_status_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_status_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_status_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_status_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_status_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_status_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1status_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1status_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::status_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_deadline_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_deadline_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_deadline_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_deadline_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_deadline_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_deadline_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_deadline_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_deadline_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_deadline_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_deadline_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_deadline_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_deadline_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_deadline_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_deadline_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_deadline_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_deadline_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_deadline_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1deadline_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1deadline_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::deadline_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_session_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_session_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_session_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_session_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_session_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_session_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_session_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_session_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1session_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1session_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::session_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pause_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pause_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pause_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pause_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pause_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pause_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pause_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pause_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pause_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pause_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pause_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pause_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pause_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pause_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pause_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pause_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pause_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1pause_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1pause_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pause_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_resume_1data_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_resume_1data_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_resume_data_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_resume_1data_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_resume_data_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_resume_1data_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_resume_data_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_resume_1data_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_resume_data_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_resume_1data_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_resume_data_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_resume_1data_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_resume_data_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_resume_1data_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_resume_data_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_resume_1data_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_resume_data_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1resume_1data_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1resume_1data_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::resume_data_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_picker_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_picker_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_picker_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_picker_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_picker_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_picker_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_picker_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_picker_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1picker_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1picker_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::picker_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_remove_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_remove_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_remove_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_remove_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_remove_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_remove_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_remove_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_remove_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_remove_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_remove_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_remove_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_remove_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_remove_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_remove_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_remove_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_remove_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_remove_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1remove_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1remove_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::remove_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1state_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1state_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_save_state_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1state_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_save_state_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1state_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_save_state_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1state_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_save_state_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1state_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_save_state_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1state_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_save_state_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1state_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_save_state_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1state_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_save_state_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1save_1state_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1save_1state_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::save_state_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint64_t_Sc_libtorrent_torrent_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint64_t_Sc_libtorrent_torrent_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint64_t_Sc_libtorrent_torrent_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint64_t_Sc_libtorrent_torrent_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint64_t_Sc_libtorrent_torrent_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint64_t_Sc_libtorrent_torrent_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint64_t_Sc_libtorrent_torrent_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint64_t_Sc_libtorrent_torrent_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1torrent_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint64_t,libtorrent::torrent_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_peer_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_peer_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_peer_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_peer_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_peer_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_peer_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_peer_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_peer_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1peer_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::peer_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1source_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1source_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_peer_source_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1source_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_peer_source_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1source_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_peer_source_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1source_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_peer_source_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1source_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_peer_source_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1source_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_peer_source_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1source_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_peer_source_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1source_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_peer_source_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1peer_1source_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1source_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::peer_source_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pex_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pex_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pex_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pex_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pex_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pex_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pex_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pex_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pex_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pex_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pex_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pex_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pex_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pex_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pex_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pex_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_pex_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1pex_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1pex_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::pex_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bandwidth_1state_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bandwidth_1state_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_bandwidth_state_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bandwidth_1state_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_bandwidth_state_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bandwidth_1state_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_bandwidth_state_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bandwidth_1state_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_bandwidth_state_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bandwidth_1state_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_bandwidth_state_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bandwidth_1state_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_bandwidth_state_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bandwidth_1state_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_bandwidth_state_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bandwidth_1state_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_bandwidth_state_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1bandwidth_1state_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1bandwidth_1state_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::bandwidth_state_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_file_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_file_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_file_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_file_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_file_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_file_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_file_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_file_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1file_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1file_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::file_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_create_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_create_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_create_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_create_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_create_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_create_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_create_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint32_t_Sc_libtorrent_create_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1create_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1create_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint32_t,libtorrent::create_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reopen_1network_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reopen_1network_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reopen_network_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reopen_1network_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reopen_network_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reopen_1network_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reopen_network_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reopen_1network_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reopen_network_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reopen_1network_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reopen_network_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reopen_1network_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reopen_network_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reopen_1network_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reopen_network_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reopen_1network_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reopen_network_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1reopen_1network_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1reopen_1network_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reopen_network_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reannounce_1flags_1t_1all(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag >::SWIGTEMPLATEDISAMBIGUATOR all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reannounce_1flags_1t_1nonZero(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jarg1; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reannounce_flags_tag_Sg__nonZero(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reannounce_1flags_1t_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reannounce_flags_tag_Sg__eq(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reannounce_1flags_1t_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > const *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (bool)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reannounce_flags_tag_Sg__ne(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reannounce_1flags_1t_1or_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reannounce_flags_tag_Sg__or_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reannounce_1flags_1t_1and_1(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reannounce_flags_tag_Sg__and_(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reannounce_1flags_1t_1xor(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > arg2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > const *argp2 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jarg1; + argp2 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > const"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reannounce_flags_tag_Sg__xor(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reannounce_1flags_1t_1inv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *) 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jarg1; + { + try { + result = libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reannounce_flags_tag_Sg__inv(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jresult = new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag >((const libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_reannounce_1flags_1t_1to_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jarg1; + { + try { + result = (int)libtorrent_flags_bitfield_flag_Sl_std_uint8_t_Sc_libtorrent_reannounce_flags_tag_Sg__to_int(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1reannounce_1flags_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *)new libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1reannounce_1flags_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *arg1 = (libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::flags::bitfield_flag< std::uint8_t,libtorrent::reannounce_flags_tag > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1byte_1span(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::span< char > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::span< char > *)new libtorrent::span< char >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::span< char > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1span_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::span< char > *arg1 = (libtorrent::span< char > *) 0 ; + size_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char > **)&jarg1; + { + try { + result = ((libtorrent::span< char > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1span_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::span< char > *arg1 = (libtorrent::span< char > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char > **)&jarg1; + { + try { + result = (bool)((libtorrent::span< char > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jbyte JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1span_1front(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jbyte jresult = 0 ; + libtorrent::span< char > *arg1 = (libtorrent::span< char > *) 0 ; + int8_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char > **)&jarg1; + { + try { + result = (int8_t)((libtorrent::span< char > const *)arg1)->front(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jbyte)result; + return jresult; +} + + +SWIGEXPORT jbyte JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1span_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jbyte jresult = 0 ; + libtorrent::span< char > *arg1 = (libtorrent::span< char > *) 0 ; + int8_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char > **)&jarg1; + { + try { + result = (int8_t)((libtorrent::span< char > const *)arg1)->back(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jbyte)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1span_1first(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + jlong jresult = 0 ; + libtorrent::span< char > *arg1 = (libtorrent::span< char > *) 0 ; + size_t arg2 ; + libtorrent::span< char > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char > **)&jarg1; + arg2 = (size_t)jarg2; + { + try { + result = ((libtorrent::span< char > const *)arg1)->first(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::span< char > **)&jresult = new libtorrent::span< char >((const libtorrent::span< char > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1span_1last(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + jlong jresult = 0 ; + libtorrent::span< char > *arg1 = (libtorrent::span< char > *) 0 ; + size_t arg2 ; + libtorrent::span< char > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char > **)&jarg1; + arg2 = (size_t)jarg2; + { + try { + result = ((libtorrent::span< char > const *)arg1)->last(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::span< char > **)&jresult = new libtorrent::span< char >((const libtorrent::span< char > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1span_1subspan_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + jlong jresult = 0 ; + libtorrent::span< char > *arg1 = (libtorrent::span< char > *) 0 ; + size_t arg2 ; + libtorrent::span< char > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char > **)&jarg1; + arg2 = (size_t)jarg2; + { + try { + result = ((libtorrent::span< char > const *)arg1)->subspan(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::span< char > **)&jresult = new libtorrent::span< char >((const libtorrent::span< char > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1span_1subspan_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jlong jarg3) { + jlong jresult = 0 ; + libtorrent::span< char > *arg1 = (libtorrent::span< char > *) 0 ; + size_t arg2 ; + size_t arg3 ; + libtorrent::span< char > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char > **)&jarg1; + arg2 = (size_t)jarg2; + arg3 = (size_t)jarg3; + { + try { + result = ((libtorrent::span< char > const *)arg1)->subspan(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::span< char > **)&jresult = new libtorrent::span< char >((const libtorrent::span< char > &)result); + return jresult; +} + + +SWIGEXPORT jbyte JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1span_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + jbyte jresult = 0 ; + libtorrent::span< char > *arg1 = (libtorrent::span< char > *) 0 ; + size_t arg2 ; + int8_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char > **)&jarg1; + arg2 = (size_t)jarg2; + { + try { + result = (int8_t)libtorrent_span_Sl_char_Sg__get(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jbyte)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1span_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jbyte jarg3) { + libtorrent::span< char > *arg1 = (libtorrent::span< char > *) 0 ; + size_t arg2 ; + int8_t arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char > **)&jarg1; + arg2 = (size_t)jarg2; + arg3 = (int8_t)jarg3; + { + try { + libtorrent_span_Sl_char_Sg__set(arg1,arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1byte_1span(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::span< char > *arg1 = (libtorrent::span< char > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::span< char > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1byte_1const_1span(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::span< char const > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::span< char const > *)new libtorrent::span< char const >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::span< char const > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1const_1span_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::span< char const > *arg1 = (libtorrent::span< char const > *) 0 ; + size_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char const > **)&jarg1; + { + try { + result = ((libtorrent::span< char const > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1const_1span_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::span< char const > *arg1 = (libtorrent::span< char const > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char const > **)&jarg1; + { + try { + result = (bool)((libtorrent::span< char const > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jbyte JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1const_1span_1front(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jbyte jresult = 0 ; + libtorrent::span< char const > *arg1 = (libtorrent::span< char const > *) 0 ; + int8_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char const > **)&jarg1; + { + try { + result = (int8_t)((libtorrent::span< char const > const *)arg1)->front(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jbyte)result; + return jresult; +} + + +SWIGEXPORT jbyte JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1const_1span_1back(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jbyte jresult = 0 ; + libtorrent::span< char const > *arg1 = (libtorrent::span< char const > *) 0 ; + int8_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char const > **)&jarg1; + { + try { + result = (int8_t)((libtorrent::span< char const > const *)arg1)->back(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jbyte)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1const_1span_1first(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + jlong jresult = 0 ; + libtorrent::span< char const > *arg1 = (libtorrent::span< char const > *) 0 ; + size_t arg2 ; + libtorrent::span< char const > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char const > **)&jarg1; + arg2 = (size_t)jarg2; + { + try { + result = ((libtorrent::span< char const > const *)arg1)->first(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::span< char const > **)&jresult = new libtorrent::span< char const >((const libtorrent::span< char const > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1const_1span_1last(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + jlong jresult = 0 ; + libtorrent::span< char const > *arg1 = (libtorrent::span< char const > *) 0 ; + size_t arg2 ; + libtorrent::span< char const > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char const > **)&jarg1; + arg2 = (size_t)jarg2; + { + try { + result = ((libtorrent::span< char const > const *)arg1)->last(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::span< char const > **)&jresult = new libtorrent::span< char const >((const libtorrent::span< char const > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1const_1span_1subspan_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + jlong jresult = 0 ; + libtorrent::span< char const > *arg1 = (libtorrent::span< char const > *) 0 ; + size_t arg2 ; + libtorrent::span< char const > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char const > **)&jarg1; + arg2 = (size_t)jarg2; + { + try { + result = ((libtorrent::span< char const > const *)arg1)->subspan(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::span< char const > **)&jresult = new libtorrent::span< char const >((const libtorrent::span< char const > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1const_1span_1subspan_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jlong jarg3) { + jlong jresult = 0 ; + libtorrent::span< char const > *arg1 = (libtorrent::span< char const > *) 0 ; + size_t arg2 ; + size_t arg3 ; + libtorrent::span< char const > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char const > **)&jarg1; + arg2 = (size_t)jarg2; + arg3 = (size_t)jarg3; + { + try { + result = ((libtorrent::span< char const > const *)arg1)->subspan(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::span< char const > **)&jresult = new libtorrent::span< char const >((const libtorrent::span< char const > &)result); + return jresult; +} + + +SWIGEXPORT jbyte JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_byte_1const_1span_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + jbyte jresult = 0 ; + libtorrent::span< char const > *arg1 = (libtorrent::span< char const > *) 0 ; + size_t arg2 ; + int8_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::span< char const > **)&jarg1; + arg2 = (size_t)jarg2; + { + try { + result = (int8_t)libtorrent_span_Sl_char_SS_const_Sg__get(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jbyte)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1byte_1const_1span(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::span< char const > *arg1 = (libtorrent::span< char const > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::span< char const > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1size(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + size_t result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::sha1_hash::size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1sha1_1hash_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::sha1_hash *)new libtorrent::sha1_hash(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1sha1_1hash_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::sha1_hash *arg1 = 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::sha1_hash **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::sha1_hash *)new libtorrent::sha1_hash((libtorrent::sha1_hash const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1max(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::sha1_hash result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::sha1_hash::max(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::sha1_hash **)&jresult = new libtorrent::sha1_hash((const libtorrent::sha1_hash &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1min(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::sha1_hash result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::sha1_hash::min(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::sha1_hash **)&jresult = new libtorrent::sha1_hash((const libtorrent::sha1_hash &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::sha1_hash *arg1 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::sha1_hash **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1is_1all_1zeros(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::sha1_hash *arg1 = (libtorrent::sha1_hash *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::sha1_hash **)&jarg1; + { + try { + result = (bool)(arg1)->is_all_zeros(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1count_1leading_1zeroes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::sha1_hash *arg1 = (libtorrent::sha1_hash *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::sha1_hash **)&jarg1; + { + try { + result = (int)(arg1)->count_leading_zeroes(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1sha1_1hash_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< int8_t > *arg1 = 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int8_t > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::sha1_hash *)new_libtorrent_sha1_hash__SWIG_2((std::vector< signed char > const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1hash_1code(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::sha1_hash *arg1 = (libtorrent::sha1_hash *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::sha1_hash **)&jarg1; + { + try { + result = (int)libtorrent_sha1_hash_hash_code(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1to_1bytes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::sha1_hash *arg1 = (libtorrent::sha1_hash *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::sha1_hash **)&jarg1; + { + try { + result = libtorrent_sha1_hash_to_bytes(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1to_1hex(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::sha1_hash *arg1 = (libtorrent::sha1_hash *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::sha1_hash **)&jarg1; + { + try { + result = libtorrent_sha1_hash_to_hex(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1op_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::sha1_hash *arg1 = (libtorrent::sha1_hash *) 0 ; + libtorrent::sha1_hash *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::sha1_hash **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return 0; + } + { + try { + result = (bool)libtorrent_sha1_hash_op_eq((libtorrent::sha1_hash const *)arg1,(libtorrent::sha1_hash const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1op_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::sha1_hash *arg1 = (libtorrent::sha1_hash *) 0 ; + libtorrent::sha1_hash *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::sha1_hash **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return 0; + } + { + try { + result = (bool)libtorrent_sha1_hash_op_ne((libtorrent::sha1_hash const *)arg1,(libtorrent::sha1_hash const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1op_1lt(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::sha1_hash *arg1 = (libtorrent::sha1_hash *) 0 ; + libtorrent::sha1_hash *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::sha1_hash **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return 0; + } + { + try { + result = (bool)libtorrent_sha1_hash_op_lt((libtorrent::sha1_hash const *)arg1,(libtorrent::sha1_hash const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sha1_1hash_1compare(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jint jresult = 0 ; + libtorrent::sha1_hash *arg1 = 0 ; + libtorrent::sha1_hash *arg2 = 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::sha1_hash **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return 0; + } + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return 0; + } + { + try { + result = (int)libtorrent_sha1_hash_compare((libtorrent::sha1_hash const &)*arg1,(libtorrent::sha1_hash const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1sha1_1hash(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::sha1_hash *arg1 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::sha1_hash **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bloom_1filter_1128_1find(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::bloom_filter< 128 > *arg1 = (libtorrent::bloom_filter< 128 > *) 0 ; + libtorrent::sha1_hash *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::bloom_filter< 128 > **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return 0; + } + { + try { + result = (bool)((libtorrent::bloom_filter< 128 > const *)arg1)->find((libtorrent::sha1_hash const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bloom_1filter_1128_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::bloom_filter< 128 > *arg1 = (libtorrent::bloom_filter< 128 > *) 0 ; + libtorrent::sha1_hash *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::bloom_filter< 128 > **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return ; + } + { + try { + (arg1)->set((libtorrent::sha1_hash const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bloom_1filter_1128_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::bloom_filter< 128 > *arg1 = (libtorrent::bloom_filter< 128 > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bloom_filter< 128 > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jfloat JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bloom_1filter_1128_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jfloat jresult = 0 ; + libtorrent::bloom_filter< 128 > *arg1 = (libtorrent::bloom_filter< 128 > *) 0 ; + float result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bloom_filter< 128 > **)&jarg1; + { + try { + result = (float)((libtorrent::bloom_filter< 128 > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jfloat)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1bloom_1filter_1128(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::bloom_filter< 128 > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::bloom_filter< 128 > *)new libtorrent::bloom_filter< 128 >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::bloom_filter< 128 > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bloom_1filter_1128_1to_1bytes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::bloom_filter< 128 > *arg1 = (libtorrent::bloom_filter< 128 > *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bloom_filter< 128 > **)&jarg1; + { + try { + result = libtorrent_bloom_filter_Sl_128_Sg__to_bytes((libtorrent::bloom_filter< 128 > const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bloom_1filter_1128_1from_1bytes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::bloom_filter< 128 > *arg1 = (libtorrent::bloom_filter< 128 > *) 0 ; + std::vector< int8_t > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::bloom_filter< 128 > **)&jarg1; + arg2 = *(std::vector< int8_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > const & reference is null"); + return ; + } + { + try { + libtorrent_bloom_filter_Sl_128_Sg__from_bytes(arg1,(std::vector< signed char > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1bloom_1filter_1128(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::bloom_filter< 128 > *arg1 = (libtorrent::bloom_filter< 128 > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::bloom_filter< 128 > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bloom_1filter_1256_1find(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::bloom_filter< 256 > *arg1 = (libtorrent::bloom_filter< 256 > *) 0 ; + libtorrent::sha1_hash *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::bloom_filter< 256 > **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return 0; + } + { + try { + result = (bool)((libtorrent::bloom_filter< 256 > const *)arg1)->find((libtorrent::sha1_hash const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bloom_1filter_1256_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::bloom_filter< 256 > *arg1 = (libtorrent::bloom_filter< 256 > *) 0 ; + libtorrent::sha1_hash *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::bloom_filter< 256 > **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return ; + } + { + try { + (arg1)->set((libtorrent::sha1_hash const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bloom_1filter_1256_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::bloom_filter< 256 > *arg1 = (libtorrent::bloom_filter< 256 > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bloom_filter< 256 > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jfloat JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bloom_1filter_1256_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jfloat jresult = 0 ; + libtorrent::bloom_filter< 256 > *arg1 = (libtorrent::bloom_filter< 256 > *) 0 ; + float result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bloom_filter< 256 > **)&jarg1; + { + try { + result = (float)((libtorrent::bloom_filter< 256 > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jfloat)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1bloom_1filter_1256(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::bloom_filter< 256 > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::bloom_filter< 256 > *)new libtorrent::bloom_filter< 256 >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::bloom_filter< 256 > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bloom_1filter_1256_1to_1bytes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::bloom_filter< 256 > *arg1 = (libtorrent::bloom_filter< 256 > *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bloom_filter< 256 > **)&jarg1; + { + try { + result = libtorrent_bloom_filter_Sl_256_Sg__to_bytes((libtorrent::bloom_filter< 256 > const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bloom_1filter_1256_1from_1bytes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::bloom_filter< 256 > *arg1 = (libtorrent::bloom_filter< 256 > *) 0 ; + std::vector< int8_t > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::bloom_filter< 256 > **)&jarg1; + arg2 = *(std::vector< int8_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > const & reference is null"); + return ; + } + { + try { + libtorrent_bloom_filter_Sl_256_Sg__from_bytes(arg1,(std::vector< signed char > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1bloom_1filter_1256(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::bloom_filter< 256 > *arg1 = (libtorrent::bloom_filter< 256 > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::bloom_filter< 256 > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_string_1view_1to_1bytes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::string_view *arg1 = (libtorrent::string_view *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::string_view **)&jarg1; + { + try { + result = libtorrent_string_view_to_bytes(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1string_1view(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::string_view *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::string_view *)new libtorrent::string_view(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::string_view **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1string_1view(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::string_view *arg1 = (libtorrent::string_view *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::string_view **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1address_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::address *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::address *)new libtorrent::address(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::address **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1address_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::address *arg1 = 0 ; + libtorrent::address *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::address **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::address const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::address *)new libtorrent::address((libtorrent::address const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::address **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1is_1v4(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::address *arg1 = (libtorrent::address *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::address **)&jarg1; + { + try { + result = (bool)(arg1)->is_v4(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1is_1v6(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::address *arg1 = (libtorrent::address *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::address **)&jarg1; + { + try { + result = (bool)(arg1)->is_v6(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1to_1string(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jstring jresult = 0 ; + libtorrent::address *arg1 = (libtorrent::address *) 0 ; + boost::system::error_code arg2 ; + boost::system::error_code *argp2 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::address **)&jarg1; + argp2 = *(boost::system::error_code **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null boost::system::error_code"); + return 0; + } + arg2 = *argp2; + { + try { + result = (arg1)->to_string(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1is_1loopback(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::address *arg1 = (libtorrent::address *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::address **)&jarg1; + { + try { + result = (bool)(arg1)->is_loopback(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1is_1unspecified(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::address *arg1 = (libtorrent::address *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::address **)&jarg1; + { + try { + result = (bool)(arg1)->is_unspecified(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1is_1multicast(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::address *arg1 = (libtorrent::address *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::address **)&jarg1; + { + try { + result = (bool)(arg1)->is_multicast(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1op_1lt(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::address *arg1 = (libtorrent::address *) 0 ; + libtorrent::address *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::address **)&jarg1; + arg2 = *(libtorrent::address **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::address const & reference is null"); + return 0; + } + { + try { + result = (bool)libtorrent_address_op_lt(arg1,(libtorrent::address const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1compare(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jint jresult = 0 ; + libtorrent::address *arg1 = 0 ; + libtorrent::address *arg2 = 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::address **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::address const & reference is null"); + return 0; + } + arg2 = *(libtorrent::address **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::address const & reference is null"); + return 0; + } + { + try { + result = (int)libtorrent_address_compare((libtorrent::address const &)*arg1,(libtorrent::address const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1from_1string(JNIEnv *jenv, jclass jcls, jstring jarg1, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + std::string *arg1 = 0 ; + boost::system::error_code *arg2 = 0 ; + libtorrent::address result; + + (void)jenv; + (void)jcls; + (void)jarg2_; + if(!jarg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(jarg1, 0); + if (!arg1_pstr) return 0; + std::string arg1_str(arg1_pstr); + arg1 = &arg1_str; + jenv->ReleaseStringUTFChars(jarg1, arg1_pstr); + arg2 = *(boost::system::error_code **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "boost::system::error_code & reference is null"); + return 0; + } + { + try { + result = libtorrent_address_from_string((std::string const &)*arg1,*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::address **)&jresult = new libtorrent::address((const libtorrent::address &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1address(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::address *arg1 = (libtorrent::address *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::address **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1tcp_1endpoint_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::tcp::endpoint *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::tcp::endpoint *)new libtorrent::tcp::endpoint(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::tcp::endpoint **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1tcp_1endpoint_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + libtorrent::address arg1 ; + unsigned short arg2 ; + libtorrent::address *argp1 ; + libtorrent::tcp::endpoint *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + argp1 = *(libtorrent::address **)&jarg1; + if (!argp1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::address"); + return 0; + } + arg1 = *argp1; + arg2 = (unsigned short)jarg2; + { + try { + result = (libtorrent::tcp::endpoint *)new libtorrent::tcp::endpoint(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::tcp::endpoint **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1tcp_1endpoint_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::tcp::endpoint *arg1 = 0 ; + libtorrent::tcp::endpoint *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tcp::endpoint **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::tcp::endpoint const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::tcp::endpoint *)new libtorrent::tcp::endpoint((libtorrent::tcp::endpoint const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::tcp::endpoint **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tcp_1endpoint_1port(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::tcp::endpoint *arg1 = (libtorrent::tcp::endpoint *) 0 ; + unsigned short result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tcp::endpoint **)&jarg1; + { + try { + result = (unsigned short)(arg1)->port(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tcp_1endpoint_1address(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::tcp::endpoint *arg1 = (libtorrent::tcp::endpoint *) 0 ; + libtorrent::address result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tcp::endpoint **)&jarg1; + { + try { + result = (arg1)->address(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::address **)&jresult = new libtorrent::address((const libtorrent::address &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1tcp_1endpoint(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::tcp::endpoint *arg1 = (libtorrent::tcp::endpoint *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::tcp::endpoint **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1udp_1endpoint_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::udp::endpoint *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::udp::endpoint *)new libtorrent::udp::endpoint(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::udp::endpoint **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1udp_1endpoint_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + libtorrent::address arg1 ; + unsigned short arg2 ; + libtorrent::address *argp1 ; + libtorrent::udp::endpoint *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + argp1 = *(libtorrent::address **)&jarg1; + if (!argp1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::address"); + return 0; + } + arg1 = *argp1; + arg2 = (unsigned short)jarg2; + { + try { + result = (libtorrent::udp::endpoint *)new libtorrent::udp::endpoint(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::udp::endpoint **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1udp_1endpoint_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::udp::endpoint *arg1 = 0 ; + libtorrent::udp::endpoint *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::udp::endpoint **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::udp::endpoint const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::udp::endpoint *)new libtorrent::udp::endpoint((libtorrent::udp::endpoint const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::udp::endpoint **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1endpoint_1port(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::udp::endpoint *arg1 = (libtorrent::udp::endpoint *) 0 ; + unsigned short result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::udp::endpoint **)&jarg1; + { + try { + result = (unsigned short)(arg1)->port(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1endpoint_1address(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::udp::endpoint *arg1 = (libtorrent::udp::endpoint *) 0 ; + libtorrent::address result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::udp::endpoint **)&jarg1; + { + try { + result = (arg1)->address(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::address **)&jresult = new libtorrent::address((const libtorrent::address &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1udp_1endpoint(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::udp::endpoint *arg1 = (libtorrent::udp::endpoint *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::udp::endpoint **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::entry *arg1 = (libtorrent::entry *) 0 ; + libtorrent::entry::data_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::entry **)&jarg1; + { + try { + result = (libtorrent::entry::data_type)((libtorrent::entry const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1entry_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::entry::dictionary_type arg1 ; + libtorrent::entry::dictionary_type *argp1 ; + libtorrent::entry *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + argp1 = *(libtorrent::entry::dictionary_type **)&jarg1; + if (!argp1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::entry::dictionary_type"); + return 0; + } + arg1 = *argp1; + { + try { + result = (libtorrent::entry *)new libtorrent::entry(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1entry_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::span< char const > arg1 ; + libtorrent::span< char const > *argp1 ; + libtorrent::entry *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + argp1 = *(libtorrent::span< char const > **)&jarg1; + if (!argp1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::span< char const >"); + return 0; + } + arg1 = *argp1; + { + try { + result = (libtorrent::entry *)new libtorrent::entry(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1entry_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jstring jarg1) { + jlong jresult = 0 ; + libtorrent::entry::string_type arg1 ; + libtorrent::entry *result = 0 ; + + (void)jenv; + (void)jcls; + if(!jarg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(jarg1, 0); + if (!arg1_pstr) return 0; + (&arg1)->assign(arg1_pstr); + jenv->ReleaseStringUTFChars(jarg1, arg1_pstr); + { + try { + result = (libtorrent::entry *)new libtorrent::entry(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1entry_1_1SWIG_13(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::entry::list_type arg1 ; + libtorrent::entry::list_type *argp1 ; + libtorrent::entry *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + argp1 = *(libtorrent::entry::list_type **)&jarg1; + if (!argp1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::entry::list_type"); + return 0; + } + arg1 = *argp1; + { + try { + result = (libtorrent::entry *)new libtorrent::entry(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1entry_1_1SWIG_14(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong jresult = 0 ; + libtorrent::entry::integer_type arg1 ; + libtorrent::entry *result = 0 ; + + (void)jenv; + (void)jcls; + arg1 = (libtorrent::entry::integer_type)jarg1; + { + try { + result = (libtorrent::entry *)new libtorrent::entry(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1entry_1_1SWIG_15(JNIEnv *jenv, jclass jcls, jint jarg1) { + jlong jresult = 0 ; + libtorrent::entry::data_type arg1 ; + libtorrent::entry *result = 0 ; + + (void)jenv; + (void)jcls; + arg1 = (libtorrent::entry::data_type)jarg1; + { + try { + result = (libtorrent::entry *)new libtorrent::entry(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1entry_1_1SWIG_16(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::entry *arg1 = 0 ; + libtorrent::entry *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::entry **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::entry const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::entry *)new libtorrent::entry((libtorrent::entry const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1entry_1_1SWIG_17(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::entry *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::entry *)new libtorrent::entry(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1integer(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::entry *arg1 = (libtorrent::entry *) 0 ; + libtorrent::entry::integer_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::entry **)&jarg1; + { + try { + result = (libtorrent::entry::integer_type *) &((libtorrent::entry const *)arg1)->integer(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)*result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1string(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::entry *arg1 = (libtorrent::entry *) 0 ; + libtorrent::entry::string_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::entry **)&jarg1; + { + try { + result = (libtorrent::entry::string_type *) &((libtorrent::entry const *)arg1)->string(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1list(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::entry *arg1 = (libtorrent::entry *) 0 ; + libtorrent::entry::list_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::entry **)&jarg1; + { + try { + result = (libtorrent::entry::list_type *) &(arg1)->list(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry::list_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1dict(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::entry *arg1 = (libtorrent::entry *) 0 ; + libtorrent::entry::dictionary_type *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::entry **)&jarg1; + { + try { + result = (libtorrent::entry::dictionary_type *) &(arg1)->dict(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry::dictionary_type **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1find_1key(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::entry *arg1 = (libtorrent::entry *) 0 ; + libtorrent::string_view arg2 ; + libtorrent::string_view *argp2 ; + libtorrent::entry *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::entry **)&jarg1; + argp2 = *(libtorrent::string_view **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::string_view"); + return 0; + } + arg2 = *argp2; + { + try { + result = (libtorrent::entry *)(arg1)->find_key(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1to_1string(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::entry *arg1 = (libtorrent::entry *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::entry **)&jarg1; + { + try { + result = ((libtorrent::entry const *)arg1)->to_string(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jlong jresult = 0 ; + libtorrent::entry *arg1 = (libtorrent::entry *) 0 ; + std::string *arg2 = 0 ; + libtorrent::entry *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::entry **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + result = (libtorrent::entry *) &libtorrent_entry_get(arg1,(std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1set_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3) { + libtorrent::entry *arg1 = (libtorrent::entry *) 0 ; + std::string *arg2 = 0 ; + std::string *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::entry **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + { + try { + libtorrent_entry_set__SWIG_0(arg1,(std::string const &)*arg2,(std::string const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1set_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3, jobject jarg3_) { + libtorrent::entry *arg1 = (libtorrent::entry *) 0 ; + std::string *arg2 = 0 ; + std::vector< int8_t > *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(libtorrent::entry **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + arg3 = *(std::vector< int8_t > **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > const & reference is null"); + return ; + } + { + try { + libtorrent_entry_set__SWIG_1(arg1,(std::string const &)*arg2,(std::vector< signed char > const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1set_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3) { + libtorrent::entry *arg1 = (libtorrent::entry *) 0 ; + std::string *arg2 = 0 ; + long long *arg3 = 0 ; + long long temp3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::entry **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + temp3 = (long long)jarg3; + arg3 = &temp3; + { + try { + libtorrent_entry_set__SWIG_2(arg1,(std::string const &)*arg2,(long long const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1set_1_1SWIG_13(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3, jobject jarg3_) { + libtorrent::entry *arg1 = (libtorrent::entry *) 0 ; + std::string *arg2 = 0 ; + libtorrent::entry *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(libtorrent::entry **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + arg3 = *(libtorrent::entry **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::entry const & reference is null"); + return ; + } + { + try { + libtorrent_entry_set__SWIG_3(arg1,(std::string const &)*arg2,(libtorrent::entry const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1string_1bytes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::entry *arg1 = (libtorrent::entry *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::entry **)&jarg1; + { + try { + result = libtorrent_entry_string_bytes(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1preformatted_1bytes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::entry *arg1 = (libtorrent::entry *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::entry **)&jarg1; + { + try { + result = libtorrent_entry_preformatted_bytes(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1bencode(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::entry *arg1 = (libtorrent::entry *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::entry **)&jarg1; + { + try { + result = libtorrent_entry_bencode(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1from_1string_1bytes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< int8_t > *arg1 = 0 ; + libtorrent::entry result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int8_t > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > const & reference is null"); + return 0; + } + { + try { + result = libtorrent_entry_from_string_bytes((std::vector< signed char > const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry **)&jresult = new libtorrent::entry((const libtorrent::entry &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1from_1preformatted_1bytes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< int8_t > *arg1 = 0 ; + libtorrent::entry result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int8_t > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > const & reference is null"); + return 0; + } + { + try { + result = libtorrent_entry_from_preformatted_bytes((std::vector< signed char > const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry **)&jresult = new libtorrent::entry((const libtorrent::entry &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_entry_1bdecode(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< int8_t > *arg1 = 0 ; + libtorrent::entry result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int8_t > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return 0; + } + { + try { + result = libtorrent_entry_bdecode(*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry **)&jresult = new libtorrent::entry((const libtorrent::entry &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1entry(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::entry *arg1 = (libtorrent::entry *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::entry **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1piece_1index_1bitfield_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::typed_bitfield< piece_index_t > *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::typed_bitfield< piece_index_t > *)new libtorrent::typed_bitfield< piece_index_t >(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::typed_bitfield< piece_index_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1piece_1index_1bitfield_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jint jarg1) { + jlong jresult = 0 ; + int arg1 ; + libtorrent::typed_bitfield< piece_index_t > *result = 0 ; + + (void)jenv; + (void)jcls; + arg1 = (int)jarg1; + { + try { + result = (libtorrent::typed_bitfield< piece_index_t > *)new libtorrent::typed_bitfield< piece_index_t >(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::typed_bitfield< piece_index_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1piece_1index_1bitfield_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jint jarg1, jboolean jarg2) { + jlong jresult = 0 ; + int arg1 ; + bool arg2 ; + libtorrent::typed_bitfield< piece_index_t > *result = 0 ; + + (void)jenv; + (void)jcls; + arg1 = (int)jarg1; + arg2 = jarg2 ? true : false; + { + try { + result = (libtorrent::typed_bitfield< piece_index_t > *)new libtorrent::typed_bitfield< piece_index_t >(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::typed_bitfield< piece_index_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1piece_1index_1bitfield_1_1SWIG_13(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::typed_bitfield< piece_index_t > *arg1 = 0 ; + libtorrent::typed_bitfield< piece_index_t > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::typed_bitfield< piece_index_t > const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::typed_bitfield< piece_index_t > *)new libtorrent::typed_bitfield< piece_index_t >((libtorrent::typed_bitfield< piece_index_t > const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::typed_bitfield< piece_index_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1get_1bit(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jboolean jresult = 0 ; + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + piece_index_t arg2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + { + try { + result = (bool)((libtorrent::typed_bitfield< piece_index_t > const *)arg1)->get_bit(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1clear_1bit(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + piece_index_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + { + try { + (arg1)->clear_bit(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1set_1bit(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + piece_index_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + { + try { + (arg1)->set_bit(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1end_1index(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + { + try { + result = ((libtorrent::typed_bitfield< piece_index_t > const *)arg1)->end_index(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1all_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + { + try { + result = (bool)((libtorrent::typed_bitfield< piece_index_t > const *)arg1)->all_set(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1none_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + { + try { + result = (bool)((libtorrent::typed_bitfield< piece_index_t > const *)arg1)->none_set(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + { + try { + result = (int)((libtorrent::typed_bitfield< piece_index_t > const *)arg1)->size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1num_1words(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + { + try { + result = (int)((libtorrent::typed_bitfield< piece_index_t > const *)arg1)->num_words(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1empty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + { + try { + result = (bool)((libtorrent::typed_bitfield< piece_index_t > const *)arg1)->empty(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1count(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + { + try { + result = (int)((libtorrent::typed_bitfield< piece_index_t > const *)arg1)->count(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1find_1first_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + { + try { + result = (int)((libtorrent::typed_bitfield< piece_index_t > const *)arg1)->find_first_set(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1find_1last_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + { + try { + result = (int)((libtorrent::typed_bitfield< piece_index_t > const *)arg1)->find_last_clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1resize_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jboolean jarg3) { + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + int arg2 ; + bool arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + arg2 = (int)jarg2; + arg3 = jarg3 ? true : false; + { + try { + (arg1)->resize(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1resize_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + arg2 = (int)jarg2; + { + try { + (arg1)->resize(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1set_1all(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + { + try { + (arg1)->set_all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1clear_1all(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + { + try { + (arg1)->clear_all(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1index_1bitfield_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1piece_1index_1bitfield(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::typed_bitfield< piece_index_t > *arg1 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1info_1ignore_1unchoke_1slots_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::peer_class_info *arg1 = (libtorrent::peer_class_info *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_info **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->ignore_unchoke_slots = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1info_1ignore_1unchoke_1slots_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::peer_class_info *arg1 = (libtorrent::peer_class_info *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_info **)&jarg1; + result = (bool) ((arg1)->ignore_unchoke_slots); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1info_1connection_1limit_1factor_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_class_info *arg1 = (libtorrent::peer_class_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->connection_limit_factor = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1info_1connection_1limit_1factor_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_class_info *arg1 = (libtorrent::peer_class_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_info **)&jarg1; + result = (int) ((arg1)->connection_limit_factor); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1info_1label_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::peer_class_info *arg1 = (libtorrent::peer_class_info *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_info **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if (arg1) (arg1)->label = *arg2; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1info_1label_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_class_info *arg1 = (libtorrent::peer_class_info *) 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_info **)&jarg1; + result = (std::string *) & ((arg1)->label); + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1info_1upload_1limit_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_class_info *arg1 = (libtorrent::peer_class_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->upload_limit = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1info_1upload_1limit_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_class_info *arg1 = (libtorrent::peer_class_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_info **)&jarg1; + result = (int) ((arg1)->upload_limit); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1info_1download_1limit_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_class_info *arg1 = (libtorrent::peer_class_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->download_limit = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1info_1download_1limit_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_class_info *arg1 = (libtorrent::peer_class_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_info **)&jarg1; + result = (int) ((arg1)->download_limit); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1info_1upload_1priority_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_class_info *arg1 = (libtorrent::peer_class_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->upload_priority = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1info_1upload_1priority_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_class_info *arg1 = (libtorrent::peer_class_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_info **)&jarg1; + result = (int) ((arg1)->upload_priority); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1info_1download_1priority_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_class_info *arg1 = (libtorrent::peer_class_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->download_priority = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1info_1download_1priority_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_class_info *arg1 = (libtorrent::peer_class_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_info **)&jarg1; + result = (int) ((arg1)->download_priority); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1peer_1class_1info(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::peer_class_info *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::peer_class_info *)new libtorrent::peer_class_info(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_class_info **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1class_1info(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::peer_class_info *arg1 = (libtorrent::peer_class_info *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::peer_class_info **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1last_1error_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + libtorrent::error_code *arg2 = (libtorrent::error_code *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + arg2 = *(libtorrent::error_code **)&jarg2; + if (arg1) (arg1)->last_error = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1last_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->last_error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1local_1endpoint_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + libtorrent::tcp::endpoint *arg2 = (libtorrent::tcp::endpoint *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + arg2 = *(libtorrent::tcp::endpoint **)&jarg2; + if (arg1) (arg1)->local_endpoint = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1local_1endpoint_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + libtorrent::tcp::endpoint *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + result = (libtorrent::tcp::endpoint *)& ((arg1)->local_endpoint); + *(libtorrent::tcp::endpoint **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1scrape_1incomplete_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->scrape_incomplete = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1scrape_1incomplete_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + result = (int) ((arg1)->scrape_incomplete); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1scrape_1complete_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->scrape_complete = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1scrape_1complete_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + result = (int) ((arg1)->scrape_complete); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1scrape_1downloaded_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->scrape_downloaded = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1scrape_1downloaded_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + result = (int) ((arg1)->scrape_downloaded); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1fails_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jshort jarg2) { + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + std::uint8_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + arg2 = (std::uint8_t)jarg2; + if (arg1) (arg1)->fails = arg2; +} + + +SWIGEXPORT jshort JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1fails_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jshort jresult = 0 ; + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + std::uint8_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + result = (std::uint8_t) ((arg1)->fails); + jresult = (jshort)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1updating_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->updating = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1updating_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + result = (bool) ((arg1)->updating); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1is_1working(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + { + try { + result = (bool)((libtorrent::announce_endpoint const *)arg1)->is_working(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1get_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + { + try { + result = libtorrent_announce_endpoint_get_message(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1get_1next_1announce(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + { + try { + result = (int64_t)libtorrent_announce_endpoint_get_next_announce(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1endpoint_1get_1min_1announce(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + { + try { + result = (int64_t)libtorrent_announce_endpoint_get_min_announce(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1announce_1endpoint(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::announce_endpoint *arg1 = (libtorrent::announce_endpoint *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::announce_endpoint **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1endpoints_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::announce_entry *arg1 = (libtorrent::announce_entry *) 0 ; + std::vector< libtorrent::announce_endpoint > *arg2 = (std::vector< libtorrent::announce_endpoint > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::announce_entry **)&jarg1; + arg2 = *(std::vector< libtorrent::announce_endpoint > **)&jarg2; + if (arg1) (arg1)->endpoints = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1endpoints_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::announce_entry *arg1 = (libtorrent::announce_entry *) 0 ; + std::vector< libtorrent::announce_endpoint > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_entry **)&jarg1; + result = (std::vector< libtorrent::announce_endpoint > *)& ((arg1)->endpoints); + *(std::vector< libtorrent::announce_endpoint > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1tier_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jshort jarg2) { + libtorrent::announce_entry *arg1 = (libtorrent::announce_entry *) 0 ; + std::uint8_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_entry **)&jarg1; + arg2 = (std::uint8_t)jarg2; + if (arg1) (arg1)->tier = arg2; +} + + +SWIGEXPORT jshort JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1tier_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jshort jresult = 0 ; + libtorrent::announce_entry *arg1 = (libtorrent::announce_entry *) 0 ; + std::uint8_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_entry **)&jarg1; + result = (std::uint8_t) ((arg1)->tier); + jresult = (jshort)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1fail_1limit_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jshort jarg2) { + libtorrent::announce_entry *arg1 = (libtorrent::announce_entry *) 0 ; + std::uint8_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_entry **)&jarg1; + arg2 = (std::uint8_t)jarg2; + if (arg1) (arg1)->fail_limit = arg2; +} + + +SWIGEXPORT jshort JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1fail_1limit_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jshort jresult = 0 ; + libtorrent::announce_entry *arg1 = (libtorrent::announce_entry *) 0 ; + std::uint8_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_entry **)&jarg1; + result = (std::uint8_t) ((arg1)->fail_limit); + jresult = (jshort)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1source_1torrent_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::announce_entry::tracker_source result; + + (void)jenv; + (void)jcls; + result = (libtorrent::announce_entry::tracker_source)libtorrent::announce_entry::source_torrent; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1source_1client_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::announce_entry::tracker_source result; + + (void)jenv; + (void)jcls; + result = (libtorrent::announce_entry::tracker_source)libtorrent::announce_entry::source_client; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1source_1magnet_1link_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::announce_entry::tracker_source result; + + (void)jenv; + (void)jcls; + result = (libtorrent::announce_entry::tracker_source)libtorrent::announce_entry::source_magnet_link; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1source_1tex_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::announce_entry::tracker_source result; + + (void)jenv; + (void)jcls; + result = (libtorrent::announce_entry::tracker_source)libtorrent::announce_entry::source_tex; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1source_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jshort jarg2) { + libtorrent::announce_entry *arg1 = (libtorrent::announce_entry *) 0 ; + std::uint8_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_entry **)&jarg1; + arg2 = (std::uint8_t)jarg2; + if (arg1) (arg1)->source = arg2; +} + + +SWIGEXPORT jshort JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1source_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jshort jresult = 0 ; + libtorrent::announce_entry *arg1 = (libtorrent::announce_entry *) 0 ; + std::uint8_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_entry **)&jarg1; + result = (std::uint8_t) ((arg1)->source); + jresult = (jshort)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1verified_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::announce_entry *arg1 = (libtorrent::announce_entry *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_entry **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->verified = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1verified_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::announce_entry *arg1 = (libtorrent::announce_entry *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_entry **)&jarg1; + result = (bool) ((arg1)->verified); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1announce_1entry(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< int8_t > *arg1 = 0 ; + libtorrent::announce_entry *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int8_t > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::announce_entry *)new_libtorrent_announce_entry((std::vector< signed char > const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::announce_entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1get_1url(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::announce_entry *arg1 = (libtorrent::announce_entry *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_entry **)&jarg1; + { + try { + result = libtorrent_announce_entry_get_url(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1set_1url(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::announce_entry *arg1 = (libtorrent::announce_entry *) 0 ; + std::vector< int8_t > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::announce_entry **)&jarg1; + arg2 = *(std::vector< int8_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > const & reference is null"); + return ; + } + { + try { + libtorrent_announce_entry_set_url(arg1,(std::vector< signed char > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1get_1trackerid(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::announce_entry *arg1 = (libtorrent::announce_entry *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::announce_entry **)&jarg1; + { + try { + result = libtorrent_announce_entry_get_trackerid(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_announce_1entry_1set_1trackerid(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::announce_entry *arg1 = (libtorrent::announce_entry *) 0 ; + std::vector< int8_t > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::announce_entry **)&jarg1; + arg2 = *(std::vector< int8_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > const & reference is null"); + return ; + } + { + try { + libtorrent_announce_entry_set_trackerid(arg1,(std::vector< signed char > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1announce_1entry(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::announce_entry *arg1 = (libtorrent::announce_entry *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::announce_entry **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_success_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::success; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1family_1not_1supported_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::address_family_not_supported; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1in_1use_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::address_in_use; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_address_1not_1available_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::address_not_available; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_already_1connected_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::already_connected; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_argument_1list_1too_1long_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::argument_list_too_long; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_argument_1out_1of_1domain_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::argument_out_of_domain; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bad_1address_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::bad_address; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bad_1file_1descriptor_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::bad_file_descriptor; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bad_1message_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::bad_message; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_broken_1pipe_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::broken_pipe; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_connection_1aborted_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::connection_aborted; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_connection_1already_1in_1progress_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::connection_already_in_progress; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_connection_1refused_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::connection_refused; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_connection_1reset_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::connection_reset; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_cross_1device_1link_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::cross_device_link; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_destination_1address_1required_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::destination_address_required; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_device_1or_1resource_1busy_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::device_or_resource_busy; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_directory_1not_1empty_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::directory_not_empty; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_executable_1format_1error_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::executable_format_error; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1exists_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::file_exists; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1too_1large_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::file_too_large; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_filename_1too_1long_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::filename_too_long; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_function_1not_1supported_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::function_not_supported; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_host_1unreachable_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::host_unreachable; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_identifier_1removed_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::identifier_removed; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_illegal_1byte_1sequence_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::illegal_byte_sequence; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_inappropriate_1io_1control_1operation_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::inappropriate_io_control_operation; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_interrupted_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::interrupted; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_invalid_1argument_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::invalid_argument; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_invalid_1seek_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::invalid_seek; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_io_1error_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::io_error; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_is_1a_1directory_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::is_a_directory; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_message_1size_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::message_size; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_network_1down_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::network_down; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_network_1reset_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::network_reset; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_network_1unreachable_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::network_unreachable; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1buffer_1space_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::no_buffer_space; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1child_1process_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::no_child_process; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1link_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::no_link; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1lock_1available_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::no_lock_available; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1message_1available_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::no_message_available; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1message_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::no_message; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1protocol_1option_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::no_protocol_option; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1space_1on_1device_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::no_space_on_device; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1stream_1resources_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::no_stream_resources; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1such_1device_1or_1address_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::no_such_device_or_address; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1such_1device_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::no_such_device; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1such_1file_1or_1directory_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::no_such_file_or_directory; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1such_1process_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::no_such_process; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_not_1a_1directory_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::not_a_directory; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_not_1a_1socket_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::not_a_socket; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_not_1a_1stream_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::not_a_stream; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_not_1connected_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::not_connected; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_not_1enough_1memory_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::not_enough_memory; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_not_1supported_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::not_supported; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_operation_1canceled_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::operation_canceled; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_operation_1in_1progress_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::operation_in_progress; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_operation_1not_1permitted_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::operation_not_permitted; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_operation_1not_1supported_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::operation_not_supported; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_operation_1would_1block_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::operation_would_block; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_owner_1dead_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::owner_dead; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_permission_1denied_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::permission_denied; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_protocol_1error_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::protocol_error; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_protocol_1not_1supported_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::protocol_not_supported; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_read_1only_1file_1system_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::read_only_file_system; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_resource_1deadlock_1would_1occur_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::resource_deadlock_would_occur; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_resource_1unavailable_1try_1again_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::resource_unavailable_try_again; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_result_1out_1of_1range_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::result_out_of_range; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1not_1recoverable_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::state_not_recoverable; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stream_1timeout_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::stream_timeout; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_text_1file_1busy_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::text_file_busy; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_timed_1out_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::timed_out; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_too_1many_1files_1open_1in_1system_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::too_many_files_open_in_system; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_too_1many_1files_1open_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::too_many_files_open; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_too_1many_1links_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::too_many_links; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_too_1many_1symbolic_1link_1levels_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::too_many_symbolic_link_levels; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_value_1too_1large_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::value_too_large; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_wrong_1protocol_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + boost::system::errc::errc_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::errc::errc_t)boost::system::errc::wrong_protocol_type; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1generic_1error_1category(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + boost::system::detail::generic_error_category *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::detail::generic_error_category *)new boost::system::detail::generic_error_category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(boost::system::detail::generic_error_category **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_generic_1error_1category_1name(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + boost::system::detail::generic_error_category *arg1 = (boost::system::detail::generic_error_category *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(boost::system::detail::generic_error_category **)&jarg1; + { + try { + result = (char *)((boost::system::detail::generic_error_category const *)arg1)->name(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_generic_1error_1category_1message_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jstring jresult = 0 ; + boost::system::detail::generic_error_category *arg1 = (boost::system::detail::generic_error_category *) 0 ; + int arg2 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(boost::system::detail::generic_error_category **)&jarg1; + arg2 = (int)jarg2; + { + try { + result = ((boost::system::detail::generic_error_category const *)arg1)->message(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_generic_1error_1category_1message_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jstring jarg3, jlong jarg4) { + jstring jresult = 0 ; + boost::system::detail::generic_error_category *arg1 = (boost::system::detail::generic_error_category *) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + std::size_t arg4 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(boost::system::detail::generic_error_category **)&jarg1; + arg2 = (int)jarg2; + arg3 = 0; + if (jarg3) { + arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3) return 0; + } + arg4 = (std::size_t)jarg4; + { + try { + result = (char *)((boost::system::detail::generic_error_category const *)arg1)->message(arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1generic_1error_1category(JNIEnv *jenv, jclass jcls, jlong jarg1) { + boost::system::detail::generic_error_category *arg1 = (boost::system::detail::generic_error_category *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(boost::system::detail::generic_error_category **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1system_1error_1category(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + boost::system::detail::system_error_category *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::detail::system_error_category *)new boost::system::detail::system_error_category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(boost::system::detail::system_error_category **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_system_1error_1category_1name(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + boost::system::detail::system_error_category *arg1 = (boost::system::detail::system_error_category *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(boost::system::detail::system_error_category **)&jarg1; + { + try { + result = (char *)((boost::system::detail::system_error_category const *)arg1)->name(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_system_1error_1category_1default_1error_1condition(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + boost::system::detail::system_error_category *arg1 = (boost::system::detail::system_error_category *) 0 ; + int arg2 ; + boost::system::error_condition result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(boost::system::detail::system_error_category **)&jarg1; + arg2 = (int)jarg2; + { + try { + result = ((boost::system::detail::system_error_category const *)arg1)->default_error_condition(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(boost::system::error_condition **)&jresult = new boost::system::error_condition((const boost::system::error_condition &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_system_1error_1category_1message_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jstring jresult = 0 ; + boost::system::detail::system_error_category *arg1 = (boost::system::detail::system_error_category *) 0 ; + int arg2 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(boost::system::detail::system_error_category **)&jarg1; + arg2 = (int)jarg2; + { + try { + result = ((boost::system::detail::system_error_category const *)arg1)->message(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_system_1error_1category_1message_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jstring jarg3, jlong jarg4) { + jstring jresult = 0 ; + boost::system::detail::system_error_category *arg1 = (boost::system::detail::system_error_category *) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + std::size_t arg4 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(boost::system::detail::system_error_category **)&jarg1; + arg2 = (int)jarg2; + arg3 = 0; + if (jarg3) { + arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3) return 0; + } + arg4 = (std::size_t)jarg4; + { + try { + result = (char *)((boost::system::detail::system_error_category const *)arg1)->message(arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1system_1error_1category(JNIEnv *jenv, jclass jcls, jlong jarg1) { + boost::system::detail::system_error_category *arg1 = (boost::system::detail::system_error_category *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(boost::system::detail::system_error_category **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_failed_1impl(JNIEnv *jenv, jclass jcls, jint jarg1, jlong jarg2) { + jboolean jresult = 0 ; + int arg1 ; + boost::system::error_category *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + arg1 = (int)jarg1; + arg2 = *(boost::system::error_category **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "boost::system::error_category const & reference is null"); + return 0; + } + { + try { + result = (bool)boost::system::detail::failed_impl(arg1,(boost::system::error_category const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1error_1code(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + boost::system::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (boost::system::error_code *)new boost::system::error_code(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(boost::system::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_error_1code_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + boost::system::error_code *arg1 = (boost::system::error_code *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(boost::system::error_code **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_error_1code_1value(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + boost::system::error_code *arg1 = (boost::system::error_code *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(boost::system::error_code **)&jarg1; + { + try { + result = (int)((boost::system::error_code const *)arg1)->value(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_error_1code_1message_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + boost::system::error_code *arg1 = (boost::system::error_code *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(boost::system::error_code **)&jarg1; + { + try { + result = ((boost::system::error_code const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_error_1code_1message_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3) { + jstring jresult = 0 ; + boost::system::error_code *arg1 = (boost::system::error_code *) 0 ; + char *arg2 = (char *) 0 ; + std::size_t arg3 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(boost::system::error_code **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return 0; + } + arg3 = (std::size_t)jarg3; + { + try { + result = (char *)((boost::system::error_code const *)arg1)->message(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_error_1code_1failed(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + boost::system::error_code *arg1 = (boost::system::error_code *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(boost::system::error_code **)&jarg1; + { + try { + result = (bool)((boost::system::error_code const *)arg1)->failed(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_error_1code_1op_1bool(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + boost::system::error_code *arg1 = (boost::system::error_code *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(boost::system::error_code **)&jarg1; + { + try { + result = (bool)((boost::system::error_code const *)arg1)->operator bool(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_op_1eq_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + boost::system::error_code *arg1 = 0 ; + boost::system::error_code *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(boost::system::error_code **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "boost::system::error_code const & reference is null"); + return 0; + } + arg2 = *(boost::system::error_code **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "boost::system::error_code const & reference is null"); + return 0; + } + { + try { + result = (bool)operator ==((boost::system::error_code const &)*arg1,(boost::system::error_code const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_op_1lt_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + boost::system::error_code *arg1 = 0 ; + boost::system::error_code *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(boost::system::error_code **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "boost::system::error_code const & reference is null"); + return 0; + } + arg2 = *(boost::system::error_code **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "boost::system::error_code const & reference is null"); + return 0; + } + { + try { + result = (bool)operator <((boost::system::error_code const &)*arg1,(boost::system::error_code const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1error_1code(JNIEnv *jenv, jclass jcls, jlong jarg1) { + boost::system::error_code *arg1 = (boost::system::error_code *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(boost::system::error_code **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_op_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + boost::system::error_code *arg1 = 0 ; + boost::system::error_code *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(boost::system::error_code **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "boost::system::error_code const & reference is null"); + return 0; + } + arg2 = *(boost::system::error_code **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "boost::system::error_code const & reference is null"); + return 0; + } + { + try { + result = (bool)boost::system::operator !=((boost::system::error_code const &)*arg1,(boost::system::error_code const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_make_1error_1code(JNIEnv *jenv, jclass jcls, jint jarg1) { + jlong jresult = 0 ; + boost::system::errc::errc_t arg1 ; + boost::system::error_code result; + + (void)jenv; + (void)jcls; + arg1 = (boost::system::errc::errc_t)jarg1; + { + try { + result = boost::system::errc::make_error_code(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(boost::system::error_code **)&jresult = new boost::system::error_code((const boost::system::error_code &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_LIBTORRENT_1VERSION_1MAJOR_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)(1); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_LIBTORRENT_1VERSION_1MINOR_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)(2); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_LIBTORRENT_1VERSION_1TINY_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)(12); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_LIBTORRENT_1VERSION_1NUM_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)(((1*10000) +(2*100) +12)); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_LIBTORRENT_1VERSION_1get(JNIEnv *jenv, jclass jcls) { + jstring jresult = 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + result = (char *)("1.2.12.0"); + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_LIBTORRENT_1REVISION_1get(JNIEnv *jenv, jclass jcls) { + jstring jresult = 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + result = (char *)("2d3870c18"); + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_version(JNIEnv *jenv, jclass jcls) { + jstring jresult = 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (char *)libtorrent::version(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_libtorrent_1no_1error_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::error_code_enum result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::error_code_enum)libtorrent::errors::no_error; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_missing_1file_1sizes_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::error_code_enum result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::error_code_enum)libtorrent::errors::missing_file_sizes; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_http_1parse_1error_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::error_code_enum result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::error_code_enum)libtorrent::errors::http_parse_error; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1i2p_1router_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::error_code_enum result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::error_code_enum)libtorrent::errors::no_i2p_router; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1i2p_1endpoint_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::error_code_enum result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::error_code_enum)libtorrent::errors::no_i2p_endpoint; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1not_1available_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::error_code_enum result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::error_code_enum)libtorrent::errors::scrape_not_available; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1entropy_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::error_code_enum result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::error_code_enum)libtorrent::errors::no_entropy; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_cont_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::cont; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ok_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::ok; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_created_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::created; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_accepted_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::accepted; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1content_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::no_content; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_multiple_1choices_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::multiple_choices; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_moved_1permanently_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::moved_permanently; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_moved_1temporarily_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::moved_temporarily; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_not_1modified_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::not_modified; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bad_1request_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::bad_request; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_unauthorized_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::unauthorized; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_forbidden_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::forbidden; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_not_1found_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::not_found; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_internal_1server_1error_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::internal_server_error; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_not_1implemented_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::not_implemented; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bad_1gateway_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::bad_gateway; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_service_1unavailable_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::errors::http_errors result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::errors::http_errors)libtorrent::errors::service_unavailable; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_print_1error(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::error_code *arg1 = 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::error_code **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::error_code const & reference is null"); + return 0; + } + { + try { + result = libtorrent::print_error((boost::system::error_code const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1request_1piece_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + libtorrent::peer_request *arg1 = (libtorrent::peer_request *) 0 ; + piece_index_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_request **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + if (arg1) (arg1)->piece = arg2; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1request_1piece_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::peer_request *arg1 = (libtorrent::peer_request *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_request **)&jarg1; + result = ((arg1)->piece); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1request_1start_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_request *arg1 = (libtorrent::peer_request *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_request **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->start = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1request_1start_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_request *arg1 = (libtorrent::peer_request *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_request **)&jarg1; + result = (int) ((arg1)->start); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1request_1length_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_request *arg1 = (libtorrent::peer_request *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_request **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->length = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1request_1length_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_request *arg1 = (libtorrent::peer_request *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_request **)&jarg1; + result = (int) ((arg1)->length); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1request_1op_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::peer_request *arg1 = (libtorrent::peer_request *) 0 ; + libtorrent::peer_request *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_request **)&jarg1; + arg2 = *(libtorrent::peer_request **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::peer_request const & reference is null"); + return 0; + } + { + try { + result = (bool)((libtorrent::peer_request const *)arg1)->operator ==((libtorrent::peer_request const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1peer_1request(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::peer_request *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::peer_request *)new libtorrent::peer_request(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_request **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1request(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::peer_request *arg1 = (libtorrent::peer_request *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::peer_request **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1slice_1file_1index_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + libtorrent::file_slice *arg1 = (libtorrent::file_slice *) 0 ; + file_index_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_slice **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + if (arg1) (arg1)->file_index = arg2; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1slice_1file_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::file_slice *arg1 = (libtorrent::file_slice *) 0 ; + file_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_slice **)&jarg1; + result = ((arg1)->file_index); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1slice_1offset_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::file_slice *arg1 = (libtorrent::file_slice *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_slice **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->offset = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1slice_1offset_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::file_slice *arg1 = (libtorrent::file_slice *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_slice **)&jarg1; + result = (std::int64_t) ((arg1)->offset); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1slice_1size_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::file_slice *arg1 = (libtorrent::file_slice *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_slice **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->size = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1slice_1size_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::file_slice *arg1 = (libtorrent::file_slice *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_slice **)&jarg1; + result = (std::int64_t) ((arg1)->size); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1file_1slice(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::file_slice *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::file_slice *)new libtorrent::file_slice(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::file_slice **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1file_1slice(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::file_slice *arg1 = (libtorrent::file_slice *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::file_slice **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1file_1storage_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::file_storage *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::file_storage *)new libtorrent::file_storage(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::file_storage **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1file_1storage(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1file_1storage_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::file_storage *arg1 = 0 ; + libtorrent::file_storage *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::file_storage const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::file_storage *)new libtorrent::file_storage((libtorrent::file_storage const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::file_storage **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1is_1valid(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + try { + result = (bool)((libtorrent::file_storage const *)arg1)->is_valid(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + arg2 = (int)jarg2; + { + try { + (arg1)->reserve(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1add_1file_1borrow_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jstring jarg3, jlong jarg4, jlong jarg5, jobject jarg5_, jstring jarg6, jlong jarg7, jlong jarg8, jobject jarg8_) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + libtorrent::string_view arg2 ; + std::string *arg3 = 0 ; + std::int64_t arg4 ; + libtorrent::file_flags_t arg5 ; + char *arg6 = (char *) 0 ; + std::int64_t arg7 ; + libtorrent::string_view arg8 ; + libtorrent::string_view *argp2 ; + libtorrent::file_flags_t *argp5 ; + libtorrent::string_view *argp8 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg5_; + (void)jarg8_; + arg1 = *(libtorrent::file_storage **)&jarg1; + argp2 = *(libtorrent::string_view **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::string_view"); + return ; + } + arg2 = *argp2; + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + arg4 = (std::int64_t)jarg4; + argp5 = *(libtorrent::file_flags_t **)&jarg5; + if (!argp5) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::file_flags_t"); + return ; + } + arg5 = *argp5; + arg6 = 0; + if (jarg6) { + arg6 = (char *)jenv->GetStringUTFChars(jarg6, 0); + if (!arg6) return ; + } + arg7 = (std::int64_t)jarg7; + argp8 = *(libtorrent::string_view **)&jarg8; + if (!argp8) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::string_view"); + return ; + } + arg8 = *argp8; + { + try { + (arg1)->add_file_borrow(arg2,(std::string const &)*arg3,arg4,arg5,(char const *)arg6,arg7,arg8); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } + if (arg6) jenv->ReleaseStringUTFChars(jarg6, (const char *)arg6); +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1add_1file_1borrow_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jstring jarg3, jlong jarg4, jlong jarg5, jobject jarg5_, jstring jarg6, jlong jarg7) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + libtorrent::string_view arg2 ; + std::string *arg3 = 0 ; + std::int64_t arg4 ; + libtorrent::file_flags_t arg5 ; + char *arg6 = (char *) 0 ; + std::int64_t arg7 ; + libtorrent::string_view *argp2 ; + libtorrent::file_flags_t *argp5 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg5_; + arg1 = *(libtorrent::file_storage **)&jarg1; + argp2 = *(libtorrent::string_view **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::string_view"); + return ; + } + arg2 = *argp2; + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + arg4 = (std::int64_t)jarg4; + argp5 = *(libtorrent::file_flags_t **)&jarg5; + if (!argp5) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::file_flags_t"); + return ; + } + arg5 = *argp5; + arg6 = 0; + if (jarg6) { + arg6 = (char *)jenv->GetStringUTFChars(jarg6, 0); + if (!arg6) return ; + } + arg7 = (std::int64_t)jarg7; + { + try { + (arg1)->add_file_borrow(arg2,(std::string const &)*arg3,arg4,arg5,(char const *)arg6,arg7); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } + if (arg6) jenv->ReleaseStringUTFChars(jarg6, (const char *)arg6); +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1add_1file_1borrow_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jstring jarg3, jlong jarg4, jlong jarg5, jobject jarg5_, jstring jarg6) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + libtorrent::string_view arg2 ; + std::string *arg3 = 0 ; + std::int64_t arg4 ; + libtorrent::file_flags_t arg5 ; + char *arg6 = (char *) 0 ; + libtorrent::string_view *argp2 ; + libtorrent::file_flags_t *argp5 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg5_; + arg1 = *(libtorrent::file_storage **)&jarg1; + argp2 = *(libtorrent::string_view **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::string_view"); + return ; + } + arg2 = *argp2; + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + arg4 = (std::int64_t)jarg4; + argp5 = *(libtorrent::file_flags_t **)&jarg5; + if (!argp5) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::file_flags_t"); + return ; + } + arg5 = *argp5; + arg6 = 0; + if (jarg6) { + arg6 = (char *)jenv->GetStringUTFChars(jarg6, 0); + if (!arg6) return ; + } + { + try { + (arg1)->add_file_borrow(arg2,(std::string const &)*arg3,arg4,arg5,(char const *)arg6); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } + if (arg6) jenv->ReleaseStringUTFChars(jarg6, (const char *)arg6); +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1add_1file_1borrow_1_1SWIG_13(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jstring jarg3, jlong jarg4, jlong jarg5, jobject jarg5_) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + libtorrent::string_view arg2 ; + std::string *arg3 = 0 ; + std::int64_t arg4 ; + libtorrent::file_flags_t arg5 ; + libtorrent::string_view *argp2 ; + libtorrent::file_flags_t *argp5 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg5_; + arg1 = *(libtorrent::file_storage **)&jarg1; + argp2 = *(libtorrent::string_view **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::string_view"); + return ; + } + arg2 = *argp2; + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + arg4 = (std::int64_t)jarg4; + argp5 = *(libtorrent::file_flags_t **)&jarg5; + if (!argp5) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::file_flags_t"); + return ; + } + arg5 = *argp5; + { + try { + (arg1)->add_file_borrow(arg2,(std::string const &)*arg3,arg4,arg5); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1add_1file_1borrow_1_1SWIG_14(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jstring jarg3, jlong jarg4) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + libtorrent::string_view arg2 ; + std::string *arg3 = 0 ; + std::int64_t arg4 ; + libtorrent::string_view *argp2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::file_storage **)&jarg1; + argp2 = *(libtorrent::string_view **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::string_view"); + return ; + } + arg2 = *argp2; + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + arg4 = (std::int64_t)jarg4; + { + try { + (arg1)->add_file_borrow(arg2,(std::string const &)*arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1add_1file_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3, jlong jarg4, jobject jarg4_, jlong jarg5, jlong jarg6, jobject jarg6_) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + std::string *arg2 = 0 ; + std::int64_t arg3 ; + libtorrent::file_flags_t arg4 ; + std::time_t arg5 ; + libtorrent::string_view arg6 ; + libtorrent::file_flags_t *argp4 ; + libtorrent::string_view *argp6 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg4_; + (void)jarg6_; + arg1 = *(libtorrent::file_storage **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + arg3 = (std::int64_t)jarg3; + argp4 = *(libtorrent::file_flags_t **)&jarg4; + if (!argp4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::file_flags_t"); + return ; + } + arg4 = *argp4; + arg5 = (std::time_t)jarg5; + argp6 = *(libtorrent::string_view **)&jarg6; + if (!argp6) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::string_view"); + return ; + } + arg6 = *argp6; + { + try { + (arg1)->add_file((std::string const &)*arg2,arg3,arg4,arg5,arg6); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1add_1file_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3, jlong jarg4, jobject jarg4_, jlong jarg5) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + std::string *arg2 = 0 ; + std::int64_t arg3 ; + libtorrent::file_flags_t arg4 ; + std::time_t arg5 ; + libtorrent::file_flags_t *argp4 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg4_; + arg1 = *(libtorrent::file_storage **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + arg3 = (std::int64_t)jarg3; + argp4 = *(libtorrent::file_flags_t **)&jarg4; + if (!argp4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::file_flags_t"); + return ; + } + arg4 = *argp4; + arg5 = (std::time_t)jarg5; + { + try { + (arg1)->add_file((std::string const &)*arg2,arg3,arg4,arg5); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1add_1file_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3, jlong jarg4, jobject jarg4_) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + std::string *arg2 = 0 ; + std::int64_t arg3 ; + libtorrent::file_flags_t arg4 ; + libtorrent::file_flags_t *argp4 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg4_; + arg1 = *(libtorrent::file_storage **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + arg3 = (std::int64_t)jarg3; + argp4 = *(libtorrent::file_flags_t **)&jarg4; + if (!argp4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::file_flags_t"); + return ; + } + arg4 = *argp4; + { + try { + (arg1)->add_file((std::string const &)*arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1add_1file_1_1SWIG_13(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + std::string *arg2 = 0 ; + std::int64_t arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + arg3 = (std::int64_t)jarg3; + { + try { + (arg1)->add_file((std::string const &)*arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1rename_1file(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2, jstring jarg3) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + file_index_t arg2 ; + std::string *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + { + try { + (arg1)->rename_file(arg2,(std::string const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1map_1block(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2, jlong jarg3, jint jarg4) { + jlong jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + piece_index_t arg2 ; + std::int64_t arg3 ; + int arg4 ; + std::vector< libtorrent::file_slice > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + arg3 = (std::int64_t)jarg3; + arg4 = (int)jarg4; + { + try { + result = ((libtorrent::file_storage const *)arg1)->map_block(arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::file_slice > **)&jresult = new std::vector< libtorrent::file_slice >((const std::vector< libtorrent::file_slice > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1map_1file(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2, jlong jarg3, jint jarg4) { + jlong jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + file_index_t arg2 ; + std::int64_t arg3 ; + int arg4 ; + libtorrent::peer_request result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + arg3 = (std::int64_t)jarg3; + arg4 = (int)jarg4; + { + try { + result = ((libtorrent::file_storage const *)arg1)->map_file(arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_request **)&jresult = new libtorrent::peer_request((const libtorrent::peer_request &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1num_1files(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + try { + result = (int)((libtorrent::file_storage const *)arg1)->num_files(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1end_1file(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + file_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + try { + result = ((libtorrent::file_storage const *)arg1)->end_file(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1total_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + try { + result = (std::int64_t)((libtorrent::file_storage const *)arg1)->total_size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1set_1num_1pieces(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + arg2 = (int)jarg2; + { + try { + (arg1)->set_num_pieces(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1num_1pieces(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + try { + result = (int)((libtorrent::file_storage const *)arg1)->num_pieces(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1end_1piece(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + try { + result = ((libtorrent::file_storage const *)arg1)->end_piece(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1last_1piece(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + try { + result = ((libtorrent::file_storage const *)arg1)->last_piece(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1set_1piece_1length(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + arg2 = (int)jarg2; + { + try { + (arg1)->set_piece_length(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1piece_1length(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + try { + result = (int)((libtorrent::file_storage const *)arg1)->piece_length(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1piece_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jint jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + piece_index_t arg2 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + { + try { + result = (int)((libtorrent::file_storage const *)arg1)->piece_size(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1set_1name(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + (arg1)->set_name((std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1name(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + try { + result = (std::string *) &((libtorrent::file_storage const *)arg1)->name(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1swap(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + libtorrent::file_storage *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::file_storage **)&jarg1; + arg2 = *(libtorrent::file_storage **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::file_storage & reference is null"); + return ; + } + { + try { + (arg1)->swap(*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1optimize_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3, jboolean jarg4) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + int arg2 ; + int arg3 ; + bool arg4 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + arg2 = (int)jarg2; + arg3 = (int)jarg3; + arg4 = jarg4 ? true : false; + { + try { + (arg1)->optimize(arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1optimize_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + int arg2 ; + int arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + arg2 = (int)jarg2; + arg3 = (int)jarg3; + { + try { + (arg1)->optimize(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1optimize_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + arg2 = (int)jarg2; + { + try { + (arg1)->optimize(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1optimize_1_1SWIG_13(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + try { + (arg1)->optimize(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1hash(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jlong jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + file_index_t arg2 ; + libtorrent::sha1_hash result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + { + try { + result = ((libtorrent::file_storage const *)arg1)->hash(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::sha1_hash **)&jresult = new libtorrent::sha1_hash((const libtorrent::sha1_hash &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1symlink(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jstring jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + file_index_t arg2 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + { + try { + result = (std::string *) &((libtorrent::file_storage const *)arg1)->symlink(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1mtime(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jlong jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + file_index_t arg2 ; + std::time_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + { + try { + result = ((libtorrent::file_storage const *)arg1)->mtime(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1file_1path_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2, jstring jarg3) { + jstring jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + file_index_t arg2 ; + std::string *arg3 = 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return 0; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + { + try { + result = ((libtorrent::file_storage const *)arg1)->file_path(arg2,(std::string const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1file_1path_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jstring jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + file_index_t arg2 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + { + try { + result = ((libtorrent::file_storage const *)arg1)->file_path(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1file_1name(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jlong jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + file_index_t arg2 ; + libtorrent::string_view result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + { + try { + result = ((libtorrent::file_storage const *)arg1)->file_name(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::string_view **)&jresult = new libtorrent::string_view((const libtorrent::string_view &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1file_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jlong jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + file_index_t arg2 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + { + try { + result = (std::int64_t)((libtorrent::file_storage const *)arg1)->file_size(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1pad_1file_1at(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jboolean jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + file_index_t arg2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + { + try { + result = (bool)((libtorrent::file_storage const *)arg1)->pad_file_at(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1file_1offset(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jlong jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + file_index_t arg2 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + { + try { + result = (std::int64_t)((libtorrent::file_storage const *)arg1)->file_offset(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1flag_1pad_1file_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::file_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::file_flags_tag > *)&libtorrent::file_storage::flag_pad_file; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::file_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1flag_1hidden_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::file_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::file_flags_tag > *)&libtorrent::file_storage::flag_hidden; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::file_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1flag_1executable_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::file_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::file_flags_tag > *)&libtorrent::file_storage::flag_executable; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::file_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1flag_1symlink_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::file_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::file_flags_tag > *)&libtorrent::file_storage::flag_symlink; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::file_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1paths(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + std::vector< std::string > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + try { + result = (std::vector< std::string > *) &((libtorrent::file_storage const *)arg1)->paths(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::string > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1file_1flags(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jlong jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + file_index_t arg2 ; + libtorrent::file_flags_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + { + try { + result = ((libtorrent::file_storage const *)arg1)->file_flags(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::file_flags_t **)&jresult = new libtorrent::file_flags_t((const libtorrent::file_flags_t &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1file_1absolute_1path(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jboolean jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + file_index_t arg2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + { + try { + result = (bool)((libtorrent::file_storage const *)arg1)->file_absolute_path(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1file_1index_1at_1offset(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + int jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + std::int64_t arg2 ; + file_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + arg2 = (std::int64_t)jarg2; + { + try { + result = ((libtorrent::file_storage const *)arg1)->file_index_at_offset(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1internal_1symlink(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jstring jresult = 0 ; + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + file_index_t arg2 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + { + try { + result = (std::string *) &((libtorrent::file_storage const *)arg1)->internal_symlink(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1storage_1add_1file_1_1SWIG_14(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3, jlong jarg4, jobject jarg4_, jlong jarg5, jstring jarg6) { + libtorrent::file_storage *arg1 = (libtorrent::file_storage *) 0 ; + std::string *arg2 = 0 ; + std::int64_t arg3 ; + libtorrent::file_flags_t arg4 ; + std::time_t arg5 ; + std::string *arg6 = 0 ; + libtorrent::file_flags_t *argp4 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg4_; + arg1 = *(libtorrent::file_storage **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + arg3 = (std::int64_t)jarg3; + argp4 = *(libtorrent::file_flags_t **)&jarg4; + if (!argp4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::file_flags_t"); + return ; + } + arg4 = *argp4; + arg5 = (std::time_t)jarg5; + if(!jarg6) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg6_pstr = (const char *)jenv->GetStringUTFChars(jarg6, 0); + if (!arg6_pstr) return ; + std::string arg6_str(arg6_pstr); + arg6 = &arg6_str; + jenv->ReleaseStringUTFChars(jarg6, arg6_pstr); + { + try { + libtorrent_file_storage_add_file__SWIG_4(arg1,(std::string const &)*arg2,arg3,arg4,arg5,(std::string const &)*arg6); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1no_1error_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::bdecode_errors::error_code_enum result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::bdecode_errors::error_code_enum)libtorrent::bdecode_errors::no_error; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1bdecode_1node_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::bdecode_node *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::bdecode_node *)new libtorrent::bdecode_node(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::bdecode_node **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1bdecode_1node_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = 0 ; + libtorrent::bdecode_node *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::bdecode_node const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::bdecode_node *)new libtorrent::bdecode_node((libtorrent::bdecode_node const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::bdecode_node **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + libtorrent::bdecode_node::type_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + { + try { + result = (libtorrent::bdecode_node::type_t)((libtorrent::bdecode_node const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1op_1bool(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + { + try { + result = (bool)((libtorrent::bdecode_node const *)arg1)->operator bool(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1list_1at(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + int arg2 ; + libtorrent::bdecode_node result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + arg2 = (int)jarg2; + { + try { + result = ((libtorrent::bdecode_node const *)arg1)->list_at(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::bdecode_node **)&jresult = new libtorrent::bdecode_node((const libtorrent::bdecode_node &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1list_1int_1value_1at_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + int arg2 ; + std::int64_t arg3 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + arg2 = (int)jarg2; + arg3 = (std::int64_t)jarg3; + { + try { + result = (std::int64_t)((libtorrent::bdecode_node const *)arg1)->list_int_value_at(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1list_1int_1value_1at_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + int arg2 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + arg2 = (int)jarg2; + { + try { + result = (std::int64_t)((libtorrent::bdecode_node const *)arg1)->list_int_value_at(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1list_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + { + try { + result = (int)((libtorrent::bdecode_node const *)arg1)->list_size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1dict_1at(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + int arg2 ; + std::pair< libtorrent::string_view,libtorrent::bdecode_node > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + arg2 = (int)jarg2; + { + try { + result = ((libtorrent::bdecode_node const *)arg1)->dict_at(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< libtorrent::string_view,libtorrent::bdecode_node > **)&jresult = new std::pair< libtorrent::string_view,libtorrent::bdecode_node >((const std::pair< libtorrent::string_view,libtorrent::bdecode_node > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1dict_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + { + try { + result = (int)((libtorrent::bdecode_node const *)arg1)->dict_size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1int_1value(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + { + try { + result = (std::int64_t)((libtorrent::bdecode_node const *)arg1)->int_value(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1string_1length(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + { + try { + result = (int)((libtorrent::bdecode_node const *)arg1)->string_length(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1list_1string_1value_1at_1s_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jstring jarg3) { + jstring jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + int arg2 ; + std::string arg3 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + arg2 = (int)jarg2; + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return 0; + (&arg3)->assign(arg3_pstr); + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + { + try { + result = libtorrent_bdecode_node_list_string_value_at_s__SWIG_0(arg1,arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1list_1string_1value_1at_1s_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jstring jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + int arg2 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + arg2 = (int)jarg2; + { + try { + result = libtorrent_bdecode_node_list_string_value_at_s__SWIG_0(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1dict_1find_1s(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + std::string arg2 ; + libtorrent::bdecode_node result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + (&arg2)->assign(arg2_pstr); + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + result = libtorrent_bdecode_node_dict_find_s((libtorrent::bdecode_node const *)arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::bdecode_node **)&jresult = new libtorrent::bdecode_node((const libtorrent::bdecode_node &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1dict_1find_1dict_1s(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + std::string arg2 ; + libtorrent::bdecode_node result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + (&arg2)->assign(arg2_pstr); + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + result = libtorrent_bdecode_node_dict_find_dict_s((libtorrent::bdecode_node const *)arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::bdecode_node **)&jresult = new libtorrent::bdecode_node((const libtorrent::bdecode_node &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1dict_1find_1list_1s(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + std::string arg2 ; + libtorrent::bdecode_node result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + (&arg2)->assign(arg2_pstr); + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + result = libtorrent_bdecode_node_dict_find_list_s((libtorrent::bdecode_node const *)arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::bdecode_node **)&jresult = new libtorrent::bdecode_node((const libtorrent::bdecode_node &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1dict_1find_1string_1s(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + std::string arg2 ; + libtorrent::bdecode_node result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + (&arg2)->assign(arg2_pstr); + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + result = libtorrent_bdecode_node_dict_find_string_s((libtorrent::bdecode_node const *)arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::bdecode_node **)&jresult = new libtorrent::bdecode_node((const libtorrent::bdecode_node &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1dict_1find_1int_1s(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + std::string arg2 ; + libtorrent::bdecode_node result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + (&arg2)->assign(arg2_pstr); + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + result = libtorrent_bdecode_node_dict_find_int_s((libtorrent::bdecode_node const *)arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::bdecode_node **)&jresult = new libtorrent::bdecode_node((const libtorrent::bdecode_node &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1dict_1find_1string_1value_1s_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3) { + jstring jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + std::string arg2 ; + std::string arg3 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + (&arg2)->assign(arg2_pstr); + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return 0; + (&arg3)->assign(arg3_pstr); + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + { + try { + result = libtorrent_bdecode_node_dict_find_string_value_s__SWIG_0((libtorrent::bdecode_node const *)arg1,arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1dict_1find_1string_1value_1s_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jstring jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + std::string arg2 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + (&arg2)->assign(arg2_pstr); + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + result = libtorrent_bdecode_node_dict_find_string_value_s__SWIG_0((libtorrent::bdecode_node const *)arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1dict_1find_1int_1value_1s_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + std::string arg2 ; + std::int64_t arg3 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + (&arg2)->assign(arg2_pstr); + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + arg3 = (std::int64_t)jarg3; + { + try { + result = (std::int64_t)libtorrent_bdecode_node_dict_find_int_value_s__SWIG_0((libtorrent::bdecode_node const *)arg1,arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1dict_1find_1int_1value_1s_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + std::string arg2 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + (&arg2)->assign(arg2_pstr); + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + result = (std::int64_t)libtorrent_bdecode_node_dict_find_int_value_s__SWIG_0((libtorrent::bdecode_node const *)arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1string_1value_1s(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + { + try { + result = libtorrent_bdecode_node_string_value_s((libtorrent::bdecode_node const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1to_1string(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2, jint jarg3) { + jstring jresult = 0 ; + libtorrent::bdecode_node *arg1 = 0 ; + bool arg2 ; + int arg3 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::bdecode_node const & reference is null"); + return 0; + } + arg2 = jarg2 ? true : false; + arg3 = (int)jarg3; + { + try { + result = libtorrent_bdecode_node_to_string((libtorrent::bdecode_node const &)*arg1,arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bdecode_1node_1bdecode(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_) { + jint jresult = 0 ; + std::vector< int8_t > *arg1 = 0 ; + libtorrent::bdecode_node *arg2 = 0 ; + libtorrent::error_code *arg3 = 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + arg1 = *(std::vector< int8_t > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return 0; + } + arg2 = *(libtorrent::bdecode_node **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::bdecode_node & reference is null"); + return 0; + } + arg3 = *(libtorrent::error_code **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::error_code & reference is null"); + return 0; + } + { + try { + result = (int)libtorrent_bdecode_node_bdecode(*arg1,*arg2,*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1bdecode_1node(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::bdecode_node *arg1 = (libtorrent::bdecode_node *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1peer_1info_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::peer_info *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::peer_info *)new libtorrent::peer_info(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_info **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1info(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::peer_info **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1peer_1info_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_info *arg1 = 0 ; + libtorrent::peer_info *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::peer_info const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::peer_info *)new libtorrent::peer_info((libtorrent::peer_info const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_info **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1pieces_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + libtorrent::typed_bitfield< piece_index_t > *arg2 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg2; + if (arg1) (arg1)->pieces = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1pieces_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + libtorrent::typed_bitfield< piece_index_t > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (libtorrent::typed_bitfield< piece_index_t > *)& ((arg1)->pieces); + *(libtorrent::typed_bitfield< piece_index_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1total_1download_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->total_download = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1total_1download_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (std::int64_t) ((arg1)->total_download); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1total_1upload_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->total_upload = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1total_1upload_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (std::int64_t) ((arg1)->total_upload); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1interesting_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::interesting; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1choked_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::choked; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1remote_1interested_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::remote_interested; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1remote_1choked_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::remote_choked; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1supports_1extensions_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::supports_extensions; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1local_1connection_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::local_connection; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1handshake_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::handshake; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1connecting_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::connecting; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1on_1parole_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::on_parole; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1seed_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::seed; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1optimistic_1unchoke_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::optimistic_unchoke; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1snubbed_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::snubbed; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1upload_1only_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::upload_only; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1endgame_1mode_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::endgame_mode; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1holepunched_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::holepunched; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1i2p_1socket_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::i2p_socket; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1utp_1socket_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::utp_socket; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1ssl_1socket_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::ssl_socket; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1rc4_1encrypted_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::rc4_encrypted; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1plaintext_1encrypted_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > *)&libtorrent::peer_info::plaintext_encrypted; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::peer_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1flags_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + libtorrent::peer_flags_t *arg2 = (libtorrent::peer_flags_t *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = *(libtorrent::peer_flags_t **)&jarg2; + if (arg1) (arg1)->flags = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1flags_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + libtorrent::peer_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (libtorrent::peer_flags_t *)& ((arg1)->flags); + *(libtorrent::peer_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1tracker_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > *)&libtorrent::peer_info::tracker; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1dht_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > *)&libtorrent::peer_info::dht; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1pex_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > *)&libtorrent::peer_info::pex; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1lsd_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > *)&libtorrent::peer_info::lsd; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1resume_1data_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > *)&libtorrent::peer_info::resume_data; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1incoming_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > *)&libtorrent::peer_info::incoming; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::peer_source_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1source_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + libtorrent::peer_source_flags_t *arg2 = (libtorrent::peer_source_flags_t *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = *(libtorrent::peer_source_flags_t **)&jarg2; + if (arg1) (arg1)->source = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1source_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + libtorrent::peer_source_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (libtorrent::peer_source_flags_t *)& ((arg1)->source); + *(libtorrent::peer_source_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1up_1speed_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->up_speed = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1up_1speed_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->up_speed); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1down_1speed_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->down_speed = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1down_1speed_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->down_speed); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1payload_1up_1speed_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->payload_up_speed = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1payload_1up_1speed_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->payload_up_speed); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1payload_1down_1speed_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->payload_down_speed = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1payload_1down_1speed_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->payload_down_speed); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1pid_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + libtorrent::peer_id *arg2 = (libtorrent::peer_id *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = *(libtorrent::peer_id **)&jarg2; + if (arg1) (arg1)->pid = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1pid_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + libtorrent::peer_id *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (libtorrent::peer_id *)& ((arg1)->pid); + *(libtorrent::peer_id **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1queue_1bytes_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->queue_bytes = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1queue_1bytes_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->queue_bytes); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1request_1timeout_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->request_timeout = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1request_1timeout_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->request_timeout); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1send_1buffer_1size_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->send_buffer_size = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1send_1buffer_1size_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->send_buffer_size); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1used_1send_1buffer_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->used_send_buffer = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1used_1send_1buffer_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->used_send_buffer); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1receive_1buffer_1size_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->receive_buffer_size = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1receive_1buffer_1size_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->receive_buffer_size); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1used_1receive_1buffer_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->used_receive_buffer = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1used_1receive_1buffer_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->used_receive_buffer); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1receive_1buffer_1watermark_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->receive_buffer_watermark = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1receive_1buffer_1watermark_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->receive_buffer_watermark); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1num_1hashfails_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->num_hashfails = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1num_1hashfails_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->num_hashfails); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1download_1queue_1length_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->download_queue_length = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1download_1queue_1length_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->download_queue_length); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1timed_1out_1requests_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->timed_out_requests = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1timed_1out_1requests_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->timed_out_requests); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1busy_1requests_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->busy_requests = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1busy_1requests_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->busy_requests); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1requests_1in_1buffer_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->requests_in_buffer = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1requests_1in_1buffer_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->requests_in_buffer); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1target_1dl_1queue_1length_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->target_dl_queue_length = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1target_1dl_1queue_1length_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->target_dl_queue_length); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1upload_1queue_1length_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->upload_queue_length = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1upload_1queue_1length_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->upload_queue_length); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1failcount_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->failcount = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1failcount_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->failcount); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1downloading_1piece_1index_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + piece_index_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + if (arg1) (arg1)->downloading_piece_index = arg2; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1downloading_1piece_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = ((arg1)->downloading_piece_index); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1downloading_1block_1index_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->downloading_block_index = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1downloading_1block_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->downloading_block_index); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1downloading_1progress_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->downloading_progress = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1downloading_1progress_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->downloading_progress); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1downloading_1total_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->downloading_total = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1downloading_1total_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->downloading_total); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1standard_1bittorrent_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::peer_info::connection_type_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::peer_info::connection_type_t)libtorrent::peer_info::standard_bittorrent; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1web_1seed_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::peer_info::connection_type_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::peer_info::connection_type_t)libtorrent::peer_info::web_seed; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1http_1seed_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::peer_info::connection_type_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::peer_info::connection_type_t)libtorrent::peer_info::http_seed; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1connection_1type_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->connection_type = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1connection_1type_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->connection_type); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1pending_1disk_1bytes_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->pending_disk_bytes = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1pending_1disk_1bytes_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->pending_disk_bytes); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1pending_1disk_1read_1bytes_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->pending_disk_read_bytes = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1pending_1disk_1read_1bytes_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->pending_disk_read_bytes); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1send_1quota_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->send_quota = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1send_1quota_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->send_quota); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1receive_1quota_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->receive_quota = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1receive_1quota_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->receive_quota); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1rtt_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->rtt = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1rtt_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->rtt); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1num_1pieces_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->num_pieces = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1num_1pieces_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->num_pieces); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1download_1rate_1peak_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->download_rate_peak = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1download_1rate_1peak_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->download_rate_peak); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1upload_1rate_1peak_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->upload_rate_peak = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1upload_1rate_1peak_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->upload_rate_peak); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1progress_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jfloat jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + float arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (float)jarg2; + if (arg1) (arg1)->progress = arg2; +} + + +SWIGEXPORT jfloat JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1progress_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jfloat jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + float result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (float) ((arg1)->progress); + jresult = (jfloat)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1progress_1ppm_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->progress_ppm = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1progress_1ppm_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->progress_ppm); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1deprecated_1estimated_1reciprocation_1rate_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->deprecated_estimated_reciprocation_rate = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1deprecated_1estimated_1reciprocation_1rate_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (int) ((arg1)->deprecated_estimated_reciprocation_rate); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1ip_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + libtorrent::tcp::endpoint *arg2 = (libtorrent::tcp::endpoint *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = *(libtorrent::tcp::endpoint **)&jarg2; + if (arg1) (arg1)->ip = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1ip_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + libtorrent::tcp::endpoint *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (libtorrent::tcp::endpoint *)& ((arg1)->ip); + *(libtorrent::tcp::endpoint **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1local_1endpoint_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + libtorrent::tcp::endpoint *arg2 = (libtorrent::tcp::endpoint *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = *(libtorrent::tcp::endpoint **)&jarg2; + if (arg1) (arg1)->local_endpoint = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1local_1endpoint_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + libtorrent::tcp::endpoint *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (libtorrent::tcp::endpoint *)& ((arg1)->local_endpoint); + *(libtorrent::tcp::endpoint **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1bw_1idle_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::bandwidth_state_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::bandwidth_state_flags_tag > *)&libtorrent::peer_info::bw_idle; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::bandwidth_state_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1bw_1limit_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::bandwidth_state_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::bandwidth_state_flags_tag > *)&libtorrent::peer_info::bw_limit; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::bandwidth_state_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1bw_1network_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::bandwidth_state_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::bandwidth_state_flags_tag > *)&libtorrent::peer_info::bw_network; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::bandwidth_state_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1bw_1disk_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::bandwidth_state_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::bandwidth_state_flags_tag > *)&libtorrent::peer_info::bw_disk; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::bandwidth_state_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1read_1state_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + libtorrent::bandwidth_state_flags_t *arg2 = (libtorrent::bandwidth_state_flags_t *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = *(libtorrent::bandwidth_state_flags_t **)&jarg2; + if (arg1) (arg1)->read_state = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1read_1state_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + libtorrent::bandwidth_state_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (libtorrent::bandwidth_state_flags_t *)& ((arg1)->read_state); + *(libtorrent::bandwidth_state_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1write_1state_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + libtorrent::bandwidth_state_flags_t *arg2 = (libtorrent::bandwidth_state_flags_t *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_info **)&jarg1; + arg2 = *(libtorrent::bandwidth_state_flags_t **)&jarg2; + if (arg1) (arg1)->write_state = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1write_1state_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + libtorrent::bandwidth_state_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + result = (libtorrent::bandwidth_state_flags_t *)& ((arg1)->write_state); + *(libtorrent::bandwidth_state_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1get_1client(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + { + try { + result = libtorrent_peer_info_get_client(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1get_1last_1request(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + { + try { + result = (int64_t)libtorrent_peer_info_get_last_request(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1get_1last_1active(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + { + try { + result = (int64_t)libtorrent_peer_info_get_last_active(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1get_1download_1queue_1time(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + { + try { + result = (int64_t)libtorrent_peer_info_get_download_queue_time(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1get_1flags(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + std::int32_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + { + try { + result = (std::int32_t)libtorrent_peer_info_get_flags(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jbyte JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1get_1source(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jbyte jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + std::int8_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + { + try { + result = (std::int8_t)libtorrent_peer_info_get_source(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jbyte)result; + return jresult; +} + + +SWIGEXPORT jbyte JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1get_1read_1state(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jbyte jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + std::int8_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + { + try { + result = (std::int8_t)libtorrent_peer_info_get_read_state(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jbyte)result; + return jresult; +} + + +SWIGEXPORT jbyte JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1info_1get_1write_1state(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jbyte jresult = 0 ; + libtorrent::peer_info *arg1 = (libtorrent::peer_info *) 0 ; + std::int8_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_info **)&jarg1; + { + try { + result = (std::int8_t)libtorrent_peer_info_get_write_state(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jbyte)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_seed_1mode_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::seed_mode; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_upload_1mode_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::upload_mode; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_share_1mode_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::share_mode; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_apply_1ip_1filter_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::apply_ip_filter; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_paused_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::paused; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_auto_1managed_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::auto_managed; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_duplicate_1is_1error_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::duplicate_is_error; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_update_1subscribe_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::update_subscribe; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_super_1seeding_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::super_seeding; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_sequential_1download_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::sequential_download; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stop_1when_1ready_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::stop_when_ready; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_override_1trackers_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::override_trackers; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_override_1web_1seeds_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::override_web_seeds; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_need_1save_1resume_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::need_save_resume; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_disable_1dht_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::disable_dht; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_disable_1lsd_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::disable_lsd; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_disable_1pex_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::disable_pex; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_no_1verify_1files_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::no_verify_files; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_all_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::all; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_default_1flags_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_flags_t *)&libtorrent::torrent_flags::default_flags; + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1web_1seed_1entry_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jstring jarg1, jint jarg2, jstring jarg3, jlong jarg4, jobject jarg4_) { + jlong jresult = 0 ; + std::string *arg1 = 0 ; + libtorrent::web_seed_entry::type_t arg2 ; + std::string *arg3 = 0 ; + libtorrent::web_seed_entry::headers_t *arg4 = 0 ; + libtorrent::web_seed_entry *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg4_; + if(!jarg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(jarg1, 0); + if (!arg1_pstr) return 0; + std::string arg1_str(arg1_pstr); + arg1 = &arg1_str; + jenv->ReleaseStringUTFChars(jarg1, arg1_pstr); + arg2 = (libtorrent::web_seed_entry::type_t)jarg2; + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return 0; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + arg4 = *(libtorrent::web_seed_entry::headers_t **)&jarg4; + if (!arg4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::web_seed_entry::headers_t const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::web_seed_entry *)new libtorrent::web_seed_entry((std::string const &)*arg1,arg2,(std::string const &)*arg3,(libtorrent::web_seed_entry::headers_t const &)*arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::web_seed_entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1web_1seed_1entry_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jstring jarg1, jint jarg2, jstring jarg3) { + jlong jresult = 0 ; + std::string *arg1 = 0 ; + libtorrent::web_seed_entry::type_t arg2 ; + std::string *arg3 = 0 ; + libtorrent::web_seed_entry *result = 0 ; + + (void)jenv; + (void)jcls; + if(!jarg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(jarg1, 0); + if (!arg1_pstr) return 0; + std::string arg1_str(arg1_pstr); + arg1 = &arg1_str; + jenv->ReleaseStringUTFChars(jarg1, arg1_pstr); + arg2 = (libtorrent::web_seed_entry::type_t)jarg2; + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return 0; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + { + try { + result = (libtorrent::web_seed_entry *)new libtorrent::web_seed_entry((std::string const &)*arg1,arg2,(std::string const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::web_seed_entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1web_1seed_1entry_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jstring jarg1, jint jarg2) { + jlong jresult = 0 ; + std::string *arg1 = 0 ; + libtorrent::web_seed_entry::type_t arg2 ; + libtorrent::web_seed_entry *result = 0 ; + + (void)jenv; + (void)jcls; + if(!jarg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(jarg1, 0); + if (!arg1_pstr) return 0; + std::string arg1_str(arg1_pstr); + arg1 = &arg1_str; + jenv->ReleaseStringUTFChars(jarg1, arg1_pstr); + arg2 = (libtorrent::web_seed_entry::type_t)jarg2; + { + try { + result = (libtorrent::web_seed_entry *)new libtorrent::web_seed_entry((std::string const &)*arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::web_seed_entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1op_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::web_seed_entry *arg1 = (libtorrent::web_seed_entry *) 0 ; + libtorrent::web_seed_entry *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::web_seed_entry **)&jarg1; + arg2 = *(libtorrent::web_seed_entry **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::web_seed_entry const & reference is null"); + return 0; + } + { + try { + result = (bool)((libtorrent::web_seed_entry const *)arg1)->operator ==((libtorrent::web_seed_entry const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1op_1lt(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::web_seed_entry *arg1 = (libtorrent::web_seed_entry *) 0 ; + libtorrent::web_seed_entry *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::web_seed_entry **)&jarg1; + arg2 = *(libtorrent::web_seed_entry **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::web_seed_entry const & reference is null"); + return 0; + } + { + try { + result = (bool)((libtorrent::web_seed_entry const *)arg1)->operator <((libtorrent::web_seed_entry const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1url_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::web_seed_entry *arg1 = (libtorrent::web_seed_entry *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::web_seed_entry **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if (arg1) (arg1)->url = *arg2; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1url_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::web_seed_entry *arg1 = (libtorrent::web_seed_entry *) 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::web_seed_entry **)&jarg1; + result = (std::string *) & ((arg1)->url); + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1auth_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::web_seed_entry *arg1 = (libtorrent::web_seed_entry *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::web_seed_entry **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if (arg1) (arg1)->auth = *arg2; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1auth_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::web_seed_entry *arg1 = (libtorrent::web_seed_entry *) 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::web_seed_entry **)&jarg1; + result = (std::string *) & ((arg1)->auth); + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1extra_1headers_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::web_seed_entry *arg1 = (libtorrent::web_seed_entry *) 0 ; + libtorrent::web_seed_entry::headers_t *arg2 = (libtorrent::web_seed_entry::headers_t *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::web_seed_entry **)&jarg1; + arg2 = *(libtorrent::web_seed_entry::headers_t **)&jarg2; + if (arg1) (arg1)->extra_headers = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1extra_1headers_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::web_seed_entry *arg1 = (libtorrent::web_seed_entry *) 0 ; + libtorrent::web_seed_entry::headers_t *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::web_seed_entry **)&jarg1; + result = (libtorrent::web_seed_entry::headers_t *)& ((arg1)->extra_headers); + *(libtorrent::web_seed_entry::headers_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1type_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jshort jarg2) { + libtorrent::web_seed_entry *arg1 = (libtorrent::web_seed_entry *) 0 ; + std::uint8_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::web_seed_entry **)&jarg1; + arg2 = (std::uint8_t)jarg2; + if (arg1) (arg1)->type = arg2; +} + + +SWIGEXPORT jshort JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_web_1seed_1entry_1type_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jshort jresult = 0 ; + libtorrent::web_seed_entry *arg1 = (libtorrent::web_seed_entry *) 0 ; + std::uint8_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::web_seed_entry **)&jarg1; + result = (std::uint8_t) ((arg1)->type); + jresult = (jshort)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1web_1seed_1entry(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::web_seed_entry *arg1 = (libtorrent::web_seed_entry *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::web_seed_entry **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_load_1torrent_1limits_1max_1buffer_1size_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::load_torrent_limits *arg1 = (libtorrent::load_torrent_limits *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::load_torrent_limits **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->max_buffer_size = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_load_1torrent_1limits_1max_1buffer_1size_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::load_torrent_limits *arg1 = (libtorrent::load_torrent_limits *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::load_torrent_limits **)&jarg1; + result = (int) ((arg1)->max_buffer_size); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_load_1torrent_1limits_1max_1pieces_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::load_torrent_limits *arg1 = (libtorrent::load_torrent_limits *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::load_torrent_limits **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->max_pieces = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_load_1torrent_1limits_1max_1pieces_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::load_torrent_limits *arg1 = (libtorrent::load_torrent_limits *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::load_torrent_limits **)&jarg1; + result = (int) ((arg1)->max_pieces); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_load_1torrent_1limits_1max_1decode_1depth_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::load_torrent_limits *arg1 = (libtorrent::load_torrent_limits *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::load_torrent_limits **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->max_decode_depth = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_load_1torrent_1limits_1max_1decode_1depth_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::load_torrent_limits *arg1 = (libtorrent::load_torrent_limits *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::load_torrent_limits **)&jarg1; + result = (int) ((arg1)->max_decode_depth); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_load_1torrent_1limits_1max_1decode_1tokens_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::load_torrent_limits *arg1 = (libtorrent::load_torrent_limits *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::load_torrent_limits **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->max_decode_tokens = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_load_1torrent_1limits_1max_1decode_1tokens_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::load_torrent_limits *arg1 = (libtorrent::load_torrent_limits *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::load_torrent_limits **)&jarg1; + result = (int) ((arg1)->max_decode_tokens); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1load_1torrent_1limits(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::load_torrent_limits *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::load_torrent_limits *)new libtorrent::load_torrent_limits(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::load_torrent_limits **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1load_1torrent_1limits(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::load_torrent_limits *arg1 = (libtorrent::load_torrent_limits *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::load_torrent_limits **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1torrent_1info_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = 0 ; + libtorrent::torrent_info *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::torrent_info const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::torrent_info *)new libtorrent::torrent_info((libtorrent::torrent_info const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_info **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1torrent_1info_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::sha1_hash *arg1 = 0 ; + libtorrent::torrent_info *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::sha1_hash **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::torrent_info *)new libtorrent::torrent_info((libtorrent::sha1_hash const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_info **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1torrent_1info_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = 0 ; + libtorrent::error_code *arg2 = 0 ; + libtorrent::torrent_info *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::bdecode_node const & reference is null"); + return 0; + } + arg2 = *(libtorrent::error_code **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::error_code & reference is null"); + return 0; + } + { + try { + result = (libtorrent::torrent_info *)new libtorrent::torrent_info((libtorrent::bdecode_node const &)*arg1,*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_info **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1torrent_1info_1_1SWIG_13(JNIEnv *jenv, jclass jcls, jstring jarg1, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + std::string *arg1 = 0 ; + libtorrent::error_code *arg2 = 0 ; + libtorrent::torrent_info *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg2_; + if(!jarg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(jarg1, 0); + if (!arg1_pstr) return 0; + std::string arg1_str(arg1_pstr); + arg1 = &arg1_str; + jenv->ReleaseStringUTFChars(jarg1, arg1_pstr); + arg2 = *(libtorrent::error_code **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::error_code & reference is null"); + return 0; + } + { + try { + result = (libtorrent::torrent_info *)new libtorrent::torrent_info((std::string const &)*arg1,*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_info **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1info(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1files(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + libtorrent::file_storage *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (libtorrent::file_storage *) &((libtorrent::torrent_info const *)arg1)->files(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::file_storage **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1orig_1files(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + libtorrent::file_storage *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (libtorrent::file_storage *) &((libtorrent::torrent_info const *)arg1)->orig_files(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::file_storage **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1rename_1file(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2, jstring jarg3) { + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + file_index_t arg2 ; + std::string *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + { + try { + (arg1)->rename_file(arg2,(std::string const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1remap_1files(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + libtorrent::file_storage *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + arg2 = *(libtorrent::file_storage **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::file_storage const & reference is null"); + return ; + } + { + try { + (arg1)->remap_files((libtorrent::file_storage const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1add_1tracker_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3) { + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::string *arg2 = 0 ; + int arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + arg3 = (int)jarg3; + { + try { + (arg1)->add_tracker((std::string const &)*arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1add_1tracker_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + (arg1)->add_tracker((std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1add_1tracker_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3, jint jarg4) { + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::string *arg2 = 0 ; + int arg3 ; + libtorrent::announce_entry::tracker_source arg4 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + arg3 = (int)jarg3; + arg4 = (libtorrent::announce_entry::tracker_source)jarg4; + { + try { + (arg1)->add_tracker((std::string const &)*arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1trackers(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::vector< libtorrent::announce_entry > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (std::vector< libtorrent::announce_entry > *) &((libtorrent::torrent_info const *)arg1)->trackers(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::announce_entry > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1similar_1torrents(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::vector< libtorrent::sha1_hash > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = ((libtorrent::torrent_info const *)arg1)->similar_torrents(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::sha1_hash > **)&jresult = new std::vector< libtorrent::sha1_hash >((const std::vector< libtorrent::sha1_hash > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1collections(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::vector< std::string > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = ((libtorrent::torrent_info const *)arg1)->collections(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::string > **)&jresult = new std::vector< std::string >((const std::vector< std::string > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1add_1url_1seed_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3, jlong jarg4, jobject jarg4_) { + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::string *arg2 = 0 ; + std::string *arg3 = 0 ; + libtorrent::web_seed_entry::headers_t *arg4 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg4_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + arg4 = *(libtorrent::web_seed_entry::headers_t **)&jarg4; + if (!arg4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::web_seed_entry::headers_t const & reference is null"); + return ; + } + { + try { + (arg1)->add_url_seed((std::string const &)*arg2,(std::string const &)*arg3,(libtorrent::web_seed_entry::headers_t const &)*arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1add_1url_1seed_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3) { + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::string *arg2 = 0 ; + std::string *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + { + try { + (arg1)->add_url_seed((std::string const &)*arg2,(std::string const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1add_1url_1seed_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + (arg1)->add_url_seed((std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1add_1http_1seed_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3, jlong jarg4, jobject jarg4_) { + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::string *arg2 = 0 ; + std::string *arg3 = 0 ; + libtorrent::web_seed_entry::headers_t *arg4 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg4_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + arg4 = *(libtorrent::web_seed_entry::headers_t **)&jarg4; + if (!arg4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::web_seed_entry::headers_t const & reference is null"); + return ; + } + { + try { + (arg1)->add_http_seed((std::string const &)*arg2,(std::string const &)*arg3,(libtorrent::web_seed_entry::headers_t const &)*arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1add_1http_1seed_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3) { + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::string *arg2 = 0 ; + std::string *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + { + try { + (arg1)->add_http_seed((std::string const &)*arg2,(std::string const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1add_1http_1seed_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + (arg1)->add_http_seed((std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1web_1seeds(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::vector< libtorrent::web_seed_entry > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (std::vector< libtorrent::web_seed_entry > *) &((libtorrent::torrent_info const *)arg1)->web_seeds(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::web_seed_entry > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1set_1web_1seeds(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::vector< libtorrent::web_seed_entry > arg2 ; + std::vector< libtorrent::web_seed_entry > *argp2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + argp2 = *(std::vector< libtorrent::web_seed_entry > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null std::vector< libtorrent::web_seed_entry >"); + return ; + } + arg2 = *argp2; + { + try { + (arg1)->set_web_seeds(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1total_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (std::int64_t)((libtorrent::torrent_info const *)arg1)->total_size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1piece_1length(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_info const *)arg1)->piece_length(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1num_1pieces(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_info const *)arg1)->num_pieces(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1last_1piece(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = ((libtorrent::torrent_info const *)arg1)->last_piece(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1end_1piece(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = ((libtorrent::torrent_info const *)arg1)->end_piece(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1info_1hash(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (libtorrent::sha1_hash *) &((libtorrent::torrent_info const *)arg1)->info_hash(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1num_1files(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_info const *)arg1)->num_files(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1map_1block(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2, jlong jarg3, jint jarg4) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + piece_index_t arg2 ; + std::int64_t arg3 ; + int arg4 ; + std::vector< libtorrent::file_slice > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + arg3 = (std::int64_t)jarg3; + arg4 = (int)jarg4; + { + try { + result = ((libtorrent::torrent_info const *)arg1)->map_block(arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::file_slice > **)&jresult = new std::vector< libtorrent::file_slice >((const std::vector< libtorrent::file_slice > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1map_1file(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2, jlong jarg3, jint jarg4) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + file_index_t arg2 ; + std::int64_t arg3 ; + int arg4 ; + libtorrent::peer_request result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + arg3 = (std::int64_t)jarg3; + arg4 = (int)jarg4; + { + try { + result = ((libtorrent::torrent_info const *)arg1)->map_file(arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_request **)&jresult = new libtorrent::peer_request((const libtorrent::peer_request &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1ssl_1cert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + libtorrent::string_view result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = ((libtorrent::torrent_info const *)arg1)->ssl_cert(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::string_view **)&jresult = new libtorrent::string_view((const libtorrent::string_view &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1is_1valid(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (bool)((libtorrent::torrent_info const *)arg1)->is_valid(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1priv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (bool)((libtorrent::torrent_info const *)arg1)->priv(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1is_1i2p(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (bool)((libtorrent::torrent_info const *)arg1)->is_i2p(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1piece_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jint jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + piece_index_t arg2 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + { + try { + result = (int)((libtorrent::torrent_info const *)arg1)->piece_size(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1hash_1for_1piece(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + piece_index_t arg2 ; + libtorrent::sha1_hash result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + { + try { + result = ((libtorrent::torrent_info const *)arg1)->hash_for_piece(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::sha1_hash **)&jresult = new libtorrent::sha1_hash((const libtorrent::sha1_hash &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1is_1loaded(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (bool)((libtorrent::torrent_info const *)arg1)->is_loaded(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1merkle_1tree(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::vector< libtorrent::sha1_hash > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (std::vector< libtorrent::sha1_hash > *) &((libtorrent::torrent_info const *)arg1)->merkle_tree(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::sha1_hash > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1set_1merkle_1tree(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::vector< libtorrent::sha1_hash > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + arg2 = *(std::vector< libtorrent::sha1_hash > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::sha1_hash > & reference is null"); + return ; + } + { + try { + (arg1)->set_merkle_tree(*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1name(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (std::string *) &((libtorrent::torrent_info const *)arg1)->name(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1creation_1date(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::time_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = ((libtorrent::torrent_info const *)arg1)->creation_date(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1creator(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (std::string *) &((libtorrent::torrent_info const *)arg1)->creator(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1comment(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (std::string *) &((libtorrent::torrent_info const *)arg1)->comment(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1nodes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::vector< std::pair< std::string,int > > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (std::vector< std::pair< std::string,int > > *) &((libtorrent::torrent_info const *)arg1)->nodes(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::pair< std::string,int > > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1add_1node(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + std::pair< std::string,int > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + arg2 = *(std::pair< std::string,int > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::pair< std::string,int > const & reference is null"); + return ; + } + { + try { + (arg1)->add_node((std::pair< std::string,int > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1info(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + char *arg2 = (char *) 0 ; + libtorrent::bdecode_node result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return 0; + } + { + try { + result = ((libtorrent::torrent_info const *)arg1)->info((char const *)arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::bdecode_node **)&jresult = new libtorrent::bdecode_node((const libtorrent::bdecode_node &)result); + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1metadata_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_info const *)arg1)->metadata_size(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1info_1is_1merkle_1torrent(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_info *arg1 = (libtorrent::torrent_info *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + { + try { + result = (bool)((libtorrent::torrent_info const *)arg1)->is_merkle_torrent(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1torrent_1info_1_1SWIG_14(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jlong jarg3, jobject jarg3_) { + jlong jresult = 0 ; + int64_t arg1 ; + int arg2 ; + libtorrent::error_code *arg3 = 0 ; + libtorrent::torrent_info *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg3_; + arg1 = (int64_t)jarg1; + arg2 = (int)jarg2; + arg3 = *(libtorrent::error_code **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::error_code & reference is null"); + return 0; + } + { + try { + result = (libtorrent::torrent_info *)new_libtorrent_torrent_info__SWIG_4(arg1,arg2,*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_info **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pex_1encryption_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::pex_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::pex_flags_t *)&libtorrent::pex_encryption; + *(libtorrent::pex_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pex_1seed_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::pex_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::pex_flags_t *)&libtorrent::pex_seed; + *(libtorrent::pex_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pex_1utp_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::pex_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::pex_flags_t *)&libtorrent::pex_utp; + *(libtorrent::pex_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_pex_1holepunch_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::pex_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::pex_flags_t *)&libtorrent::pex_holepunch; + *(libtorrent::pex_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1torrent_1status_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::torrent_status *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::torrent_status *)new libtorrent::torrent_status(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_status **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1status(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::torrent_status **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1torrent_1status_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = 0 ; + libtorrent::torrent_status *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::torrent_status const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::torrent_status *)new libtorrent::torrent_status((libtorrent::torrent_status const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_status **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1op_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::torrent_status *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = *(libtorrent::torrent_status **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::torrent_status const & reference is null"); + return 0; + } + { + try { + result = (bool)((libtorrent::torrent_status const *)arg1)->operator ==((libtorrent::torrent_status const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1handle_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::torrent_handle *arg2 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = *(libtorrent::torrent_handle **)&jarg2; + if (arg1) (arg1)->handle = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1handle_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::torrent_handle *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (libtorrent::torrent_handle *)& ((arg1)->handle); + *(libtorrent::torrent_handle **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1checking_1files_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::torrent_status::state_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_status::state_t)libtorrent::torrent_status::checking_files; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1checking_1resume_1data_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::torrent_status::state_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_status::state_t)libtorrent::torrent_status::checking_resume_data; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1errc_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::error_code *arg2 = (libtorrent::error_code *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = *(libtorrent::error_code **)&jarg2; + if (arg1) (arg1)->errc = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1errc_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->errc); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1error_1file_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + file_index_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + if (arg1) (arg1)->error_file = arg2; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1error_1file_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + file_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = ((arg1)->error_file); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1error_1file_1none_1get(JNIEnv *jenv, jclass jcls) { + int jresult = 0 ; + file_index_t result; + + (void)jenv; + (void)jcls; + result = libtorrent::torrent_status::error_file_none; + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1error_1file_1ssl_1ctx_1get(JNIEnv *jenv, jclass jcls) { + int jresult = 0 ; + file_index_t result; + + (void)jenv; + (void)jcls; + result = libtorrent::torrent_status::error_file_ssl_ctx; + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1error_1file_1metadata_1get(JNIEnv *jenv, jclass jcls) { + int jresult = 0 ; + file_index_t result; + + (void)jenv; + (void)jcls; + result = libtorrent::torrent_status::error_file_metadata; + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1error_1file_1exception_1get(JNIEnv *jenv, jclass jcls) { + int jresult = 0 ; + file_index_t result; + + (void)jenv; + (void)jcls; + result = libtorrent::torrent_status::error_file_exception; + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1error_1file_1partfile_1get(JNIEnv *jenv, jclass jcls) { + int jresult = 0 ; + file_index_t result; + + (void)jenv; + (void)jcls; + result = libtorrent::torrent_status::error_file_partfile; + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1save_1path_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if (arg1) (arg1)->save_path = *arg2; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1save_1path_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (std::string *) & ((arg1)->save_path); + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1name_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if (arg1) (arg1)->name = *arg2; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1name_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (std::string *) & ((arg1)->name); + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1current_1tracker_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if (arg1) (arg1)->current_tracker = *arg2; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1current_1tracker_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (std::string *) & ((arg1)->current_tracker); + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1download_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->total_download = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1download_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (std::int64_t) ((arg1)->total_download); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1upload_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->total_upload = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1upload_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (std::int64_t) ((arg1)->total_upload); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1payload_1download_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->total_payload_download = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1payload_1download_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (std::int64_t) ((arg1)->total_payload_download); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1payload_1upload_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->total_payload_upload = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1payload_1upload_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (std::int64_t) ((arg1)->total_payload_upload); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1failed_1bytes_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->total_failed_bytes = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1failed_1bytes_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (std::int64_t) ((arg1)->total_failed_bytes); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1redundant_1bytes_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->total_redundant_bytes = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1redundant_1bytes_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (std::int64_t) ((arg1)->total_redundant_bytes); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1pieces_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::typed_bitfield< piece_index_t > *arg2 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg2; + if (arg1) (arg1)->pieces = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1pieces_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::typed_bitfield< piece_index_t > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (libtorrent::typed_bitfield< piece_index_t > *)& ((arg1)->pieces); + *(libtorrent::typed_bitfield< piece_index_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1verified_1pieces_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::typed_bitfield< piece_index_t > *arg2 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg2; + if (arg1) (arg1)->verified_pieces = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1verified_1pieces_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::typed_bitfield< piece_index_t > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (libtorrent::typed_bitfield< piece_index_t > *)& ((arg1)->verified_pieces); + *(libtorrent::typed_bitfield< piece_index_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1done_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->total_done = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1done_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (std::int64_t) ((arg1)->total_done); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->total = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (std::int64_t) ((arg1)->total); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1wanted_1done_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->total_wanted_done = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1wanted_1done_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (std::int64_t) ((arg1)->total_wanted_done); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1wanted_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->total_wanted = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1total_1wanted_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (std::int64_t) ((arg1)->total_wanted); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1all_1time_1upload_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->all_time_upload = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1all_1time_1upload_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (std::int64_t) ((arg1)->all_time_upload); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1all_1time_1download_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->all_time_download = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1all_1time_1download_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (std::int64_t) ((arg1)->all_time_download); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1added_1time_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::time_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (std::time_t)jarg2; + if (arg1) (arg1)->added_time = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1added_1time_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::time_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = ((arg1)->added_time); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1completed_1time_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::time_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (std::time_t)jarg2; + if (arg1) (arg1)->completed_time = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1completed_1time_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::time_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = ((arg1)->completed_time); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1last_1seen_1complete_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::time_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (std::time_t)jarg2; + if (arg1) (arg1)->last_seen_complete = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1last_1seen_1complete_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + std::time_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = ((arg1)->last_seen_complete); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1storage_1mode_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::storage_mode_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (libtorrent::storage_mode_t)jarg2; + if (arg1) (arg1)->storage_mode = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1storage_1mode_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::storage_mode_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (libtorrent::storage_mode_t) ((arg1)->storage_mode); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1progress_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jfloat jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + float arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (float)jarg2; + if (arg1) (arg1)->progress = arg2; +} + + +SWIGEXPORT jfloat JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1progress_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jfloat jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + float result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (float) ((arg1)->progress); + jresult = (jfloat)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1progress_1ppm_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->progress_ppm = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1progress_1ppm_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->progress_ppm); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1download_1rate_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->download_rate = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1download_1rate_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->download_rate); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1upload_1rate_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->upload_rate = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1upload_1rate_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->upload_rate); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1download_1payload_1rate_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->download_payload_rate = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1download_1payload_1rate_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->download_payload_rate); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1upload_1payload_1rate_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->upload_payload_rate = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1upload_1payload_1rate_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->upload_payload_rate); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1num_1seeds_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->num_seeds = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1num_1seeds_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->num_seeds); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1num_1peers_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->num_peers = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1num_1peers_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->num_peers); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1num_1complete_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->num_complete = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1num_1complete_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->num_complete); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1num_1incomplete_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->num_incomplete = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1num_1incomplete_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->num_incomplete); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1list_1seeds_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->list_seeds = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1list_1seeds_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->list_seeds); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1list_1peers_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->list_peers = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1list_1peers_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->list_peers); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1connect_1candidates_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->connect_candidates = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1connect_1candidates_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->connect_candidates); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1num_1pieces_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->num_pieces = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1num_1pieces_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->num_pieces); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1distributed_1full_1copies_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->distributed_full_copies = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1distributed_1full_1copies_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->distributed_full_copies); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1distributed_1fraction_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->distributed_fraction = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1distributed_1fraction_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->distributed_fraction); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1distributed_1copies_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jfloat jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + float arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (float)jarg2; + if (arg1) (arg1)->distributed_copies = arg2; +} + + +SWIGEXPORT jfloat JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1distributed_1copies_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jfloat jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + float result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (float) ((arg1)->distributed_copies); + jresult = (jfloat)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1block_1size_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->block_size = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1block_1size_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->block_size); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1num_1uploads_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->num_uploads = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1num_1uploads_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->num_uploads); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1num_1connections_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->num_connections = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1num_1connections_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->num_connections); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1uploads_1limit_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->uploads_limit = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1uploads_1limit_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->uploads_limit); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1connections_1limit_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->connections_limit = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1connections_1limit_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->connections_limit); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1up_1bandwidth_1queue_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->up_bandwidth_queue = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1up_1bandwidth_1queue_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->up_bandwidth_queue); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1down_1bandwidth_1queue_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->down_bandwidth_queue = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1down_1bandwidth_1queue_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->down_bandwidth_queue); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1seed_1rank_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->seed_rank = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1seed_1rank_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (int) ((arg1)->seed_rank); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1state_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::torrent_status::state_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = (libtorrent::torrent_status::state_t)jarg2; + if (arg1) (arg1)->state = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1state_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::torrent_status::state_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (libtorrent::torrent_status::state_t) ((arg1)->state); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1need_1save_1resume_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->need_save_resume = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1need_1save_1resume_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (bool) ((arg1)->need_save_resume); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1is_1seeding_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->is_seeding = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1is_1seeding_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (bool) ((arg1)->is_seeding); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1is_1finished_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->is_finished = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1is_1finished_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (bool) ((arg1)->is_finished); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1has_1metadata_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->has_metadata = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1has_1metadata_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (bool) ((arg1)->has_metadata); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1has_1incoming_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->has_incoming = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1has_1incoming_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (bool) ((arg1)->has_incoming); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1moving_1storage_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->moving_storage = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1moving_1storage_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (bool) ((arg1)->moving_storage); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1announcing_1to_1trackers_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->announcing_to_trackers = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1announcing_1to_1trackers_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (bool) ((arg1)->announcing_to_trackers); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1announcing_1to_1lsd_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->announcing_to_lsd = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1announcing_1to_1lsd_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (bool) ((arg1)->announcing_to_lsd); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1announcing_1to_1dht_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->announcing_to_dht = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1announcing_1to_1dht_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (bool) ((arg1)->announcing_to_dht); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1info_1hash_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::sha1_hash *arg2 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (arg1) (arg1)->info_hash = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1info_1hash_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (libtorrent::sha1_hash *)& ((arg1)->info_hash); + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1flags_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::torrent_flags_t *arg2 = (libtorrent::torrent_flags_t *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + arg2 = *(libtorrent::torrent_flags_t **)&jarg2; + if (arg1) (arg1)->flags = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1flags_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + result = (libtorrent::torrent_flags_t *)& ((arg1)->flags); + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1torrent_1file_1ptr(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + libtorrent::torrent_info *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + { + try { + result = (libtorrent::torrent_info *)libtorrent_torrent_status_torrent_file_ptr(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_info **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1get_1next_1announce(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + { + try { + result = (int64_t)libtorrent_torrent_status_get_next_announce(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1get_1last_1upload(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + { + try { + result = (int64_t)libtorrent_torrent_status_get_last_upload(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1get_1last_1download(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + { + try { + result = (int64_t)libtorrent_torrent_status_get_last_download(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1get_1active_1duration(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + { + try { + result = (int64_t)libtorrent_torrent_status_get_active_duration(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1get_1finished_1duration(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + { + try { + result = (int64_t)libtorrent_torrent_status_get_finished_duration(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1get_1seeding_1duration(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + { + try { + result = (int64_t)libtorrent_torrent_status_get_seeding_duration(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1status_1get_1queue_1position(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_status *arg1 = (libtorrent::torrent_status *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_status **)&jarg1; + { + try { + result = (int)libtorrent_torrent_status_get_queue_position(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1peer(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::block_info *arg1 = (libtorrent::block_info *) 0 ; + libtorrent::tcp::endpoint result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_info **)&jarg1; + { + try { + result = ((libtorrent::block_info const *)arg1)->peer(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::tcp::endpoint **)&jresult = new libtorrent::tcp::endpoint((const libtorrent::tcp::endpoint &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1bytes_1progress_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::block_info *arg1 = (libtorrent::block_info *) 0 ; + unsigned int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_info **)&jarg1; + arg2 = (unsigned int)jarg2; + if (arg1) (arg1)->bytes_progress = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1bytes_1progress_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::block_info *arg1 = (libtorrent::block_info *) 0 ; + unsigned int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_info **)&jarg1; + result = (unsigned int) ((arg1)->bytes_progress); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1block_1size_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::block_info *arg1 = (libtorrent::block_info *) 0 ; + unsigned int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_info **)&jarg1; + arg2 = (unsigned int)jarg2; + if (arg1) (arg1)->block_size = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1block_1size_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::block_info *arg1 = (libtorrent::block_info *) 0 ; + unsigned int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_info **)&jarg1; + result = (unsigned int) ((arg1)->block_size); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1state_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::block_info *arg1 = (libtorrent::block_info *) 0 ; + unsigned int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_info **)&jarg1; + arg2 = (unsigned int)jarg2; + if (arg1) (arg1)->state = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1state_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::block_info *arg1 = (libtorrent::block_info *) 0 ; + unsigned int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_info **)&jarg1; + result = (unsigned int) ((arg1)->state); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1num_1peers_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::block_info *arg1 = (libtorrent::block_info *) 0 ; + unsigned int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_info **)&jarg1; + arg2 = (unsigned int)jarg2; + if (arg1) (arg1)->num_peers = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1info_1num_1peers_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::block_info *arg1 = (libtorrent::block_info *) 0 ; + unsigned int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_info **)&jarg1; + result = (unsigned int) ((arg1)->num_peers); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1block_1info(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::block_info *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::block_info *)new libtorrent::block_info(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::block_info **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1block_1info(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::block_info *arg1 = (libtorrent::block_info *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::block_info **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1piece_1index_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + libtorrent::partial_piece_info *arg1 = (libtorrent::partial_piece_info *) 0 ; + piece_index_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::partial_piece_info **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + if (arg1) (arg1)->piece_index = arg2; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1piece_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::partial_piece_info *arg1 = (libtorrent::partial_piece_info *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::partial_piece_info **)&jarg1; + result = ((arg1)->piece_index); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1blocks_1in_1piece_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::partial_piece_info *arg1 = (libtorrent::partial_piece_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::partial_piece_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->blocks_in_piece = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1blocks_1in_1piece_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::partial_piece_info *arg1 = (libtorrent::partial_piece_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::partial_piece_info **)&jarg1; + result = (int) ((arg1)->blocks_in_piece); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1finished_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::partial_piece_info *arg1 = (libtorrent::partial_piece_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::partial_piece_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->finished = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1finished_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::partial_piece_info *arg1 = (libtorrent::partial_piece_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::partial_piece_info **)&jarg1; + result = (int) ((arg1)->finished); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1writing_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::partial_piece_info *arg1 = (libtorrent::partial_piece_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::partial_piece_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->writing = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1writing_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::partial_piece_info *arg1 = (libtorrent::partial_piece_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::partial_piece_info **)&jarg1; + result = (int) ((arg1)->writing); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1requested_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::partial_piece_info *arg1 = (libtorrent::partial_piece_info *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::partial_piece_info **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->requested = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_partial_1piece_1info_1requested_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::partial_piece_info *arg1 = (libtorrent::partial_piece_info *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::partial_piece_info **)&jarg1; + result = (int) ((arg1)->requested); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1partial_1piece_1info(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::partial_piece_info *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::partial_piece_info *)new libtorrent::partial_piece_info(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::partial_piece_info **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1partial_1piece_1info(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::partial_piece_info *arg1 = (libtorrent::partial_piece_info *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::partial_piece_info **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1overwrite_1existing_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::add_piece_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::add_piece_flags_tag > *)&libtorrent::torrent_handle::overwrite_existing; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::add_piece_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1read_1piece(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + piece_index_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + { + try { + ((libtorrent::torrent_handle const *)arg1)->read_piece(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1have_1piece(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jboolean jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + piece_index_t arg2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + { + try { + result = (bool)((libtorrent::torrent_handle const *)arg1)->have_piece(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1get_1peer_1info(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::vector< libtorrent::peer_info > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(std::vector< libtorrent::peer_info > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::peer_info > & reference is null"); + return ; + } + { + try { + ((libtorrent::torrent_handle const *)arg1)->get_peer_info(*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1query_1distributed_1copies_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > *)&libtorrent::torrent_handle::query_distributed_copies; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1query_1accurate_1download_1counters_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > *)&libtorrent::torrent_handle::query_accurate_download_counters; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1query_1last_1seen_1complete_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > *)&libtorrent::torrent_handle::query_last_seen_complete; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1query_1pieces_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > *)&libtorrent::torrent_handle::query_pieces; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1query_1verified_1pieces_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > *)&libtorrent::torrent_handle::query_verified_pieces; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1query_1torrent_1file_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > *)&libtorrent::torrent_handle::query_torrent_file; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1query_1name_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > *)&libtorrent::torrent_handle::query_name; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1query_1save_1path_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > *)&libtorrent::torrent_handle::query_save_path; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::status_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1status_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::status_flags_t arg2 ; + libtorrent::status_flags_t *argp2 ; + libtorrent::torrent_status result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + argp2 = *(libtorrent::status_flags_t **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::status_flags_t"); + return 0; + } + arg2 = *argp2; + { + try { + result = ((libtorrent::torrent_handle const *)arg1)->status(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_status **)&jresult = new libtorrent::torrent_status((const libtorrent::torrent_status &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1status_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::torrent_status result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = ((libtorrent::torrent_handle const *)arg1)->status(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_status **)&jresult = new libtorrent::torrent_status((const libtorrent::torrent_status &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1get_1download_1queue(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::vector< libtorrent::partial_piece_info > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(std::vector< libtorrent::partial_piece_info > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::partial_piece_info > & reference is null"); + return ; + } + { + try { + ((libtorrent::torrent_handle const *)arg1)->get_download_queue(*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1alert_1when_1available_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::deadline_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::deadline_flags_tag > *)&libtorrent::torrent_handle::alert_when_available; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::deadline_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1set_1piece_1deadline_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2, jint jarg3, jlong jarg4, jobject jarg4_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + piece_index_t arg2 ; + int arg3 ; + libtorrent::deadline_flags_t arg4 ; + libtorrent::deadline_flags_t *argp4 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg4_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + arg3 = (int)jarg3; + argp4 = *(libtorrent::deadline_flags_t **)&jarg4; + if (!argp4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::deadline_flags_t"); + return ; + } + arg4 = *argp4; + { + try { + ((libtorrent::torrent_handle const *)arg1)->set_piece_deadline(arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1set_1piece_1deadline_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2, jint jarg3) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + piece_index_t arg2 ; + int arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + arg3 = (int)jarg3; + { + try { + ((libtorrent::torrent_handle const *)arg1)->set_piece_deadline(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1reset_1piece_1deadline(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + piece_index_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + { + try { + ((libtorrent::torrent_handle const *)arg1)->reset_piece_deadline(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1clear_1piece_1deadlines(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + ((libtorrent::torrent_handle const *)arg1)->clear_piece_deadlines(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1piece_1granularity_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::torrent_handle::file_progress_flags_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::torrent_handle::file_progress_flags_t)libtorrent::torrent_handle::piece_granularity; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1file_1progress_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jint jarg3) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::vector< std::int64_t > *arg2 = 0 ; + int arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(std::vector< std::int64_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::int64_t > & reference is null"); + return ; + } + arg3 = (int)jarg3; + { + try { + ((libtorrent::torrent_handle const *)arg1)->file_progress(*arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1file_1progress_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::vector< std::int64_t > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(std::vector< std::int64_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::int64_t > & reference is null"); + return ; + } + { + try { + ((libtorrent::torrent_handle const *)arg1)->file_progress(*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1clear_1error(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + ((libtorrent::torrent_handle const *)arg1)->clear_error(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1trackers(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::vector< libtorrent::announce_entry > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = ((libtorrent::torrent_handle const *)arg1)->trackers(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::announce_entry > **)&jresult = new std::vector< libtorrent::announce_entry >((const std::vector< libtorrent::announce_entry > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1replace_1trackers(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::vector< libtorrent::announce_entry > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(std::vector< libtorrent::announce_entry > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::announce_entry > const & reference is null"); + return ; + } + { + try { + ((libtorrent::torrent_handle const *)arg1)->replace_trackers((std::vector< libtorrent::announce_entry > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1add_1tracker(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::announce_entry *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(libtorrent::announce_entry **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::announce_entry const & reference is null"); + return ; + } + { + try { + ((libtorrent::torrent_handle const *)arg1)->add_tracker((libtorrent::announce_entry const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1add_1url_1seed(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + ((libtorrent::torrent_handle const *)arg1)->add_url_seed((std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1remove_1url_1seed(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + ((libtorrent::torrent_handle const *)arg1)->remove_url_seed((std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1add_1http_1seed(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + ((libtorrent::torrent_handle const *)arg1)->add_http_seed((std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1remove_1http_1seed(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + ((libtorrent::torrent_handle const *)arg1)->remove_http_seed((std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1is_1valid(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::torrent_handle const *)arg1)->is_valid(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1graceful_1pause_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::pause_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::pause_flags_tag > *)&libtorrent::torrent_handle::graceful_pause; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::pause_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1clear_1disk_1cache_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::pause_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::pause_flags_tag > *)&libtorrent::torrent_handle::clear_disk_cache; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::pause_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1pause_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::pause_flags_t arg2 ; + libtorrent::pause_flags_t *argp2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + argp2 = *(libtorrent::pause_flags_t **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::pause_flags_t"); + return ; + } + arg2 = *argp2; + { + try { + ((libtorrent::torrent_handle const *)arg1)->pause(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1pause_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + ((libtorrent::torrent_handle const *)arg1)->pause(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1resume(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + ((libtorrent::torrent_handle const *)arg1)->resume(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1flags(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::torrent_flags_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = ((libtorrent::torrent_handle const *)arg1)->flags(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_flags_t **)&jresult = new libtorrent::torrent_flags_t((const libtorrent::torrent_flags_t &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1set_1flags_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::torrent_flags_t arg2 ; + libtorrent::torrent_flags_t arg3 ; + libtorrent::torrent_flags_t *argp2 ; + libtorrent::torrent_flags_t *argp3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + argp2 = *(libtorrent::torrent_flags_t **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::torrent_flags_t"); + return ; + } + arg2 = *argp2; + argp3 = *(libtorrent::torrent_flags_t **)&jarg3; + if (!argp3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::torrent_flags_t"); + return ; + } + arg3 = *argp3; + { + try { + ((libtorrent::torrent_handle const *)arg1)->set_flags(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1set_1flags_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::torrent_flags_t arg2 ; + libtorrent::torrent_flags_t *argp2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + argp2 = *(libtorrent::torrent_flags_t **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::torrent_flags_t"); + return ; + } + arg2 = *argp2; + { + try { + ((libtorrent::torrent_handle const *)arg1)->set_flags(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1unset_1flags(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::torrent_flags_t arg2 ; + libtorrent::torrent_flags_t *argp2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + argp2 = *(libtorrent::torrent_flags_t **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::torrent_flags_t"); + return ; + } + arg2 = *argp2; + { + try { + ((libtorrent::torrent_handle const *)arg1)->unset_flags(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1flush_1cache(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + ((libtorrent::torrent_handle const *)arg1)->flush_cache(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1force_1recheck(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + ((libtorrent::torrent_handle const *)arg1)->force_recheck(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1flush_1disk_1cache_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::resume_data_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::resume_data_flags_tag > *)&libtorrent::torrent_handle::flush_disk_cache; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::resume_data_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1save_1info_1dict_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::resume_data_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::resume_data_flags_tag > *)&libtorrent::torrent_handle::save_info_dict; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::resume_data_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1only_1if_1modified_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::resume_data_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::resume_data_flags_tag > *)&libtorrent::torrent_handle::only_if_modified; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::resume_data_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1save_1resume_1data_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::resume_data_flags_t arg2 ; + libtorrent::resume_data_flags_t *argp2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + argp2 = *(libtorrent::resume_data_flags_t **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::resume_data_flags_t"); + return ; + } + arg2 = *argp2; + { + try { + ((libtorrent::torrent_handle const *)arg1)->save_resume_data(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1save_1resume_1data_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + ((libtorrent::torrent_handle const *)arg1)->save_resume_data(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1need_1save_1resume_1data(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::torrent_handle const *)arg1)->need_save_resume_data(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1queue_1position_1up(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + ((libtorrent::torrent_handle const *)arg1)->queue_position_up(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1queue_1position_1down(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + ((libtorrent::torrent_handle const *)arg1)->queue_position_down(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1queue_1position_1top(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + ((libtorrent::torrent_handle const *)arg1)->queue_position_top(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1queue_1position_1bottom(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + ((libtorrent::torrent_handle const *)arg1)->queue_position_bottom(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1set_1ssl_1certificate_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3, jstring jarg4, jstring jarg5) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::string *arg2 = 0 ; + std::string *arg3 = 0 ; + std::string *arg4 = 0 ; + std::string *arg5 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + if(!jarg4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg4_pstr = (const char *)jenv->GetStringUTFChars(jarg4, 0); + if (!arg4_pstr) return ; + std::string arg4_str(arg4_pstr); + arg4 = &arg4_str; + jenv->ReleaseStringUTFChars(jarg4, arg4_pstr); + if(!jarg5) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg5_pstr = (const char *)jenv->GetStringUTFChars(jarg5, 0); + if (!arg5_pstr) return ; + std::string arg5_str(arg5_pstr); + arg5 = &arg5_str; + jenv->ReleaseStringUTFChars(jarg5, arg5_pstr); + { + try { + (arg1)->set_ssl_certificate((std::string const &)*arg2,(std::string const &)*arg3,(std::string const &)*arg4,(std::string const &)*arg5); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1set_1ssl_1certificate_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3, jstring jarg4) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::string *arg2 = 0 ; + std::string *arg3 = 0 ; + std::string *arg4 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + if(!jarg4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg4_pstr = (const char *)jenv->GetStringUTFChars(jarg4, 0); + if (!arg4_pstr) return ; + std::string arg4_str(arg4_pstr); + arg4 = &arg4_str; + jenv->ReleaseStringUTFChars(jarg4, arg4_pstr); + { + try { + (arg1)->set_ssl_certificate((std::string const &)*arg2,(std::string const &)*arg3,(std::string const &)*arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1piece_1availability(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::vector< int > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(std::vector< int > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int > & reference is null"); + return ; + } + { + try { + ((libtorrent::torrent_handle const *)arg1)->piece_availability(*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1ignore_1min_1interval_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::reannounce_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::reannounce_flags_tag > *)&libtorrent::torrent_handle::ignore_min_interval; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::reannounce_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1force_1reannounce_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3, jlong jarg4, jobject jarg4_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + int arg2 ; + int arg3 ; + libtorrent::reannounce_flags_t arg4 ; + libtorrent::reannounce_flags_t *argp4 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg4_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = (int)jarg2; + arg3 = (int)jarg3; + argp4 = *(libtorrent::reannounce_flags_t **)&jarg4; + if (!argp4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::reannounce_flags_t"); + return ; + } + arg4 = *argp4; + { + try { + ((libtorrent::torrent_handle const *)arg1)->force_reannounce(arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1force_1reannounce_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + int arg2 ; + int arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = (int)jarg2; + arg3 = (int)jarg3; + { + try { + ((libtorrent::torrent_handle const *)arg1)->force_reannounce(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1force_1reannounce_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = (int)jarg2; + { + try { + ((libtorrent::torrent_handle const *)arg1)->force_reannounce(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1force_1reannounce_1_1SWIG_13(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + ((libtorrent::torrent_handle const *)arg1)->force_reannounce(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1force_1dht_1announce(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + ((libtorrent::torrent_handle const *)arg1)->force_dht_announce(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1scrape_1tracker_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = (int)jarg2; + { + try { + ((libtorrent::torrent_handle const *)arg1)->scrape_tracker(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1scrape_1tracker_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + ((libtorrent::torrent_handle const *)arg1)->scrape_tracker(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1set_1upload_1limit(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = (int)jarg2; + { + try { + ((libtorrent::torrent_handle const *)arg1)->set_upload_limit(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1upload_1limit(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_handle const *)arg1)->upload_limit(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1set_1download_1limit(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = (int)jarg2; + { + try { + ((libtorrent::torrent_handle const *)arg1)->set_download_limit(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1download_1limit(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_handle const *)arg1)->download_limit(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1connect_1peer_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_, jlong jarg4, jobject jarg4_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::tcp::endpoint *arg2 = 0 ; + libtorrent::peer_source_flags_t arg3 ; + libtorrent::pex_flags_t arg4 ; + libtorrent::peer_source_flags_t *argp3 ; + libtorrent::pex_flags_t *argp4 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + (void)jarg4_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(libtorrent::tcp::endpoint **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::tcp::endpoint const & reference is null"); + return ; + } + argp3 = *(libtorrent::peer_source_flags_t **)&jarg3; + if (!argp3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::peer_source_flags_t"); + return ; + } + arg3 = *argp3; + argp4 = *(libtorrent::pex_flags_t **)&jarg4; + if (!argp4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::pex_flags_t"); + return ; + } + arg4 = *argp4; + { + try { + ((libtorrent::torrent_handle const *)arg1)->connect_peer((libtorrent::tcp::endpoint const &)*arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1connect_1peer_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::tcp::endpoint *arg2 = 0 ; + libtorrent::peer_source_flags_t arg3 ; + libtorrent::peer_source_flags_t *argp3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(libtorrent::tcp::endpoint **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::tcp::endpoint const & reference is null"); + return ; + } + argp3 = *(libtorrent::peer_source_flags_t **)&jarg3; + if (!argp3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::peer_source_flags_t"); + return ; + } + arg3 = *argp3; + { + try { + ((libtorrent::torrent_handle const *)arg1)->connect_peer((libtorrent::tcp::endpoint const &)*arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1connect_1peer_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::tcp::endpoint *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(libtorrent::tcp::endpoint **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::tcp::endpoint const & reference is null"); + return ; + } + { + try { + ((libtorrent::torrent_handle const *)arg1)->connect_peer((libtorrent::tcp::endpoint const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1clear_1peers(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + (arg1)->clear_peers(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1set_1max_1uploads(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = (int)jarg2; + { + try { + ((libtorrent::torrent_handle const *)arg1)->set_max_uploads(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1max_1uploads(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_handle const *)arg1)->max_uploads(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1set_1max_1connections(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = (int)jarg2; + { + try { + ((libtorrent::torrent_handle const *)arg1)->set_max_connections(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1max_1connections(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_handle const *)arg1)->max_connections(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1move_1storage_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::string *arg2 = 0 ; + libtorrent::move_flags_t arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + arg3 = (libtorrent::move_flags_t)jarg3; + { + try { + ((libtorrent::torrent_handle const *)arg1)->move_storage((std::string const &)*arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1move_1storage_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + ((libtorrent::torrent_handle const *)arg1)->move_storage((std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1rename_1file(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2, jstring jarg3) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + file_index_t arg2 ; + std::string *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + std::string arg3_str(arg3_pstr); + arg3 = &arg3_str; + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + { + try { + ((libtorrent::torrent_handle const *)arg1)->rename_file(arg2,(std::string const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1info_1hash(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::sha1_hash result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = ((libtorrent::torrent_handle const *)arg1)->info_hash(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::sha1_hash **)&jresult = new libtorrent::sha1_hash((const libtorrent::sha1_hash &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1op_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::torrent_handle *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(libtorrent::torrent_handle **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::torrent_handle const & reference is null"); + return 0; + } + { + try { + result = (bool)((libtorrent::torrent_handle const *)arg1)->operator ==((libtorrent::torrent_handle const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1op_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::torrent_handle *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(libtorrent::torrent_handle **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::torrent_handle const & reference is null"); + return 0; + } + { + try { + result = (bool)((libtorrent::torrent_handle const *)arg1)->operator !=((libtorrent::torrent_handle const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1op_1lt(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::torrent_handle *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(libtorrent::torrent_handle **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::torrent_handle const & reference is null"); + return 0; + } + { + try { + result = (bool)((libtorrent::torrent_handle const *)arg1)->operator <((libtorrent::torrent_handle const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1id(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::uint32_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = (std::uint32_t)((libtorrent::torrent_handle const *)arg1)->id(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1in_1session(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::torrent_handle const *)arg1)->in_session(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1add_1piece_1bytes_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_, jlong jarg4, jobject jarg4_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + int arg2 ; + std::vector< int8_t > *arg3 = 0 ; + libtorrent::add_piece_flags_t arg4 ; + libtorrent::add_piece_flags_t *argp4 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + (void)jarg4_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< int8_t > **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > const & reference is null"); + return ; + } + argp4 = *(libtorrent::add_piece_flags_t **)&jarg4; + if (!argp4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::add_piece_flags_t"); + return ; + } + arg4 = *argp4; + { + try { + libtorrent_torrent_handle_add_piece_bytes__SWIG_0(arg1,arg2,(std::vector< signed char > const &)*arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1add_1piece_1bytes_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3, jobject jarg3_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + int arg2 ; + std::vector< int8_t > *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = (int)jarg2; + arg3 = *(std::vector< int8_t > **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > const & reference is null"); + return ; + } + { + try { + libtorrent_torrent_handle_add_piece_bytes__SWIG_0(arg1,arg2,(std::vector< signed char > const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1torrent_1file_1ptr(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + libtorrent::torrent_info *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = (libtorrent::torrent_info *)libtorrent_torrent_handle_torrent_file_ptr(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_info **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1get_1url_1seeds(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::vector< std::string > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = libtorrent_torrent_handle_get_url_seeds((libtorrent::torrent_handle const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::string > **)&jresult = new std::vector< std::string >((const std::vector< std::string > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1get_1http_1seeds(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::vector< std::string > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = libtorrent_torrent_handle_get_http_seeds((libtorrent::torrent_handle const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::string > **)&jresult = new std::vector< std::string >((const std::vector< std::string > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1set_1ssl_1certificate_1buffer2(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_, jlong jarg4, jobject jarg4_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::vector< int8_t > *arg2 = 0 ; + std::vector< int8_t > *arg3 = 0 ; + std::vector< int8_t > *arg4 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + (void)jarg4_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(std::vector< int8_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > const & reference is null"); + return ; + } + arg3 = *(std::vector< int8_t > **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > const & reference is null"); + return ; + } + arg4 = *(std::vector< int8_t > **)&jarg4; + if (!arg4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > const & reference is null"); + return ; + } + { + try { + libtorrent_torrent_handle_set_ssl_certificate_buffer2(arg1,(std::vector< signed char > const &)*arg2,(std::vector< signed char > const &)*arg3,(std::vector< signed char > const &)*arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1queue_1position2(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = (int)libtorrent_torrent_handle_queue_position2((libtorrent::torrent_handle const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1queue_1position_1set2(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = (int)jarg2; + { + try { + libtorrent_torrent_handle_queue_position_set2(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1piece_1priority2_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jint jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + piece_index_t arg2 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + { + try { + result = (int)libtorrent_torrent_handle_piece_priority2__SWIG_0(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1piece_1priority2_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2, jint jarg3) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + piece_index_t arg2 ; + int arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + arg3 = (int)jarg3; + { + try { + libtorrent_torrent_handle_piece_priority2__SWIG_1(arg1,arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1prioritize_1pieces2_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::vector< int > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(std::vector< int > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int > const & reference is null"); + return ; + } + { + try { + libtorrent_torrent_handle_prioritize_pieces2__SWIG_0(arg1,(std::vector< int > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1prioritize_1pieces2_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::vector< std::pair< piece_index_t,int > > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(std::vector< std::pair< piece_index_t,int > > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::pair< piece_index_t,int > > const & reference is null"); + return ; + } + { + try { + libtorrent_torrent_handle_prioritize_pieces2__SWIG_1(arg1,(std::vector< std::pair< piece_index_t,int > > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1get_1piece_1priorities2(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::vector< int > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = libtorrent_torrent_handle_get_piece_priorities2((libtorrent::torrent_handle const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int > **)&jresult = new std::vector< int >((const std::vector< int > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1file_1priority2_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jint jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + file_index_t arg2 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + { + try { + result = (int)libtorrent_torrent_handle_file_priority2__SWIG_0(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1file_1priority2_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2, jint jarg3) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + file_index_t arg2 ; + int arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + arg3 = (int)jarg3; + { + try { + libtorrent_torrent_handle_file_priority2__SWIG_1(arg1,arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1prioritize_1files2(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::vector< int > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + arg2 = *(std::vector< int > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int > const & reference is null"); + return ; + } + { + try { + libtorrent_torrent_handle_prioritize_files2(arg1,(std::vector< int > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1handle_1get_1file_1priorities2(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + std::vector< int > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + result = libtorrent_torrent_handle_get_file_priorities2((libtorrent::torrent_handle const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int > **)&jresult = new std::vector< int >((const std::vector< int > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1handle(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::torrent_handle *arg1 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1version_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->version = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1version_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (int) ((arg1)->version); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1name_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if (arg1) (arg1)->name = *arg2; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1name_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (std::string *) & ((arg1)->name); + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1save_1path_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if (arg1) (arg1)->save_path = *arg2; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1save_1path_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (std::string *) & ((arg1)->save_path); + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1storage_1mode_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + libtorrent::storage_mode_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (libtorrent::storage_mode_t)jarg2; + if (arg1) (arg1)->storage_mode = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1storage_1mode_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + libtorrent::storage_mode_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (libtorrent::storage_mode_t) ((arg1)->storage_mode); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1trackerid_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + if (arg1) (arg1)->trackerid = *arg2; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1trackerid_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (std::string *) & ((arg1)->trackerid); + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1flags_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + libtorrent::torrent_flags_t *arg2 = (libtorrent::torrent_flags_t *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = *(libtorrent::torrent_flags_t **)&jarg2; + if (arg1) (arg1)->flags = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1flags_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + libtorrent::torrent_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (libtorrent::torrent_flags_t *)& ((arg1)->flags); + *(libtorrent::torrent_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1info_1hash_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + libtorrent::sha1_hash *arg2 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (arg1) (arg1)->info_hash = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1info_1hash_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (libtorrent::sha1_hash *)& ((arg1)->info_hash); + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1max_1uploads_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->max_uploads = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1max_1uploads_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (int) ((arg1)->max_uploads); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1max_1connections_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->max_connections = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1max_1connections_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (int) ((arg1)->max_connections); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1upload_1limit_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->upload_limit = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1upload_1limit_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (int) ((arg1)->upload_limit); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1download_1limit_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->download_limit = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1download_1limit_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (int) ((arg1)->download_limit); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1total_1uploaded_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->total_uploaded = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1total_1uploaded_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (std::int64_t) ((arg1)->total_uploaded); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1total_1downloaded_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (std::int64_t)jarg2; + if (arg1) (arg1)->total_downloaded = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1total_1downloaded_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (std::int64_t) ((arg1)->total_downloaded); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1active_1time_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->active_time = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1active_1time_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (int) ((arg1)->active_time); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1finished_1time_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->finished_time = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1finished_1time_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (int) ((arg1)->finished_time); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1seeding_1time_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->seeding_time = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1seeding_1time_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (int) ((arg1)->seeding_time); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1added_1time_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::time_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (std::time_t)jarg2; + if (arg1) (arg1)->added_time = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1added_1time_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::time_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = ((arg1)->added_time); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1completed_1time_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::time_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (std::time_t)jarg2; + if (arg1) (arg1)->completed_time = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1completed_1time_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::time_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = ((arg1)->completed_time); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1last_1seen_1complete_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::time_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (std::time_t)jarg2; + if (arg1) (arg1)->last_seen_complete = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1last_1seen_1complete_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::time_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = ((arg1)->last_seen_complete); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1num_1complete_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->num_complete = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1num_1complete_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (int) ((arg1)->num_complete); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1num_1incomplete_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->num_incomplete = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1num_1incomplete_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (int) ((arg1)->num_incomplete); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1num_1downloaded_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->num_downloaded = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1num_1downloaded_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (int) ((arg1)->num_downloaded); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1have_1pieces_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + libtorrent::typed_bitfield< piece_index_t > *arg2 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg2; + if (arg1) (arg1)->have_pieces = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1have_1pieces_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + libtorrent::typed_bitfield< piece_index_t > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (libtorrent::typed_bitfield< piece_index_t > *)& ((arg1)->have_pieces); + *(libtorrent::typed_bitfield< piece_index_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1verified_1pieces_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + libtorrent::typed_bitfield< piece_index_t > *arg2 = (libtorrent::typed_bitfield< piece_index_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = *(libtorrent::typed_bitfield< piece_index_t > **)&jarg2; + if (arg1) (arg1)->verified_pieces = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1verified_1pieces_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + libtorrent::typed_bitfield< piece_index_t > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = (libtorrent::typed_bitfield< piece_index_t > *)& ((arg1)->verified_pieces); + *(libtorrent::typed_bitfield< piece_index_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1last_1download_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::time_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (std::time_t)jarg2; + if (arg1) (arg1)->last_download = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1last_1download_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::time_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = ((arg1)->last_download); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1last_1upload_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::time_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = (std::time_t)jarg2; + if (arg1) (arg1)->last_upload = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1last_1upload_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::time_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + result = ((arg1)->last_upload); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1ti_1ptr(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + libtorrent::torrent_info *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + { + try { + result = (libtorrent::torrent_info *)libtorrent_add_torrent_params_ti_ptr(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_info **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1set_1ti(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + libtorrent::torrent_info *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = *(libtorrent::torrent_info **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::torrent_info const & reference is null"); + return ; + } + { + try { + libtorrent_add_torrent_params_set_ti(arg1,(libtorrent::torrent_info const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1set_1renamed_1files(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::map< file_index_t,std::string > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = *(std::map< file_index_t,std::string > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::map< file_index_t,std::string > const & reference is null"); + return ; + } + { + try { + libtorrent_add_torrent_params_set_renamed_files(arg1,(std::map< file_index_t,std::string > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1get_1tracker_1tiers(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::vector< int > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + { + try { + result = libtorrent_add_torrent_params_get_tracker_tiers(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int > **)&jresult = new std::vector< int >((const std::vector< int > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1set_1tracker_1tiers(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::vector< int > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = *(std::vector< int > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int > const & reference is null"); + return ; + } + { + try { + libtorrent_add_torrent_params_set_tracker_tiers(arg1,(std::vector< int > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1set_1merkle_1tree(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::vector< libtorrent::sha1_hash > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = *(std::vector< libtorrent::sha1_hash > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::sha1_hash > const & reference is null"); + return ; + } + { + try { + libtorrent_add_torrent_params_set_merkle_tree(arg1,(std::vector< libtorrent::sha1_hash > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1get_1banned_1peers(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::vector< libtorrent::tcp::endpoint > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + { + try { + result = libtorrent_add_torrent_params_get_banned_peers(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::tcp::endpoint > **)&jresult = new std::vector< libtorrent::tcp::endpoint >((const std::vector< libtorrent::tcp::endpoint > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1set_1banned_1peers(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::vector< libtorrent::tcp::endpoint > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = *(std::vector< libtorrent::tcp::endpoint > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::tcp::endpoint > const & reference is null"); + return ; + } + { + try { + libtorrent_add_torrent_params_set_banned_peers(arg1,(std::vector< libtorrent::tcp::endpoint > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1get_1peers(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::vector< libtorrent::tcp::endpoint > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + { + try { + result = libtorrent_add_torrent_params_get_peers(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::tcp::endpoint > **)&jresult = new std::vector< libtorrent::tcp::endpoint >((const std::vector< libtorrent::tcp::endpoint > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1set_1peers(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::vector< libtorrent::tcp::endpoint > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = *(std::vector< libtorrent::tcp::endpoint > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< libtorrent::tcp::endpoint > const & reference is null"); + return ; + } + { + try { + libtorrent_add_torrent_params_set_peers(arg1,(std::vector< libtorrent::tcp::endpoint > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1set_1file_1priorities2(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::vector< std::int8_t > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = *(std::vector< std::int8_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::int8_t > const & reference is null"); + return ; + } + { + try { + libtorrent_add_torrent_params_set_file_priorities2(arg1,(std::vector< signed char > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1get_1dht_1nodes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::vector< std::pair< std::string,int > > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + { + try { + result = libtorrent_add_torrent_params_get_dht_nodes(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::pair< std::string,int > > **)&jresult = new std::vector< std::pair< std::string,int > >((const std::vector< std::pair< std::string,int > > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1set_1dht_1nodes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::vector< std::pair< std::string,int > > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = *(std::vector< std::pair< std::string,int > > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::pair< std::string,int > > const & reference is null"); + return ; + } + { + try { + libtorrent_add_torrent_params_set_dht_nodes(arg1,(std::vector< std::pair< std::string,int > > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1set_1http_1seeds(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::vector< std::string > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = *(std::vector< std::string > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::string > const & reference is null"); + return ; + } + { + try { + libtorrent_add_torrent_params_set_http_seeds(arg1,(std::vector< std::string > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1get_1url_1seeds(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::vector< std::string > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + { + try { + result = libtorrent_add_torrent_params_get_url_seeds(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::string > **)&jresult = new std::vector< std::string >((const std::vector< std::string > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1set_1url_1seeds(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::vector< std::string > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = *(std::vector< std::string > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::string > const & reference is null"); + return ; + } + { + try { + libtorrent_add_torrent_params_set_url_seeds(arg1,(std::vector< std::string > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1get_1trackers(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::vector< std::string > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + { + try { + result = libtorrent_add_torrent_params_get_trackers(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::string > **)&jresult = new std::vector< std::string >((const std::vector< std::string > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1set_1trackers(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::vector< std::string > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = *(std::vector< std::string > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::string > const & reference is null"); + return ; + } + { + try { + libtorrent_add_torrent_params_set_trackers(arg1,(std::vector< std::string > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1set_1piece_1priorities2(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + std::vector< std::int8_t > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + arg2 = *(std::vector< std::int8_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< std::int8_t > const & reference is null"); + return ; + } + { + try { + libtorrent_add_torrent_params_set_piece_priorities2(arg1,(std::vector< signed char > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1create_1instance(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::add_torrent_params result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent_add_torrent_params_create_instance(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::add_torrent_params **)&jresult = new libtorrent::add_torrent_params((const libtorrent::add_torrent_params &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1create_1instance_1disabled_1storage(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::add_torrent_params result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent_add_torrent_params_create_instance_disabled_storage(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::add_torrent_params **)&jresult = new libtorrent::add_torrent_params((const libtorrent::add_torrent_params &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1create_1instance_1zero_1storage(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::add_torrent_params result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent_add_torrent_params_create_instance_zero_storage(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::add_torrent_params **)&jresult = new libtorrent::add_torrent_params((const libtorrent::add_torrent_params &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1set_1default_1storage(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + { + try { + libtorrent_add_torrent_params_set_default_storage(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1set_1disabled_1storage(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + { + try { + libtorrent_add_torrent_params_set_disabled_storage(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1set_1zero_1storage(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + { + try { + libtorrent_add_torrent_params_set_zero_storage(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1read_1resume_1data_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = 0 ; + libtorrent::error_code *arg2 = 0 ; + libtorrent::add_torrent_params result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::bdecode_node const & reference is null"); + return 0; + } + arg2 = *(libtorrent::error_code **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::error_code & reference is null"); + return 0; + } + { + try { + result = libtorrent_add_torrent_params_read_resume_data__SWIG_0((libtorrent::bdecode_node const &)*arg1,*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::add_torrent_params **)&jresult = new libtorrent::add_torrent_params((const libtorrent::add_torrent_params &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1read_1resume_1data_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + std::vector< int8_t > *arg1 = 0 ; + libtorrent::error_code *arg2 = 0 ; + libtorrent::add_torrent_params result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< int8_t > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > const & reference is null"); + return 0; + } + arg2 = *(libtorrent::error_code **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::error_code & reference is null"); + return 0; + } + { + try { + result = libtorrent_add_torrent_params_read_resume_data__SWIG_1((std::vector< signed char > const &)*arg1,*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::add_torrent_params **)&jresult = new libtorrent::add_torrent_params((const libtorrent::add_torrent_params &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1write_1resume_1data(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = 0 ; + libtorrent::entry result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::add_torrent_params const & reference is null"); + return 0; + } + { + try { + result = libtorrent_add_torrent_params_write_resume_data((libtorrent::add_torrent_params const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry **)&jresult = new libtorrent::entry((const libtorrent::entry &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1write_1resume_1data_1buf(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_params *arg1 = 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::add_torrent_params const & reference is null"); + return 0; + } + { + try { + result = libtorrent_add_torrent_params_write_resume_data_buf((libtorrent::add_torrent_params const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1params_1parse_1magnet_1uri(JNIEnv *jenv, jclass jcls, jstring jarg1, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + std::string *arg1 = 0 ; + libtorrent::error_code *arg2 = 0 ; + libtorrent::add_torrent_params result; + + (void)jenv; + (void)jcls; + (void)jarg2_; + if(!jarg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(jarg1, 0); + if (!arg1_pstr) return 0; + std::string arg1_str(arg1_pstr); + arg1 = &arg1_str; + jenv->ReleaseStringUTFChars(jarg1, arg1_pstr); + arg2 = *(libtorrent::error_code **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::error_code & reference is null"); + return 0; + } + { + try { + result = libtorrent_add_torrent_params_parse_magnet_uri((std::string const &)*arg1,*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::add_torrent_params **)&jresult = new libtorrent::add_torrent_params((const libtorrent::add_torrent_params &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1add_1torrent_1params(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::add_torrent_params *arg1 = (libtorrent::add_torrent_params *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::add_torrent_params **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_operation_1name(JNIEnv *jenv, jclass jcls, jint jarg1) { + jstring jresult = 0 ; + libtorrent::operation_t arg1 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + arg1 = (libtorrent::operation_t)jarg1; + { + try { + result = (char *)libtorrent::operation_name(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1metric_1value_1index_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::stats_metric *arg1 = (libtorrent::stats_metric *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::stats_metric **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->value_index = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1metric_1value_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::stats_metric *arg1 = (libtorrent::stats_metric *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::stats_metric **)&jarg1; + result = (int) ((arg1)->value_index); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1metric_1type_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::stats_metric *arg1 = (libtorrent::stats_metric *) 0 ; + libtorrent::metric_type_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::stats_metric **)&jarg1; + arg2 = (libtorrent::metric_type_t)jarg2; + if (arg1) (arg1)->type = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1metric_1type_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::stats_metric *arg1 = (libtorrent::stats_metric *) 0 ; + libtorrent::metric_type_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::stats_metric **)&jarg1; + result = (libtorrent::metric_type_t) ((arg1)->type); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1metric_1get_1name(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::stats_metric *arg1 = (libtorrent::stats_metric *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::stats_metric **)&jarg1; + { + try { + result = libtorrent_stats_metric_get_name(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1stats_1metric(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::stats_metric *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::stats_metric *)new libtorrent::stats_metric(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::stats_metric **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1stats_1metric(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::stats_metric *arg1 = (libtorrent::stats_metric *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::stats_metric **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1metrics(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< libtorrent::stats_metric > result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::session_stats_metrics(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::stats_metric > **)&jresult = new std::vector< libtorrent::stats_metric >((const std::vector< libtorrent::stats_metric > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_close_1reason_1t_1none_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::close_reason_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::close_reason_t)libtorrent::close_reason_t::none; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_close_1reason_1t_1encryption_1error_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::close_reason_t result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::close_reason_t)libtorrent::close_reason_t::encryption_error; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_error_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::error; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::peer; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_port_1mapping_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::port_mapping; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::storage; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::tracker; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_connect_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::connect; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_status_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::status; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1block_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::ip_block; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_performance_1warning_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::performance_warning; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::dht; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::stats; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1log_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::session_log; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1log_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::torrent_log; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1log_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::peer_log; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1request_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::incoming_request; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1log_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::dht_log; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1operation_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::dht_operation; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_port_1mapping_1log_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::port_mapping_log; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::picker_log; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1progress_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::file_progress; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1progress_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::piece_progress; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_upload_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::upload; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1progress_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::alert_category_t *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::alert_category_t *)&libtorrent::alert_category::block_progress; + *(libtorrent::alert_category_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1error_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::error_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1peer_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::peer_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1port_1mapping_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::port_mapping_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1storage_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::storage_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1tracker_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::tracker_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1connect_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::connect_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1status_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::status_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1ip_1block_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::ip_block_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1performance_1warning_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::performance_warning; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1dht_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::dht_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1stats_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::stats_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1session_1log_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::session_log_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1torrent_1log_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::torrent_log_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1peer_1log_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::peer_log_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1incoming_1request_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::incoming_request_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1dht_1log_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::dht_log_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1dht_1operation_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::dht_operation_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1port_1mapping_1log_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::port_mapping_log_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1picker_1log_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::picker_log_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1file_1progress_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::file_progress_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1piece_1progress_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::piece_progress_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1upload_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::upload_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1block_1progress_1notification_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::block_progress_notification; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1all_1categories_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alert::all_categories; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (int)((libtorrent::alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (char *)((libtorrent::alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = ((libtorrent::alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = ((libtorrent::alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1torrent_1removed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::torrent_removed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::torrent_removed_alert *)libtorrent_alert_cast_to_torrent_removed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_removed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1read_1piece_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::read_piece_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::read_piece_alert *)libtorrent_alert_cast_to_read_piece_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::read_piece_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1file_1completed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::file_completed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::file_completed_alert *)libtorrent_alert_cast_to_file_completed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::file_completed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1file_1renamed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::file_renamed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::file_renamed_alert *)libtorrent_alert_cast_to_file_renamed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::file_renamed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1file_1rename_1failed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::file_rename_failed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::file_rename_failed_alert *)libtorrent_alert_cast_to_file_rename_failed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::file_rename_failed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1performance_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::performance_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::performance_alert *)libtorrent_alert_cast_to_performance_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::performance_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1state_1changed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::state_changed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::state_changed_alert *)libtorrent_alert_cast_to_state_changed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::state_changed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1tracker_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::tracker_error_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::tracker_error_alert *)libtorrent_alert_cast_to_tracker_error_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::tracker_error_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1tracker_1warning_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::tracker_warning_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::tracker_warning_alert *)libtorrent_alert_cast_to_tracker_warning_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::tracker_warning_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1scrape_1reply_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::scrape_reply_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::scrape_reply_alert *)libtorrent_alert_cast_to_scrape_reply_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::scrape_reply_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1scrape_1failed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::scrape_failed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::scrape_failed_alert *)libtorrent_alert_cast_to_scrape_failed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::scrape_failed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1tracker_1reply_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::tracker_reply_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::tracker_reply_alert *)libtorrent_alert_cast_to_tracker_reply_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::tracker_reply_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1dht_1reply_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::dht_reply_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::dht_reply_alert *)libtorrent_alert_cast_to_dht_reply_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_reply_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1tracker_1announce_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::tracker_announce_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::tracker_announce_alert *)libtorrent_alert_cast_to_tracker_announce_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::tracker_announce_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1hash_1failed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::hash_failed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::hash_failed_alert *)libtorrent_alert_cast_to_hash_failed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::hash_failed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1peer_1ban_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::peer_ban_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::peer_ban_alert *)libtorrent_alert_cast_to_peer_ban_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_ban_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1peer_1unsnubbed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::peer_unsnubbed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::peer_unsnubbed_alert *)libtorrent_alert_cast_to_peer_unsnubbed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_unsnubbed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1peer_1snubbed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::peer_snubbed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::peer_snubbed_alert *)libtorrent_alert_cast_to_peer_snubbed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_snubbed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1peer_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::peer_error_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::peer_error_alert *)libtorrent_alert_cast_to_peer_error_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_error_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1peer_1connect_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::peer_connect_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::peer_connect_alert *)libtorrent_alert_cast_to_peer_connect_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_connect_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1peer_1disconnected_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::peer_disconnected_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::peer_disconnected_alert *)libtorrent_alert_cast_to_peer_disconnected_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_disconnected_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1invalid_1request_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::invalid_request_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::invalid_request_alert *)libtorrent_alert_cast_to_invalid_request_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::invalid_request_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1torrent_1finished_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::torrent_finished_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::torrent_finished_alert *)libtorrent_alert_cast_to_torrent_finished_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_finished_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1piece_1finished_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::piece_finished_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::piece_finished_alert *)libtorrent_alert_cast_to_piece_finished_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::piece_finished_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1request_1dropped_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::request_dropped_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::request_dropped_alert *)libtorrent_alert_cast_to_request_dropped_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::request_dropped_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1block_1timeout_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::block_timeout_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::block_timeout_alert *)libtorrent_alert_cast_to_block_timeout_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::block_timeout_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1block_1finished_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::block_finished_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::block_finished_alert *)libtorrent_alert_cast_to_block_finished_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::block_finished_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1block_1downloading_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::block_downloading_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::block_downloading_alert *)libtorrent_alert_cast_to_block_downloading_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::block_downloading_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1unwanted_1block_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::unwanted_block_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::unwanted_block_alert *)libtorrent_alert_cast_to_unwanted_block_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::unwanted_block_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1storage_1moved_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::storage_moved_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::storage_moved_alert *)libtorrent_alert_cast_to_storage_moved_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::storage_moved_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1storage_1moved_1failed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::storage_moved_failed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::storage_moved_failed_alert *)libtorrent_alert_cast_to_storage_moved_failed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::storage_moved_failed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1torrent_1deleted_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::torrent_deleted_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::torrent_deleted_alert *)libtorrent_alert_cast_to_torrent_deleted_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_deleted_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1torrent_1delete_1failed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::torrent_delete_failed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::torrent_delete_failed_alert *)libtorrent_alert_cast_to_torrent_delete_failed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_delete_failed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1save_1resume_1data_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::save_resume_data_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::save_resume_data_alert *)libtorrent_alert_cast_to_save_resume_data_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::save_resume_data_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1save_1resume_1data_1failed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::save_resume_data_failed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::save_resume_data_failed_alert *)libtorrent_alert_cast_to_save_resume_data_failed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::save_resume_data_failed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1torrent_1paused_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::torrent_paused_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::torrent_paused_alert *)libtorrent_alert_cast_to_torrent_paused_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_paused_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1torrent_1resumed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::torrent_resumed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::torrent_resumed_alert *)libtorrent_alert_cast_to_torrent_resumed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_resumed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1torrent_1checked_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::torrent_checked_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::torrent_checked_alert *)libtorrent_alert_cast_to_torrent_checked_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_checked_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1url_1seed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::url_seed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::url_seed_alert *)libtorrent_alert_cast_to_url_seed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::url_seed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1file_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::file_error_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::file_error_alert *)libtorrent_alert_cast_to_file_error_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::file_error_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1metadata_1failed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::metadata_failed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::metadata_failed_alert *)libtorrent_alert_cast_to_metadata_failed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::metadata_failed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1metadata_1received_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::metadata_received_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::metadata_received_alert *)libtorrent_alert_cast_to_metadata_received_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::metadata_received_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1udp_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::udp_error_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::udp_error_alert *)libtorrent_alert_cast_to_udp_error_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::udp_error_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1external_1ip_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::external_ip_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::external_ip_alert *)libtorrent_alert_cast_to_external_ip_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::external_ip_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1listen_1failed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::listen_failed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::listen_failed_alert *)libtorrent_alert_cast_to_listen_failed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::listen_failed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1listen_1succeeded_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::listen_succeeded_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::listen_succeeded_alert *)libtorrent_alert_cast_to_listen_succeeded_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::listen_succeeded_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1portmap_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::portmap_error_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::portmap_error_alert *)libtorrent_alert_cast_to_portmap_error_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::portmap_error_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1portmap_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::portmap_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::portmap_alert *)libtorrent_alert_cast_to_portmap_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::portmap_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1portmap_1log_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::portmap_log_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::portmap_log_alert *)libtorrent_alert_cast_to_portmap_log_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::portmap_log_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1fastresume_1rejected_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::fastresume_rejected_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::fastresume_rejected_alert *)libtorrent_alert_cast_to_fastresume_rejected_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::fastresume_rejected_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1peer_1blocked_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::peer_blocked_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::peer_blocked_alert *)libtorrent_alert_cast_to_peer_blocked_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_blocked_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1dht_1announce_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::dht_announce_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::dht_announce_alert *)libtorrent_alert_cast_to_dht_announce_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_announce_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1dht_1get_1peers_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::dht_get_peers_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::dht_get_peers_alert *)libtorrent_alert_cast_to_dht_get_peers_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_get_peers_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1stats_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::stats_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::stats_alert *)libtorrent_alert_cast_to_stats_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::stats_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1cache_1flushed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::cache_flushed_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::cache_flushed_alert *)libtorrent_alert_cast_to_cache_flushed_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::cache_flushed_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1lsd_1peer_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::lsd_peer_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::lsd_peer_alert *)libtorrent_alert_cast_to_lsd_peer_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::lsd_peer_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1trackerid_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::trackerid_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::trackerid_alert *)libtorrent_alert_cast_to_trackerid_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::trackerid_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1dht_1bootstrap_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::dht_bootstrap_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::dht_bootstrap_alert *)libtorrent_alert_cast_to_dht_bootstrap_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_bootstrap_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1torrent_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::torrent_error_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::torrent_error_alert *)libtorrent_alert_cast_to_torrent_error_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_error_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1torrent_1need_1cert_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::torrent_need_cert_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::torrent_need_cert_alert *)libtorrent_alert_cast_to_torrent_need_cert_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_need_cert_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1incoming_1connection_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::incoming_connection_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::incoming_connection_alert *)libtorrent_alert_cast_to_incoming_connection_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::incoming_connection_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1add_1torrent_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::add_torrent_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::add_torrent_alert *)libtorrent_alert_cast_to_add_torrent_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::add_torrent_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1state_1update_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::state_update_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::state_update_alert *)libtorrent_alert_cast_to_state_update_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::state_update_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1session_1stats_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::session_stats_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::session_stats_alert *)libtorrent_alert_cast_to_session_stats_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session_stats_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1dht_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::dht_error_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::dht_error_alert *)libtorrent_alert_cast_to_dht_error_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_error_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1dht_1immutable_1item_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::dht_immutable_item_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::dht_immutable_item_alert *)libtorrent_alert_cast_to_dht_immutable_item_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_immutable_item_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1dht_1mutable_1item_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::dht_mutable_item_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::dht_mutable_item_alert *)libtorrent_alert_cast_to_dht_mutable_item_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_mutable_item_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1dht_1put_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::dht_put_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::dht_put_alert *)libtorrent_alert_cast_to_dht_put_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_put_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1i2p_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::i2p_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::i2p_alert *)libtorrent_alert_cast_to_i2p_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::i2p_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1dht_1outgoing_1get_1peers_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::dht_outgoing_get_peers_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::dht_outgoing_get_peers_alert *)libtorrent_alert_cast_to_dht_outgoing_get_peers_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_outgoing_get_peers_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1log_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::log_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::log_alert *)libtorrent_alert_cast_to_log_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::log_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1torrent_1log_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::torrent_log_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::torrent_log_alert *)libtorrent_alert_cast_to_torrent_log_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_log_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1peer_1log_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::peer_log_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::peer_log_alert *)libtorrent_alert_cast_to_peer_log_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_log_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1lsd_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::lsd_error_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::lsd_error_alert *)libtorrent_alert_cast_to_lsd_error_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::lsd_error_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1dht_1stats_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::dht_stats_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::dht_stats_alert *)libtorrent_alert_cast_to_dht_stats_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_stats_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1incoming_1request_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::incoming_request_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::incoming_request_alert *)libtorrent_alert_cast_to_incoming_request_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::incoming_request_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1dht_1log_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::dht_log_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::dht_log_alert *)libtorrent_alert_cast_to_dht_log_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_log_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1dht_1pkt_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::dht_pkt_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::dht_pkt_alert *)libtorrent_alert_cast_to_dht_pkt_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_pkt_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1dht_1get_1peers_1reply_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::dht_get_peers_reply_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::dht_get_peers_reply_alert *)libtorrent_alert_cast_to_dht_get_peers_reply_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_get_peers_reply_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1dht_1direct_1response_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::dht_direct_response_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::dht_direct_response_alert *)libtorrent_alert_cast_to_dht_direct_response_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_direct_response_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1picker_1log_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::picker_log_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::picker_log_alert *)libtorrent_alert_cast_to_picker_log_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::picker_log_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1session_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::session_error_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::session_error_alert *)libtorrent_alert_cast_to_session_error_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session_error_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1dht_1live_1nodes_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::dht_live_nodes_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::dht_live_nodes_alert *)libtorrent_alert_cast_to_dht_live_nodes_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_live_nodes_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1session_1stats_1header_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::session_stats_header_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::session_stats_header_alert *)libtorrent_alert_cast_to_session_stats_header_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session_stats_header_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1dht_1sample_1infohashes_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::dht_sample_infohashes_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::dht_sample_infohashes_alert *)libtorrent_alert_cast_to_dht_sample_infohashes_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_sample_infohashes_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1block_1uploaded_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::block_uploaded_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::block_uploaded_alert *)libtorrent_alert_cast_to_block_uploaded_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::block_uploaded_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1cast_1to_1alerts_1dropped_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + libtorrent::alerts_dropped_alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (libtorrent::alerts_dropped_alert *)libtorrent_alert_cast_to_alerts_dropped_alert((libtorrent::alert const *)arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alerts_dropped_alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1get_1timestamp(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alert *arg1 = (libtorrent::alert *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alert **)&jarg1; + { + try { + result = (int64_t)libtorrent_alert_get_timestamp(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1name(JNIEnv *jenv, jclass jcls, jint jarg1) { + jstring jresult = 0 ; + int arg1 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + arg1 = (int)jarg1; + { + try { + result = (char *)libtorrent::alert_name(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_num_1alert_1types_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::num_alert_types; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1priority_1normal_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::alert_priority result; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::alert_priority)libtorrent::alert_priority_normal; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1routing_1bucket_1num_1nodes_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht_routing_bucket *arg1 = (libtorrent::dht_routing_bucket *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_routing_bucket **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->num_nodes = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1routing_1bucket_1num_1nodes_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_routing_bucket *arg1 = (libtorrent::dht_routing_bucket *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_routing_bucket **)&jarg1; + result = (int) ((arg1)->num_nodes); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1routing_1bucket_1num_1replacements_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht_routing_bucket *arg1 = (libtorrent::dht_routing_bucket *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_routing_bucket **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->num_replacements = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1routing_1bucket_1num_1replacements_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_routing_bucket *arg1 = (libtorrent::dht_routing_bucket *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_routing_bucket **)&jarg1; + result = (int) ((arg1)->num_replacements); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1routing_1bucket_1last_1active_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht_routing_bucket *arg1 = (libtorrent::dht_routing_bucket *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_routing_bucket **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->last_active = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1routing_1bucket_1last_1active_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_routing_bucket *arg1 = (libtorrent::dht_routing_bucket *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_routing_bucket **)&jarg1; + result = (int) ((arg1)->last_active); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1dht_1routing_1bucket(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::dht_routing_bucket *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::dht_routing_bucket *)new libtorrent::dht_routing_bucket(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_routing_bucket **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1routing_1bucket(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_routing_bucket *arg1 = (libtorrent::dht_routing_bucket *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_routing_bucket **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_alert *arg1 = (libtorrent::torrent_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1alert_1handle_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_alert *arg1 = (libtorrent::torrent_alert *) 0 ; + libtorrent::torrent_handle *arg2 = (libtorrent::torrent_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_alert **)&jarg1; + arg2 = *(libtorrent::torrent_handle **)&jarg2; + if (arg1) (arg1)->handle = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1alert_1handle_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_alert *arg1 = (libtorrent::torrent_alert *) 0 ; + libtorrent::torrent_handle *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_alert **)&jarg1; + result = (libtorrent::torrent_handle *)& ((arg1)->handle); + *(libtorrent::torrent_handle **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1alert_1torrent_1name(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_alert *arg1 = (libtorrent::torrent_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::torrent_alert const *)arg1)->torrent_name(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::torrent_alert *arg1 = (libtorrent::torrent_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::torrent_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_alert *arg1 = (libtorrent::peer_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1alert_1pid_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::peer_alert *arg1 = (libtorrent::peer_alert *) 0 ; + libtorrent::peer_id *arg2 = (libtorrent::peer_id *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_alert **)&jarg1; + arg2 = *(libtorrent::peer_id **)&jarg2; + if (arg1) (arg1)->pid = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1alert_1pid_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_alert *arg1 = (libtorrent::peer_alert *) 0 ; + libtorrent::peer_id *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_alert **)&jarg1; + result = (libtorrent::peer_id *)& ((arg1)->pid); + *(libtorrent::peer_id **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1alert_1get_1endpoint(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_alert *arg1 = (libtorrent::peer_alert *) 0 ; + libtorrent::tcp::endpoint result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_alert **)&jarg1; + { + try { + result = libtorrent_peer_alert_get_endpoint(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::tcp::endpoint **)&jresult = new libtorrent::tcp::endpoint((const libtorrent::tcp::endpoint &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::peer_alert *arg1 = (libtorrent::peer_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::peer_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::tracker_alert *arg1 = (libtorrent::tracker_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_alert **)&jarg1; + { + try { + result = ((libtorrent::tracker_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1alert_1tracker_1url(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::tracker_alert *arg1 = (libtorrent::tracker_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::tracker_alert const *)arg1)->tracker_url(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1alert_1get_1local_1endpoint(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::tracker_alert *arg1 = (libtorrent::tracker_alert *) 0 ; + libtorrent::tcp::endpoint result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_alert **)&jarg1; + { + try { + result = libtorrent_tracker_alert_get_local_endpoint(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::tcp::endpoint **)&jresult = new libtorrent::tcp::endpoint((const libtorrent::tcp::endpoint &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1tracker_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::tracker_alert *arg1 = (libtorrent::tracker_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::tracker_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1removed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_removed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1removed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_removed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1removed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_removed_alert *arg1 = (libtorrent::torrent_removed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_removed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_removed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1removed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_removed_alert *arg1 = (libtorrent::torrent_removed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_removed_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_removed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1removed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_removed_alert *arg1 = (libtorrent::torrent_removed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_removed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::torrent_removed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1removed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::torrent_removed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1removed_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_removed_alert *arg1 = (libtorrent::torrent_removed_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_removed_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_removed_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1removed_1alert_1info_1hash_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_removed_alert *arg1 = (libtorrent::torrent_removed_alert *) 0 ; + libtorrent::sha1_hash *arg2 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_removed_alert **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (arg1) (arg1)->info_hash = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1removed_1alert_1info_1hash_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_removed_alert *arg1 = (libtorrent::torrent_removed_alert *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_removed_alert **)&jarg1; + result = (libtorrent::sha1_hash *)& ((arg1)->info_hash); + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1removed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::torrent_removed_alert *arg1 = (libtorrent::torrent_removed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::torrent_removed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_read_1piece_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::read_piece_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_read_1piece_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::read_piece_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_read_1piece_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::read_piece_alert *arg1 = (libtorrent::read_piece_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::read_piece_alert **)&jarg1; + { + try { + result = (int)((libtorrent::read_piece_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_read_1piece_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::read_piece_alert *arg1 = (libtorrent::read_piece_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::read_piece_alert **)&jarg1; + { + try { + result = ((libtorrent::read_piece_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_read_1piece_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::read_piece_alert *arg1 = (libtorrent::read_piece_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::read_piece_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::read_piece_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_read_1piece_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::read_piece_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_read_1piece_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::read_piece_alert *arg1 = (libtorrent::read_piece_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::read_piece_alert **)&jarg1; + { + try { + result = ((libtorrent::read_piece_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_read_1piece_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::read_piece_alert *arg1 = (libtorrent::read_piece_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::read_piece_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_read_1piece_1alert_1piece_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::read_piece_alert *arg1 = (libtorrent::read_piece_alert *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::read_piece_alert **)&jarg1; + result = (piece_index_t) ((arg1)->piece); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_read_1piece_1alert_1size_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::read_piece_alert *arg1 = (libtorrent::read_piece_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::read_piece_alert **)&jarg1; + result = (int)(int) ((arg1)->size); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_read_1piece_1alert_1buffer_1ptr(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::read_piece_alert *arg1 = (libtorrent::read_piece_alert *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::read_piece_alert **)&jarg1; + { + try { + result = (int64_t)libtorrent_read_piece_alert_buffer_ptr(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1read_1piece_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::read_piece_alert *arg1 = (libtorrent::read_piece_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::read_piece_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1completed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::file_completed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1completed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::file_completed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1completed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::file_completed_alert *arg1 = (libtorrent::file_completed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_completed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::file_completed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1completed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::file_completed_alert *arg1 = (libtorrent::file_completed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_completed_alert **)&jarg1; + { + try { + result = ((libtorrent::file_completed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1completed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::file_completed_alert *arg1 = (libtorrent::file_completed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_completed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::file_completed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1completed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::file_completed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1completed_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::file_completed_alert *arg1 = (libtorrent::file_completed_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_completed_alert **)&jarg1; + { + try { + result = ((libtorrent::file_completed_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1completed_1alert_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::file_completed_alert *arg1 = (libtorrent::file_completed_alert *) 0 ; + file_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_completed_alert **)&jarg1; + result = (file_index_t) ((arg1)->index); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1file_1completed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::file_completed_alert *arg1 = (libtorrent::file_completed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::file_completed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1renamed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::file_renamed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1renamed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::file_renamed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1renamed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::file_renamed_alert *arg1 = (libtorrent::file_renamed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_renamed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::file_renamed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1renamed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::file_renamed_alert *arg1 = (libtorrent::file_renamed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_renamed_alert **)&jarg1; + { + try { + result = ((libtorrent::file_renamed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1renamed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::file_renamed_alert *arg1 = (libtorrent::file_renamed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_renamed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::file_renamed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1renamed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::file_renamed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1renamed_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::file_renamed_alert *arg1 = (libtorrent::file_renamed_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_renamed_alert **)&jarg1; + { + try { + result = ((libtorrent::file_renamed_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1renamed_1alert_1new_1name(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::file_renamed_alert *arg1 = (libtorrent::file_renamed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_renamed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::file_renamed_alert const *)arg1)->new_name(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1renamed_1alert_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::file_renamed_alert *arg1 = (libtorrent::file_renamed_alert *) 0 ; + file_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_renamed_alert **)&jarg1; + result = (file_index_t) ((arg1)->index); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1file_1renamed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::file_renamed_alert *arg1 = (libtorrent::file_renamed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::file_renamed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1rename_1failed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::file_rename_failed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1rename_1failed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::file_rename_failed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1rename_1failed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::file_rename_failed_alert *arg1 = (libtorrent::file_rename_failed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_rename_failed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::file_rename_failed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1rename_1failed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::file_rename_failed_alert *arg1 = (libtorrent::file_rename_failed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_rename_failed_alert **)&jarg1; + { + try { + result = ((libtorrent::file_rename_failed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1rename_1failed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::file_rename_failed_alert *arg1 = (libtorrent::file_rename_failed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_rename_failed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::file_rename_failed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1rename_1failed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::file_rename_failed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1rename_1failed_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::file_rename_failed_alert *arg1 = (libtorrent::file_rename_failed_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_rename_failed_alert **)&jarg1; + { + try { + result = ((libtorrent::file_rename_failed_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1rename_1failed_1alert_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::file_rename_failed_alert *arg1 = (libtorrent::file_rename_failed_alert *) 0 ; + file_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_rename_failed_alert **)&jarg1; + result = (file_index_t) ((arg1)->index); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1rename_1failed_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::file_rename_failed_alert *arg1 = (libtorrent::file_rename_failed_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_rename_failed_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1file_1rename_1failed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::file_rename_failed_alert *arg1 = (libtorrent::file_rename_failed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::file_rename_failed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_performance_1alert_1too_1few_1outgoing_1ports_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::performance_alert::performance_warning_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::performance_alert::performance_warning_t)libtorrent::performance_alert::too_few_outgoing_ports; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_performance_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::performance_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_performance_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::performance_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_performance_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::performance_alert *arg1 = (libtorrent::performance_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::performance_alert **)&jarg1; + { + try { + result = (int)((libtorrent::performance_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_performance_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::performance_alert *arg1 = (libtorrent::performance_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::performance_alert **)&jarg1; + { + try { + result = ((libtorrent::performance_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_performance_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::performance_alert *arg1 = (libtorrent::performance_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::performance_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::performance_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_performance_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::performance_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_performance_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::performance_alert *arg1 = (libtorrent::performance_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::performance_alert **)&jarg1; + { + try { + result = ((libtorrent::performance_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_performance_1alert_1warning_1code_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::performance_alert *arg1 = (libtorrent::performance_alert *) 0 ; + libtorrent::performance_alert::performance_warning_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::performance_alert **)&jarg1; + result = (libtorrent::performance_alert::performance_warning_t)(libtorrent::performance_alert::performance_warning_t) ((arg1)->warning_code); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1performance_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::performance_alert *arg1 = (libtorrent::performance_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::performance_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1changed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::state_changed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1changed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::state_changed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1changed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::state_changed_alert *arg1 = (libtorrent::state_changed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::state_changed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::state_changed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1changed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::state_changed_alert *arg1 = (libtorrent::state_changed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::state_changed_alert **)&jarg1; + { + try { + result = ((libtorrent::state_changed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1changed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::state_changed_alert *arg1 = (libtorrent::state_changed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::state_changed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::state_changed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1changed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::state_changed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1changed_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::state_changed_alert *arg1 = (libtorrent::state_changed_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::state_changed_alert **)&jarg1; + { + try { + result = ((libtorrent::state_changed_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1changed_1alert_1state_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::state_changed_alert *arg1 = (libtorrent::state_changed_alert *) 0 ; + libtorrent::torrent_status::state_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::state_changed_alert **)&jarg1; + result = (libtorrent::torrent_status::state_t)(libtorrent::torrent_status::state_t) ((arg1)->state); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1changed_1alert_1prev_1state_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::state_changed_alert *arg1 = (libtorrent::state_changed_alert *) 0 ; + libtorrent::torrent_status::state_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::state_changed_alert **)&jarg1; + result = (libtorrent::torrent_status::state_t)(libtorrent::torrent_status::state_t) ((arg1)->prev_state); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1state_1changed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::state_changed_alert *arg1 = (libtorrent::state_changed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::state_changed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1error_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::tracker_error_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1error_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::tracker_error_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1error_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::tracker_error_alert *arg1 = (libtorrent::tracker_error_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_error_alert **)&jarg1; + { + try { + result = (int)((libtorrent::tracker_error_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1error_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::tracker_error_alert *arg1 = (libtorrent::tracker_error_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_error_alert **)&jarg1; + { + try { + result = ((libtorrent::tracker_error_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1error_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::tracker_error_alert *arg1 = (libtorrent::tracker_error_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_error_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::tracker_error_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1error_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::tracker_error_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1error_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::tracker_error_alert *arg1 = (libtorrent::tracker_error_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_error_alert **)&jarg1; + { + try { + result = ((libtorrent::tracker_error_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1error_1alert_1times_1in_1row_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::tracker_error_alert *arg1 = (libtorrent::tracker_error_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_error_alert **)&jarg1; + result = (int)(int) ((arg1)->times_in_row); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1error_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::tracker_error_alert *arg1 = (libtorrent::tracker_error_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_error_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1error_1alert_1error_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::tracker_error_alert *arg1 = (libtorrent::tracker_error_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_error_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::tracker_error_alert const *)arg1)->error_message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1tracker_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::tracker_error_alert *arg1 = (libtorrent::tracker_error_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::tracker_error_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1warning_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::tracker_warning_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1warning_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::tracker_warning_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1warning_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::tracker_warning_alert *arg1 = (libtorrent::tracker_warning_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_warning_alert **)&jarg1; + { + try { + result = (int)((libtorrent::tracker_warning_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1warning_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::tracker_warning_alert *arg1 = (libtorrent::tracker_warning_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_warning_alert **)&jarg1; + { + try { + result = ((libtorrent::tracker_warning_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1warning_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::tracker_warning_alert *arg1 = (libtorrent::tracker_warning_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_warning_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::tracker_warning_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1warning_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::tracker_warning_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1warning_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::tracker_warning_alert *arg1 = (libtorrent::tracker_warning_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_warning_alert **)&jarg1; + { + try { + result = ((libtorrent::tracker_warning_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1warning_1alert_1warning_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::tracker_warning_alert *arg1 = (libtorrent::tracker_warning_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_warning_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::tracker_warning_alert const *)arg1)->warning_message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1tracker_1warning_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::tracker_warning_alert *arg1 = (libtorrent::tracker_warning_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::tracker_warning_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1reply_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::scrape_reply_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1reply_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::scrape_reply_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1reply_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::scrape_reply_alert *arg1 = (libtorrent::scrape_reply_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::scrape_reply_alert **)&jarg1; + { + try { + result = (int)((libtorrent::scrape_reply_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1reply_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::scrape_reply_alert *arg1 = (libtorrent::scrape_reply_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::scrape_reply_alert **)&jarg1; + { + try { + result = ((libtorrent::scrape_reply_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1reply_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::scrape_reply_alert *arg1 = (libtorrent::scrape_reply_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::scrape_reply_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::scrape_reply_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1reply_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::scrape_reply_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1reply_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::scrape_reply_alert *arg1 = (libtorrent::scrape_reply_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::scrape_reply_alert **)&jarg1; + { + try { + result = ((libtorrent::scrape_reply_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1reply_1alert_1incomplete_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::scrape_reply_alert *arg1 = (libtorrent::scrape_reply_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::scrape_reply_alert **)&jarg1; + result = (int)(int) ((arg1)->incomplete); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1reply_1alert_1complete_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::scrape_reply_alert *arg1 = (libtorrent::scrape_reply_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::scrape_reply_alert **)&jarg1; + result = (int)(int) ((arg1)->complete); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1scrape_1reply_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::scrape_reply_alert *arg1 = (libtorrent::scrape_reply_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::scrape_reply_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1failed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::scrape_failed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1failed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::scrape_failed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1failed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::scrape_failed_alert *arg1 = (libtorrent::scrape_failed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::scrape_failed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::scrape_failed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1failed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::scrape_failed_alert *arg1 = (libtorrent::scrape_failed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::scrape_failed_alert **)&jarg1; + { + try { + result = ((libtorrent::scrape_failed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1failed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::scrape_failed_alert *arg1 = (libtorrent::scrape_failed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::scrape_failed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::scrape_failed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1failed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::scrape_failed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1failed_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::scrape_failed_alert *arg1 = (libtorrent::scrape_failed_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::scrape_failed_alert **)&jarg1; + { + try { + result = ((libtorrent::scrape_failed_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1failed_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::scrape_failed_alert *arg1 = (libtorrent::scrape_failed_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::scrape_failed_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1failed_1alert_1error_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::scrape_failed_alert *arg1 = (libtorrent::scrape_failed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::scrape_failed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::scrape_failed_alert const *)arg1)->error_message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1scrape_1failed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::scrape_failed_alert *arg1 = (libtorrent::scrape_failed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::scrape_failed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1reply_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::tracker_reply_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1reply_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::tracker_reply_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1reply_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::tracker_reply_alert *arg1 = (libtorrent::tracker_reply_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_reply_alert **)&jarg1; + { + try { + result = (int)((libtorrent::tracker_reply_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1reply_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::tracker_reply_alert *arg1 = (libtorrent::tracker_reply_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_reply_alert **)&jarg1; + { + try { + result = ((libtorrent::tracker_reply_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1reply_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::tracker_reply_alert *arg1 = (libtorrent::tracker_reply_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_reply_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::tracker_reply_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1reply_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::tracker_reply_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1reply_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::tracker_reply_alert *arg1 = (libtorrent::tracker_reply_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_reply_alert **)&jarg1; + { + try { + result = ((libtorrent::tracker_reply_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1reply_1alert_1num_1peers_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::tracker_reply_alert *arg1 = (libtorrent::tracker_reply_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_reply_alert **)&jarg1; + result = (int)(int) ((arg1)->num_peers); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1tracker_1reply_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::tracker_reply_alert *arg1 = (libtorrent::tracker_reply_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::tracker_reply_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1reply_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_reply_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1reply_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_reply_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1reply_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_reply_alert *arg1 = (libtorrent::dht_reply_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_reply_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_reply_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1reply_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_reply_alert *arg1 = (libtorrent::dht_reply_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_reply_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_reply_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1reply_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_reply_alert *arg1 = (libtorrent::dht_reply_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_reply_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_reply_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1reply_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::dht_reply_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1reply_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_reply_alert *arg1 = (libtorrent::dht_reply_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_reply_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_reply_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1reply_1alert_1num_1peers_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_reply_alert *arg1 = (libtorrent::dht_reply_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_reply_alert **)&jarg1; + result = (int)(int) ((arg1)->num_peers); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1reply_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_reply_alert *arg1 = (libtorrent::dht_reply_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_reply_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1announce_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::tracker_announce_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1announce_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::tracker_announce_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1announce_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::tracker_announce_alert *arg1 = (libtorrent::tracker_announce_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_announce_alert **)&jarg1; + { + try { + result = (int)((libtorrent::tracker_announce_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1announce_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::tracker_announce_alert *arg1 = (libtorrent::tracker_announce_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_announce_alert **)&jarg1; + { + try { + result = ((libtorrent::tracker_announce_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1announce_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::tracker_announce_alert *arg1 = (libtorrent::tracker_announce_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_announce_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::tracker_announce_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1announce_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::tracker_announce_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1announce_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::tracker_announce_alert *arg1 = (libtorrent::tracker_announce_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_announce_alert **)&jarg1; + { + try { + result = ((libtorrent::tracker_announce_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1announce_1alert_1event_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::tracker_announce_alert *arg1 = (libtorrent::tracker_announce_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::tracker_announce_alert **)&jarg1; + result = (int)(int) ((arg1)->event); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1tracker_1announce_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::tracker_announce_alert *arg1 = (libtorrent::tracker_announce_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::tracker_announce_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_hash_1failed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::hash_failed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_hash_1failed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::hash_failed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_hash_1failed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::hash_failed_alert *arg1 = (libtorrent::hash_failed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::hash_failed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::hash_failed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_hash_1failed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::hash_failed_alert *arg1 = (libtorrent::hash_failed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::hash_failed_alert **)&jarg1; + { + try { + result = ((libtorrent::hash_failed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_hash_1failed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::hash_failed_alert *arg1 = (libtorrent::hash_failed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::hash_failed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::hash_failed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_hash_1failed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::hash_failed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_hash_1failed_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::hash_failed_alert *arg1 = (libtorrent::hash_failed_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::hash_failed_alert **)&jarg1; + { + try { + result = ((libtorrent::hash_failed_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_hash_1failed_1alert_1piece_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::hash_failed_alert *arg1 = (libtorrent::hash_failed_alert *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::hash_failed_alert **)&jarg1; + result = (piece_index_t) ((arg1)->piece_index); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1hash_1failed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::hash_failed_alert *arg1 = (libtorrent::hash_failed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::hash_failed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1ban_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::peer_ban_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1ban_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::peer_ban_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1ban_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_ban_alert *arg1 = (libtorrent::peer_ban_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_ban_alert **)&jarg1; + { + try { + result = (int)((libtorrent::peer_ban_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1ban_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_ban_alert *arg1 = (libtorrent::peer_ban_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_ban_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_ban_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1ban_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_ban_alert *arg1 = (libtorrent::peer_ban_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_ban_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::peer_ban_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1ban_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::peer_ban_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1ban_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_ban_alert *arg1 = (libtorrent::peer_ban_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_ban_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_ban_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1ban_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::peer_ban_alert *arg1 = (libtorrent::peer_ban_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::peer_ban_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1unsnubbed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::peer_unsnubbed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1unsnubbed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::peer_unsnubbed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1unsnubbed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_unsnubbed_alert *arg1 = (libtorrent::peer_unsnubbed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_unsnubbed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::peer_unsnubbed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1unsnubbed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_unsnubbed_alert *arg1 = (libtorrent::peer_unsnubbed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_unsnubbed_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_unsnubbed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1unsnubbed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_unsnubbed_alert *arg1 = (libtorrent::peer_unsnubbed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_unsnubbed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::peer_unsnubbed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1unsnubbed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::peer_unsnubbed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1unsnubbed_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_unsnubbed_alert *arg1 = (libtorrent::peer_unsnubbed_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_unsnubbed_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_unsnubbed_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1unsnubbed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::peer_unsnubbed_alert *arg1 = (libtorrent::peer_unsnubbed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::peer_unsnubbed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1snubbed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::peer_snubbed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1snubbed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::peer_snubbed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1snubbed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_snubbed_alert *arg1 = (libtorrent::peer_snubbed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_snubbed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::peer_snubbed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1snubbed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_snubbed_alert *arg1 = (libtorrent::peer_snubbed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_snubbed_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_snubbed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1snubbed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_snubbed_alert *arg1 = (libtorrent::peer_snubbed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_snubbed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::peer_snubbed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1snubbed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::peer_snubbed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1snubbed_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_snubbed_alert *arg1 = (libtorrent::peer_snubbed_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_snubbed_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_snubbed_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1snubbed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::peer_snubbed_alert *arg1 = (libtorrent::peer_snubbed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::peer_snubbed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1error_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::peer_error_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1error_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::peer_error_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1error_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_error_alert *arg1 = (libtorrent::peer_error_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_error_alert **)&jarg1; + { + try { + result = (int)((libtorrent::peer_error_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1error_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_error_alert *arg1 = (libtorrent::peer_error_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_error_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_error_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1error_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_error_alert *arg1 = (libtorrent::peer_error_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_error_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::peer_error_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1error_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::peer_error_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1error_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_error_alert *arg1 = (libtorrent::peer_error_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_error_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_error_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1error_1alert_1op_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_error_alert *arg1 = (libtorrent::peer_error_alert *) 0 ; + libtorrent::operation_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_error_alert **)&jarg1; + arg2 = (libtorrent::operation_t)jarg2; + if (arg1) (arg1)->op = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1error_1alert_1op_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_error_alert *arg1 = (libtorrent::peer_error_alert *) 0 ; + libtorrent::operation_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_error_alert **)&jarg1; + result = (libtorrent::operation_t) ((arg1)->op); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1error_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_error_alert *arg1 = (libtorrent::peer_error_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_error_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::peer_error_alert *arg1 = (libtorrent::peer_error_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::peer_error_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connect_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::peer_connect_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connect_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::peer_connect_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connect_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_connect_alert *arg1 = (libtorrent::peer_connect_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connect_alert **)&jarg1; + { + try { + result = (int)((libtorrent::peer_connect_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connect_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_connect_alert *arg1 = (libtorrent::peer_connect_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connect_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_connect_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connect_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_connect_alert *arg1 = (libtorrent::peer_connect_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connect_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::peer_connect_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connect_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::peer_connect_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connect_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_connect_alert *arg1 = (libtorrent::peer_connect_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connect_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_connect_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connect_1alert_1socket_1type_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_connect_alert *arg1 = (libtorrent::peer_connect_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connect_alert **)&jarg1; + result = (int)(int) ((arg1)->socket_type); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1connect_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::peer_connect_alert *arg1 = (libtorrent::peer_connect_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::peer_connect_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1disconnected_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::peer_disconnected_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1disconnected_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::peer_disconnected_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1disconnected_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_disconnected_alert *arg1 = (libtorrent::peer_disconnected_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_disconnected_alert **)&jarg1; + { + try { + result = (int)((libtorrent::peer_disconnected_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1disconnected_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_disconnected_alert *arg1 = (libtorrent::peer_disconnected_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_disconnected_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_disconnected_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1disconnected_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_disconnected_alert *arg1 = (libtorrent::peer_disconnected_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_disconnected_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::peer_disconnected_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1disconnected_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::peer_disconnected_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1disconnected_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_disconnected_alert *arg1 = (libtorrent::peer_disconnected_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_disconnected_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_disconnected_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1disconnected_1alert_1socket_1type_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_disconnected_alert *arg1 = (libtorrent::peer_disconnected_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_disconnected_alert **)&jarg1; + result = (int)(int) ((arg1)->socket_type); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1disconnected_1alert_1op_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_disconnected_alert *arg1 = (libtorrent::peer_disconnected_alert *) 0 ; + libtorrent::operation_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_disconnected_alert **)&jarg1; + result = (libtorrent::operation_t)(libtorrent::operation_t) ((arg1)->op); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1disconnected_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_disconnected_alert *arg1 = (libtorrent::peer_disconnected_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_disconnected_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1disconnected_1alert_1reason_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_disconnected_alert *arg1 = (libtorrent::peer_disconnected_alert *) 0 ; + libtorrent::close_reason_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_disconnected_alert **)&jarg1; + result = (libtorrent::close_reason_t)(libtorrent::close_reason_t) ((arg1)->reason); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1disconnected_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::peer_disconnected_alert *arg1 = (libtorrent::peer_disconnected_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::peer_disconnected_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_invalid_1request_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::invalid_request_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_invalid_1request_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::invalid_request_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_invalid_1request_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::invalid_request_alert *arg1 = (libtorrent::invalid_request_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::invalid_request_alert **)&jarg1; + { + try { + result = (int)((libtorrent::invalid_request_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_invalid_1request_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::invalid_request_alert *arg1 = (libtorrent::invalid_request_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::invalid_request_alert **)&jarg1; + { + try { + result = ((libtorrent::invalid_request_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_invalid_1request_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::invalid_request_alert *arg1 = (libtorrent::invalid_request_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::invalid_request_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::invalid_request_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_invalid_1request_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::invalid_request_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_invalid_1request_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::invalid_request_alert *arg1 = (libtorrent::invalid_request_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::invalid_request_alert **)&jarg1; + { + try { + result = ((libtorrent::invalid_request_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_invalid_1request_1alert_1request_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::invalid_request_alert *arg1 = (libtorrent::invalid_request_alert *) 0 ; + libtorrent::peer_request *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::invalid_request_alert **)&jarg1; + result = (libtorrent::peer_request *)& ((arg1)->request); + *(libtorrent::peer_request **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_invalid_1request_1alert_1we_1have_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::invalid_request_alert *arg1 = (libtorrent::invalid_request_alert *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::invalid_request_alert **)&jarg1; + result = (bool)(bool) ((arg1)->we_have); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_invalid_1request_1alert_1peer_1interested_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::invalid_request_alert *arg1 = (libtorrent::invalid_request_alert *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::invalid_request_alert **)&jarg1; + result = (bool)(bool) ((arg1)->peer_interested); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_invalid_1request_1alert_1withheld_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::invalid_request_alert *arg1 = (libtorrent::invalid_request_alert *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::invalid_request_alert **)&jarg1; + result = (bool)(bool) ((arg1)->withheld); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1invalid_1request_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::invalid_request_alert *arg1 = (libtorrent::invalid_request_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::invalid_request_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1finished_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_finished_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1finished_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_finished_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1finished_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_finished_alert *arg1 = (libtorrent::torrent_finished_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_finished_alert **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_finished_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1finished_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_finished_alert *arg1 = (libtorrent::torrent_finished_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_finished_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_finished_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1finished_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_finished_alert *arg1 = (libtorrent::torrent_finished_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_finished_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::torrent_finished_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1finished_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::torrent_finished_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1finished_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_finished_alert *arg1 = (libtorrent::torrent_finished_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_finished_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_finished_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1finished_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::torrent_finished_alert *arg1 = (libtorrent::torrent_finished_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::torrent_finished_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1finished_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::piece_finished_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1finished_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::piece_finished_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1finished_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::piece_finished_alert *arg1 = (libtorrent::piece_finished_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::piece_finished_alert **)&jarg1; + { + try { + result = (int)((libtorrent::piece_finished_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1finished_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::piece_finished_alert *arg1 = (libtorrent::piece_finished_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::piece_finished_alert **)&jarg1; + { + try { + result = ((libtorrent::piece_finished_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1finished_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::piece_finished_alert *arg1 = (libtorrent::piece_finished_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::piece_finished_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::piece_finished_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1finished_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::piece_finished_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1finished_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::piece_finished_alert *arg1 = (libtorrent::piece_finished_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::piece_finished_alert **)&jarg1; + { + try { + result = ((libtorrent::piece_finished_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1finished_1alert_1piece_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::piece_finished_alert *arg1 = (libtorrent::piece_finished_alert *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::piece_finished_alert **)&jarg1; + result = (piece_index_t) ((arg1)->piece_index); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1piece_1finished_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::piece_finished_alert *arg1 = (libtorrent::piece_finished_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::piece_finished_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_request_1dropped_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::request_dropped_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_request_1dropped_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::request_dropped_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_request_1dropped_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::request_dropped_alert *arg1 = (libtorrent::request_dropped_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::request_dropped_alert **)&jarg1; + { + try { + result = (int)((libtorrent::request_dropped_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_request_1dropped_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::request_dropped_alert *arg1 = (libtorrent::request_dropped_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::request_dropped_alert **)&jarg1; + { + try { + result = ((libtorrent::request_dropped_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_request_1dropped_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::request_dropped_alert *arg1 = (libtorrent::request_dropped_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::request_dropped_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::request_dropped_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_request_1dropped_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::request_dropped_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_request_1dropped_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::request_dropped_alert *arg1 = (libtorrent::request_dropped_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::request_dropped_alert **)&jarg1; + { + try { + result = ((libtorrent::request_dropped_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_request_1dropped_1alert_1block_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::request_dropped_alert *arg1 = (libtorrent::request_dropped_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::request_dropped_alert **)&jarg1; + result = (int)(int) ((arg1)->block_index); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_request_1dropped_1alert_1piece_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::request_dropped_alert *arg1 = (libtorrent::request_dropped_alert *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::request_dropped_alert **)&jarg1; + result = (piece_index_t) ((arg1)->piece_index); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1request_1dropped_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::request_dropped_alert *arg1 = (libtorrent::request_dropped_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::request_dropped_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1timeout_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::block_timeout_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1timeout_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::block_timeout_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1timeout_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::block_timeout_alert *arg1 = (libtorrent::block_timeout_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_timeout_alert **)&jarg1; + { + try { + result = (int)((libtorrent::block_timeout_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1timeout_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::block_timeout_alert *arg1 = (libtorrent::block_timeout_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_timeout_alert **)&jarg1; + { + try { + result = ((libtorrent::block_timeout_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1timeout_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::block_timeout_alert *arg1 = (libtorrent::block_timeout_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_timeout_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::block_timeout_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1timeout_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::block_timeout_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1timeout_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::block_timeout_alert *arg1 = (libtorrent::block_timeout_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_timeout_alert **)&jarg1; + { + try { + result = ((libtorrent::block_timeout_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1timeout_1alert_1block_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::block_timeout_alert *arg1 = (libtorrent::block_timeout_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_timeout_alert **)&jarg1; + result = (int)(int) ((arg1)->block_index); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1timeout_1alert_1piece_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::block_timeout_alert *arg1 = (libtorrent::block_timeout_alert *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_timeout_alert **)&jarg1; + result = (piece_index_t) ((arg1)->piece_index); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1block_1timeout_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::block_timeout_alert *arg1 = (libtorrent::block_timeout_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::block_timeout_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1finished_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::block_finished_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1finished_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::block_finished_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1finished_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::block_finished_alert *arg1 = (libtorrent::block_finished_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_finished_alert **)&jarg1; + { + try { + result = (int)((libtorrent::block_finished_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1finished_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::block_finished_alert *arg1 = (libtorrent::block_finished_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_finished_alert **)&jarg1; + { + try { + result = ((libtorrent::block_finished_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1finished_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::block_finished_alert *arg1 = (libtorrent::block_finished_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_finished_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::block_finished_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1finished_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::block_finished_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1finished_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::block_finished_alert *arg1 = (libtorrent::block_finished_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_finished_alert **)&jarg1; + { + try { + result = ((libtorrent::block_finished_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1finished_1alert_1block_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::block_finished_alert *arg1 = (libtorrent::block_finished_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_finished_alert **)&jarg1; + result = (int)(int) ((arg1)->block_index); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1finished_1alert_1piece_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::block_finished_alert *arg1 = (libtorrent::block_finished_alert *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_finished_alert **)&jarg1; + result = (piece_index_t) ((arg1)->piece_index); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1block_1finished_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::block_finished_alert *arg1 = (libtorrent::block_finished_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::block_finished_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1downloading_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::block_downloading_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1downloading_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::block_downloading_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1downloading_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::block_downloading_alert *arg1 = (libtorrent::block_downloading_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_downloading_alert **)&jarg1; + { + try { + result = (int)((libtorrent::block_downloading_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1downloading_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::block_downloading_alert *arg1 = (libtorrent::block_downloading_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_downloading_alert **)&jarg1; + { + try { + result = ((libtorrent::block_downloading_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1downloading_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::block_downloading_alert *arg1 = (libtorrent::block_downloading_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_downloading_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::block_downloading_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1downloading_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::block_downloading_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1downloading_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::block_downloading_alert *arg1 = (libtorrent::block_downloading_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_downloading_alert **)&jarg1; + { + try { + result = ((libtorrent::block_downloading_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1downloading_1alert_1block_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::block_downloading_alert *arg1 = (libtorrent::block_downloading_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_downloading_alert **)&jarg1; + result = (int)(int) ((arg1)->block_index); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1downloading_1alert_1piece_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::block_downloading_alert *arg1 = (libtorrent::block_downloading_alert *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_downloading_alert **)&jarg1; + result = (piece_index_t) ((arg1)->piece_index); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1block_1downloading_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::block_downloading_alert *arg1 = (libtorrent::block_downloading_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::block_downloading_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_unwanted_1block_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::unwanted_block_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_unwanted_1block_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::unwanted_block_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_unwanted_1block_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::unwanted_block_alert *arg1 = (libtorrent::unwanted_block_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::unwanted_block_alert **)&jarg1; + { + try { + result = (int)((libtorrent::unwanted_block_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_unwanted_1block_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::unwanted_block_alert *arg1 = (libtorrent::unwanted_block_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::unwanted_block_alert **)&jarg1; + { + try { + result = ((libtorrent::unwanted_block_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_unwanted_1block_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::unwanted_block_alert *arg1 = (libtorrent::unwanted_block_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::unwanted_block_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::unwanted_block_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_unwanted_1block_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::unwanted_block_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_unwanted_1block_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::unwanted_block_alert *arg1 = (libtorrent::unwanted_block_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::unwanted_block_alert **)&jarg1; + { + try { + result = ((libtorrent::unwanted_block_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_unwanted_1block_1alert_1block_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::unwanted_block_alert *arg1 = (libtorrent::unwanted_block_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::unwanted_block_alert **)&jarg1; + result = (int)(int) ((arg1)->block_index); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_unwanted_1block_1alert_1piece_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::unwanted_block_alert *arg1 = (libtorrent::unwanted_block_alert *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::unwanted_block_alert **)&jarg1; + result = (piece_index_t) ((arg1)->piece_index); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1unwanted_1block_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::unwanted_block_alert *arg1 = (libtorrent::unwanted_block_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::unwanted_block_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::storage_moved_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::storage_moved_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::storage_moved_alert *arg1 = (libtorrent::storage_moved_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::storage_moved_alert **)&jarg1; + { + try { + result = (int)((libtorrent::storage_moved_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::storage_moved_alert *arg1 = (libtorrent::storage_moved_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::storage_moved_alert **)&jarg1; + { + try { + result = ((libtorrent::storage_moved_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::storage_moved_alert *arg1 = (libtorrent::storage_moved_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::storage_moved_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::storage_moved_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::storage_moved_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::storage_moved_alert *arg1 = (libtorrent::storage_moved_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::storage_moved_alert **)&jarg1; + { + try { + result = ((libtorrent::storage_moved_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1alert_1storage_1path(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::storage_moved_alert *arg1 = (libtorrent::storage_moved_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::storage_moved_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::storage_moved_alert const *)arg1)->storage_path(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1storage_1moved_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::storage_moved_alert *arg1 = (libtorrent::storage_moved_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::storage_moved_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1failed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::storage_moved_failed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1failed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::storage_moved_failed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1failed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::storage_moved_failed_alert *arg1 = (libtorrent::storage_moved_failed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::storage_moved_failed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::storage_moved_failed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1failed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::storage_moved_failed_alert *arg1 = (libtorrent::storage_moved_failed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::storage_moved_failed_alert **)&jarg1; + { + try { + result = ((libtorrent::storage_moved_failed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1failed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::storage_moved_failed_alert *arg1 = (libtorrent::storage_moved_failed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::storage_moved_failed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::storage_moved_failed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1failed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::storage_moved_failed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1failed_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::storage_moved_failed_alert *arg1 = (libtorrent::storage_moved_failed_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::storage_moved_failed_alert **)&jarg1; + { + try { + result = ((libtorrent::storage_moved_failed_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1failed_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::storage_moved_failed_alert *arg1 = (libtorrent::storage_moved_failed_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::storage_moved_failed_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1failed_1alert_1file_1path(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::storage_moved_failed_alert *arg1 = (libtorrent::storage_moved_failed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::storage_moved_failed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::storage_moved_failed_alert const *)arg1)->file_path(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1failed_1alert_1op_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::storage_moved_failed_alert *arg1 = (libtorrent::storage_moved_failed_alert *) 0 ; + libtorrent::operation_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::storage_moved_failed_alert **)&jarg1; + arg2 = (libtorrent::operation_t)jarg2; + if (arg1) (arg1)->op = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1failed_1alert_1op_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::storage_moved_failed_alert *arg1 = (libtorrent::storage_moved_failed_alert *) 0 ; + libtorrent::operation_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::storage_moved_failed_alert **)&jarg1; + result = (libtorrent::operation_t) ((arg1)->op); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1storage_1moved_1failed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::storage_moved_failed_alert *arg1 = (libtorrent::storage_moved_failed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::storage_moved_failed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1deleted_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_deleted_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1deleted_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_deleted_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1deleted_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_deleted_alert *arg1 = (libtorrent::torrent_deleted_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_deleted_alert **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_deleted_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1deleted_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_deleted_alert *arg1 = (libtorrent::torrent_deleted_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_deleted_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_deleted_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1deleted_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_deleted_alert *arg1 = (libtorrent::torrent_deleted_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_deleted_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::torrent_deleted_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1deleted_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::torrent_deleted_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1deleted_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_deleted_alert *arg1 = (libtorrent::torrent_deleted_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_deleted_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_deleted_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1deleted_1alert_1info_1hash_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_deleted_alert *arg1 = (libtorrent::torrent_deleted_alert *) 0 ; + libtorrent::sha1_hash *arg2 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_deleted_alert **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (arg1) (arg1)->info_hash = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1deleted_1alert_1info_1hash_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_deleted_alert *arg1 = (libtorrent::torrent_deleted_alert *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_deleted_alert **)&jarg1; + result = (libtorrent::sha1_hash *)& ((arg1)->info_hash); + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1deleted_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::torrent_deleted_alert *arg1 = (libtorrent::torrent_deleted_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::torrent_deleted_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1delete_1failed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_delete_failed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1delete_1failed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_delete_failed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1delete_1failed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_delete_failed_alert *arg1 = (libtorrent::torrent_delete_failed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_delete_failed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_delete_failed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1delete_1failed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_delete_failed_alert *arg1 = (libtorrent::torrent_delete_failed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_delete_failed_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_delete_failed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1delete_1failed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_delete_failed_alert *arg1 = (libtorrent::torrent_delete_failed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_delete_failed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::torrent_delete_failed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1delete_1failed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::torrent_delete_failed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1delete_1failed_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_delete_failed_alert *arg1 = (libtorrent::torrent_delete_failed_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_delete_failed_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_delete_failed_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1delete_1failed_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_delete_failed_alert *arg1 = (libtorrent::torrent_delete_failed_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_delete_failed_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1delete_1failed_1alert_1info_1hash_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::torrent_delete_failed_alert *arg1 = (libtorrent::torrent_delete_failed_alert *) 0 ; + libtorrent::sha1_hash *arg2 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::torrent_delete_failed_alert **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (arg1) (arg1)->info_hash = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1delete_1failed_1alert_1info_1hash_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_delete_failed_alert *arg1 = (libtorrent::torrent_delete_failed_alert *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_delete_failed_alert **)&jarg1; + result = (libtorrent::sha1_hash *)& ((arg1)->info_hash); + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1delete_1failed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::torrent_delete_failed_alert *arg1 = (libtorrent::torrent_delete_failed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::torrent_delete_failed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::save_resume_data_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::save_resume_data_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::save_resume_data_alert *arg1 = (libtorrent::save_resume_data_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::save_resume_data_alert **)&jarg1; + { + try { + result = (int)((libtorrent::save_resume_data_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::save_resume_data_alert *arg1 = (libtorrent::save_resume_data_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::save_resume_data_alert **)&jarg1; + { + try { + result = ((libtorrent::save_resume_data_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::save_resume_data_alert *arg1 = (libtorrent::save_resume_data_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::save_resume_data_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::save_resume_data_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::save_resume_data_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::save_resume_data_alert *arg1 = (libtorrent::save_resume_data_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::save_resume_data_alert **)&jarg1; + { + try { + result = ((libtorrent::save_resume_data_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1alert_1params_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::save_resume_data_alert *arg1 = (libtorrent::save_resume_data_alert *) 0 ; + libtorrent::add_torrent_params *arg2 = (libtorrent::add_torrent_params *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::save_resume_data_alert **)&jarg1; + arg2 = *(libtorrent::add_torrent_params **)&jarg2; + if (arg1) (arg1)->params = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1alert_1params_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::save_resume_data_alert *arg1 = (libtorrent::save_resume_data_alert *) 0 ; + libtorrent::add_torrent_params *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::save_resume_data_alert **)&jarg1; + result = (libtorrent::add_torrent_params *)& ((arg1)->params); + *(libtorrent::add_torrent_params **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1save_1resume_1data_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::save_resume_data_alert *arg1 = (libtorrent::save_resume_data_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::save_resume_data_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1failed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::save_resume_data_failed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1failed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::save_resume_data_failed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1failed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::save_resume_data_failed_alert *arg1 = (libtorrent::save_resume_data_failed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::save_resume_data_failed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::save_resume_data_failed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1failed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::save_resume_data_failed_alert *arg1 = (libtorrent::save_resume_data_failed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::save_resume_data_failed_alert **)&jarg1; + { + try { + result = ((libtorrent::save_resume_data_failed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1failed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::save_resume_data_failed_alert *arg1 = (libtorrent::save_resume_data_failed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::save_resume_data_failed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::save_resume_data_failed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1failed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::save_resume_data_failed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1failed_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::save_resume_data_failed_alert *arg1 = (libtorrent::save_resume_data_failed_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::save_resume_data_failed_alert **)&jarg1; + { + try { + result = ((libtorrent::save_resume_data_failed_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1failed_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::save_resume_data_failed_alert *arg1 = (libtorrent::save_resume_data_failed_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::save_resume_data_failed_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1save_1resume_1data_1failed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::save_resume_data_failed_alert *arg1 = (libtorrent::save_resume_data_failed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::save_resume_data_failed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1paused_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_paused_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1paused_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_paused_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1paused_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_paused_alert *arg1 = (libtorrent::torrent_paused_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_paused_alert **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_paused_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1paused_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_paused_alert *arg1 = (libtorrent::torrent_paused_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_paused_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_paused_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1paused_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_paused_alert *arg1 = (libtorrent::torrent_paused_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_paused_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::torrent_paused_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1paused_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::torrent_paused_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1paused_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_paused_alert *arg1 = (libtorrent::torrent_paused_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_paused_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_paused_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1paused_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::torrent_paused_alert *arg1 = (libtorrent::torrent_paused_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::torrent_paused_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1resumed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_resumed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1resumed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_resumed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1resumed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_resumed_alert *arg1 = (libtorrent::torrent_resumed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_resumed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_resumed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1resumed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_resumed_alert *arg1 = (libtorrent::torrent_resumed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_resumed_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_resumed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1resumed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_resumed_alert *arg1 = (libtorrent::torrent_resumed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_resumed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::torrent_resumed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1resumed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::torrent_resumed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1resumed_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_resumed_alert *arg1 = (libtorrent::torrent_resumed_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_resumed_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_resumed_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1resumed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::torrent_resumed_alert *arg1 = (libtorrent::torrent_resumed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::torrent_resumed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1checked_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_checked_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1checked_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_checked_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1checked_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_checked_alert *arg1 = (libtorrent::torrent_checked_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_checked_alert **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_checked_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1checked_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_checked_alert *arg1 = (libtorrent::torrent_checked_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_checked_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_checked_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1checked_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_checked_alert *arg1 = (libtorrent::torrent_checked_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_checked_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::torrent_checked_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1checked_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::torrent_checked_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1checked_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_checked_alert *arg1 = (libtorrent::torrent_checked_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_checked_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_checked_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1checked_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::torrent_checked_alert *arg1 = (libtorrent::torrent_checked_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::torrent_checked_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_url_1seed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::url_seed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_url_1seed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::url_seed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_url_1seed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::url_seed_alert *arg1 = (libtorrent::url_seed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::url_seed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::url_seed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_url_1seed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::url_seed_alert *arg1 = (libtorrent::url_seed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::url_seed_alert **)&jarg1; + { + try { + result = ((libtorrent::url_seed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_url_1seed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::url_seed_alert *arg1 = (libtorrent::url_seed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::url_seed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::url_seed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_url_1seed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::url_seed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_url_1seed_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::url_seed_alert *arg1 = (libtorrent::url_seed_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::url_seed_alert **)&jarg1; + { + try { + result = ((libtorrent::url_seed_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_url_1seed_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::url_seed_alert *arg1 = (libtorrent::url_seed_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::url_seed_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_url_1seed_1alert_1server_1url(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::url_seed_alert *arg1 = (libtorrent::url_seed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::url_seed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::url_seed_alert const *)arg1)->server_url(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_url_1seed_1alert_1error_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::url_seed_alert *arg1 = (libtorrent::url_seed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::url_seed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::url_seed_alert const *)arg1)->error_message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1url_1seed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::url_seed_alert *arg1 = (libtorrent::url_seed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::url_seed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1error_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::file_error_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1error_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::file_error_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1error_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::file_error_alert *arg1 = (libtorrent::file_error_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_error_alert **)&jarg1; + { + try { + result = (int)((libtorrent::file_error_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1error_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::file_error_alert *arg1 = (libtorrent::file_error_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_error_alert **)&jarg1; + { + try { + result = ((libtorrent::file_error_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1error_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::file_error_alert *arg1 = (libtorrent::file_error_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_error_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::file_error_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1error_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::file_error_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1error_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::file_error_alert *arg1 = (libtorrent::file_error_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_error_alert **)&jarg1; + { + try { + result = ((libtorrent::file_error_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1error_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::file_error_alert *arg1 = (libtorrent::file_error_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_error_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1error_1alert_1op_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::file_error_alert *arg1 = (libtorrent::file_error_alert *) 0 ; + libtorrent::operation_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_error_alert **)&jarg1; + arg2 = (libtorrent::operation_t)jarg2; + if (arg1) (arg1)->op = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1error_1alert_1op_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::file_error_alert *arg1 = (libtorrent::file_error_alert *) 0 ; + libtorrent::operation_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_error_alert **)&jarg1; + result = (libtorrent::operation_t) ((arg1)->op); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1error_1alert_1filename(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::file_error_alert *arg1 = (libtorrent::file_error_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_error_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::file_error_alert const *)arg1)->filename(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1file_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::file_error_alert *arg1 = (libtorrent::file_error_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::file_error_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1failed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::metadata_failed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1failed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::metadata_failed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1failed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::metadata_failed_alert *arg1 = (libtorrent::metadata_failed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::metadata_failed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::metadata_failed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1failed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::metadata_failed_alert *arg1 = (libtorrent::metadata_failed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::metadata_failed_alert **)&jarg1; + { + try { + result = ((libtorrent::metadata_failed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1failed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::metadata_failed_alert *arg1 = (libtorrent::metadata_failed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::metadata_failed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::metadata_failed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1failed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::metadata_failed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1failed_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::metadata_failed_alert *arg1 = (libtorrent::metadata_failed_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::metadata_failed_alert **)&jarg1; + { + try { + result = ((libtorrent::metadata_failed_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1failed_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::metadata_failed_alert *arg1 = (libtorrent::metadata_failed_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::metadata_failed_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1metadata_1failed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::metadata_failed_alert *arg1 = (libtorrent::metadata_failed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::metadata_failed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1received_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::metadata_received_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1received_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::metadata_received_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1received_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::metadata_received_alert *arg1 = (libtorrent::metadata_received_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::metadata_received_alert **)&jarg1; + { + try { + result = (int)((libtorrent::metadata_received_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1received_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::metadata_received_alert *arg1 = (libtorrent::metadata_received_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::metadata_received_alert **)&jarg1; + { + try { + result = ((libtorrent::metadata_received_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1received_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::metadata_received_alert *arg1 = (libtorrent::metadata_received_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::metadata_received_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::metadata_received_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1received_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::metadata_received_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1received_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::metadata_received_alert *arg1 = (libtorrent::metadata_received_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::metadata_received_alert **)&jarg1; + { + try { + result = ((libtorrent::metadata_received_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1metadata_1received_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::metadata_received_alert *arg1 = (libtorrent::metadata_received_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::metadata_received_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1error_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::udp_error_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1error_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::udp_error_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1error_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::udp_error_alert *arg1 = (libtorrent::udp_error_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::udp_error_alert **)&jarg1; + { + try { + result = (int)((libtorrent::udp_error_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1error_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::udp_error_alert *arg1 = (libtorrent::udp_error_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::udp_error_alert **)&jarg1; + { + try { + result = ((libtorrent::udp_error_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1error_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::udp_error_alert *arg1 = (libtorrent::udp_error_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::udp_error_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::udp_error_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1error_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::udp_error_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1error_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::udp_error_alert *arg1 = (libtorrent::udp_error_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::udp_error_alert **)&jarg1; + { + try { + result = ((libtorrent::udp_error_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1error_1alert_1operation_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::udp_error_alert *arg1 = (libtorrent::udp_error_alert *) 0 ; + libtorrent::operation_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::udp_error_alert **)&jarg1; + arg2 = (libtorrent::operation_t)jarg2; + if (arg1) (arg1)->operation = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1error_1alert_1operation_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::udp_error_alert *arg1 = (libtorrent::udp_error_alert *) 0 ; + libtorrent::operation_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::udp_error_alert **)&jarg1; + result = (libtorrent::operation_t) ((arg1)->operation); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1error_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::udp_error_alert *arg1 = (libtorrent::udp_error_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::udp_error_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1error_1alert_1get_1endpoint(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::udp_error_alert *arg1 = (libtorrent::udp_error_alert *) 0 ; + libtorrent::udp::endpoint result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::udp_error_alert **)&jarg1; + { + try { + result = libtorrent_udp_error_alert_get_endpoint(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::udp::endpoint **)&jresult = new libtorrent::udp::endpoint((const libtorrent::udp::endpoint &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1udp_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::udp_error_alert *arg1 = (libtorrent::udp_error_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::udp_error_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_external_1ip_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::external_ip_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_external_1ip_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::external_ip_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_external_1ip_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::external_ip_alert *arg1 = (libtorrent::external_ip_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::external_ip_alert **)&jarg1; + { + try { + result = (int)((libtorrent::external_ip_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_external_1ip_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::external_ip_alert *arg1 = (libtorrent::external_ip_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::external_ip_alert **)&jarg1; + { + try { + result = ((libtorrent::external_ip_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_external_1ip_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::external_ip_alert *arg1 = (libtorrent::external_ip_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::external_ip_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::external_ip_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_external_1ip_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::external_ip_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_external_1ip_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::external_ip_alert *arg1 = (libtorrent::external_ip_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::external_ip_alert **)&jarg1; + { + try { + result = ((libtorrent::external_ip_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_external_1ip_1alert_1get_1external_1address(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::external_ip_alert *arg1 = (libtorrent::external_ip_alert *) 0 ; + libtorrent::address result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::external_ip_alert **)&jarg1; + { + try { + result = libtorrent_external_ip_alert_get_external_address(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::address **)&jresult = new libtorrent::address((const libtorrent::address &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1external_1ip_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::external_ip_alert *arg1 = (libtorrent::external_ip_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::external_ip_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1failed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::listen_failed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1failed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::listen_failed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1failed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::listen_failed_alert *arg1 = (libtorrent::listen_failed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_failed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::listen_failed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1failed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::listen_failed_alert *arg1 = (libtorrent::listen_failed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_failed_alert **)&jarg1; + { + try { + result = ((libtorrent::listen_failed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1failed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::listen_failed_alert *arg1 = (libtorrent::listen_failed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_failed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::listen_failed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1failed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::listen_failed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1failed_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::listen_failed_alert *arg1 = (libtorrent::listen_failed_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_failed_alert **)&jarg1; + { + try { + result = ((libtorrent::listen_failed_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1failed_1alert_1listen_1interface(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::listen_failed_alert *arg1 = (libtorrent::listen_failed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_failed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::listen_failed_alert const *)arg1)->listen_interface(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1failed_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::listen_failed_alert *arg1 = (libtorrent::listen_failed_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_failed_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1failed_1alert_1op_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::listen_failed_alert *arg1 = (libtorrent::listen_failed_alert *) 0 ; + libtorrent::operation_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_failed_alert **)&jarg1; + arg2 = (libtorrent::operation_t)jarg2; + if (arg1) (arg1)->op = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1failed_1alert_1op_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::listen_failed_alert *arg1 = (libtorrent::listen_failed_alert *) 0 ; + libtorrent::operation_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_failed_alert **)&jarg1; + result = (libtorrent::operation_t) ((arg1)->op); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1failed_1alert_1socket_1type_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::listen_failed_alert *arg1 = (libtorrent::listen_failed_alert *) 0 ; + libtorrent::socket_type_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_failed_alert **)&jarg1; + result = (libtorrent::socket_type_t)(libtorrent::socket_type_t) ((arg1)->socket_type); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1failed_1alert_1port_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::listen_failed_alert *arg1 = (libtorrent::listen_failed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_failed_alert **)&jarg1; + result = (int)(int) ((arg1)->port); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1failed_1alert_1get_1address(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::listen_failed_alert *arg1 = (libtorrent::listen_failed_alert *) 0 ; + libtorrent::address result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_failed_alert **)&jarg1; + { + try { + result = libtorrent_listen_failed_alert_get_address(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::address **)&jresult = new libtorrent::address((const libtorrent::address &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1listen_1failed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::listen_failed_alert *arg1 = (libtorrent::listen_failed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::listen_failed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1succeeded_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::listen_succeeded_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1succeeded_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::listen_succeeded_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1succeeded_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::listen_succeeded_alert *arg1 = (libtorrent::listen_succeeded_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_succeeded_alert **)&jarg1; + { + try { + result = (int)((libtorrent::listen_succeeded_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1succeeded_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::listen_succeeded_alert *arg1 = (libtorrent::listen_succeeded_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_succeeded_alert **)&jarg1; + { + try { + result = ((libtorrent::listen_succeeded_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1succeeded_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::listen_succeeded_alert *arg1 = (libtorrent::listen_succeeded_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_succeeded_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::listen_succeeded_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1succeeded_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::listen_succeeded_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1succeeded_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::listen_succeeded_alert *arg1 = (libtorrent::listen_succeeded_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_succeeded_alert **)&jarg1; + { + try { + result = ((libtorrent::listen_succeeded_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1succeeded_1alert_1port_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::listen_succeeded_alert *arg1 = (libtorrent::listen_succeeded_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_succeeded_alert **)&jarg1; + result = (int)(int) ((arg1)->port); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1succeeded_1alert_1socket_1type_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::listen_succeeded_alert *arg1 = (libtorrent::listen_succeeded_alert *) 0 ; + libtorrent::socket_type_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_succeeded_alert **)&jarg1; + result = (libtorrent::socket_type_t)(libtorrent::socket_type_t) ((arg1)->socket_type); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1succeeded_1alert_1get_1address(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::listen_succeeded_alert *arg1 = (libtorrent::listen_succeeded_alert *) 0 ; + libtorrent::address result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::listen_succeeded_alert **)&jarg1; + { + try { + result = libtorrent_listen_succeeded_alert_get_address(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::address **)&jresult = new libtorrent::address((const libtorrent::address &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1listen_1succeeded_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::listen_succeeded_alert *arg1 = (libtorrent::listen_succeeded_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::listen_succeeded_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1error_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::portmap_error_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1error_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::portmap_error_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1error_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::portmap_error_alert *arg1 = (libtorrent::portmap_error_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_error_alert **)&jarg1; + { + try { + result = (int)((libtorrent::portmap_error_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1error_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::portmap_error_alert *arg1 = (libtorrent::portmap_error_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_error_alert **)&jarg1; + { + try { + result = ((libtorrent::portmap_error_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1error_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::portmap_error_alert *arg1 = (libtorrent::portmap_error_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_error_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::portmap_error_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1error_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::portmap_error_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1error_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::portmap_error_alert *arg1 = (libtorrent::portmap_error_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_error_alert **)&jarg1; + { + try { + result = ((libtorrent::portmap_error_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1error_1alert_1mapping_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::portmap_error_alert *arg1 = (libtorrent::portmap_error_alert *) 0 ; + port_mapping_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_error_alert **)&jarg1; + result = (port_mapping_t) ((arg1)->mapping); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1error_1alert_1map_1transport_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::portmap_error_alert *arg1 = (libtorrent::portmap_error_alert *) 0 ; + libtorrent::portmap_transport arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_error_alert **)&jarg1; + arg2 = (libtorrent::portmap_transport)jarg2; + if (arg1) (arg1)->map_transport = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1error_1alert_1map_1transport_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::portmap_error_alert *arg1 = (libtorrent::portmap_error_alert *) 0 ; + libtorrent::portmap_transport result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_error_alert **)&jarg1; + result = (libtorrent::portmap_transport) ((arg1)->map_transport); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1error_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::portmap_error_alert *arg1 = (libtorrent::portmap_error_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_error_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1portmap_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::portmap_error_alert *arg1 = (libtorrent::portmap_error_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::portmap_error_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::portmap_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::portmap_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::portmap_alert *arg1 = (libtorrent::portmap_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_alert **)&jarg1; + { + try { + result = (int)((libtorrent::portmap_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::portmap_alert *arg1 = (libtorrent::portmap_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_alert **)&jarg1; + { + try { + result = ((libtorrent::portmap_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::portmap_alert *arg1 = (libtorrent::portmap_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::portmap_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::portmap_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::portmap_alert *arg1 = (libtorrent::portmap_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_alert **)&jarg1; + { + try { + result = ((libtorrent::portmap_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1alert_1mapping_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::portmap_alert *arg1 = (libtorrent::portmap_alert *) 0 ; + port_mapping_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_alert **)&jarg1; + result = (port_mapping_t) ((arg1)->mapping); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1alert_1external_1port_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::portmap_alert *arg1 = (libtorrent::portmap_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_alert **)&jarg1; + result = (int)(int) ((arg1)->external_port); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1alert_1map_1protocol_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::portmap_alert *arg1 = (libtorrent::portmap_alert *) 0 ; + libtorrent::portmap_protocol result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_alert **)&jarg1; + result = (libtorrent::portmap_protocol)(libtorrent::portmap_protocol) ((arg1)->map_protocol); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1alert_1map_1transport_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::portmap_alert *arg1 = (libtorrent::portmap_alert *) 0 ; + libtorrent::portmap_transport result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_alert **)&jarg1; + result = (libtorrent::portmap_transport)(libtorrent::portmap_transport) ((arg1)->map_transport); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1portmap_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::portmap_alert *arg1 = (libtorrent::portmap_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::portmap_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1log_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::portmap_log_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1log_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::portmap_log_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1log_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::portmap_log_alert *arg1 = (libtorrent::portmap_log_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_log_alert **)&jarg1; + { + try { + result = (int)((libtorrent::portmap_log_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1log_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::portmap_log_alert *arg1 = (libtorrent::portmap_log_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_log_alert **)&jarg1; + { + try { + result = ((libtorrent::portmap_log_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1log_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::portmap_log_alert *arg1 = (libtorrent::portmap_log_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_log_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::portmap_log_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1log_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::portmap_log_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1log_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::portmap_log_alert *arg1 = (libtorrent::portmap_log_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_log_alert **)&jarg1; + { + try { + result = ((libtorrent::portmap_log_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1log_1alert_1map_1transport_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::portmap_log_alert *arg1 = (libtorrent::portmap_log_alert *) 0 ; + libtorrent::portmap_transport result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_log_alert **)&jarg1; + result = (libtorrent::portmap_transport)(libtorrent::portmap_transport) ((arg1)->map_transport); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1log_1alert_1log_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::portmap_log_alert *arg1 = (libtorrent::portmap_log_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::portmap_log_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::portmap_log_alert const *)arg1)->log_message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1portmap_1log_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::portmap_log_alert *arg1 = (libtorrent::portmap_log_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::portmap_log_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_fastresume_1rejected_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::fastresume_rejected_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_fastresume_1rejected_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::fastresume_rejected_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_fastresume_1rejected_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::fastresume_rejected_alert *arg1 = (libtorrent::fastresume_rejected_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::fastresume_rejected_alert **)&jarg1; + { + try { + result = (int)((libtorrent::fastresume_rejected_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_fastresume_1rejected_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::fastresume_rejected_alert *arg1 = (libtorrent::fastresume_rejected_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::fastresume_rejected_alert **)&jarg1; + { + try { + result = ((libtorrent::fastresume_rejected_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_fastresume_1rejected_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::fastresume_rejected_alert *arg1 = (libtorrent::fastresume_rejected_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::fastresume_rejected_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::fastresume_rejected_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_fastresume_1rejected_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::fastresume_rejected_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_fastresume_1rejected_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::fastresume_rejected_alert *arg1 = (libtorrent::fastresume_rejected_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::fastresume_rejected_alert **)&jarg1; + { + try { + result = ((libtorrent::fastresume_rejected_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_fastresume_1rejected_1alert_1error_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::fastresume_rejected_alert *arg1 = (libtorrent::fastresume_rejected_alert *) 0 ; + libtorrent::error_code *arg2 = (libtorrent::error_code *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::fastresume_rejected_alert **)&jarg1; + arg2 = *(libtorrent::error_code **)&jarg2; + if (arg1) (arg1)->error = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_fastresume_1rejected_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::fastresume_rejected_alert *arg1 = (libtorrent::fastresume_rejected_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::fastresume_rejected_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_fastresume_1rejected_1alert_1file_1path(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::fastresume_rejected_alert *arg1 = (libtorrent::fastresume_rejected_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::fastresume_rejected_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::fastresume_rejected_alert const *)arg1)->file_path(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_fastresume_1rejected_1alert_1op_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::fastresume_rejected_alert *arg1 = (libtorrent::fastresume_rejected_alert *) 0 ; + libtorrent::operation_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::fastresume_rejected_alert **)&jarg1; + arg2 = (libtorrent::operation_t)jarg2; + if (arg1) (arg1)->op = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_fastresume_1rejected_1alert_1op_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::fastresume_rejected_alert *arg1 = (libtorrent::fastresume_rejected_alert *) 0 ; + libtorrent::operation_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::fastresume_rejected_alert **)&jarg1; + result = (libtorrent::operation_t) ((arg1)->op); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1fastresume_1rejected_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::fastresume_rejected_alert *arg1 = (libtorrent::fastresume_rejected_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::fastresume_rejected_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1blocked_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::peer_blocked_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1blocked_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::peer_blocked_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1blocked_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_blocked_alert *arg1 = (libtorrent::peer_blocked_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_blocked_alert **)&jarg1; + { + try { + result = (int)((libtorrent::peer_blocked_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1blocked_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_blocked_alert *arg1 = (libtorrent::peer_blocked_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_blocked_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_blocked_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1blocked_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_blocked_alert *arg1 = (libtorrent::peer_blocked_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_blocked_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::peer_blocked_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1blocked_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::peer_blocked_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1blocked_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_blocked_alert *arg1 = (libtorrent::peer_blocked_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_blocked_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_blocked_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1blocked_1alert_1reason_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_blocked_alert *arg1 = (libtorrent::peer_blocked_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_blocked_alert **)&jarg1; + result = (int)(int) ((arg1)->reason); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1blocked_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::peer_blocked_alert *arg1 = (libtorrent::peer_blocked_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::peer_blocked_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1announce_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_announce_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1announce_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_announce_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1announce_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_announce_alert *arg1 = (libtorrent::dht_announce_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_announce_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_announce_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1announce_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_announce_alert *arg1 = (libtorrent::dht_announce_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_announce_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_announce_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1announce_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_announce_alert *arg1 = (libtorrent::dht_announce_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_announce_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_announce_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1announce_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::dht_announce_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1announce_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_announce_alert *arg1 = (libtorrent::dht_announce_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_announce_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_announce_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1announce_1alert_1port_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht_announce_alert *arg1 = (libtorrent::dht_announce_alert *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_announce_alert **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->port = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1announce_1alert_1port_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_announce_alert *arg1 = (libtorrent::dht_announce_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_announce_alert **)&jarg1; + result = (int) ((arg1)->port); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1announce_1alert_1info_1hash_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht_announce_alert *arg1 = (libtorrent::dht_announce_alert *) 0 ; + libtorrent::sha1_hash *arg2 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht_announce_alert **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (arg1) (arg1)->info_hash = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1announce_1alert_1info_1hash_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_announce_alert *arg1 = (libtorrent::dht_announce_alert *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_announce_alert **)&jarg1; + result = (libtorrent::sha1_hash *)& ((arg1)->info_hash); + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1announce_1alert_1get_1ip(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_announce_alert *arg1 = (libtorrent::dht_announce_alert *) 0 ; + libtorrent::address result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_announce_alert **)&jarg1; + { + try { + result = libtorrent_dht_announce_alert_get_ip(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::address **)&jresult = new libtorrent::address((const libtorrent::address &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1announce_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_announce_alert *arg1 = (libtorrent::dht_announce_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_announce_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_get_peers_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_get_peers_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_get_peers_alert *arg1 = (libtorrent::dht_get_peers_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_get_peers_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_get_peers_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_get_peers_alert *arg1 = (libtorrent::dht_get_peers_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_get_peers_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_get_peers_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_get_peers_alert *arg1 = (libtorrent::dht_get_peers_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_get_peers_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_get_peers_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::dht_get_peers_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_get_peers_alert *arg1 = (libtorrent::dht_get_peers_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_get_peers_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_get_peers_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1alert_1info_1hash_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht_get_peers_alert *arg1 = (libtorrent::dht_get_peers_alert *) 0 ; + libtorrent::sha1_hash *arg2 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht_get_peers_alert **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (arg1) (arg1)->info_hash = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1alert_1info_1hash_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_get_peers_alert *arg1 = (libtorrent::dht_get_peers_alert *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_get_peers_alert **)&jarg1; + result = (libtorrent::sha1_hash *)& ((arg1)->info_hash); + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1get_1peers_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_get_peers_alert *arg1 = (libtorrent::dht_get_peers_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_get_peers_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::stats_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::stats_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::stats_alert *arg1 = (libtorrent::stats_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::stats_alert **)&jarg1; + { + try { + result = (int)((libtorrent::stats_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::stats_alert *arg1 = (libtorrent::stats_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::stats_alert **)&jarg1; + { + try { + result = ((libtorrent::stats_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::stats_alert *arg1 = (libtorrent::stats_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::stats_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::stats_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::stats_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::stats_alert *arg1 = (libtorrent::stats_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::stats_alert **)&jarg1; + { + try { + result = ((libtorrent::stats_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1alert_1download_1ip_1protocol_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::stats_alert::stats_channel result; + + (void)jenv; + (void)jcls; + result = (libtorrent::stats_alert::stats_channel)libtorrent::stats_alert::download_ip_protocol; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1alert_1num_1channels_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::stats_alert::stats_channel result; + + (void)jenv; + (void)jcls; + result = (libtorrent::stats_alert::stats_channel)libtorrent::stats_alert::num_channels; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1alert_1interval_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::stats_alert *arg1 = (libtorrent::stats_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::stats_alert **)&jarg1; + result = (int)(int) ((arg1)->interval); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1alert_1get_1transferred(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jint jresult = 0 ; + libtorrent::stats_alert *arg1 = (libtorrent::stats_alert *) 0 ; + int arg2 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::stats_alert **)&jarg1; + arg2 = (int)jarg2; + { + try { + result = (int)libtorrent_stats_alert_get_transferred(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1stats_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::stats_alert *arg1 = (libtorrent::stats_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::stats_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_cache_1flushed_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::cache_flushed_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_cache_1flushed_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::cache_flushed_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_cache_1flushed_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::cache_flushed_alert *arg1 = (libtorrent::cache_flushed_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::cache_flushed_alert **)&jarg1; + { + try { + result = (int)((libtorrent::cache_flushed_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_cache_1flushed_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::cache_flushed_alert *arg1 = (libtorrent::cache_flushed_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::cache_flushed_alert **)&jarg1; + { + try { + result = ((libtorrent::cache_flushed_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_cache_1flushed_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::cache_flushed_alert *arg1 = (libtorrent::cache_flushed_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::cache_flushed_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::cache_flushed_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_cache_1flushed_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::cache_flushed_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1cache_1flushed_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::cache_flushed_alert *arg1 = (libtorrent::cache_flushed_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::cache_flushed_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1peer_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::lsd_peer_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1peer_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::lsd_peer_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1peer_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::lsd_peer_alert *arg1 = (libtorrent::lsd_peer_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::lsd_peer_alert **)&jarg1; + { + try { + result = (int)((libtorrent::lsd_peer_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1peer_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::lsd_peer_alert *arg1 = (libtorrent::lsd_peer_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::lsd_peer_alert **)&jarg1; + { + try { + result = ((libtorrent::lsd_peer_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1peer_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::lsd_peer_alert *arg1 = (libtorrent::lsd_peer_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::lsd_peer_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::lsd_peer_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1peer_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::lsd_peer_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1peer_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::lsd_peer_alert *arg1 = (libtorrent::lsd_peer_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::lsd_peer_alert **)&jarg1; + { + try { + result = ((libtorrent::lsd_peer_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1lsd_1peer_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::lsd_peer_alert *arg1 = (libtorrent::lsd_peer_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::lsd_peer_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_trackerid_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::trackerid_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_trackerid_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::trackerid_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_trackerid_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::trackerid_alert *arg1 = (libtorrent::trackerid_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::trackerid_alert **)&jarg1; + { + try { + result = (int)((libtorrent::trackerid_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_trackerid_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::trackerid_alert *arg1 = (libtorrent::trackerid_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::trackerid_alert **)&jarg1; + { + try { + result = ((libtorrent::trackerid_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_trackerid_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::trackerid_alert *arg1 = (libtorrent::trackerid_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::trackerid_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::trackerid_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_trackerid_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::trackerid_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_trackerid_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::trackerid_alert *arg1 = (libtorrent::trackerid_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::trackerid_alert **)&jarg1; + { + try { + result = ((libtorrent::trackerid_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_trackerid_1alert_1tracker_1id(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::trackerid_alert *arg1 = (libtorrent::trackerid_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::trackerid_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::trackerid_alert const *)arg1)->tracker_id(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1trackerid_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::trackerid_alert *arg1 = (libtorrent::trackerid_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::trackerid_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1bootstrap_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_bootstrap_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1bootstrap_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_bootstrap_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1bootstrap_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_bootstrap_alert *arg1 = (libtorrent::dht_bootstrap_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_bootstrap_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_bootstrap_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1bootstrap_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_bootstrap_alert *arg1 = (libtorrent::dht_bootstrap_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_bootstrap_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_bootstrap_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1bootstrap_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_bootstrap_alert *arg1 = (libtorrent::dht_bootstrap_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_bootstrap_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_bootstrap_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1bootstrap_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::dht_bootstrap_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1bootstrap_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_bootstrap_alert *arg1 = (libtorrent::dht_bootstrap_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_bootstrap_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_bootstrap_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1bootstrap_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_bootstrap_alert *arg1 = (libtorrent::dht_bootstrap_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_bootstrap_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1error_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_error_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1error_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_error_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1error_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_error_alert *arg1 = (libtorrent::torrent_error_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_error_alert **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_error_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1error_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_error_alert *arg1 = (libtorrent::torrent_error_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_error_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_error_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1error_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_error_alert *arg1 = (libtorrent::torrent_error_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_error_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::torrent_error_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1error_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::torrent_error_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1error_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_error_alert *arg1 = (libtorrent::torrent_error_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_error_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_error_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1error_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_error_alert *arg1 = (libtorrent::torrent_error_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_error_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1error_1alert_1filename(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_error_alert *arg1 = (libtorrent::torrent_error_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_error_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::torrent_error_alert const *)arg1)->filename(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::torrent_error_alert *arg1 = (libtorrent::torrent_error_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::torrent_error_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1need_1cert_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_need_cert_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1need_1cert_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_need_cert_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1need_1cert_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_need_cert_alert *arg1 = (libtorrent::torrent_need_cert_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_need_cert_alert **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_need_cert_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1need_1cert_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_need_cert_alert *arg1 = (libtorrent::torrent_need_cert_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_need_cert_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_need_cert_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1need_1cert_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_need_cert_alert *arg1 = (libtorrent::torrent_need_cert_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_need_cert_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::torrent_need_cert_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1need_1cert_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::torrent_need_cert_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1need_1cert_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_need_cert_alert *arg1 = (libtorrent::torrent_need_cert_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_need_cert_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_need_cert_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1need_1cert_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::torrent_need_cert_alert *arg1 = (libtorrent::torrent_need_cert_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::torrent_need_cert_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1connection_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::incoming_connection_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1connection_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::incoming_connection_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1connection_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::incoming_connection_alert *arg1 = (libtorrent::incoming_connection_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::incoming_connection_alert **)&jarg1; + { + try { + result = (int)((libtorrent::incoming_connection_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1connection_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::incoming_connection_alert *arg1 = (libtorrent::incoming_connection_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::incoming_connection_alert **)&jarg1; + { + try { + result = ((libtorrent::incoming_connection_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1connection_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::incoming_connection_alert *arg1 = (libtorrent::incoming_connection_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::incoming_connection_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::incoming_connection_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1connection_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::incoming_connection_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1connection_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::incoming_connection_alert *arg1 = (libtorrent::incoming_connection_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::incoming_connection_alert **)&jarg1; + { + try { + result = ((libtorrent::incoming_connection_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1connection_1alert_1socket_1type_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::incoming_connection_alert *arg1 = (libtorrent::incoming_connection_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::incoming_connection_alert **)&jarg1; + result = (int)(int) ((arg1)->socket_type); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1connection_1alert_1get_1endpoint(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::incoming_connection_alert *arg1 = (libtorrent::incoming_connection_alert *) 0 ; + libtorrent::tcp::endpoint result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::incoming_connection_alert **)&jarg1; + { + try { + result = libtorrent_incoming_connection_alert_get_endpoint(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::tcp::endpoint **)&jresult = new libtorrent::tcp::endpoint((const libtorrent::tcp::endpoint &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1incoming_1connection_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::incoming_connection_alert *arg1 = (libtorrent::incoming_connection_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::incoming_connection_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::add_torrent_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::add_torrent_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::add_torrent_alert *arg1 = (libtorrent::add_torrent_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_alert **)&jarg1; + { + try { + result = (int)((libtorrent::add_torrent_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_alert *arg1 = (libtorrent::add_torrent_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_alert **)&jarg1; + { + try { + result = ((libtorrent::add_torrent_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::add_torrent_alert *arg1 = (libtorrent::add_torrent_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::add_torrent_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::add_torrent_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::add_torrent_alert *arg1 = (libtorrent::add_torrent_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_alert **)&jarg1; + { + try { + result = ((libtorrent::add_torrent_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1alert_1params_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_alert *arg1 = (libtorrent::add_torrent_alert *) 0 ; + libtorrent::add_torrent_params *arg2 = (libtorrent::add_torrent_params *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_alert **)&jarg1; + arg2 = *(libtorrent::add_torrent_params **)&jarg2; + if (arg1) (arg1)->params = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1alert_1params_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_alert *arg1 = (libtorrent::add_torrent_alert *) 0 ; + libtorrent::add_torrent_params *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_alert **)&jarg1; + result = (libtorrent::add_torrent_params *)& ((arg1)->params); + *(libtorrent::add_torrent_params **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1alert_1error_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::add_torrent_alert *arg1 = (libtorrent::add_torrent_alert *) 0 ; + libtorrent::error_code *arg2 = (libtorrent::error_code *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::add_torrent_alert **)&jarg1; + arg2 = *(libtorrent::error_code **)&jarg2; + if (arg1) (arg1)->error = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::add_torrent_alert *arg1 = (libtorrent::add_torrent_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::add_torrent_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1add_1torrent_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::add_torrent_alert *arg1 = (libtorrent::add_torrent_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::add_torrent_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1update_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::state_update_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1update_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::state_update_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1update_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::state_update_alert *arg1 = (libtorrent::state_update_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::state_update_alert **)&jarg1; + { + try { + result = (int)((libtorrent::state_update_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1update_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::state_update_alert *arg1 = (libtorrent::state_update_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::state_update_alert **)&jarg1; + { + try { + result = ((libtorrent::state_update_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1update_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::state_update_alert *arg1 = (libtorrent::state_update_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::state_update_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::state_update_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1update_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::state_update_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1update_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::state_update_alert *arg1 = (libtorrent::state_update_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::state_update_alert **)&jarg1; + { + try { + result = ((libtorrent::state_update_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1update_1alert_1status_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::state_update_alert *arg1 = (libtorrent::state_update_alert *) 0 ; + std::vector< libtorrent::torrent_status > *arg2 = (std::vector< libtorrent::torrent_status > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::state_update_alert **)&jarg1; + arg2 = *(std::vector< libtorrent::torrent_status > **)&jarg2; + if (arg1) (arg1)->status = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1update_1alert_1status_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::state_update_alert *arg1 = (libtorrent::state_update_alert *) 0 ; + std::vector< libtorrent::torrent_status > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::state_update_alert **)&jarg1; + result = (std::vector< libtorrent::torrent_status > *)& ((arg1)->status); + *(std::vector< libtorrent::torrent_status > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1state_1update_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::state_update_alert *arg1 = (libtorrent::state_update_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::state_update_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::session_stats_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::session_stats_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::session_stats_alert *arg1 = (libtorrent::session_stats_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_stats_alert **)&jarg1; + { + try { + result = (int)((libtorrent::session_stats_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_stats_alert *arg1 = (libtorrent::session_stats_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_stats_alert **)&jarg1; + { + try { + result = ((libtorrent::session_stats_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::session_stats_alert *arg1 = (libtorrent::session_stats_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_stats_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::session_stats_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::session_stats_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::session_stats_alert *arg1 = (libtorrent::session_stats_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_stats_alert **)&jarg1; + { + try { + result = ((libtorrent::session_stats_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1alert_1get_1value(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + libtorrent::session_stats_alert *arg1 = (libtorrent::session_stats_alert *) 0 ; + int arg2 ; + long long result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_stats_alert **)&jarg1; + arg2 = (int)jarg2; + { + try { + result = (long long)libtorrent_session_stats_alert_get_value(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1session_1stats_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::session_stats_alert *arg1 = (libtorrent::session_stats_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::session_stats_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1error_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_error_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1error_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_error_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1error_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_error_alert *arg1 = (libtorrent::dht_error_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_error_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_error_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1error_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_error_alert *arg1 = (libtorrent::dht_error_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_error_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_error_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1error_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_error_alert *arg1 = (libtorrent::dht_error_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_error_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_error_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1error_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::dht_error_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1error_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_error_alert *arg1 = (libtorrent::dht_error_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_error_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_error_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1error_1alert_1error_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht_error_alert *arg1 = (libtorrent::dht_error_alert *) 0 ; + libtorrent::error_code *arg2 = (libtorrent::error_code *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht_error_alert **)&jarg1; + arg2 = *(libtorrent::error_code **)&jarg2; + if (arg1) (arg1)->error = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1error_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_error_alert *arg1 = (libtorrent::dht_error_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_error_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1error_1alert_1op_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht_error_alert *arg1 = (libtorrent::dht_error_alert *) 0 ; + libtorrent::operation_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_error_alert **)&jarg1; + arg2 = (libtorrent::operation_t)jarg2; + if (arg1) (arg1)->op = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1error_1alert_1op_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_error_alert *arg1 = (libtorrent::dht_error_alert *) 0 ; + libtorrent::operation_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_error_alert **)&jarg1; + result = (libtorrent::operation_t) ((arg1)->op); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_error_alert *arg1 = (libtorrent::dht_error_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_error_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1immutable_1item_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_immutable_item_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1immutable_1item_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_immutable_item_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1immutable_1item_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_immutable_item_alert *arg1 = (libtorrent::dht_immutable_item_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_immutable_item_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_immutable_item_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1immutable_1item_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_immutable_item_alert *arg1 = (libtorrent::dht_immutable_item_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_immutable_item_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_immutable_item_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1immutable_1item_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_immutable_item_alert *arg1 = (libtorrent::dht_immutable_item_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_immutable_item_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_immutable_item_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1immutable_1item_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::dht_immutable_item_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1immutable_1item_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_immutable_item_alert *arg1 = (libtorrent::dht_immutable_item_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_immutable_item_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_immutable_item_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1immutable_1item_1alert_1target_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht_immutable_item_alert *arg1 = (libtorrent::dht_immutable_item_alert *) 0 ; + libtorrent::sha1_hash *arg2 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht_immutable_item_alert **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (arg1) (arg1)->target = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1immutable_1item_1alert_1target_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_immutable_item_alert *arg1 = (libtorrent::dht_immutable_item_alert *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_immutable_item_alert **)&jarg1; + result = (libtorrent::sha1_hash *)& ((arg1)->target); + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1immutable_1item_1alert_1item_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht_immutable_item_alert *arg1 = (libtorrent::dht_immutable_item_alert *) 0 ; + libtorrent::entry *arg2 = (libtorrent::entry *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht_immutable_item_alert **)&jarg1; + arg2 = *(libtorrent::entry **)&jarg2; + if (arg1) (arg1)->item = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1immutable_1item_1alert_1item_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_immutable_item_alert *arg1 = (libtorrent::dht_immutable_item_alert *) 0 ; + libtorrent::entry *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_immutable_item_alert **)&jarg1; + result = (libtorrent::entry *)& ((arg1)->item); + *(libtorrent::entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1immutable_1item_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_immutable_item_alert *arg1 = (libtorrent::dht_immutable_item_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_immutable_item_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1mutable_1item_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_mutable_item_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1mutable_1item_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_mutable_item_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1mutable_1item_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_mutable_item_alert *arg1 = (libtorrent::dht_mutable_item_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_mutable_item_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_mutable_item_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1mutable_1item_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_mutable_item_alert *arg1 = (libtorrent::dht_mutable_item_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_mutable_item_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_mutable_item_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1mutable_1item_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_mutable_item_alert *arg1 = (libtorrent::dht_mutable_item_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_mutable_item_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_mutable_item_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1mutable_1item_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::dht_mutable_item_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1mutable_1item_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_mutable_item_alert *arg1 = (libtorrent::dht_mutable_item_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_mutable_item_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_mutable_item_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1mutable_1item_1alert_1item_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht_mutable_item_alert *arg1 = (libtorrent::dht_mutable_item_alert *) 0 ; + libtorrent::entry *arg2 = (libtorrent::entry *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht_mutable_item_alert **)&jarg1; + arg2 = *(libtorrent::entry **)&jarg2; + if (arg1) (arg1)->item = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1mutable_1item_1alert_1item_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_mutable_item_alert *arg1 = (libtorrent::dht_mutable_item_alert *) 0 ; + libtorrent::entry *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_mutable_item_alert **)&jarg1; + result = (libtorrent::entry *)& ((arg1)->item); + *(libtorrent::entry **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1mutable_1item_1alert_1authoritative_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::dht_mutable_item_alert *arg1 = (libtorrent::dht_mutable_item_alert *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_mutable_item_alert **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->authoritative = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1mutable_1item_1alert_1authoritative_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::dht_mutable_item_alert *arg1 = (libtorrent::dht_mutable_item_alert *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_mutable_item_alert **)&jarg1; + result = (bool) ((arg1)->authoritative); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1mutable_1item_1alert_1get_1key(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_mutable_item_alert *arg1 = (libtorrent::dht_mutable_item_alert *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_mutable_item_alert **)&jarg1; + { + try { + result = libtorrent_dht_mutable_item_alert_get_key(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1mutable_1item_1alert_1get_1signature(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_mutable_item_alert *arg1 = (libtorrent::dht_mutable_item_alert *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_mutable_item_alert **)&jarg1; + { + try { + result = libtorrent_dht_mutable_item_alert_get_signature(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1mutable_1item_1alert_1get_1seq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_mutable_item_alert *arg1 = (libtorrent::dht_mutable_item_alert *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_mutable_item_alert **)&jarg1; + { + try { + result = (int64_t)libtorrent_dht_mutable_item_alert_get_seq(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1mutable_1item_1alert_1get_1salt(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_mutable_item_alert *arg1 = (libtorrent::dht_mutable_item_alert *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_mutable_item_alert **)&jarg1; + { + try { + result = libtorrent_dht_mutable_item_alert_get_salt(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1mutable_1item_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_mutable_item_alert *arg1 = (libtorrent::dht_mutable_item_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_mutable_item_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1put_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_put_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1put_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_put_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1put_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_put_alert *arg1 = (libtorrent::dht_put_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_put_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_put_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1put_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_put_alert *arg1 = (libtorrent::dht_put_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_put_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_put_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1put_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_put_alert *arg1 = (libtorrent::dht_put_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_put_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_put_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1put_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::dht_put_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1put_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_put_alert *arg1 = (libtorrent::dht_put_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_put_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_put_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1put_1alert_1target_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht_put_alert *arg1 = (libtorrent::dht_put_alert *) 0 ; + libtorrent::sha1_hash *arg2 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht_put_alert **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (arg1) (arg1)->target = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1put_1alert_1target_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_put_alert *arg1 = (libtorrent::dht_put_alert *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_put_alert **)&jarg1; + result = (libtorrent::sha1_hash *)& ((arg1)->target); + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1put_1alert_1num_1success_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht_put_alert *arg1 = (libtorrent::dht_put_alert *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_put_alert **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->num_success = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1put_1alert_1num_1success_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_put_alert *arg1 = (libtorrent::dht_put_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_put_alert **)&jarg1; + result = (int) ((arg1)->num_success); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1put_1alert_1get_1public_1key(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_put_alert *arg1 = (libtorrent::dht_put_alert *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_put_alert **)&jarg1; + { + try { + result = libtorrent_dht_put_alert_get_public_key(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1put_1alert_1get_1signature(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_put_alert *arg1 = (libtorrent::dht_put_alert *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_put_alert **)&jarg1; + { + try { + result = libtorrent_dht_put_alert_get_signature(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1put_1alert_1get_1salt(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_put_alert *arg1 = (libtorrent::dht_put_alert *) 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_put_alert **)&jarg1; + { + try { + result = libtorrent_dht_put_alert_get_salt(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1put_1alert_1get_1seq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_put_alert *arg1 = (libtorrent::dht_put_alert *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_put_alert **)&jarg1; + { + try { + result = (int64_t)libtorrent_dht_put_alert_get_seq(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1put_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_put_alert *arg1 = (libtorrent::dht_put_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_put_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_i2p_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::i2p_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_i2p_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::i2p_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_i2p_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::i2p_alert *arg1 = (libtorrent::i2p_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::i2p_alert **)&jarg1; + { + try { + result = (int)((libtorrent::i2p_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_i2p_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::i2p_alert *arg1 = (libtorrent::i2p_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::i2p_alert **)&jarg1; + { + try { + result = ((libtorrent::i2p_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_i2p_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::i2p_alert *arg1 = (libtorrent::i2p_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::i2p_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::i2p_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_i2p_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::i2p_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_i2p_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::i2p_alert *arg1 = (libtorrent::i2p_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::i2p_alert **)&jarg1; + { + try { + result = ((libtorrent::i2p_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_i2p_1alert_1error_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::i2p_alert *arg1 = (libtorrent::i2p_alert *) 0 ; + libtorrent::error_code *arg2 = (libtorrent::error_code *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::i2p_alert **)&jarg1; + arg2 = *(libtorrent::error_code **)&jarg2; + if (arg1) (arg1)->error = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_i2p_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::i2p_alert *arg1 = (libtorrent::i2p_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::i2p_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1i2p_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::i2p_alert *arg1 = (libtorrent::i2p_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::i2p_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1outgoing_1get_1peers_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_outgoing_get_peers_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1outgoing_1get_1peers_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_outgoing_get_peers_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1outgoing_1get_1peers_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_outgoing_get_peers_alert *arg1 = (libtorrent::dht_outgoing_get_peers_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_outgoing_get_peers_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_outgoing_get_peers_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1outgoing_1get_1peers_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_outgoing_get_peers_alert *arg1 = (libtorrent::dht_outgoing_get_peers_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_outgoing_get_peers_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_outgoing_get_peers_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1outgoing_1get_1peers_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_outgoing_get_peers_alert *arg1 = (libtorrent::dht_outgoing_get_peers_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_outgoing_get_peers_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_outgoing_get_peers_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1outgoing_1get_1peers_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::dht_outgoing_get_peers_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1outgoing_1get_1peers_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_outgoing_get_peers_alert *arg1 = (libtorrent::dht_outgoing_get_peers_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_outgoing_get_peers_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_outgoing_get_peers_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1outgoing_1get_1peers_1alert_1info_1hash_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht_outgoing_get_peers_alert *arg1 = (libtorrent::dht_outgoing_get_peers_alert *) 0 ; + libtorrent::sha1_hash *arg2 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht_outgoing_get_peers_alert **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (arg1) (arg1)->info_hash = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1outgoing_1get_1peers_1alert_1info_1hash_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_outgoing_get_peers_alert *arg1 = (libtorrent::dht_outgoing_get_peers_alert *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_outgoing_get_peers_alert **)&jarg1; + result = (libtorrent::sha1_hash *)& ((arg1)->info_hash); + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1outgoing_1get_1peers_1alert_1obfuscated_1info_1hash_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht_outgoing_get_peers_alert *arg1 = (libtorrent::dht_outgoing_get_peers_alert *) 0 ; + libtorrent::sha1_hash *arg2 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht_outgoing_get_peers_alert **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (arg1) (arg1)->obfuscated_info_hash = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1outgoing_1get_1peers_1alert_1obfuscated_1info_1hash_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_outgoing_get_peers_alert *arg1 = (libtorrent::dht_outgoing_get_peers_alert *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_outgoing_get_peers_alert **)&jarg1; + result = (libtorrent::sha1_hash *)& ((arg1)->obfuscated_info_hash); + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1outgoing_1get_1peers_1alert_1get_1endpoint(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_outgoing_get_peers_alert *arg1 = (libtorrent::dht_outgoing_get_peers_alert *) 0 ; + libtorrent::udp::endpoint result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_outgoing_get_peers_alert **)&jarg1; + { + try { + result = libtorrent_dht_outgoing_get_peers_alert_get_endpoint(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::udp::endpoint **)&jresult = new libtorrent::udp::endpoint((const libtorrent::udp::endpoint &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1outgoing_1get_1peers_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_outgoing_get_peers_alert *arg1 = (libtorrent::dht_outgoing_get_peers_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_outgoing_get_peers_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_log_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::log_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_log_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::log_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_log_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::log_alert *arg1 = (libtorrent::log_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::log_alert **)&jarg1; + { + try { + result = (int)((libtorrent::log_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_log_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::log_alert *arg1 = (libtorrent::log_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::log_alert **)&jarg1; + { + try { + result = ((libtorrent::log_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_log_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::log_alert *arg1 = (libtorrent::log_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::log_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::log_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_log_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::log_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_log_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::log_alert *arg1 = (libtorrent::log_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::log_alert **)&jarg1; + { + try { + result = ((libtorrent::log_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_log_1alert_1log_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::log_alert *arg1 = (libtorrent::log_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::log_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::log_alert const *)arg1)->log_message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1log_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::log_alert *arg1 = (libtorrent::log_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::log_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1log_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_log_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1log_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::torrent_log_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1log_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::torrent_log_alert *arg1 = (libtorrent::torrent_log_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_log_alert **)&jarg1; + { + try { + result = (int)((libtorrent::torrent_log_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1log_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_log_alert *arg1 = (libtorrent::torrent_log_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_log_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_log_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1log_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_log_alert *arg1 = (libtorrent::torrent_log_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_log_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::torrent_log_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1log_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::torrent_log_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1log_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_log_alert *arg1 = (libtorrent::torrent_log_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_log_alert **)&jarg1; + { + try { + result = ((libtorrent::torrent_log_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1log_1alert_1log_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_log_alert *arg1 = (libtorrent::torrent_log_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_log_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::torrent_log_alert const *)arg1)->log_message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1torrent_1log_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::torrent_log_alert *arg1 = (libtorrent::torrent_log_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::torrent_log_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1log_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::peer_log_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1log_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::peer_log_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1log_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_log_alert *arg1 = (libtorrent::peer_log_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_log_alert **)&jarg1; + { + try { + result = (int)((libtorrent::peer_log_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1log_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_log_alert *arg1 = (libtorrent::peer_log_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_log_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_log_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1log_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_log_alert *arg1 = (libtorrent::peer_log_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_log_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::peer_log_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1log_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::peer_log_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1log_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_log_alert *arg1 = (libtorrent::peer_log_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_log_alert **)&jarg1; + { + try { + result = ((libtorrent::peer_log_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1log_1alert_1direction_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::peer_log_alert *arg1 = (libtorrent::peer_log_alert *) 0 ; + libtorrent::peer_log_alert::direction_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_log_alert **)&jarg1; + arg2 = (libtorrent::peer_log_alert::direction_t)jarg2; + if (arg1) (arg1)->direction = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1log_1alert_1direction_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_log_alert *arg1 = (libtorrent::peer_log_alert *) 0 ; + libtorrent::peer_log_alert::direction_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_log_alert **)&jarg1; + result = (libtorrent::peer_log_alert::direction_t) ((arg1)->direction); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1log_1alert_1log_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_log_alert *arg1 = (libtorrent::peer_log_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_log_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::peer_log_alert const *)arg1)->log_message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1log_1alert_1get_1event_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::peer_log_alert *arg1 = (libtorrent::peer_log_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_log_alert **)&jarg1; + { + try { + result = libtorrent_peer_log_alert_get_event_type(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1log_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::peer_log_alert *arg1 = (libtorrent::peer_log_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::peer_log_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1error_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::lsd_error_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1error_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::lsd_error_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1error_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::lsd_error_alert *arg1 = (libtorrent::lsd_error_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::lsd_error_alert **)&jarg1; + { + try { + result = (int)((libtorrent::lsd_error_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1error_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::lsd_error_alert *arg1 = (libtorrent::lsd_error_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::lsd_error_alert **)&jarg1; + { + try { + result = ((libtorrent::lsd_error_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1error_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::lsd_error_alert *arg1 = (libtorrent::lsd_error_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::lsd_error_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::lsd_error_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1error_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::lsd_error_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1error_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::lsd_error_alert *arg1 = (libtorrent::lsd_error_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::lsd_error_alert **)&jarg1; + { + try { + result = ((libtorrent::lsd_error_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1error_1alert_1error_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::lsd_error_alert *arg1 = (libtorrent::lsd_error_alert *) 0 ; + libtorrent::error_code *arg2 = (libtorrent::error_code *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::lsd_error_alert **)&jarg1; + arg2 = *(libtorrent::error_code **)&jarg2; + if (arg1) (arg1)->error = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1error_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::lsd_error_alert *arg1 = (libtorrent::lsd_error_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::lsd_error_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1lsd_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::lsd_error_alert *arg1 = (libtorrent::lsd_error_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::lsd_error_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1outstanding_1requests_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->outstanding_requests = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1outstanding_1requests_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + result = (int) ((arg1)->outstanding_requests); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1timeouts_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->timeouts = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1timeouts_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + result = (int) ((arg1)->timeouts); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1responses_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->responses = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1responses_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + result = (int) ((arg1)->responses); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1branch_1factor_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->branch_factor = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1branch_1factor_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + result = (int) ((arg1)->branch_factor); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1nodes_1left_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->nodes_left = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1nodes_1left_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + result = (int) ((arg1)->nodes_left); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1last_1sent_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->last_sent = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1last_1sent_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + result = (int) ((arg1)->last_sent); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1first_1timeout_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->first_timeout = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1first_1timeout_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + result = (int) ((arg1)->first_timeout); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1target_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + libtorrent::sha1_hash *arg2 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (arg1) (arg1)->target = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1target_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + result = (libtorrent::sha1_hash *)& ((arg1)->target); + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1lookup_1get_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + { + try { + result = libtorrent_dht_lookup_get_type(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1dht_1lookup(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::dht_lookup *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::dht_lookup *)new libtorrent::dht_lookup(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht_lookup **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1lookup(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_lookup *arg1 = (libtorrent::dht_lookup *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_lookup **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1stats_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_stats_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1stats_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_stats_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1stats_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_stats_alert *arg1 = (libtorrent::dht_stats_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_stats_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_stats_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1stats_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_stats_alert *arg1 = (libtorrent::dht_stats_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_stats_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_stats_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1stats_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_stats_alert *arg1 = (libtorrent::dht_stats_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_stats_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_stats_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1stats_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::dht_stats_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1stats_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_stats_alert *arg1 = (libtorrent::dht_stats_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_stats_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_stats_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1stats_1alert_1active_1requests_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht_stats_alert *arg1 = (libtorrent::dht_stats_alert *) 0 ; + std::vector< libtorrent::dht_lookup > *arg2 = (std::vector< libtorrent::dht_lookup > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht_stats_alert **)&jarg1; + arg2 = *(std::vector< libtorrent::dht_lookup > **)&jarg2; + if (arg1) (arg1)->active_requests = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1stats_1alert_1active_1requests_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_stats_alert *arg1 = (libtorrent::dht_stats_alert *) 0 ; + std::vector< libtorrent::dht_lookup > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_stats_alert **)&jarg1; + result = (std::vector< libtorrent::dht_lookup > *)& ((arg1)->active_requests); + *(std::vector< libtorrent::dht_lookup > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1stats_1alert_1routing_1table_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht_stats_alert *arg1 = (libtorrent::dht_stats_alert *) 0 ; + std::vector< libtorrent::dht_routing_bucket > *arg2 = (std::vector< libtorrent::dht_routing_bucket > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht_stats_alert **)&jarg1; + arg2 = *(std::vector< libtorrent::dht_routing_bucket > **)&jarg2; + if (arg1) (arg1)->routing_table = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1stats_1alert_1routing_1table_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_stats_alert *arg1 = (libtorrent::dht_stats_alert *) 0 ; + std::vector< libtorrent::dht_routing_bucket > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_stats_alert **)&jarg1; + result = (std::vector< libtorrent::dht_routing_bucket > *)& ((arg1)->routing_table); + *(std::vector< libtorrent::dht_routing_bucket > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1stats_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_stats_alert *arg1 = (libtorrent::dht_stats_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_stats_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1request_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::incoming_request_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1request_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::incoming_request_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1request_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::incoming_request_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1request_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::incoming_request_alert *arg1 = (libtorrent::incoming_request_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::incoming_request_alert **)&jarg1; + { + try { + result = (int)((libtorrent::incoming_request_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1request_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::incoming_request_alert *arg1 = (libtorrent::incoming_request_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::incoming_request_alert **)&jarg1; + { + try { + result = ((libtorrent::incoming_request_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1request_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::incoming_request_alert *arg1 = (libtorrent::incoming_request_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::incoming_request_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::incoming_request_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1request_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::incoming_request_alert *arg1 = (libtorrent::incoming_request_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::incoming_request_alert **)&jarg1; + { + try { + result = ((libtorrent::incoming_request_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1request_1alert_1req_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::incoming_request_alert *arg1 = (libtorrent::incoming_request_alert *) 0 ; + libtorrent::peer_request *arg2 = (libtorrent::peer_request *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::incoming_request_alert **)&jarg1; + arg2 = *(libtorrent::peer_request **)&jarg2; + if (arg1) (arg1)->req = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1request_1alert_1req_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::incoming_request_alert *arg1 = (libtorrent::incoming_request_alert *) 0 ; + libtorrent::peer_request *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::incoming_request_alert **)&jarg1; + result = (libtorrent::peer_request *)& ((arg1)->req); + *(libtorrent::peer_request **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1incoming_1request_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::incoming_request_alert *arg1 = (libtorrent::incoming_request_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::incoming_request_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1log_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::dht_log_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1log_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_log_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1log_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_log_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1log_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_log_alert *arg1 = (libtorrent::dht_log_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_log_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_log_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1log_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_log_alert *arg1 = (libtorrent::dht_log_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_log_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_log_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1log_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_log_alert *arg1 = (libtorrent::dht_log_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_log_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_log_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1log_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_log_alert *arg1 = (libtorrent::dht_log_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_log_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_log_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1log_1alert_1log_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_log_alert *arg1 = (libtorrent::dht_log_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_log_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_log_alert const *)arg1)->log_message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1log_1alert_1module_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht_log_alert *arg1 = (libtorrent::dht_log_alert *) 0 ; + libtorrent::dht_log_alert::dht_module_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_log_alert **)&jarg1; + arg2 = (libtorrent::dht_log_alert::dht_module_t)jarg2; + if (arg1) (arg1)->module = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1log_1alert_1module_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_log_alert *arg1 = (libtorrent::dht_log_alert *) 0 ; + libtorrent::dht_log_alert::dht_module_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_log_alert **)&jarg1; + result = (libtorrent::dht_log_alert::dht_module_t) ((arg1)->module); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1log_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_log_alert *arg1 = (libtorrent::dht_log_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_log_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1pkt_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::dht_pkt_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1pkt_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_pkt_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1pkt_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_pkt_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1pkt_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_pkt_alert *arg1 = (libtorrent::dht_pkt_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_pkt_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_pkt_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1pkt_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_pkt_alert *arg1 = (libtorrent::dht_pkt_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_pkt_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_pkt_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1pkt_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_pkt_alert *arg1 = (libtorrent::dht_pkt_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_pkt_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_pkt_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1pkt_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_pkt_alert *arg1 = (libtorrent::dht_pkt_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_pkt_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_pkt_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1pkt_1alert_1pkt_1buf(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_pkt_alert *arg1 = (libtorrent::dht_pkt_alert *) 0 ; + libtorrent::span< char const > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_pkt_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_pkt_alert const *)arg1)->pkt_buf(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::span< char const > **)&jresult = new libtorrent::span< char const >((const libtorrent::span< char const > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1pkt_1alert_1direction_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht_pkt_alert *arg1 = (libtorrent::dht_pkt_alert *) 0 ; + libtorrent::dht_pkt_alert::direction_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_pkt_alert **)&jarg1; + arg2 = (libtorrent::dht_pkt_alert::direction_t)jarg2; + if (arg1) (arg1)->direction = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1pkt_1alert_1direction_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_pkt_alert *arg1 = (libtorrent::dht_pkt_alert *) 0 ; + libtorrent::dht_pkt_alert::direction_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_pkt_alert **)&jarg1; + result = (libtorrent::dht_pkt_alert::direction_t) ((arg1)->direction); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1pkt_1alert_1get_1node(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_pkt_alert *arg1 = (libtorrent::dht_pkt_alert *) 0 ; + libtorrent::udp::endpoint result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_pkt_alert **)&jarg1; + { + try { + result = libtorrent_dht_pkt_alert_get_node(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::udp::endpoint **)&jresult = new libtorrent::udp::endpoint((const libtorrent::udp::endpoint &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1pkt_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_pkt_alert *arg1 = (libtorrent::dht_pkt_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_pkt_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1reply_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::dht_get_peers_reply_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1reply_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_get_peers_reply_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1reply_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_get_peers_reply_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1reply_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_get_peers_reply_alert *arg1 = (libtorrent::dht_get_peers_reply_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_get_peers_reply_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_get_peers_reply_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1reply_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_get_peers_reply_alert *arg1 = (libtorrent::dht_get_peers_reply_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_get_peers_reply_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_get_peers_reply_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1reply_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_get_peers_reply_alert *arg1 = (libtorrent::dht_get_peers_reply_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_get_peers_reply_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_get_peers_reply_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1reply_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_get_peers_reply_alert *arg1 = (libtorrent::dht_get_peers_reply_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_get_peers_reply_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_get_peers_reply_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1reply_1alert_1info_1hash_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht_get_peers_reply_alert *arg1 = (libtorrent::dht_get_peers_reply_alert *) 0 ; + libtorrent::sha1_hash *arg2 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht_get_peers_reply_alert **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (arg1) (arg1)->info_hash = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1reply_1alert_1info_1hash_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_get_peers_reply_alert *arg1 = (libtorrent::dht_get_peers_reply_alert *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_get_peers_reply_alert **)&jarg1; + result = (libtorrent::sha1_hash *)& ((arg1)->info_hash); + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1reply_1alert_1num_1peers(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_get_peers_reply_alert *arg1 = (libtorrent::dht_get_peers_reply_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_get_peers_reply_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_get_peers_reply_alert const *)arg1)->num_peers(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1reply_1alert_1peers(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_get_peers_reply_alert *arg1 = (libtorrent::dht_get_peers_reply_alert *) 0 ; + std::vector< libtorrent::tcp::endpoint > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_get_peers_reply_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_get_peers_reply_alert const *)arg1)->peers(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::tcp::endpoint > **)&jresult = new std::vector< libtorrent::tcp::endpoint >((const std::vector< libtorrent::tcp::endpoint > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1get_1peers_1reply_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_get_peers_reply_alert *arg1 = (libtorrent::dht_get_peers_reply_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_get_peers_reply_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1direct_1response_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_direct_response_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1direct_1response_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_direct_response_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1direct_1response_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_direct_response_alert *arg1 = (libtorrent::dht_direct_response_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_direct_response_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_direct_response_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1direct_1response_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_direct_response_alert *arg1 = (libtorrent::dht_direct_response_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_direct_response_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_direct_response_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1direct_1response_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_direct_response_alert *arg1 = (libtorrent::dht_direct_response_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_direct_response_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_direct_response_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1direct_1response_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::dht_direct_response_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1direct_1response_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_direct_response_alert *arg1 = (libtorrent::dht_direct_response_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_direct_response_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_direct_response_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1direct_1response_1alert_1response(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_direct_response_alert *arg1 = (libtorrent::dht_direct_response_alert *) 0 ; + libtorrent::bdecode_node result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_direct_response_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_direct_response_alert const *)arg1)->response(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::bdecode_node **)&jresult = new libtorrent::bdecode_node((const libtorrent::bdecode_node &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1direct_1response_1alert_1get_1userdata(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_direct_response_alert *arg1 = (libtorrent::dht_direct_response_alert *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_direct_response_alert **)&jarg1; + { + try { + result = (int64_t)libtorrent_dht_direct_response_alert_get_userdata(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1direct_1response_1alert_1get_1endpoint(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_direct_response_alert *arg1 = (libtorrent::dht_direct_response_alert *) 0 ; + libtorrent::udp::endpoint result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_direct_response_alert **)&jarg1; + { + try { + result = libtorrent_dht_direct_response_alert_get_endpoint(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::udp::endpoint **)&jresult = new libtorrent::udp::endpoint((const libtorrent::udp::endpoint &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1direct_1response_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_direct_response_alert *arg1 = (libtorrent::dht_direct_response_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_direct_response_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::picker_log_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::picker_log_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::picker_log_alert *arg1 = (libtorrent::picker_log_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::picker_log_alert **)&jarg1; + { + try { + result = (int)((libtorrent::picker_log_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::picker_log_alert *arg1 = (libtorrent::picker_log_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::picker_log_alert **)&jarg1; + { + try { + result = ((libtorrent::picker_log_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::picker_log_alert *arg1 = (libtorrent::picker_log_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::picker_log_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::picker_log_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::picker_log_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::picker_log_alert *arg1 = (libtorrent::picker_log_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::picker_log_alert **)&jarg1; + { + try { + result = ((libtorrent::picker_log_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1partial_1ratio_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::partial_ratio; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1prioritize_1partials_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::prioritize_partials; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1rarest_1first_1partials_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::rarest_first_partials; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1rarest_1first_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::rarest_first; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1reverse_1rarest_1first_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::reverse_rarest_first; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1suggested_1pieces_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::suggested_pieces; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1prio_1sequential_1pieces_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::prio_sequential_pieces; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1sequential_1pieces_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::sequential_pieces; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1reverse_1pieces_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::reverse_pieces; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1time_1critical_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::time_critical; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1random_1pieces_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::random_pieces; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1prefer_1contiguous_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::prefer_contiguous; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1reverse_1sequential_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::reverse_sequential; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1backup1_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::backup1; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1backup2_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::backup2; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1end_1game_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::end_game; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1extent_1affinity_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > *)&libtorrent::picker_log_alert::extent_affinity; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::picker_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1picker_1flags_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::picker_log_alert *arg1 = (libtorrent::picker_log_alert *) 0 ; + libtorrent::picker_flags_t *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::picker_log_alert **)&jarg1; + result = (libtorrent::picker_flags_t *)& ((arg1)->picker_flags); + *(libtorrent::picker_flags_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1picker_1log_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::picker_log_alert *arg1 = (libtorrent::picker_log_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::picker_log_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1error_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::session_error_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1error_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::session_error_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1error_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::session_error_alert *arg1 = (libtorrent::session_error_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_error_alert **)&jarg1; + { + try { + result = (int)((libtorrent::session_error_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1error_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_error_alert *arg1 = (libtorrent::session_error_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_error_alert **)&jarg1; + { + try { + result = ((libtorrent::session_error_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1error_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::session_error_alert *arg1 = (libtorrent::session_error_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_error_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::session_error_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1error_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::session_error_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1error_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::session_error_alert *arg1 = (libtorrent::session_error_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_error_alert **)&jarg1; + { + try { + result = ((libtorrent::session_error_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1error_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_error_alert *arg1 = (libtorrent::session_error_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_error_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1session_1error_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::session_error_alert *arg1 = (libtorrent::session_error_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::session_error_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1live_1nodes_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_live_nodes_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1live_1nodes_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_live_nodes_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1live_1nodes_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_live_nodes_alert *arg1 = (libtorrent::dht_live_nodes_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_live_nodes_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_live_nodes_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1live_1nodes_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_live_nodes_alert *arg1 = (libtorrent::dht_live_nodes_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_live_nodes_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_live_nodes_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1live_1nodes_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_live_nodes_alert *arg1 = (libtorrent::dht_live_nodes_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_live_nodes_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_live_nodes_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1live_1nodes_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::dht_live_nodes_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1live_1nodes_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_live_nodes_alert *arg1 = (libtorrent::dht_live_nodes_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_live_nodes_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_live_nodes_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1live_1nodes_1alert_1node_1id_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht_live_nodes_alert *arg1 = (libtorrent::dht_live_nodes_alert *) 0 ; + libtorrent::sha1_hash *arg2 = (libtorrent::sha1_hash *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht_live_nodes_alert **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (arg1) (arg1)->node_id = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1live_1nodes_1alert_1node_1id_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_live_nodes_alert *arg1 = (libtorrent::dht_live_nodes_alert *) 0 ; + libtorrent::sha1_hash *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_live_nodes_alert **)&jarg1; + result = (libtorrent::sha1_hash *)& ((arg1)->node_id); + *(libtorrent::sha1_hash **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1live_1nodes_1alert_1num_1nodes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_live_nodes_alert *arg1 = (libtorrent::dht_live_nodes_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_live_nodes_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_live_nodes_alert const *)arg1)->num_nodes(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1live_1nodes_1alert_1nodes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_live_nodes_alert *arg1 = (libtorrent::dht_live_nodes_alert *) 0 ; + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_live_nodes_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_live_nodes_alert const *)arg1)->nodes(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > **)&jresult = new std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >((const std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1live_1nodes_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_live_nodes_alert *arg1 = (libtorrent::dht_live_nodes_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_live_nodes_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1header_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::session_stats_header_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1header_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::session_stats_header_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1header_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::session_stats_header_alert *arg1 = (libtorrent::session_stats_header_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_stats_header_alert **)&jarg1; + { + try { + result = (int)((libtorrent::session_stats_header_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1header_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_stats_header_alert *arg1 = (libtorrent::session_stats_header_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_stats_header_alert **)&jarg1; + { + try { + result = ((libtorrent::session_stats_header_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1header_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::session_stats_header_alert *arg1 = (libtorrent::session_stats_header_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_stats_header_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::session_stats_header_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1header_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::session_stats_header_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1header_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::session_stats_header_alert *arg1 = (libtorrent::session_stats_header_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_stats_header_alert **)&jarg1; + { + try { + result = ((libtorrent::session_stats_header_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1session_1stats_1header_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::session_stats_header_alert *arg1 = (libtorrent::session_stats_header_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::session_stats_header_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1sample_1infohashes_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::dht_sample_infohashes_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1sample_1infohashes_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_sample_infohashes_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1sample_1infohashes_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::dht_sample_infohashes_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1sample_1infohashes_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_sample_infohashes_alert *arg1 = (libtorrent::dht_sample_infohashes_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_sample_infohashes_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_sample_infohashes_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1sample_1infohashes_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_sample_infohashes_alert *arg1 = (libtorrent::dht_sample_infohashes_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_sample_infohashes_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_sample_infohashes_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1sample_1infohashes_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_sample_infohashes_alert *arg1 = (libtorrent::dht_sample_infohashes_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_sample_infohashes_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::dht_sample_infohashes_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1sample_1infohashes_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::dht_sample_infohashes_alert *arg1 = (libtorrent::dht_sample_infohashes_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_sample_infohashes_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_sample_infohashes_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1sample_1infohashes_1alert_1num_1infohashes_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_sample_infohashes_alert *arg1 = (libtorrent::dht_sample_infohashes_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_sample_infohashes_alert **)&jarg1; + result = (int)(int) ((arg1)->num_infohashes); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1sample_1infohashes_1alert_1num_1samples(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_sample_infohashes_alert *arg1 = (libtorrent::dht_sample_infohashes_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_sample_infohashes_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_sample_infohashes_alert const *)arg1)->num_samples(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1sample_1infohashes_1alert_1samples(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_sample_infohashes_alert *arg1 = (libtorrent::dht_sample_infohashes_alert *) 0 ; + std::vector< libtorrent::sha1_hash > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_sample_infohashes_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_sample_infohashes_alert const *)arg1)->samples(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::sha1_hash > **)&jresult = new std::vector< libtorrent::sha1_hash >((const std::vector< libtorrent::sha1_hash > &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1sample_1infohashes_1alert_1num_1nodes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht_sample_infohashes_alert *arg1 = (libtorrent::dht_sample_infohashes_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_sample_infohashes_alert **)&jarg1; + { + try { + result = (int)((libtorrent::dht_sample_infohashes_alert const *)arg1)->num_nodes(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1sample_1infohashes_1alert_1nodes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_sample_infohashes_alert *arg1 = (libtorrent::dht_sample_infohashes_alert *) 0 ; + std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_sample_infohashes_alert **)&jarg1; + { + try { + result = ((libtorrent::dht_sample_infohashes_alert const *)arg1)->nodes(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > **)&jresult = new std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > >((const std::vector< std::pair< libtorrent::sha1_hash,libtorrent::udp::endpoint > > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1sample_1infohashes_1alert_1get_1endpoint(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_sample_infohashes_alert *arg1 = (libtorrent::dht_sample_infohashes_alert *) 0 ; + libtorrent::udp::endpoint result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_sample_infohashes_alert **)&jarg1; + { + try { + result = libtorrent_dht_sample_infohashes_alert_get_endpoint(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::udp::endpoint **)&jresult = new libtorrent::udp::endpoint((const libtorrent::udp::endpoint &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1sample_1infohashes_1alert_1get_1interval(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht_sample_infohashes_alert *arg1 = (libtorrent::dht_sample_infohashes_alert *) 0 ; + std::int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht_sample_infohashes_alert **)&jarg1; + { + try { + result = (std::int64_t)libtorrent_dht_sample_infohashes_alert_get_interval(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1sample_1infohashes_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht_sample_infohashes_alert *arg1 = (libtorrent::dht_sample_infohashes_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht_sample_infohashes_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1uploaded_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::block_uploaded_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1uploaded_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::block_uploaded_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1uploaded_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::block_uploaded_alert *arg1 = (libtorrent::block_uploaded_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_uploaded_alert **)&jarg1; + { + try { + result = (int)((libtorrent::block_uploaded_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1uploaded_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::block_uploaded_alert *arg1 = (libtorrent::block_uploaded_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_uploaded_alert **)&jarg1; + { + try { + result = ((libtorrent::block_uploaded_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1uploaded_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::block_uploaded_alert *arg1 = (libtorrent::block_uploaded_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_uploaded_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::block_uploaded_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1uploaded_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::block_uploaded_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1uploaded_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::block_uploaded_alert *arg1 = (libtorrent::block_uploaded_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_uploaded_alert **)&jarg1; + { + try { + result = ((libtorrent::block_uploaded_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1uploaded_1alert_1block_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::block_uploaded_alert *arg1 = (libtorrent::block_uploaded_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_uploaded_alert **)&jarg1; + result = (int)(int) ((arg1)->block_index); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1uploaded_1alert_1piece_1index_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + int jresult = 0 ; + libtorrent::block_uploaded_alert *arg1 = (libtorrent::block_uploaded_alert *) 0 ; + piece_index_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::block_uploaded_alert **)&jarg1; + result = (piece_index_t) ((arg1)->piece_index); + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1block_1uploaded_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::block_uploaded_alert *arg1 = (libtorrent::block_uploaded_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::block_uploaded_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alerts_1dropped_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::alerts_dropped_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alerts_1dropped_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::alerts_dropped_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alerts_1dropped_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::alerts_dropped_alert *arg1 = (libtorrent::alerts_dropped_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alerts_dropped_alert **)&jarg1; + { + try { + result = (int)((libtorrent::alerts_dropped_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alerts_1dropped_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alerts_dropped_alert *arg1 = (libtorrent::alerts_dropped_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alerts_dropped_alert **)&jarg1; + { + try { + result = ((libtorrent::alerts_dropped_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alerts_1dropped_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::alerts_dropped_alert *arg1 = (libtorrent::alerts_dropped_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alerts_dropped_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::alerts_dropped_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alerts_1dropped_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::alerts_dropped_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alerts_1dropped_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::alerts_dropped_alert *arg1 = (libtorrent::alerts_dropped_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alerts_dropped_alert **)&jarg1; + { + try { + result = ((libtorrent::alerts_dropped_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alerts_1dropped_1alert_1dropped_1alerts_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::alerts_dropped_alert *arg1 = (libtorrent::alerts_dropped_alert *) 0 ; + std::bitset< 97 > *arg2 = (std::bitset< 97 > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alerts_dropped_alert **)&jarg1; + arg2 = *(std::bitset< 97 > **)&jarg2; + if (arg1) (arg1)->dropped_alerts = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alerts_1dropped_1alert_1dropped_1alerts_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::alerts_dropped_alert *arg1 = (libtorrent::alerts_dropped_alert *) 0 ; + std::bitset< 97 > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::alerts_dropped_alert **)&jarg1; + result = (std::bitset< 97 > *)& ((arg1)->dropped_alerts); + *(std::bitset< 97 > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1alerts_1dropped_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::alerts_dropped_alert *arg1 = (libtorrent::alerts_dropped_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::alerts_dropped_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_socks5_1alert_1priority_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::socks5_alert::priority; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_socks5_1alert_1alert_1type_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::socks5_alert::alert_type; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_socks5_1alert_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::socks5_alert *arg1 = (libtorrent::socks5_alert *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::socks5_alert **)&jarg1; + { + try { + result = (int)((libtorrent::socks5_alert const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_socks5_1alert_1category(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::socks5_alert *arg1 = (libtorrent::socks5_alert *) 0 ; + libtorrent::alert_category_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::socks5_alert **)&jarg1; + { + try { + result = ((libtorrent::socks5_alert const *)arg1)->category(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert_category_t **)&jresult = new libtorrent::alert_category_t((const libtorrent::alert_category_t &)result); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_socks5_1alert_1what(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::socks5_alert *arg1 = (libtorrent::socks5_alert *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::socks5_alert **)&jarg1; + { + try { + result = (char *)((libtorrent::socks5_alert const *)arg1)->what(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_socks5_1alert_1static_1category_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > *)&libtorrent::socks5_alert::static_category; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::alert_category_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_socks5_1alert_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::socks5_alert *arg1 = (libtorrent::socks5_alert *) 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::socks5_alert **)&jarg1; + { + try { + result = ((libtorrent::socks5_alert const *)arg1)->message(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_socks5_1alert_1error_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::socks5_alert *arg1 = (libtorrent::socks5_alert *) 0 ; + libtorrent::error_code *arg2 = (libtorrent::error_code *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::socks5_alert **)&jarg1; + arg2 = *(libtorrent::error_code **)&jarg2; + if (arg1) (arg1)->error = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_socks5_1alert_1error_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::socks5_alert *arg1 = (libtorrent::socks5_alert *) 0 ; + libtorrent::error_code *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::socks5_alert **)&jarg1; + result = (libtorrent::error_code *)& ((arg1)->error); + *(libtorrent::error_code **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_socks5_1alert_1op_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::socks5_alert *arg1 = (libtorrent::socks5_alert *) 0 ; + libtorrent::operation_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::socks5_alert **)&jarg1; + arg2 = (libtorrent::operation_t)jarg2; + if (arg1) (arg1)->op = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_socks5_1alert_1op_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::socks5_alert *arg1 = (libtorrent::socks5_alert *) 0 ; + libtorrent::operation_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::socks5_alert **)&jarg1; + result = (libtorrent::operation_t) ((arg1)->op); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_socks5_1alert_1ip_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + libtorrent::socks5_alert *arg1 = (libtorrent::socks5_alert *) 0 ; + libtorrent::aux::noexcept_movable< libtorrent::tcp::endpoint > *arg2 = (libtorrent::aux::noexcept_movable< libtorrent::tcp::endpoint > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::socks5_alert **)&jarg1; + arg2 = *(libtorrent::aux::noexcept_movable< libtorrent::tcp::endpoint > **)&jarg2; + if (arg1) (arg1)->ip = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_socks5_1alert_1ip_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::socks5_alert *arg1 = (libtorrent::socks5_alert *) 0 ; + libtorrent::aux::noexcept_movable< libtorrent::tcp::endpoint > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::socks5_alert **)&jarg1; + result = (libtorrent::aux::noexcept_movable< libtorrent::tcp::endpoint > *)& ((arg1)->ip); + *(libtorrent::aux::noexcept_movable< libtorrent::tcp::endpoint > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1socks5_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::socks5_alert *arg1 = (libtorrent::socks5_alert *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::socks5_alert **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_performance_1warning_1str(JNIEnv *jenv, jclass jcls, jint jarg1) { + jstring jresult = 0 ; + libtorrent::performance_alert::performance_warning_t arg1 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + arg1 = (libtorrent::performance_alert::performance_warning_t)jarg1; + { + try { + result = (char *)libtorrent::performance_warning_str(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_default_1int_1value(JNIEnv *jenv, jclass jcls, jint jarg1) { + jint jresult = 0 ; + int arg1 ; + int result; + + (void)jenv; + (void)jcls; + arg1 = (int)jarg1; + { + try { + result = (int)libtorrent::default_int_value(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_setting_1by_1name(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::string_view arg1 ; + libtorrent::string_view *argp1 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + argp1 = *(libtorrent::string_view **)&jarg1; + if (!argp1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::string_view"); + return 0; + } + arg1 = *argp1; + { + try { + result = (int)libtorrent::setting_by_name(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_name_1for_1setting(JNIEnv *jenv, jclass jcls, jint jarg1) { + jstring jresult = 0 ; + int arg1 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + arg1 = (int)jarg1; + { + try { + result = (char *)libtorrent::name_for_setting(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_default_1settings(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::settings_pack result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::default_settings(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::settings_pack **)&jresult = new libtorrent::settings_pack((const libtorrent::settings_pack &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1settings_1pack_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::settings_pack *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::settings_pack *)new libtorrent::settings_pack(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::settings_pack **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1settings_1pack_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::settings_pack *arg1 = 0 ; + libtorrent::settings_pack *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::settings_pack **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::settings_pack const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::settings_pack *)new libtorrent::settings_pack((libtorrent::settings_pack const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::settings_pack **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1set_1str(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jstring jarg3) { + libtorrent::settings_pack *arg1 = (libtorrent::settings_pack *) 0 ; + int arg2 ; + std::string arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::settings_pack **)&jarg1; + arg2 = (int)jarg2; + if(!jarg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3_pstr) return ; + (&arg3)->assign(arg3_pstr); + jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); + { + try { + (arg1)->set_str(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1set_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3) { + libtorrent::settings_pack *arg1 = (libtorrent::settings_pack *) 0 ; + int arg2 ; + int arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::settings_pack **)&jarg1; + arg2 = (int)jarg2; + arg3 = (int)jarg3; + { + try { + (arg1)->set_int(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1set_1bool(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jboolean jarg3) { + libtorrent::settings_pack *arg1 = (libtorrent::settings_pack *) 0 ; + int arg2 ; + bool arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::settings_pack **)&jarg1; + arg2 = (int)jarg2; + arg3 = jarg3 ? true : false; + { + try { + (arg1)->set_bool(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1has_1val(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jboolean jresult = 0 ; + libtorrent::settings_pack *arg1 = (libtorrent::settings_pack *) 0 ; + int arg2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::settings_pack **)&jarg1; + arg2 = (int)jarg2; + { + try { + result = (bool)((libtorrent::settings_pack const *)arg1)->has_val(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1clear_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::settings_pack *arg1 = (libtorrent::settings_pack *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::settings_pack **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1clear_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::settings_pack *arg1 = (libtorrent::settings_pack *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::settings_pack **)&jarg1; + arg2 = (int)jarg2; + { + try { + (arg1)->clear(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1get_1str(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jstring jresult = 0 ; + libtorrent::settings_pack *arg1 = (libtorrent::settings_pack *) 0 ; + int arg2 ; + std::string *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::settings_pack **)&jarg1; + arg2 = (int)jarg2; + { + try { + result = (std::string *) &((libtorrent::settings_pack const *)arg1)->get_str(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF(result->c_str()); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1get_1int(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jint jresult = 0 ; + libtorrent::settings_pack *arg1 = (libtorrent::settings_pack *) 0 ; + int arg2 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::settings_pack **)&jarg1; + arg2 = (int)jarg2; + { + try { + result = (int)((libtorrent::settings_pack const *)arg1)->get_int(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1get_1bool(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jboolean jresult = 0 ; + libtorrent::settings_pack *arg1 = (libtorrent::settings_pack *) 0 ; + int arg2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::settings_pack **)&jarg1; + arg2 = (int)jarg2; + { + try { + result = (bool)((libtorrent::settings_pack const *)arg1)->get_bool(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1string_1type_1base_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::type_bases result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::type_bases)libtorrent::settings_pack::string_type_base; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1int_1type_1base_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::type_bases result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::type_bases)libtorrent::settings_pack::int_type_base; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1bool_1type_1base_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::type_bases result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::type_bases)libtorrent::settings_pack::bool_type_base; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1type_1mask_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::type_bases result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::type_bases)libtorrent::settings_pack::type_mask; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1index_1mask_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::type_bases result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::type_bases)libtorrent::settings_pack::index_mask; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1user_1agent_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::string_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::string_types)libtorrent::settings_pack::user_agent; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1handshake_1client_1version_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::string_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::string_types)libtorrent::settings_pack::handshake_client_version; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1allow_1multiple_1connections_1per_1ip_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::bool_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::bool_types)libtorrent::settings_pack::allow_multiple_connections_per_ip; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1send_1redundant_1have_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::bool_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::bool_types)libtorrent::settings_pack::send_redundant_have; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1use_1dht_1as_1fallback_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::bool_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::bool_types)libtorrent::settings_pack::use_dht_as_fallback; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1coalesce_1reads_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::bool_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::bool_types)libtorrent::settings_pack::coalesce_reads; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1disable_1hash_1checks_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::bool_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::bool_types)libtorrent::settings_pack::disable_hash_checks; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1volatile_1read_1cache_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::bool_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::bool_types)libtorrent::settings_pack::volatile_read_cache; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1no_1atime_1storage_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::bool_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::bool_types)libtorrent::settings_pack::no_atime_storage; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1enable_1outgoing_1utp_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::bool_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::bool_types)libtorrent::settings_pack::enable_outgoing_utp; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1no_1recheck_1incomplete_1resume_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::bool_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::bool_types)libtorrent::settings_pack::no_recheck_incomplete_resume; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1seeding_1outgoing_1connections_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::bool_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::bool_types)libtorrent::settings_pack::seeding_outgoing_connections; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1ban_1web_1seeds_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::bool_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::bool_types)libtorrent::settings_pack::ban_web_seeds; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1support_1share_1mode_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::bool_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::bool_types)libtorrent::settings_pack::support_share_mode; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1announce_1crypto_1support_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::bool_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::bool_types)libtorrent::settings_pack::announce_crypto_support; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1tracker_1completion_1timeout_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::int_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::int_types)libtorrent::settings_pack::tracker_completion_timeout; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1cache_1expiry_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::int_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::int_types)libtorrent::settings_pack::cache_expiry; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1auto_1manage_1interval_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::int_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::int_types)libtorrent::settings_pack::auto_manage_interval; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1read_1cache_1line_1size_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::int_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::int_types)libtorrent::settings_pack::read_cache_line_size; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1num_1optimistic_1unchoke_1slots_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::int_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::int_types)libtorrent::settings_pack::num_optimistic_unchoke_slots; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1dht_1upload_1rate_1limit_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::int_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::int_types)libtorrent::settings_pack::dht_upload_rate_limit; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1connections_1limit_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::int_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::int_types)libtorrent::settings_pack::connections_limit; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1utp_1loss_1multiplier_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::int_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::int_types)libtorrent::settings_pack::utp_loss_multiplier; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1checking_1mem_1usage_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::int_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::int_types)libtorrent::settings_pack::checking_mem_usage; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1tracker_1backoff_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::int_types result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::int_types)libtorrent::settings_pack::tracker_backoff; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1num_1string_1settings_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::settings_counts_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::settings_counts_t)libtorrent::settings_pack::num_string_settings; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1num_1bool_1settings_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::settings_counts_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::settings_counts_t)libtorrent::settings_pack::num_bool_settings; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1num_1int_1settings_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::settings_counts_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::settings_counts_t)libtorrent::settings_pack::num_int_settings; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1no_1piece_1suggestions_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::suggest_mode_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::suggest_mode_t)libtorrent::settings_pack::no_piece_suggestions; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1suggest_1read_1cache_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::suggest_mode_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::suggest_mode_t)libtorrent::settings_pack::suggest_read_cache; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1fixed_1slots_1choker_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::choking_algorithm_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::choking_algorithm_t)libtorrent::settings_pack::fixed_slots_choker; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1rate_1based_1choker_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::choking_algorithm_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::choking_algorithm_t)libtorrent::settings_pack::rate_based_choker; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1enable_1os_1cache_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::io_buffer_mode_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::io_buffer_mode_t)libtorrent::settings_pack::enable_os_cache; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1deprecated_1disable_1os_1cache_1for_1aligned_1files_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::io_buffer_mode_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::io_buffer_mode_t)libtorrent::settings_pack::deprecated_disable_os_cache_for_aligned_files; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1disable_1os_1cache_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::io_buffer_mode_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::io_buffer_mode_t)libtorrent::settings_pack::disable_os_cache; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1prefer_1tcp_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::bandwidth_mixed_algo_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::bandwidth_mixed_algo_t)libtorrent::settings_pack::prefer_tcp; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1peer_1proportional_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::bandwidth_mixed_algo_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::bandwidth_mixed_algo_t)libtorrent::settings_pack::peer_proportional; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1pe_1plaintext_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::enc_level result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::enc_level)libtorrent::settings_pack::pe_plaintext; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1pe_1rc4_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::enc_level result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::enc_level)libtorrent::settings_pack::pe_rc4; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1pack_1pe_1both_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::settings_pack::enc_level result; + + (void)jenv; + (void)jcls; + result = (libtorrent::settings_pack::enc_level)libtorrent::settings_pack::pe_both; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1settings_1pack(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::settings_pack *arg1 = (libtorrent::settings_pack *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::settings_pack **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1peer_1class_1type_1filter(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::peer_class_type_filter *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::peer_class_type_filter *)new libtorrent::peer_class_type_filter(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_class_type_filter **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1type_1filter_1tcp_1socket_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::peer_class_type_filter::socket_type_t result; + + (void)jenv; + (void)jcls; + result = (libtorrent::peer_class_type_filter::socket_type_t)libtorrent::peer_class_type_filter::tcp_socket; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1type_1filter_1add(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, int jarg3) { + libtorrent::peer_class_type_filter *arg1 = (libtorrent::peer_class_type_filter *) 0 ; + libtorrent::peer_class_type_filter::socket_type_t arg2 ; + peer_class_t arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_type_filter **)&jarg1; + arg2 = (libtorrent::peer_class_type_filter::socket_type_t)jarg2; + { + arg3 = peer_class_t(static_cast(jarg3)); + } + { + try { + (arg1)->add(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1type_1filter_1remove(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, int jarg3) { + libtorrent::peer_class_type_filter *arg1 = (libtorrent::peer_class_type_filter *) 0 ; + libtorrent::peer_class_type_filter::socket_type_t arg2 ; + peer_class_t arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_type_filter **)&jarg1; + arg2 = (libtorrent::peer_class_type_filter::socket_type_t)jarg2; + { + arg3 = peer_class_t(static_cast(jarg3)); + } + { + try { + (arg1)->remove(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1type_1filter_1disallow(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, int jarg3) { + libtorrent::peer_class_type_filter *arg1 = (libtorrent::peer_class_type_filter *) 0 ; + libtorrent::peer_class_type_filter::socket_type_t arg2 ; + peer_class_t arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_type_filter **)&jarg1; + arg2 = (libtorrent::peer_class_type_filter::socket_type_t)jarg2; + { + arg3 = peer_class_t(static_cast(jarg3)); + } + { + try { + (arg1)->disallow(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1type_1filter_1allow(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, int jarg3) { + libtorrent::peer_class_type_filter *arg1 = (libtorrent::peer_class_type_filter *) 0 ; + libtorrent::peer_class_type_filter::socket_type_t arg2 ; + peer_class_t arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_type_filter **)&jarg1; + arg2 = (libtorrent::peer_class_type_filter::socket_type_t)jarg2; + { + arg3 = peer_class_t(static_cast(jarg3)); + } + { + try { + (arg1)->allow(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1class_1type_1filter_1apply(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3) { + jlong jresult = 0 ; + libtorrent::peer_class_type_filter *arg1 = (libtorrent::peer_class_type_filter *) 0 ; + libtorrent::peer_class_type_filter::socket_type_t arg2 ; + std::uint32_t arg3 ; + std::uint32_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_class_type_filter **)&jarg1; + arg2 = (libtorrent::peer_class_type_filter::socket_type_t)jarg2; + arg3 = (std::uint32_t)jarg3; + { + try { + result = (std::uint32_t)(arg1)->apply(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_op_1eq_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::peer_class_type_filter *arg1 = 0 ; + libtorrent::peer_class_type_filter *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_class_type_filter **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::peer_class_type_filter const & reference is null"); + return 0; + } + arg2 = *(libtorrent::peer_class_type_filter **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::peer_class_type_filter const & reference is null"); + return 0; + } + { + try { + result = (bool)operator ==((libtorrent::peer_class_type_filter const &)*arg1,(libtorrent::peer_class_type_filter const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1class_1type_1filter(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::peer_class_type_filter *arg1 = (libtorrent::peer_class_type_filter *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::peer_class_type_filter **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_op_1lte(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::address *arg1 = 0 ; + libtorrent::address *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::address **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::address const & reference is null"); + return 0; + } + arg2 = *(libtorrent::address **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::address const & reference is null"); + return 0; + } + { + try { + result = (bool)libtorrent::operator <=((libtorrent::address const &)*arg1,(libtorrent::address const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1filter_1blocked_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::ip_filter::access_flags result; + + (void)jenv; + (void)jcls; + result = (libtorrent::ip_filter::access_flags)libtorrent::ip_filter::blocked; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1filter_1add_1rule(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_, jlong jarg4) { + libtorrent::ip_filter *arg1 = (libtorrent::ip_filter *) 0 ; + libtorrent::address *arg2 = 0 ; + libtorrent::address *arg3 = 0 ; + std::uint32_t arg4 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + arg1 = *(libtorrent::ip_filter **)&jarg1; + arg2 = *(libtorrent::address **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::address const & reference is null"); + return ; + } + arg3 = *(libtorrent::address **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::address const & reference is null"); + return ; + } + arg4 = (std::uint32_t)jarg4; + { + try { + (arg1)->add_rule((libtorrent::address const &)*arg2,(libtorrent::address const &)*arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1filter_1access(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::ip_filter *arg1 = (libtorrent::ip_filter *) 0 ; + libtorrent::address *arg2 = 0 ; + std::uint32_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::ip_filter **)&jarg1; + arg2 = *(libtorrent::address **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::address const & reference is null"); + return 0; + } + { + try { + result = (std::uint32_t)((libtorrent::ip_filter const *)arg1)->access((libtorrent::address const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1ip_1filter(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::ip_filter *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::ip_filter *)new libtorrent::ip_filter(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::ip_filter **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1ip_1filter(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::ip_filter *arg1 = (libtorrent::ip_filter *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::ip_filter **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_port_1filter_1blocked_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + libtorrent::port_filter::access_flags result; + + (void)jenv; + (void)jcls; + result = (libtorrent::port_filter::access_flags)libtorrent::port_filter::blocked; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_port_1filter_1add_1rule(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3, jlong jarg4) { + libtorrent::port_filter *arg1 = (libtorrent::port_filter *) 0 ; + std::uint16_t arg2 ; + std::uint16_t arg3 ; + std::uint32_t arg4 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::port_filter **)&jarg1; + arg2 = (std::uint16_t)jarg2; + arg3 = (std::uint16_t)jarg3; + arg4 = (std::uint32_t)jarg4; + { + try { + (arg1)->add_rule(arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_port_1filter_1access(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + libtorrent::port_filter *arg1 = (libtorrent::port_filter *) 0 ; + std::uint16_t arg2 ; + std::uint32_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::port_filter **)&jarg1; + arg2 = (std::uint16_t)jarg2; + { + try { + result = (std::uint32_t)((libtorrent::port_filter const *)arg1)->access(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1port_1filter(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::port_filter *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::port_filter *)new libtorrent::port_filter(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::port_filter **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1port_1filter(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::port_filter *arg1 = (libtorrent::port_filter *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::port_filter **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1session_1handle_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::session_handle *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::session_handle *)new libtorrent::session_handle(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session_handle **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1session_1handle_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_handle *arg1 = 0 ; + libtorrent::session_handle *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::session_handle const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::session_handle *)new libtorrent::session_handle((libtorrent::session_handle const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session_handle **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1is_1valid(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::session_handle const *)arg1)->is_valid(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1save_1settings_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::save_state_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::save_state_flags_tag > *)&libtorrent::session_handle::save_settings; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::save_state_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1save_1dht_1settings_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::save_state_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::save_state_flags_tag > *)&libtorrent::session_handle::save_dht_settings; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::save_state_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1save_1dht_1state_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::save_state_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::save_state_flags_tag > *)&libtorrent::session_handle::save_dht_state; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::save_state_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1save_1state_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::entry *arg2 = 0 ; + libtorrent::save_state_flags_t arg3 ; + libtorrent::save_state_flags_t *argp3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::entry **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::entry & reference is null"); + return ; + } + argp3 = *(libtorrent::save_state_flags_t **)&jarg3; + if (!argp3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::save_state_flags_t"); + return ; + } + arg3 = *argp3; + { + try { + ((libtorrent::session_handle const *)arg1)->save_state(*arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1save_1state_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::entry *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::entry **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::entry & reference is null"); + return ; + } + { + try { + ((libtorrent::session_handle const *)arg1)->save_state(*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1load_1state_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::bdecode_node *arg2 = 0 ; + libtorrent::save_state_flags_t arg3 ; + libtorrent::save_state_flags_t *argp3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::bdecode_node **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::bdecode_node const & reference is null"); + return ; + } + argp3 = *(libtorrent::save_state_flags_t **)&jarg3; + if (!argp3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::save_state_flags_t"); + return ; + } + arg3 = *argp3; + { + try { + (arg1)->load_state((libtorrent::bdecode_node const &)*arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1load_1state_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::bdecode_node *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::bdecode_node **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::bdecode_node const & reference is null"); + return ; + } + { + try { + (arg1)->load_state((libtorrent::bdecode_node const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1refresh_1torrent_1status_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + std::vector< libtorrent::torrent_status > *arg2 = (std::vector< libtorrent::torrent_status > *) 0 ; + libtorrent::status_flags_t arg3 ; + libtorrent::status_flags_t *argp3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(std::vector< libtorrent::torrent_status > **)&jarg2; + argp3 = *(libtorrent::status_flags_t **)&jarg3; + if (!argp3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::status_flags_t"); + return ; + } + arg3 = *argp3; + { + try { + ((libtorrent::session_handle const *)arg1)->refresh_torrent_status(arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1refresh_1torrent_1status_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + std::vector< libtorrent::torrent_status > *arg2 = (std::vector< libtorrent::torrent_status > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(std::vector< libtorrent::torrent_status > **)&jarg2; + { + try { + ((libtorrent::session_handle const *)arg1)->refresh_torrent_status(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1post_1torrent_1updates_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::status_flags_t arg2 ; + libtorrent::status_flags_t *argp2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + argp2 = *(libtorrent::status_flags_t **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::status_flags_t"); + return ; + } + arg2 = *argp2; + { + try { + (arg1)->post_torrent_updates(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1post_1torrent_1updates_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + (arg1)->post_torrent_updates(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1post_1session_1stats(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + (arg1)->post_session_stats(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1post_1dht_1stats(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + (arg1)->post_dht_stats(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1find_1torrent(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::sha1_hash *arg2 = 0 ; + libtorrent::torrent_handle result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return 0; + } + { + try { + result = ((libtorrent::session_handle const *)arg1)->find_torrent((libtorrent::sha1_hash const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_handle **)&jresult = new libtorrent::torrent_handle((const libtorrent::torrent_handle &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1get_1torrents(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + std::vector< libtorrent::torrent_handle > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + result = ((libtorrent::session_handle const *)arg1)->get_torrents(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::torrent_handle > **)&jresult = new std::vector< libtorrent::torrent_handle >((const std::vector< libtorrent::torrent_handle > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1add_1torrent(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_) { + jlong jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::add_torrent_params *arg2 = 0 ; + libtorrent::error_code *arg3 = 0 ; + libtorrent::torrent_handle result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::add_torrent_params **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::add_torrent_params const & reference is null"); + return 0; + } + arg3 = *(libtorrent::error_code **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::error_code & reference is null"); + return 0; + } + { + try { + result = (arg1)->add_torrent((libtorrent::add_torrent_params const &)*arg2,*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_handle **)&jresult = new libtorrent::torrent_handle((const libtorrent::torrent_handle &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1async_1add_1torrent(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::add_torrent_params *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::add_torrent_params **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::add_torrent_params const & reference is null"); + return ; + } + { + try { + (arg1)->async_add_torrent((libtorrent::add_torrent_params const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1pause(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + (arg1)->pause(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1resume(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + (arg1)->resume(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1is_1paused(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::session_handle const *)arg1)->is_paused(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1disk_1cache_1no_1pieces_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + result = (int)libtorrent::session_handle::disk_cache_no_pieces; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1set_1dht_1settings(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::dht::dht_settings *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::dht::dht_settings **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::dht::dht_settings const & reference is null"); + return ; + } + { + try { + (arg1)->set_dht_settings((libtorrent::dht::dht_settings const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1is_1dht_1running(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::session_handle const *)arg1)->is_dht_running(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1get_1dht_1settings(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::dht::dht_settings result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + result = ((libtorrent::session_handle const *)arg1)->get_dht_settings(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht::dht_settings **)&jresult = new libtorrent::dht::dht_settings((const libtorrent::dht::dht_settings &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1add_1dht_1node(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + std::pair< std::string,int > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(std::pair< std::string,int > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::pair< std::string,int > const & reference is null"); + return ; + } + { + try { + (arg1)->add_dht_node((std::pair< std::string,int > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1dht_1get_1item_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::sha1_hash *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return ; + } + { + try { + (arg1)->dht_get_item((libtorrent::sha1_hash const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1dht_1put_1item_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::entry arg2 ; + libtorrent::entry *argp2 ; + libtorrent::sha1_hash result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + argp2 = *(libtorrent::entry **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::entry"); + return 0; + } + arg2 = *argp2; + { + try { + result = (arg1)->dht_put_item(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::sha1_hash **)&jresult = new libtorrent::sha1_hash((const libtorrent::sha1_hash &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1dht_1get_1peers(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::sha1_hash *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return ; + } + { + try { + (arg1)->dht_get_peers((libtorrent::sha1_hash const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1dht_1announce_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jint jarg3, jint jarg4) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::sha1_hash *arg2 = 0 ; + int arg3 ; + libtorrent::dht::announce_flags_t arg4 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return ; + } + arg3 = (int)jarg3; + arg4 = (libtorrent::dht::announce_flags_t)jarg4; + { + try { + (arg1)->dht_announce((libtorrent::sha1_hash const &)*arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1dht_1announce_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jint jarg3) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::sha1_hash *arg2 = 0 ; + int arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return ; + } + arg3 = (int)jarg3; + { + try { + (arg1)->dht_announce((libtorrent::sha1_hash const &)*arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1dht_1announce_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::sha1_hash *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return ; + } + { + try { + (arg1)->dht_announce((libtorrent::sha1_hash const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1dht_1live_1nodes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::sha1_hash *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::sha1_hash **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return ; + } + { + try { + (arg1)->dht_live_nodes((libtorrent::sha1_hash const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1dht_1sample_1infohashes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::udp::endpoint *arg2 = 0 ; + libtorrent::sha1_hash *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::udp::endpoint **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::udp::endpoint const & reference is null"); + return ; + } + arg3 = *(libtorrent::sha1_hash **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return ; + } + { + try { + (arg1)->dht_sample_infohashes((libtorrent::udp::endpoint const &)*arg2,(libtorrent::sha1_hash const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1dht_1direct_1request_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::udp::endpoint *arg2 = 0 ; + libtorrent::entry *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::udp::endpoint **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::udp::endpoint const & reference is null"); + return ; + } + arg3 = *(libtorrent::entry **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::entry const & reference is null"); + return ; + } + { + try { + (arg1)->dht_direct_request((libtorrent::udp::endpoint const &)*arg2,(libtorrent::entry const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1set_1ip_1filter(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::ip_filter *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::ip_filter **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::ip_filter const & reference is null"); + return ; + } + { + try { + (arg1)->set_ip_filter((libtorrent::ip_filter const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1get_1ip_1filter(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::ip_filter result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + result = ((libtorrent::session_handle const *)arg1)->get_ip_filter(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::ip_filter **)&jresult = new libtorrent::ip_filter((const libtorrent::ip_filter &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1set_1port_1filter(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::port_filter *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::port_filter **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::port_filter const & reference is null"); + return ; + } + { + try { + (arg1)->set_port_filter((libtorrent::port_filter const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1global_1peer_1class_1id_1get(JNIEnv *jenv, jclass jcls) { + int jresult = 0 ; + peer_class_t result; + + (void)jenv; + (void)jcls; + result = libtorrent::session_handle::global_peer_class_id; + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1tcp_1peer_1class_1id_1get(JNIEnv *jenv, jclass jcls) { + int jresult = 0 ; + peer_class_t result; + + (void)jenv; + (void)jcls; + result = libtorrent::session_handle::tcp_peer_class_id; + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1local_1peer_1class_1id_1get(JNIEnv *jenv, jclass jcls) { + int jresult = 0 ; + peer_class_t result; + + (void)jenv; + (void)jcls; + result = libtorrent::session_handle::local_peer_class_id; + { + jresult = static_cast(static_cast(result)); + } + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1listen_1port(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + unsigned short result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + result = (unsigned short)((libtorrent::session_handle const *)arg1)->listen_port(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1ssl_1listen_1port(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + unsigned short result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + result = (unsigned short)((libtorrent::session_handle const *)arg1)->ssl_listen_port(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1is_1listening(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::session_handle const *)arg1)->is_listening(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1set_1peer_1class_1filter(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::ip_filter *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::ip_filter **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::ip_filter const & reference is null"); + return ; + } + { + try { + (arg1)->set_peer_class_filter((libtorrent::ip_filter const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1get_1peer_1class_1filter(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::ip_filter result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + result = ((libtorrent::session_handle const *)arg1)->get_peer_class_filter(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::ip_filter **)&jresult = new libtorrent::ip_filter((const libtorrent::ip_filter &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1set_1peer_1class_1type_1filter(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::peer_class_type_filter *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::peer_class_type_filter **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::peer_class_type_filter const & reference is null"); + return ; + } + { + try { + (arg1)->set_peer_class_type_filter((libtorrent::peer_class_type_filter const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1get_1peer_1class_1type_1filter(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::peer_class_type_filter result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + result = ((libtorrent::session_handle const *)arg1)->get_peer_class_type_filter(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_class_type_filter **)&jresult = new libtorrent::peer_class_type_filter((const libtorrent::peer_class_type_filter &)result); + return jresult; +} + + +SWIGEXPORT int JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1create_1peer_1class(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + int jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + char *arg2 = (char *) 0 ; + peer_class_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return 0; + } + { + try { + result = (arg1)->create_peer_class((char const *)arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + { + jresult = static_cast(static_cast(result)); + } + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1delete_1peer_1class(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + peer_class_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + arg2 = peer_class_t(static_cast(jarg2)); + } + { + try { + (arg1)->delete_peer_class(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1get_1peer_1class(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jlong jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + peer_class_t arg2 ; + libtorrent::peer_class_info result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + arg2 = peer_class_t(static_cast(jarg2)); + } + { + try { + result = ((libtorrent::session_handle const *)arg1)->get_peer_class(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_class_info **)&jresult = new libtorrent::peer_class_info((const libtorrent::peer_class_info &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1set_1peer_1class(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2, jlong jarg3, jobject jarg3_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + peer_class_t arg2 ; + libtorrent::peer_class_info *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + arg2 = peer_class_t(static_cast(jarg2)); + } + arg3 = *(libtorrent::peer_class_info **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::peer_class_info const & reference is null"); + return ; + } + { + try { + (arg1)->set_peer_class(arg2,(libtorrent::peer_class_info const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1delete_1files_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::remove_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::remove_flags_tag > *)&libtorrent::session_handle::delete_files; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::remove_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1delete_1partfile_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::remove_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::remove_flags_tag > *)&libtorrent::session_handle::delete_partfile; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::remove_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1paused_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::session_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::session_flags_tag > *)&libtorrent::session_handle::paused; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::session_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1remove_1torrent_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::torrent_handle *arg2 = 0 ; + libtorrent::remove_flags_t arg3 ; + libtorrent::remove_flags_t *argp3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::torrent_handle **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::torrent_handle const & reference is null"); + return ; + } + argp3 = *(libtorrent::remove_flags_t **)&jarg3; + if (!argp3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::remove_flags_t"); + return ; + } + arg3 = *argp3; + { + try { + (arg1)->remove_torrent((libtorrent::torrent_handle const &)*arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1remove_1torrent_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::torrent_handle *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::torrent_handle **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::torrent_handle const & reference is null"); + return ; + } + { + try { + (arg1)->remove_torrent((libtorrent::torrent_handle const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1apply_1settings(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::settings_pack *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::settings_pack **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::settings_pack const & reference is null"); + return ; + } + { + try { + (arg1)->apply_settings((libtorrent::settings_pack const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1get_1settings(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::settings_pack result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + result = ((libtorrent::session_handle const *)arg1)->get_settings(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::settings_pack **)&jresult = new libtorrent::settings_pack((const libtorrent::settings_pack &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1pop_1alerts(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + std::vector< libtorrent::alert * > *arg2 = (std::vector< libtorrent::alert * > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(std::vector< libtorrent::alert * > **)&jarg2; + { + try { + (arg1)->pop_alerts(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1udp_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + enum libtorrent::portmap_protocol result; + + (void)jenv; + (void)jcls; + result = (enum libtorrent::portmap_protocol)libtorrent::session_handle::udp; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1tcp_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + enum libtorrent::portmap_protocol result; + + (void)jenv; + (void)jcls; + result = (enum libtorrent::portmap_protocol)libtorrent::session_handle::tcp; + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1add_1port_1mapping(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3, jint jarg4) { + jlong jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::portmap_protocol arg2 ; + int arg3 ; + int arg4 ; + std::vector< port_mapping_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = (libtorrent::portmap_protocol)jarg2; + arg3 = (int)jarg3; + arg4 = (int)jarg4; + { + try { + result = (arg1)->add_port_mapping(arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< port_mapping_t > **)&jresult = new std::vector< port_mapping_t >((const std::vector< port_mapping_t > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1delete_1port_1mapping(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + port_mapping_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + arg2 = port_mapping_t(static_cast(jarg2)); + } + { + try { + (arg1)->delete_port_mapping(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1reopen_1map_1ports_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned char,libtorrent::reopen_network_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned char,libtorrent::reopen_network_flags_tag > *)&libtorrent::session_handle::reopen_map_ports; + *(libtorrent::flags::bitfield_flag< unsigned char,libtorrent::reopen_network_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1reopen_1network_1sockets_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::reopen_network_flags_t arg2 ; + libtorrent::reopen_network_flags_t *argp2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + argp2 = *(libtorrent::reopen_network_flags_t **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::reopen_network_flags_t"); + return ; + } + arg2 = *argp2; + { + try { + (arg1)->reopen_network_sockets(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1reopen_1network_1sockets_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + (arg1)->reopen_network_sockets(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1dht_1get_1item_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + std::vector< int8_t > *arg2 = 0 ; + std::vector< int8_t > *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(std::vector< int8_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return ; + } + arg3 = *(std::vector< int8_t > **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return ; + } + { + try { + libtorrent_session_handle_dht_get_item__SWIG_1(arg1,*arg2,*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1dht_1put_1item_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_, jlong jarg4, jobject jarg4_, jlong jarg5, jobject jarg5_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + std::vector< int8_t > *arg2 = 0 ; + std::vector< int8_t > *arg3 = 0 ; + libtorrent::entry *arg4 = 0 ; + std::vector< int8_t > *arg5 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + (void)jarg4_; + (void)jarg5_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(std::vector< int8_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return ; + } + arg3 = *(std::vector< int8_t > **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return ; + } + arg4 = *(libtorrent::entry **)&jarg4; + if (!arg4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::entry & reference is null"); + return ; + } + arg5 = *(std::vector< int8_t > **)&jarg5; + if (!arg5) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return ; + } + { + try { + libtorrent_session_handle_dht_put_item__SWIG_1(arg1,*arg2,*arg3,*arg4,*arg5); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1dht_1direct_1request_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_, jlong jarg4) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + libtorrent::udp::endpoint *arg2 = 0 ; + libtorrent::entry *arg3 = 0 ; + int64_t arg4 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(libtorrent::udp::endpoint **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::udp::endpoint const & reference is null"); + return ; + } + arg3 = *(libtorrent::entry **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::entry const & reference is null"); + return ; + } + arg4 = (int64_t)jarg4; + { + try { + libtorrent_session_handle_dht_direct_request__SWIG_1(arg1,(libtorrent::udp::endpoint const &)*arg2,(libtorrent::entry const &)*arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1wait_1for_1alert_1ms(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + jlong jresult = 0 ; + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + int64_t arg2 ; + libtorrent::alert *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = (int64_t)jarg2; + { + try { + result = (libtorrent::alert *)libtorrent_session_handle_wait_for_alert_ms(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::alert **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1set_1alert_1notify_1callback(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + alert_notify_callback *arg2 = (alert_notify_callback *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(alert_notify_callback **)&jarg2; + { + try { + libtorrent_session_handle_set_alert_notify_callback(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1handle_1add_1extension(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + swig_plugin *arg2 = (swig_plugin *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_handle **)&jarg1; + arg2 = *(swig_plugin **)&jarg2; + { + try { + libtorrent_session_handle_add_extension(arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1session_1handle(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::session_handle *arg1 = (libtorrent::session_handle *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::session_handle **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1state_1nids_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht::dht_state *arg1 = (libtorrent::dht::dht_state *) 0 ; + libtorrent::dht::node_ids_t *arg2 = (libtorrent::dht::node_ids_t *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht::dht_state **)&jarg1; + arg2 = *(libtorrent::dht::node_ids_t **)&jarg2; + if (arg1) (arg1)->nids = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1state_1nids_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht::dht_state *arg1 = (libtorrent::dht::dht_state *) 0 ; + libtorrent::dht::node_ids_t *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_state **)&jarg1; + result = (libtorrent::dht::node_ids_t *)& ((arg1)->nids); + *(libtorrent::dht::node_ids_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1state_1nodes_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht::dht_state *arg1 = (libtorrent::dht::dht_state *) 0 ; + std::vector< libtorrent::udp::endpoint > *arg2 = (std::vector< libtorrent::udp::endpoint > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht::dht_state **)&jarg1; + arg2 = *(std::vector< libtorrent::udp::endpoint > **)&jarg2; + if (arg1) (arg1)->nodes = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1state_1nodes_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht::dht_state *arg1 = (libtorrent::dht::dht_state *) 0 ; + std::vector< libtorrent::udp::endpoint > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_state **)&jarg1; + result = (std::vector< libtorrent::udp::endpoint > *)& ((arg1)->nodes); + *(std::vector< libtorrent::udp::endpoint > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1state_1nodes6_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::dht::dht_state *arg1 = (libtorrent::dht::dht_state *) 0 ; + std::vector< libtorrent::udp::endpoint > *arg2 = (std::vector< libtorrent::udp::endpoint > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::dht::dht_state **)&jarg1; + arg2 = *(std::vector< libtorrent::udp::endpoint > **)&jarg2; + if (arg1) (arg1)->nodes6 = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1state_1nodes6_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::dht::dht_state *arg1 = (libtorrent::dht::dht_state *) 0 ; + std::vector< libtorrent::udp::endpoint > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_state **)&jarg1; + result = (std::vector< libtorrent::udp::endpoint > *)& ((arg1)->nodes6); + *(std::vector< libtorrent::udp::endpoint > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1state_1clear(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::dht::dht_state *arg1 = (libtorrent::dht::dht_state *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_state **)&jarg1; + { + try { + (arg1)->clear(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1dht_1state(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::dht::dht_state *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::dht::dht_state *)new libtorrent::dht::dht_state(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht::dht_state **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1state(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht::dht_state *arg1 = (libtorrent::dht::dht_state *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht::dht_state **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1max_1peers_1reply_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->max_peers_reply = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1max_1peers_1reply_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (int) ((arg1)->max_peers_reply); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1search_1branching_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->search_branching = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1search_1branching_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (int) ((arg1)->search_branching); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1max_1fail_1count_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->max_fail_count = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1max_1fail_1count_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (int) ((arg1)->max_fail_count); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1max_1torrents_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->max_torrents = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1max_1torrents_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (int) ((arg1)->max_torrents); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1max_1dht_1items_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->max_dht_items = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1max_1dht_1items_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (int) ((arg1)->max_dht_items); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1max_1peers_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->max_peers = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1max_1peers_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (int) ((arg1)->max_peers); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1max_1torrent_1search_1reply_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->max_torrent_search_reply = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1max_1torrent_1search_1reply_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (int) ((arg1)->max_torrent_search_reply); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1restrict_1routing_1ips_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->restrict_routing_ips = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1restrict_1routing_1ips_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (bool) ((arg1)->restrict_routing_ips); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1restrict_1search_1ips_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->restrict_search_ips = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1restrict_1search_1ips_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (bool) ((arg1)->restrict_search_ips); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1extended_1routing_1table_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->extended_routing_table = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1extended_1routing_1table_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (bool) ((arg1)->extended_routing_table); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1aggressive_1lookups_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->aggressive_lookups = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1aggressive_1lookups_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (bool) ((arg1)->aggressive_lookups); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1privacy_1lookups_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->privacy_lookups = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1privacy_1lookups_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (bool) ((arg1)->privacy_lookups); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1enforce_1node_1id_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->enforce_node_id = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1enforce_1node_1id_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (bool) ((arg1)->enforce_node_id); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1ignore_1dark_1internet_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->ignore_dark_internet = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1ignore_1dark_1internet_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (bool) ((arg1)->ignore_dark_internet); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1block_1timeout_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->block_timeout = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1block_1timeout_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (int) ((arg1)->block_timeout); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1block_1ratelimit_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->block_ratelimit = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1block_1ratelimit_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (int) ((arg1)->block_ratelimit); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1read_1only_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->read_only = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1read_1only_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (bool) ((arg1)->read_only); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1item_1lifetime_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->item_lifetime = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1item_1lifetime_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (int) ((arg1)->item_lifetime); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1upload_1rate_1limit_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->upload_rate_limit = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1upload_1rate_1limit_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (int) ((arg1)->upload_rate_limit); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1sample_1infohashes_1interval_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->sample_infohashes_interval = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1sample_1infohashes_1interval_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (int) ((arg1)->sample_infohashes_interval); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1max_1infohashes_1sample_1count_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->max_infohashes_sample_count = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1settings_1max_1infohashes_1sample_1count_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + result = (int) ((arg1)->max_infohashes_sample_count); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1dht_1settings(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::dht::dht_settings *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::dht::dht_settings *)new libtorrent::dht::dht_settings(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht::dht_settings **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1dht_1settings(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht::dht_settings *arg1 = (libtorrent::dht::dht_settings *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht::dht_settings **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1prefer_1verified_1node_1ids_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::dht::settings *arg1 = (libtorrent::dht::settings *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::settings **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->prefer_verified_node_ids = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1prefer_1verified_1node_1ids_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::dht::settings *arg1 = (libtorrent::dht::settings *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::dht::settings **)&jarg1; + result = (bool) ((arg1)->prefer_verified_node_ids); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1settings(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::dht::settings *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::dht::settings *)new libtorrent::dht::settings(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::dht::settings **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1settings(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::dht::settings *arg1 = (libtorrent::dht::settings *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::dht::settings **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_min_1memory_1usage(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::settings_pack result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::min_memory_usage(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::settings_pack **)&jresult = new libtorrent::settings_pack((const libtorrent::settings_pack &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_high_1performance_1seed(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::settings_pack result; + + (void)jenv; + (void)jcls; + { + try { + result = libtorrent::high_performance_seed(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::settings_pack **)&jresult = new libtorrent::settings_pack((const libtorrent::settings_pack &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1session_1proxy_1_1SWIG_10(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::session_proxy *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::session_proxy *)new libtorrent::session_proxy(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session_proxy **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1session_1proxy(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::session_proxy *arg1 = (libtorrent::session_proxy *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::session_proxy **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1session_1proxy_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_proxy *arg1 = 0 ; + libtorrent::session_proxy *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_proxy **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::session_proxy const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::session_proxy *)new libtorrent::session_proxy((libtorrent::session_proxy const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session_proxy **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1session_1params_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::settings_pack *arg1 = 0 ; + libtorrent::session_params *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::settings_pack **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::settings_pack const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::session_params *)new libtorrent::session_params((libtorrent::settings_pack const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session_params **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1session_1params_1_1SWIG_11(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::session_params *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::session_params *)new libtorrent::session_params(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session_params **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1session_1params_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_params *arg1 = 0 ; + libtorrent::session_params *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_params **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::session_params const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::session_params *)new libtorrent::session_params((libtorrent::session_params const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session_params **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1params_1settings_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_params *arg1 = (libtorrent::session_params *) 0 ; + libtorrent::settings_pack *arg2 = (libtorrent::settings_pack *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_params **)&jarg1; + arg2 = *(libtorrent::settings_pack **)&jarg2; + if (arg1) (arg1)->settings = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1params_1settings_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_params *arg1 = (libtorrent::session_params *) 0 ; + libtorrent::settings_pack *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_params **)&jarg1; + result = (libtorrent::settings_pack *)& ((arg1)->settings); + *(libtorrent::settings_pack **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1params_1dht_1settings_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_params *arg1 = (libtorrent::session_params *) 0 ; + libtorrent::dht::dht_settings *arg2 = (libtorrent::dht::dht_settings *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_params **)&jarg1; + arg2 = *(libtorrent::dht::dht_settings **)&jarg2; + if (arg1) (arg1)->dht_settings = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1params_1dht_1settings_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_params *arg1 = (libtorrent::session_params *) 0 ; + libtorrent::dht::dht_settings *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_params **)&jarg1; + result = (libtorrent::dht::dht_settings *)& ((arg1)->dht_settings); + *(libtorrent::dht::dht_settings **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1params_1dht_1state_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::session_params *arg1 = (libtorrent::session_params *) 0 ; + libtorrent::dht::dht_state *arg2 = (libtorrent::dht::dht_state *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_params **)&jarg1; + arg2 = *(libtorrent::dht::dht_state **)&jarg2; + if (arg1) (arg1)->dht_state = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1params_1dht_1state_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_params *arg1 = (libtorrent::session_params *) 0 ; + libtorrent::dht::dht_state *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_params **)&jarg1; + result = (libtorrent::dht::dht_state *)& ((arg1)->dht_state); + *(libtorrent::dht::dht_state **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1session_1params(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::session_params *arg1 = (libtorrent::session_params *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::session_params **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_read_1session_1params_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = 0 ; + libtorrent::save_state_flags_t arg2 ; + libtorrent::save_state_flags_t *argp2 ; + libtorrent::session_params result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::bdecode_node const & reference is null"); + return 0; + } + argp2 = *(libtorrent::save_state_flags_t **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::save_state_flags_t"); + return 0; + } + arg2 = *argp2; + { + try { + result = libtorrent::read_session_params((libtorrent::bdecode_node const &)*arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session_params **)&jresult = new libtorrent::session_params((const libtorrent::session_params &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_read_1session_1params_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::bdecode_node *arg1 = 0 ; + libtorrent::session_params result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bdecode_node **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::bdecode_node const & reference is null"); + return 0; + } + { + try { + result = libtorrent::read_session_params((libtorrent::bdecode_node const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session_params **)&jresult = new libtorrent::session_params((const libtorrent::session_params &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1session_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session_params *arg1 = 0 ; + libtorrent::session *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session_params **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::session_params const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::session *)new libtorrent::session((libtorrent::session_params const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1session_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::session_params *arg1 = 0 ; + libtorrent::session_flags_t arg2 ; + libtorrent::session_flags_t const *argp2 ; + libtorrent::session *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::session_params **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::session_params const & reference is null"); + return 0; + } + argp2 = *(libtorrent::session_flags_t **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::session_flags_t const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (libtorrent::session *)new libtorrent::session((libtorrent::session_params const &)*arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1session_1_1SWIG_13(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::session *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (libtorrent::session *)new libtorrent::session(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1session_1_1SWIG_14(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + libtorrent::settings_pack *arg1 = 0 ; + libtorrent::session_flags_t arg2 ; + libtorrent::session_flags_t const *argp2 ; + libtorrent::session *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::settings_pack **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::settings_pack const & reference is null"); + return 0; + } + argp2 = *(libtorrent::session_flags_t **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::session_flags_t const"); + return 0; + } + arg2 = *argp2; + { + try { + result = (libtorrent::session *)new libtorrent::session((libtorrent::settings_pack const &)*arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1session_1_1SWIG_15(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::settings_pack *arg1 = 0 ; + libtorrent::session *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::settings_pack **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::settings_pack const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::session *)new libtorrent::session((libtorrent::settings_pack const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1session_1_1SWIG_16(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session *arg1 = 0 ; + libtorrent::session *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::session && reference is null"); + return 0; + } + { + try { + result = (libtorrent::session *)new libtorrent::session((libtorrent::session &&)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1session(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::session *arg1 = (libtorrent::session *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::session **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1abort(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session *arg1 = (libtorrent::session *) 0 ; + libtorrent::session_proxy result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session **)&jarg1; + { + try { + result = (arg1)->abort(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::session_proxy **)&jresult = new libtorrent::session_proxy((const libtorrent::session_proxy &)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1type(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + libtorrent::connection_type result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (libtorrent::connection_type)((libtorrent::peer_connection_handle const *)arg1)->type(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1is_1seed(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->is_seed(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1upload_1only(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->upload_only(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1pid(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + libtorrent::peer_id *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (libtorrent::peer_id *) &((libtorrent::peer_connection_handle const *)arg1)->pid(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::peer_id **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1has_1piece(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + piece_index_t arg2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->has_piece(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1is_1interesting(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->is_interesting(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1is_1choked(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->is_choked(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1is_1peer_1interested(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->is_peer_interested(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1has_1peer_1choked(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->has_peer_choked(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1choke_1this_1peer(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + (arg1)->choke_this_peer(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1maybe_1unchoke_1this_1peer(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + (arg1)->maybe_unchoke_this_peer(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1get_1peer_1info(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + libtorrent::peer_info *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + arg2 = *(libtorrent::peer_info **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::peer_info & reference is null"); + return ; + } + { + try { + ((libtorrent::peer_connection_handle const *)arg1)->get_peer_info(*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1associated_1torrent(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + libtorrent::torrent_handle result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = ((libtorrent::peer_connection_handle const *)arg1)->associated_torrent(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::torrent_handle **)&jresult = new libtorrent::torrent_handle((const libtorrent::torrent_handle &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1remote(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + libtorrent::tcp::endpoint *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (libtorrent::tcp::endpoint *) &((libtorrent::peer_connection_handle const *)arg1)->remote(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::tcp::endpoint **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1local_1endpoint(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + libtorrent::tcp::endpoint result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = ((libtorrent::peer_connection_handle const *)arg1)->local_endpoint(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::tcp::endpoint **)&jresult = new libtorrent::tcp::endpoint((const libtorrent::tcp::endpoint &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1disconnect_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jint jarg3, int jarg4) { + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + libtorrent::error_code *arg2 = 0 ; + libtorrent::operation_t arg3 ; + disconnect_severity_t arg4 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + arg2 = *(libtorrent::error_code **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::error_code const & reference is null"); + return ; + } + arg3 = (libtorrent::operation_t)jarg3; + { + arg4 = disconnect_severity_t(static_cast(jarg4)); + } + { + try { + (arg1)->disconnect((libtorrent::error_code const &)*arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1disconnect_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jint jarg3) { + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + libtorrent::error_code *arg2 = 0 ; + libtorrent::operation_t arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + arg2 = *(libtorrent::error_code **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::error_code const & reference is null"); + return ; + } + arg3 = (libtorrent::operation_t)jarg3; + { + try { + (arg1)->disconnect((libtorrent::error_code const &)*arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1is_1disconnecting(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->is_disconnecting(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1is_1connecting(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->is_connecting(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1is_1outgoing(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->is_outgoing(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1on_1local_1network(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->on_local_network(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1ignore_1unchoke_1slots(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->ignore_unchoke_slots(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1failed(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->failed(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1can_1disconnect(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + libtorrent::error_code *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + arg2 = *(libtorrent::error_code **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::error_code const & reference is null"); + return 0; + } + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->can_disconnect((libtorrent::error_code const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1has_1metadata(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->has_metadata(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1in_1handshake(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->in_handshake(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1send_1buffer(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3) { + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + char *arg2 = (char *) 0 ; + int arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return ; + } + arg3 = (int)jarg3; + { + try { + (arg1)->send_buffer((char const *)arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1last_1seen_1complete(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + std::time_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = ((libtorrent::peer_connection_handle const *)arg1)->last_seen_complete(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1op_1eq(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + libtorrent::peer_connection_handle *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + arg2 = *(libtorrent::peer_connection_handle **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::peer_connection_handle const & reference is null"); + return 0; + } + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->operator ==((libtorrent::peer_connection_handle const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1op_1ne(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + libtorrent::peer_connection_handle *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + arg2 = *(libtorrent::peer_connection_handle **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::peer_connection_handle const & reference is null"); + return 0; + } + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->operator !=((libtorrent::peer_connection_handle const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1op_1lt(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jboolean jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + libtorrent::peer_connection_handle *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + arg2 = *(libtorrent::peer_connection_handle **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::peer_connection_handle const & reference is null"); + return 0; + } + { + try { + result = (bool)((libtorrent::peer_connection_handle const *)arg1)->operator <((libtorrent::peer_connection_handle const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connection_1handle_1get_1time_1of_1last_1unchoke(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + result = (int64_t)libtorrent_peer_connection_handle_get_time_of_last_unchoke(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1peer_1connection_1handle(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::peer_connection_handle *arg1 = (libtorrent::peer_connection_handle *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::peer_connection_handle **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1bt_1peer_1connection_1handle(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + SwigValueWrapper< libtorrent::peer_connection_handle > arg1 ; + libtorrent::peer_connection_handle *argp1 ; + libtorrent::bt_peer_connection_handle *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + argp1 = *(libtorrent::peer_connection_handle **)&jarg1; + if (!argp1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::peer_connection_handle"); + return 0; + } + arg1 = *argp1; + { + try { + result = (libtorrent::bt_peer_connection_handle *)new libtorrent::bt_peer_connection_handle(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::bt_peer_connection_handle **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bt_1peer_1connection_1handle_1packet_1finished(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::bt_peer_connection_handle *arg1 = (libtorrent::bt_peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bt_peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::bt_peer_connection_handle const *)arg1)->packet_finished(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bt_1peer_1connection_1handle_1support_1extensions(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::bt_peer_connection_handle *arg1 = (libtorrent::bt_peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bt_peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::bt_peer_connection_handle const *)arg1)->support_extensions(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bt_1peer_1connection_1handle_1supports_1encryption(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::bt_peer_connection_handle *arg1 = (libtorrent::bt_peer_connection_handle *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::bt_peer_connection_handle **)&jarg1; + { + try { + result = (bool)((libtorrent::bt_peer_connection_handle const *)arg1)->supports_encryption(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1bt_1peer_1connection_1handle(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::bt_peer_connection_handle *arg1 = (libtorrent::bt_peer_connection_handle *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::bt_peer_connection_handle **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_make_1magnet_1uri_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_handle *arg1 = 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_handle **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::torrent_handle const & reference is null"); + return 0; + } + { + try { + result = libtorrent::make_magnet_uri((libtorrent::torrent_handle const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_make_1magnet_1uri_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + libtorrent::torrent_info *arg1 = 0 ; + std::string result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::torrent_info const & reference is null"); + return 0; + } + { + try { + result = libtorrent::make_magnet_uri((libtorrent::torrent_info const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1optimize_1alignment_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::create_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::create_flags_tag > *)&libtorrent::create_torrent::optimize_alignment; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::create_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1merkle_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::create_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::create_flags_tag > *)&libtorrent::create_torrent::merkle; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::create_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1modification_1time_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::create_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::create_flags_tag > *)&libtorrent::create_torrent::modification_time; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::create_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1symlinks_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::create_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::create_flags_tag > *)&libtorrent::create_torrent::symlinks; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::create_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1mutable_1torrent_1support_1get(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + libtorrent::flags::bitfield_flag< unsigned int,libtorrent::create_flags_tag > *result = 0 ; + + (void)jenv; + (void)jcls; + result = (libtorrent::flags::bitfield_flag< unsigned int,libtorrent::create_flags_tag > *)&libtorrent::create_torrent::mutable_torrent_support; + *(libtorrent::flags::bitfield_flag< unsigned int,libtorrent::create_flags_tag > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1create_1torrent_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3, jlong jarg4, jobject jarg4_, jint jarg5) { + jlong jresult = 0 ; + libtorrent::file_storage *arg1 = 0 ; + int arg2 ; + int arg3 ; + libtorrent::create_flags_t arg4 ; + int arg5 ; + libtorrent::create_flags_t *argp4 ; + libtorrent::create_torrent *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg4_; + arg1 = *(libtorrent::file_storage **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::file_storage & reference is null"); + return 0; + } + arg2 = (int)jarg2; + arg3 = (int)jarg3; + argp4 = *(libtorrent::create_flags_t **)&jarg4; + if (!argp4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::create_flags_t"); + return 0; + } + arg4 = *argp4; + arg5 = (int)jarg5; + { + try { + result = (libtorrent::create_torrent *)new libtorrent::create_torrent(*arg1,arg2,arg3,arg4,arg5); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::create_torrent **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1create_1torrent_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3, jlong jarg4, jobject jarg4_) { + jlong jresult = 0 ; + libtorrent::file_storage *arg1 = 0 ; + int arg2 ; + int arg3 ; + libtorrent::create_flags_t arg4 ; + libtorrent::create_flags_t *argp4 ; + libtorrent::create_torrent *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg4_; + arg1 = *(libtorrent::file_storage **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::file_storage & reference is null"); + return 0; + } + arg2 = (int)jarg2; + arg3 = (int)jarg3; + argp4 = *(libtorrent::create_flags_t **)&jarg4; + if (!argp4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::create_flags_t"); + return 0; + } + arg4 = *argp4; + { + try { + result = (libtorrent::create_torrent *)new libtorrent::create_torrent(*arg1,arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::create_torrent **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1create_1torrent_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3) { + jlong jresult = 0 ; + libtorrent::file_storage *arg1 = 0 ; + int arg2 ; + int arg3 ; + libtorrent::create_torrent *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::file_storage & reference is null"); + return 0; + } + arg2 = (int)jarg2; + arg3 = (int)jarg3; + { + try { + result = (libtorrent::create_torrent *)new libtorrent::create_torrent(*arg1,arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::create_torrent **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1create_1torrent_1_1SWIG_13(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + jlong jresult = 0 ; + libtorrent::file_storage *arg1 = 0 ; + int arg2 ; + libtorrent::create_torrent *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::file_storage & reference is null"); + return 0; + } + arg2 = (int)jarg2; + { + try { + result = (libtorrent::create_torrent *)new libtorrent::create_torrent(*arg1,arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::create_torrent **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1create_1torrent_1_1SWIG_14(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::file_storage *arg1 = 0 ; + libtorrent::create_torrent *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::file_storage & reference is null"); + return 0; + } + { + try { + result = (libtorrent::create_torrent *)new libtorrent::create_torrent(*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::create_torrent **)&jresult = result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1create_1torrent_1_1SWIG_15(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::torrent_info *arg1 = 0 ; + libtorrent::create_torrent *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::torrent_info **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::torrent_info const & reference is null"); + return 0; + } + { + try { + result = (libtorrent::create_torrent *)new libtorrent::create_torrent((libtorrent::torrent_info const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::create_torrent **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1create_1torrent(JNIEnv *jenv, jclass jcls, jlong jarg1) { + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(libtorrent::create_torrent **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1generate(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + libtorrent::entry result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + { + try { + result = ((libtorrent::create_torrent const *)arg1)->generate(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::entry **)&jresult = new libtorrent::entry((const libtorrent::entry &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1files(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + libtorrent::file_storage *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + { + try { + result = (libtorrent::file_storage *) &((libtorrent::create_torrent const *)arg1)->files(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::file_storage **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1set_1comment(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + char *arg2 = (char *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return ; + } + { + try { + (arg1)->set_comment((char const *)arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1set_1creator(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + char *arg2 = (char *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return ; + } + { + try { + (arg1)->set_creator((char const *)arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1set_1hash(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2, jlong jarg3, jobject jarg3_) { + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + piece_index_t arg2 ; + libtorrent::sha1_hash *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + arg3 = *(libtorrent::sha1_hash **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return ; + } + { + try { + (arg1)->set_hash(arg2,(libtorrent::sha1_hash const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1set_1file_1hash(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2, jlong jarg3, jobject jarg3_) { + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + file_index_t arg2 ; + libtorrent::sha1_hash *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + { + arg2 = file_index_t(static_cast(jarg2)); + } + arg3 = *(libtorrent::sha1_hash **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::sha1_hash const & reference is null"); + return ; + } + { + try { + (arg1)->set_file_hash(arg2,(libtorrent::sha1_hash const &)*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1add_1node(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + std::pair< std::string,int > arg2 ; + std::pair< std::string,int > *argp2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + argp2 = *(std::pair< std::string,int > **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null std::pair< std::string,int >"); + return ; + } + arg2 = *argp2; + { + try { + (arg1)->add_node(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1set_1priv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + arg2 = jarg2 ? true : false; + { + try { + (arg1)->set_priv(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1priv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + { + try { + result = (bool)((libtorrent::create_torrent const *)arg1)->priv(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1num_1pieces(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + { + try { + result = (int)((libtorrent::create_torrent const *)arg1)->num_pieces(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1piece_1length(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + { + try { + result = (int)((libtorrent::create_torrent const *)arg1)->piece_length(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1piece_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, int jarg2) { + jint jresult = 0 ; + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + piece_index_t arg2 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + { + arg2 = piece_index_t(static_cast(jarg2)); + } + { + try { + result = (int)((libtorrent::create_torrent const *)arg1)->piece_size(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1merkle_1tree(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + std::vector< libtorrent::sha1_hash > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + { + try { + result = (std::vector< libtorrent::sha1_hash > *) &((libtorrent::create_torrent const *)arg1)->merkle_tree(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< libtorrent::sha1_hash > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1add_1similar_1torrent(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + libtorrent::sha1_hash arg2 ; + libtorrent::sha1_hash *argp2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + argp2 = *(libtorrent::sha1_hash **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::sha1_hash"); + return ; + } + arg2 = *argp2; + { + try { + (arg1)->add_similar_torrent(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1add_1url_1seed(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + libtorrent_create_torrent_add_url_seed(arg1,(std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1add_1http_1seed(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + libtorrent_create_torrent_add_http_seed(arg1,(std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1add_1tracker(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3) { + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + std::string *arg2 = 0 ; + int arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + arg3 = (int)jarg3; + { + try { + libtorrent_create_torrent_add_tracker(arg1,(std::string const &)*arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1add_1collection(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + libtorrent_create_torrent_add_collection(arg1,(std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_create_1torrent_1set_1root_1cert2(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + libtorrent::create_torrent *arg1 = (libtorrent::create_torrent *) 0 ; + std::vector< int8_t > *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + arg2 = *(std::vector< int8_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > const & reference is null"); + return ; + } + { + try { + libtorrent_create_torrent_set_root_cert2(arg1,(std::vector< signed char > const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1files_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3, jobject jarg3_) { + libtorrent::file_storage *arg1 = 0 ; + std::string *arg2 = 0 ; + libtorrent::create_flags_t arg3 ; + libtorrent::create_flags_t *argp3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(libtorrent::file_storage **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::file_storage & reference is null"); + return ; + } + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + argp3 = *(libtorrent::create_flags_t **)&jarg3; + if (!argp3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::create_flags_t"); + return ; + } + arg3 = *argp3; + { + try { + libtorrent::add_files(*arg1,(std::string const &)*arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1files_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + libtorrent::file_storage *arg1 = 0 ; + std::string *arg2 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::file_storage **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::file_storage & reference is null"); + return ; + } + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + libtorrent::add_files(*arg1,(std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_set_1piece_1hashes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3, jobject jarg3_) { + libtorrent::create_torrent *arg1 = 0 ; + std::string *arg2 = 0 ; + libtorrent::error_code *arg3 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::create_torrent & reference is null"); + return ; + } + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + arg3 = *(libtorrent::error_code **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::error_code & reference is null"); + return ; + } + { + try { + libtorrent::set_piece_hashes(*arg1,(std::string const &)*arg2,*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_generate_1fingerprint(JNIEnv *jenv, jclass jcls, jstring jarg1, jint jarg2, jint jarg3, jint jarg4, jint jarg5) { + jstring jresult = 0 ; + std::string arg1 ; + int arg2 ; + int arg3 ; + int arg4 ; + int arg5 ; + std::string result; + + (void)jenv; + (void)jcls; + if(!jarg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(jarg1, 0); + if (!arg1_pstr) return 0; + (&arg1)->assign(arg1_pstr); + jenv->ReleaseStringUTFChars(jarg1, arg1_pstr); + arg2 = (int)jarg2; + arg3 = (int)jarg3; + arg4 = (int)jarg4; + arg5 = (int)jarg5; + { + try { + result = libtorrent::generate_fingerprint(arg1,arg2,arg3,arg4,arg5); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ed25519_1create_1seed(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + { + try { + result = ed25519_create_seed(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ed25519_1create_1keypair(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + std::vector< int8_t > *arg1 = 0 ; + std::pair< std::vector< int8_t >,std::vector< int8_t > > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(std::vector< int8_t > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return 0; + } + { + try { + result = ed25519_create_keypair(*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::pair< std::vector< int8_t >,std::vector< int8_t > > **)&jresult = new std::pair< std::vector< int8_t >,std::vector< int8_t > >((const std::pair< std::vector< int8_t >,std::vector< int8_t > > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ed25519_1sign(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_) { + jlong jresult = 0 ; + std::vector< int8_t > *arg1 = 0 ; + std::vector< int8_t > *arg2 = 0 ; + std::vector< int8_t > *arg3 = 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + arg1 = *(std::vector< int8_t > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return 0; + } + arg2 = *(std::vector< int8_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return 0; + } + arg3 = *(std::vector< int8_t > **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return 0; + } + { + try { + result = ed25519_sign(*arg1,*arg2,*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ed25519_1verify(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_) { + jboolean jresult = 0 ; + std::vector< int8_t > *arg1 = 0 ; + std::vector< int8_t > *arg2 = 0 ; + std::vector< int8_t > *arg3 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + arg1 = *(std::vector< int8_t > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return 0; + } + arg2 = *(std::vector< int8_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return 0; + } + arg3 = *(std::vector< int8_t > **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return 0; + } + { + try { + result = (bool)ed25519_verify(*arg1,*arg2,*arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ed25519_1add_1scalar_1public(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + std::vector< int8_t > *arg1 = 0 ; + std::vector< int8_t > *arg2 = 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< int8_t > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return 0; + } + arg2 = *(std::vector< int8_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return 0; + } + { + try { + result = ed25519_add_scalar_public(*arg1,*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ed25519_1add_1scalar_1secret(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + std::vector< int8_t > *arg1 = 0 ; + std::vector< int8_t > *arg2 = 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< int8_t > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return 0; + } + arg2 = *(std::vector< int8_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return 0; + } + { + try { + result = ed25519_add_scalar_secret(*arg1,*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ed25519_1key_1exchange(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + std::vector< int8_t > *arg1 = 0 ; + std::vector< int8_t > *arg2 = 0 ; + std::vector< int8_t > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(std::vector< int8_t > **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return 0; + } + arg2 = *(std::vector< int8_t > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< int8_t > & reference is null"); + return 0; + } + { + try { + result = ed25519_key_exchange(*arg1,*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< int8_t > **)&jresult = new std::vector< int8_t >((const std::vector< int8_t > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1alert_1notify_1callback(JNIEnv *jenv, jclass jcls, jlong jarg1) { + alert_notify_callback *arg1 = (alert_notify_callback *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(alert_notify_callback **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1notify_1callback_1on_1alert(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + alert_notify_callback *arg1 = (alert_notify_callback *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(alert_notify_callback **)&jarg1; + { + try { + (arg1)->on_alert(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1notify_1callback_1on_1alertSwigExplicitalert_1notify_1callback(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + alert_notify_callback *arg1 = (alert_notify_callback *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(alert_notify_callback **)&jarg1; + { + try { + (arg1)->alert_notify_callback::on_alert(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1alert_1notify_1callback(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + alert_notify_callback *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (alert_notify_callback *)new SwigDirector_alert_notify_callback(jenv); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(alert_notify_callback **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1notify_1callback_1director_1connect(JNIEnv *jenv, jclass jcls, jobject jself, jlong objarg, jboolean jswig_mem_own, jboolean jweak_global) { + alert_notify_callback *obj = *((alert_notify_callback **)&objarg); + (void)jcls; + SwigDirector_alert_notify_callback *director = static_cast(obj); + director->swig_connect_director(jenv, jself, jenv->GetObjectClass(jself), (jswig_mem_own == JNI_TRUE), (jweak_global == JNI_TRUE)); +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alert_1notify_1callback_1change_1ownership(JNIEnv *jenv, jclass jcls, jobject jself, jlong objarg, jboolean jtake_or_release) { + alert_notify_callback *obj = *((alert_notify_callback **)&objarg); + SwigDirector_alert_notify_callback *director = static_cast(obj); + (void)jcls; + if (director) { + director->swig_java_change_ownership(jenv, jself, jtake_or_release ? true : false); + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1add_1files_1listener(JNIEnv *jenv, jclass jcls, jlong jarg1) { + add_files_listener *arg1 = (add_files_listener *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(add_files_listener **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1files_1listener_1pred(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jboolean jresult = 0 ; + add_files_listener *arg1 = (add_files_listener *) 0 ; + std::string *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(add_files_listener **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + result = (bool)(arg1)->pred((std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1files_1listener_1predSwigExplicitadd_1files_1listener(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jboolean jresult = 0 ; + add_files_listener *arg1 = (add_files_listener *) 0 ; + std::string *arg2 = 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(add_files_listener **)&jarg1; + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return 0; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + { + try { + result = (bool)(arg1)->add_files_listener::pred((std::string const &)*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1add_1files_1listener(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + add_files_listener *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (add_files_listener *)new SwigDirector_add_files_listener(jenv); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(add_files_listener **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1files_1listener_1director_1connect(JNIEnv *jenv, jclass jcls, jobject jself, jlong objarg, jboolean jswig_mem_own, jboolean jweak_global) { + add_files_listener *obj = *((add_files_listener **)&objarg); + (void)jcls; + SwigDirector_add_files_listener *director = static_cast(obj); + director->swig_connect_director(jenv, jself, jenv->GetObjectClass(jself), (jswig_mem_own == JNI_TRUE), (jweak_global == JNI_TRUE)); +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1files_1listener_1change_1ownership(JNIEnv *jenv, jclass jcls, jobject jself, jlong objarg, jboolean jtake_or_release) { + add_files_listener *obj = *((add_files_listener **)&objarg); + SwigDirector_add_files_listener *director = static_cast(obj); + (void)jcls; + if (director) { + director->swig_java_change_ownership(jenv, jself, jtake_or_release ? true : false); + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1files_1ex(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3, jobject jarg3_, jlong jarg4, jobject jarg4_) { + libtorrent::file_storage *arg1 = 0 ; + std::string *arg2 = 0 ; + add_files_listener *arg3 = (add_files_listener *) 0 ; + libtorrent::create_flags_t arg4 ; + libtorrent::create_flags_t *argp4 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + (void)jarg4_; + arg1 = *(libtorrent::file_storage **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::file_storage & reference is null"); + return ; + } + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + arg3 = *(add_files_listener **)&jarg3; + argp4 = *(libtorrent::create_flags_t **)&jarg4; + if (!argp4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::create_flags_t"); + return ; + } + arg4 = *argp4; + { + try { + add_files_ex(*arg1,(std::string const &)*arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1set_1piece_1hashes_1listener(JNIEnv *jenv, jclass jcls, jlong jarg1) { + set_piece_hashes_listener *arg1 = (set_piece_hashes_listener *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(set_piece_hashes_listener **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_set_1piece_1hashes_1listener_1progress(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + set_piece_hashes_listener *arg1 = (set_piece_hashes_listener *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(set_piece_hashes_listener **)&jarg1; + arg2 = (int)jarg2; + { + try { + (arg1)->progress(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_set_1piece_1hashes_1listener_1progressSwigExplicitset_1piece_1hashes_1listener(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + set_piece_hashes_listener *arg1 = (set_piece_hashes_listener *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(set_piece_hashes_listener **)&jarg1; + arg2 = (int)jarg2; + { + try { + (arg1)->set_piece_hashes_listener::progress(arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1set_1piece_1hashes_1listener(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + set_piece_hashes_listener *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (set_piece_hashes_listener *)new SwigDirector_set_piece_hashes_listener(jenv); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(set_piece_hashes_listener **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_set_1piece_1hashes_1listener_1director_1connect(JNIEnv *jenv, jclass jcls, jobject jself, jlong objarg, jboolean jswig_mem_own, jboolean jweak_global) { + set_piece_hashes_listener *obj = *((set_piece_hashes_listener **)&objarg); + (void)jcls; + SwigDirector_set_piece_hashes_listener *director = static_cast(obj); + director->swig_connect_director(jenv, jself, jenv->GetObjectClass(jself), (jswig_mem_own == JNI_TRUE), (jweak_global == JNI_TRUE)); +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_set_1piece_1hashes_1listener_1change_1ownership(JNIEnv *jenv, jclass jcls, jobject jself, jlong objarg, jboolean jtake_or_release) { + set_piece_hashes_listener *obj = *((set_piece_hashes_listener **)&objarg); + SwigDirector_set_piece_hashes_listener *director = static_cast(obj); + (void)jcls; + if (director) { + director->swig_java_change_ownership(jenv, jself, jtake_or_release ? true : false); + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_set_1piece_1hashes_1ex(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3, jobject jarg3_, jlong jarg4, jobject jarg4_) { + libtorrent::create_torrent *arg1 = 0 ; + std::string *arg2 = 0 ; + set_piece_hashes_listener *arg3 = (set_piece_hashes_listener *) 0 ; + libtorrent::error_code *arg4 = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + (void)jarg4_; + arg1 = *(libtorrent::create_torrent **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::create_torrent & reference is null"); + return ; + } + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + std::string arg2_str(arg2_pstr); + arg2 = &arg2_str; + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + arg3 = *(set_piece_hashes_listener **)&jarg3; + arg4 = *(libtorrent::error_code **)&jarg4; + if (!arg4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::error_code & reference is null"); + return ; + } + { + try { + set_piece_hashes_ex(*arg1,(std::string const &)*arg2,arg3,*arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_boost_1version(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + { + try { + result = (int)boost_version(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_boost_1lib_1version(JNIEnv *jenv, jclass jcls) { + jstring jresult = 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (char *)boost_lib_version(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_openssl_1version_1number(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + int result; + + (void)jenv; + (void)jcls; + { + try { + result = (int)openssl_version_number(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jstring JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_openssl_1version_1text(JNIEnv *jenv, jclass jcls) { + jstring jresult = 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (char *)openssl_version_text(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + if (result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_find_1metric_1idx_1s(JNIEnv *jenv, jclass jcls, jstring jarg1) { + jint jresult = 0 ; + std::string *arg1 = 0 ; + int result; + + (void)jenv; + (void)jcls; + if(!jarg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(jarg1, 0); + if (!arg1_pstr) return 0; + std::string arg1_str(arg1_pstr); + arg1 = &arg1_str; + jenv->ReleaseStringUTFChars(jarg1, arg1_pstr); + { + try { + result = (int)find_metric_idx_s((std::string const &)*arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1swig_1plugin(JNIEnv *jenv, jclass jcls, jlong jarg1) { + swig_plugin *arg1 = (swig_plugin *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(swig_plugin **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_swig_1plugin_1on_1dht_1request(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_, jlong jarg4, jobject jarg4_, jlong jarg5, jobject jarg5_) { + jboolean jresult = 0 ; + swig_plugin *arg1 = (swig_plugin *) 0 ; + libtorrent::string_view arg2 ; + libtorrent::udp::endpoint *arg3 = 0 ; + libtorrent::bdecode_node *arg4 = 0 ; + libtorrent::entry *arg5 = 0 ; + libtorrent::string_view *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + (void)jarg4_; + (void)jarg5_; + arg1 = *(swig_plugin **)&jarg1; + argp2 = *(libtorrent::string_view **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::string_view"); + return 0; + } + arg2 = *argp2; + arg3 = *(libtorrent::udp::endpoint **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::udp::endpoint const & reference is null"); + return 0; + } + arg4 = *(libtorrent::bdecode_node **)&jarg4; + if (!arg4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::bdecode_node const & reference is null"); + return 0; + } + arg5 = *(libtorrent::entry **)&jarg5; + if (!arg5) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::entry & reference is null"); + return 0; + } + { + try { + result = (bool)(arg1)->on_dht_request(arg2,(libtorrent::udp::endpoint const &)*arg3,(libtorrent::bdecode_node const &)*arg4,*arg5); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_swig_1plugin_1on_1dht_1requestSwigExplicitswig_1plugin(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_, jlong jarg4, jobject jarg4_, jlong jarg5, jobject jarg5_) { + jboolean jresult = 0 ; + swig_plugin *arg1 = (swig_plugin *) 0 ; + libtorrent::string_view arg2 ; + libtorrent::udp::endpoint *arg3 = 0 ; + libtorrent::bdecode_node *arg4 = 0 ; + libtorrent::entry *arg5 = 0 ; + libtorrent::string_view *argp2 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + (void)jarg3_; + (void)jarg4_; + (void)jarg5_; + arg1 = *(swig_plugin **)&jarg1; + argp2 = *(libtorrent::string_view **)&jarg2; + if (!argp2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null libtorrent::string_view"); + return 0; + } + arg2 = *argp2; + arg3 = *(libtorrent::udp::endpoint **)&jarg3; + if (!arg3) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::udp::endpoint const & reference is null"); + return 0; + } + arg4 = *(libtorrent::bdecode_node **)&jarg4; + if (!arg4) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::bdecode_node const & reference is null"); + return 0; + } + arg5 = *(libtorrent::entry **)&jarg5; + if (!arg5) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "libtorrent::entry & reference is null"); + return 0; + } + { + try { + result = (bool)(arg1)->swig_plugin::on_dht_request(arg2,(libtorrent::udp::endpoint const &)*arg3,(libtorrent::bdecode_node const &)*arg4,*arg5); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1swig_1plugin(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + swig_plugin *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (swig_plugin *)new SwigDirector_swig_plugin(jenv); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(swig_plugin **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_swig_1plugin_1director_1connect(JNIEnv *jenv, jclass jcls, jobject jself, jlong objarg, jboolean jswig_mem_own, jboolean jweak_global) { + swig_plugin *obj = *((swig_plugin **)&objarg); + (void)jcls; + SwigDirector_swig_plugin *director = static_cast(obj); + director->swig_connect_director(jenv, jself, jenv->GetObjectClass(jself), (jswig_mem_own == JNI_TRUE), (jweak_global == JNI_TRUE)); +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_swig_1plugin_1change_1ownership(JNIEnv *jenv, jclass jcls, jobject jself, jlong objarg, jboolean jtake_or_release) { + swig_plugin *obj = *((swig_plugin **)&objarg); + SwigDirector_swig_plugin *director = static_cast(obj); + (void)jcls; + if (director) { + director->swig_java_change_ownership(jenv, jself, jtake_or_release ? true : false); + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1interface_1address_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + ip_interface *arg1 = (ip_interface *) 0 ; + libtorrent::address *arg2 = (libtorrent::address *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(ip_interface **)&jarg1; + arg2 = *(libtorrent::address **)&jarg2; + if (arg1) (arg1)->interface_address = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1interface_1address_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + ip_interface *arg1 = (ip_interface *) 0 ; + libtorrent::address *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(ip_interface **)&jarg1; + result = (libtorrent::address *)& ((arg1)->interface_address); + *(libtorrent::address **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1netmask_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + ip_interface *arg1 = (ip_interface *) 0 ; + libtorrent::address *arg2 = (libtorrent::address *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(ip_interface **)&jarg1; + arg2 = *(libtorrent::address **)&jarg2; + if (arg1) (arg1)->netmask = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1netmask_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + ip_interface *arg1 = (ip_interface *) 0 ; + libtorrent::address *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(ip_interface **)&jarg1; + result = (libtorrent::address *)& ((arg1)->netmask); + *(libtorrent::address **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1name_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + ip_interface *arg1 = (ip_interface *) 0 ; + std::vector< std::int8_t > *arg2 = (std::vector< std::int8_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(ip_interface **)&jarg1; + arg2 = *(std::vector< std::int8_t > **)&jarg2; + if (arg1) (arg1)->name = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1name_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + ip_interface *arg1 = (ip_interface *) 0 ; + std::vector< std::int8_t > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(ip_interface **)&jarg1; + result = (std::vector< std::int8_t > *)& ((arg1)->name); + *(std::vector< std::int8_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1friendly_1name_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + ip_interface *arg1 = (ip_interface *) 0 ; + std::vector< std::int8_t > *arg2 = (std::vector< std::int8_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(ip_interface **)&jarg1; + arg2 = *(std::vector< std::int8_t > **)&jarg2; + if (arg1) (arg1)->friendly_name = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1friendly_1name_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + ip_interface *arg1 = (ip_interface *) 0 ; + std::vector< std::int8_t > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(ip_interface **)&jarg1; + result = (std::vector< std::int8_t > *)& ((arg1)->friendly_name); + *(std::vector< std::int8_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1description_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + ip_interface *arg1 = (ip_interface *) 0 ; + std::vector< std::int8_t > *arg2 = (std::vector< std::int8_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(ip_interface **)&jarg1; + arg2 = *(std::vector< std::int8_t > **)&jarg2; + if (arg1) (arg1)->description = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1description_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + ip_interface *arg1 = (ip_interface *) 0 ; + std::vector< std::int8_t > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(ip_interface **)&jarg1; + result = (std::vector< std::int8_t > *)& ((arg1)->description); + *(std::vector< std::int8_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1preferred_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) { + ip_interface *arg1 = (ip_interface *) 0 ; + bool arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(ip_interface **)&jarg1; + arg2 = jarg2 ? true : false; + if (arg1) (arg1)->preferred = arg2; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1interface_1preferred_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jboolean jresult = 0 ; + ip_interface *arg1 = (ip_interface *) 0 ; + bool result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(ip_interface **)&jarg1; + result = (bool) ((arg1)->preferred); + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1ip_1interface(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + ip_interface *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (ip_interface *)new ip_interface(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(ip_interface **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1ip_1interface(JNIEnv *jenv, jclass jcls, jlong jarg1) { + ip_interface *arg1 = (ip_interface *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(ip_interface **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1destination_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + ip_route *arg1 = (ip_route *) 0 ; + libtorrent::address *arg2 = (libtorrent::address *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(ip_route **)&jarg1; + arg2 = *(libtorrent::address **)&jarg2; + if (arg1) (arg1)->destination = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1destination_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + ip_route *arg1 = (ip_route *) 0 ; + libtorrent::address *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(ip_route **)&jarg1; + result = (libtorrent::address *)& ((arg1)->destination); + *(libtorrent::address **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1netmask_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + ip_route *arg1 = (ip_route *) 0 ; + libtorrent::address *arg2 = (libtorrent::address *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(ip_route **)&jarg1; + arg2 = *(libtorrent::address **)&jarg2; + if (arg1) (arg1)->netmask = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1netmask_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + ip_route *arg1 = (ip_route *) 0 ; + libtorrent::address *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(ip_route **)&jarg1; + result = (libtorrent::address *)& ((arg1)->netmask); + *(libtorrent::address **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1gateway_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + ip_route *arg1 = (ip_route *) 0 ; + libtorrent::address *arg2 = (libtorrent::address *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(ip_route **)&jarg1; + arg2 = *(libtorrent::address **)&jarg2; + if (arg1) (arg1)->gateway = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1gateway_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + ip_route *arg1 = (ip_route *) 0 ; + libtorrent::address *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(ip_route **)&jarg1; + result = (libtorrent::address *)& ((arg1)->gateway); + *(libtorrent::address **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1source_1hint_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + ip_route *arg1 = (ip_route *) 0 ; + libtorrent::address *arg2 = (libtorrent::address *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(ip_route **)&jarg1; + arg2 = *(libtorrent::address **)&jarg2; + if (arg1) (arg1)->source_hint = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1source_1hint_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + ip_route *arg1 = (ip_route *) 0 ; + libtorrent::address *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(ip_route **)&jarg1; + result = (libtorrent::address *)& ((arg1)->source_hint); + *(libtorrent::address **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1name_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + ip_route *arg1 = (ip_route *) 0 ; + std::vector< std::int8_t > *arg2 = (std::vector< std::int8_t > *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(ip_route **)&jarg1; + arg2 = *(std::vector< std::int8_t > **)&jarg2; + if (arg1) (arg1)->name = *arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1name_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + ip_route *arg1 = (ip_route *) 0 ; + std::vector< std::int8_t > *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(ip_route **)&jarg1; + result = (std::vector< std::int8_t > *)& ((arg1)->name); + *(std::vector< std::int8_t > **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1mtu_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + ip_route *arg1 = (ip_route *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(ip_route **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->mtu = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_ip_1route_1mtu_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + ip_route *arg1 = (ip_route *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(ip_route **)&jarg1; + result = (int) ((arg1)->mtu); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1ip_1route(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + ip_route *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (ip_route *)new ip_route(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(ip_route **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1ip_1route(JNIEnv *jenv, jclass jcls, jlong jarg1) { + ip_route *arg1 = (ip_route *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(ip_route **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_enum_1net_1interfaces(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session *arg1 = (libtorrent::session *) 0 ; + std::vector< ip_interface > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session **)&jarg1; + { + try { + result = enum_net_interfaces(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< ip_interface > **)&jresult = new std::vector< ip_interface >((const std::vector< ip_interface > &)result); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_enum_1routes(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + libtorrent::session *arg1 = (libtorrent::session *) 0 ; + std::vector< ip_route > result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(libtorrent::session **)&jarg1; + { + try { + result = enum_routes(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(std::vector< ip_route > **)&jresult = new std::vector< ip_route >((const std::vector< ip_route > &)result); + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_copy_1byte_1vector_1to_1char_1array(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3) { + std::vector< std::int8_t > arg1 ; + char *arg2 = (char *) 0 ; + unsigned int arg3 ; + std::vector< std::int8_t > *argp1 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + argp1 = *(std::vector< std::int8_t > **)&jarg1; + if (!argp1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null std::vector< std::int8_t >"); + return ; + } + arg1 = *argp1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return ; + } + arg3 = (unsigned int)jarg3; + { + try { + copy_byte_vector_to_char_array(arg1,arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_get_1gateway(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + jlong jresult = 0 ; + ip_interface *arg1 = 0 ; + std::vector< ip_route > *arg2 = 0 ; + libtorrent::address result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(ip_interface **)&jarg1; + if (!arg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "ip_interface const & reference is null"); + return 0; + } + arg2 = *(std::vector< ip_route > **)&jarg2; + if (!arg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "std::vector< ip_route > & reference is null"); + return 0; + } + { + try { + result = get_gateway((ip_interface const &)*arg1,*arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(libtorrent::address **)&jresult = new libtorrent::address((const libtorrent::address &)result); + return jresult; +} + + +SWIGEXPORT jboolean JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_arm_1neon_1support(JNIEnv *jenv, jclass jcls) { + jboolean jresult = 0 ; + bool result; + + (void)jenv; + (void)jcls; + { + try { + result = (bool)arm_neon_support(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jboolean)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1stat_1t_1size_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + posix_stat_t *arg1 = (posix_stat_t *) 0 ; + int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_stat_t **)&jarg1; + arg2 = (int64_t)jarg2; + if (arg1) (arg1)->size = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1stat_1t_1size_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + posix_stat_t *arg1 = (posix_stat_t *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_stat_t **)&jarg1; + result = (int64_t) ((arg1)->size); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1stat_1t_1atime_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + posix_stat_t *arg1 = (posix_stat_t *) 0 ; + int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_stat_t **)&jarg1; + arg2 = (int64_t)jarg2; + if (arg1) (arg1)->atime = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1stat_1t_1atime_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + posix_stat_t *arg1 = (posix_stat_t *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_stat_t **)&jarg1; + result = (int64_t) ((arg1)->atime); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1stat_1t_1mtime_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + posix_stat_t *arg1 = (posix_stat_t *) 0 ; + int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_stat_t **)&jarg1; + arg2 = (int64_t)jarg2; + if (arg1) (arg1)->mtime = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1stat_1t_1mtime_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + posix_stat_t *arg1 = (posix_stat_t *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_stat_t **)&jarg1; + result = (int64_t) ((arg1)->mtime); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1stat_1t_1ctime_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) { + posix_stat_t *arg1 = (posix_stat_t *) 0 ; + int64_t arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_stat_t **)&jarg1; + arg2 = (int64_t)jarg2; + if (arg1) (arg1)->ctime = arg2; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1stat_1t_1ctime_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jlong jresult = 0 ; + posix_stat_t *arg1 = (posix_stat_t *) 0 ; + int64_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_stat_t **)&jarg1; + result = (int64_t) ((arg1)->ctime); + jresult = (jlong)result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1stat_1t_1mode_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) { + posix_stat_t *arg1 = (posix_stat_t *) 0 ; + int arg2 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_stat_t **)&jarg1; + arg2 = (int)jarg2; + if (arg1) (arg1)->mode = arg2; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1stat_1t_1mode_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jint jresult = 0 ; + posix_stat_t *arg1 = (posix_stat_t *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_stat_t **)&jarg1; + result = (int) ((arg1)->mode); + jresult = (jint)result; + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1posix_1stat_1t(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + posix_stat_t *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (posix_stat_t *)new posix_stat_t(); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(posix_stat_t **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1posix_1stat_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) { + posix_stat_t *arg1 = (posix_stat_t *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(posix_stat_t **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_delete_1posix_1wrapper(JNIEnv *jenv, jclass jcls, jlong jarg1) { + posix_wrapper *arg1 = (posix_wrapper *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(posix_wrapper **)&jarg1; + { + try { + delete arg1; + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1wrapper_1open(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3, jint jarg4) { + jint jresult = 0 ; + posix_wrapper *arg1 = (posix_wrapper *) 0 ; + char *arg2 = (char *) 0 ; + int arg3 ; + int arg4 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_wrapper **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return 0; + } + arg3 = (int)jarg3; + arg4 = (int)jarg4; + { + try { + result = (int)(arg1)->open((char const *)arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1wrapper_1openSwigExplicitposix_1wrapper(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3, jint jarg4) { + jint jresult = 0 ; + posix_wrapper *arg1 = (posix_wrapper *) 0 ; + char *arg2 = (char *) 0 ; + int arg3 ; + int arg4 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_wrapper **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return 0; + } + arg3 = (int)jarg3; + arg4 = (int)jarg4; + { + try { + result = (int)(arg1)->posix_wrapper::open((char const *)arg2,arg3,arg4); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1wrapper_1stat(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3, jobject jarg3_) { + jint jresult = 0 ; + posix_wrapper *arg1 = (posix_wrapper *) 0 ; + char *arg2 = (char *) 0 ; + posix_stat_t *arg3 = (posix_stat_t *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(posix_wrapper **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return 0; + } + arg3 = *(posix_stat_t **)&jarg3; + { + try { + result = (int)(arg1)->stat((char const *)arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1wrapper_1statSwigExplicitposix_1wrapper(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3, jobject jarg3_) { + jint jresult = 0 ; + posix_wrapper *arg1 = (posix_wrapper *) 0 ; + char *arg2 = (char *) 0 ; + posix_stat_t *arg3 = (posix_stat_t *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg3_; + arg1 = *(posix_wrapper **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return 0; + } + arg3 = *(posix_stat_t **)&jarg3; + { + try { + result = (int)(arg1)->posix_wrapper::stat((char const *)arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1wrapper_1mkdir(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3) { + jint jresult = 0 ; + posix_wrapper *arg1 = (posix_wrapper *) 0 ; + char *arg2 = (char *) 0 ; + int arg3 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_wrapper **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return 0; + } + arg3 = (int)jarg3; + { + try { + result = (int)(arg1)->mkdir((char const *)arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1wrapper_1mkdirSwigExplicitposix_1wrapper(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3) { + jint jresult = 0 ; + posix_wrapper *arg1 = (posix_wrapper *) 0 ; + char *arg2 = (char *) 0 ; + int arg3 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_wrapper **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return 0; + } + arg3 = (int)jarg3; + { + try { + result = (int)(arg1)->posix_wrapper::mkdir((char const *)arg2,arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1wrapper_1rename(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3) { + jint jresult = 0 ; + posix_wrapper *arg1 = (posix_wrapper *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_wrapper **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return 0; + } + arg3 = 0; + if (jarg3) { + arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3) return 0; + } + { + try { + result = (int)(arg1)->rename((char const *)arg2,(char const *)arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); + if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1wrapper_1renameSwigExplicitposix_1wrapper(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3) { + jint jresult = 0 ; + posix_wrapper *arg1 = (posix_wrapper *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_wrapper **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return 0; + } + arg3 = 0; + if (jarg3) { + arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0); + if (!arg3) return 0; + } + { + try { + result = (int)(arg1)->posix_wrapper::rename((char const *)arg2,(char const *)arg3); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); + if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1wrapper_1remove(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jint jresult = 0 ; + posix_wrapper *arg1 = (posix_wrapper *) 0 ; + char *arg2 = (char *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_wrapper **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return 0; + } + { + try { + result = (int)(arg1)->remove((char const *)arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); + return jresult; +} + + +SWIGEXPORT jint JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1wrapper_1removeSwigExplicitposix_1wrapper(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jint jresult = 0 ; + posix_wrapper *arg1 = (posix_wrapper *) 0 ; + char *arg2 = (char *) 0 ; + int result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_wrapper **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return 0; + } + { + try { + result = (int)(arg1)->posix_wrapper::remove((char const *)arg2); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + jresult = (jint)result; + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); + return jresult; +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_new_1posix_1wrapper(JNIEnv *jenv, jclass jcls) { + jlong jresult = 0 ; + posix_wrapper *result = 0 ; + + (void)jenv; + (void)jcls; + { + try { + result = (posix_wrapper *)new SwigDirector_posix_wrapper(jenv); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return 0; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return 0; + } + } + *(posix_wrapper **)&jresult = result; + return jresult; +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1wrapper_1director_1connect(JNIEnv *jenv, jclass jcls, jobject jself, jlong objarg, jboolean jswig_mem_own, jboolean jweak_global) { + posix_wrapper *obj = *((posix_wrapper **)&objarg); + (void)jcls; + SwigDirector_posix_wrapper *director = static_cast(obj); + director->swig_connect_director(jenv, jself, jenv->GetObjectClass(jself), (jswig_mem_own == JNI_TRUE), (jweak_global == JNI_TRUE)); +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_posix_1wrapper_1change_1ownership(JNIEnv *jenv, jclass jcls, jobject jself, jlong objarg, jboolean jtake_or_release) { + posix_wrapper *obj = *((posix_wrapper **)&objarg); + SwigDirector_posix_wrapper *director = static_cast(obj); + (void)jcls; + if (director) { + director->swig_java_change_ownership(jenv, jself, jtake_or_release ? true : false); + } +} + + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_set_1posix_1wrapper(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + posix_wrapper *arg1 = (posix_wrapper *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(posix_wrapper **)&jarg1; + { + try { + set_posix_wrapper(arg1); + } catch (std::exception& e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, e.what()); + return ; + } catch (...) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unknown exception type"); + return ; + } + } +} + + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::torrent_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::peer_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::tracker_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1removed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::torrent_removed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_read_1piece_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::read_piece_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1completed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::file_completed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1renamed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::file_renamed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1rename_1failed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::file_rename_failed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_performance_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::performance_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1changed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::state_changed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1error_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::tracker_alert **)&baseptr = *(libtorrent::tracker_error_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1warning_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::tracker_alert **)&baseptr = *(libtorrent::tracker_warning_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1reply_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::tracker_alert **)&baseptr = *(libtorrent::scrape_reply_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_scrape_1failed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::tracker_alert **)&baseptr = *(libtorrent::scrape_failed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1reply_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::tracker_alert **)&baseptr = *(libtorrent::tracker_reply_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1reply_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::tracker_alert **)&baseptr = *(libtorrent::dht_reply_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_tracker_1announce_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::tracker_alert **)&baseptr = *(libtorrent::tracker_announce_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_hash_1failed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::hash_failed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1ban_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::peer_ban_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1unsnubbed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::peer_unsnubbed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1snubbed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::peer_snubbed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1error_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::peer_error_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1connect_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::peer_connect_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1disconnected_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::peer_disconnected_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_invalid_1request_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::invalid_request_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1finished_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::torrent_finished_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_piece_1finished_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::piece_finished_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_request_1dropped_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::request_dropped_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1timeout_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::block_timeout_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1finished_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::block_finished_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1downloading_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::block_downloading_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_unwanted_1block_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::unwanted_block_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::storage_moved_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_storage_1moved_1failed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::storage_moved_failed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1deleted_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::torrent_deleted_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1delete_1failed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::torrent_delete_failed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::save_resume_data_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_save_1resume_1data_1failed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::save_resume_data_failed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1paused_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::torrent_paused_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1resumed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::torrent_resumed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1checked_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::torrent_checked_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_url_1seed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::url_seed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_file_1error_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::file_error_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1failed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::metadata_failed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_metadata_1received_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::metadata_received_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_udp_1error_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::udp_error_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_external_1ip_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::external_ip_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1failed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::listen_failed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_listen_1succeeded_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::listen_succeeded_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1error_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::portmap_error_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::portmap_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_portmap_1log_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::portmap_log_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_fastresume_1rejected_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::fastresume_rejected_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1blocked_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::peer_blocked_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1announce_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::dht_announce_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::dht_get_peers_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_stats_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::stats_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_cache_1flushed_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::cache_flushed_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1peer_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::lsd_peer_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_trackerid_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::tracker_alert **)&baseptr = *(libtorrent::trackerid_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1bootstrap_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::dht_bootstrap_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1error_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::torrent_error_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1need_1cert_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::torrent_need_cert_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1connection_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::incoming_connection_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_add_1torrent_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::add_torrent_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_state_1update_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::state_update_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::session_stats_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1error_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::dht_error_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1immutable_1item_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::dht_immutable_item_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1mutable_1item_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::dht_mutable_item_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1put_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::dht_put_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_i2p_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::i2p_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1outgoing_1get_1peers_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::dht_outgoing_get_peers_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_log_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::log_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_torrent_1log_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::torrent_alert **)&baseptr = *(libtorrent::torrent_log_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_peer_1log_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::peer_log_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_lsd_1error_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::lsd_error_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1stats_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::dht_stats_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_incoming_1request_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::incoming_request_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1log_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::dht_log_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1pkt_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::dht_pkt_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1get_1peers_1reply_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::dht_get_peers_reply_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1direct_1response_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::dht_direct_response_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_picker_1log_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::picker_log_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1error_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::session_error_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1live_1nodes_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::dht_live_nodes_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1stats_1header_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::session_stats_header_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_dht_1sample_1infohashes_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::dht_sample_infohashes_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_block_1uploaded_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_alert **)&baseptr = *(libtorrent::block_uploaded_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_alerts_1dropped_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::alerts_dropped_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_socks5_1alert_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::alert **)&baseptr = *(libtorrent::socks5_alert **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_settings_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::dht::dht_settings **)&baseptr = *(libtorrent::dht::settings **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_session_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::session_handle **)&baseptr = *(libtorrent::session **)&jarg1; + return baseptr; +} + +SWIGEXPORT jlong JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_bt_1peer_1connection_1handle_1SWIGUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) { + jlong baseptr = 0; + (void)jenv; + (void)jcls; + *(libtorrent::peer_connection_handle **)&baseptr = *(libtorrent::bt_peer_connection_handle **)&jarg1; + return baseptr; +} + +SWIGEXPORT void JNICALL Java_com_frostwire_jlibtorrent_swig_libtorrent_1jni_swig_1module_1init(JNIEnv *jenv, jclass jcls) { + int i; + + static struct { + const char *method; + const char *signature; + } methods[9] = { + { + "SwigDirector_alert_notify_callback_on_alert", "(Lcom/frostwire/jlibtorrent/swig/alert_notify_callback;)V" + }, + { + "SwigDirector_add_files_listener_pred", "(Lcom/frostwire/jlibtorrent/swig/add_files_listener;Ljava/lang/String;)Z" + }, + { + "SwigDirector_set_piece_hashes_listener_progress", "(Lcom/frostwire/jlibtorrent/swig/set_piece_hashes_listener;I)V" + }, + { + "SwigDirector_swig_plugin_on_dht_request", "(Lcom/frostwire/jlibtorrent/swig/swig_plugin;JJJJ)Z" + }, + { + "SwigDirector_posix_wrapper_open", "(Lcom/frostwire/jlibtorrent/swig/posix_wrapper;Ljava/lang/String;II)I" + }, + { + "SwigDirector_posix_wrapper_stat", "(Lcom/frostwire/jlibtorrent/swig/posix_wrapper;Ljava/lang/String;J)I" + }, + { + "SwigDirector_posix_wrapper_mkdir", "(Lcom/frostwire/jlibtorrent/swig/posix_wrapper;Ljava/lang/String;I)I" + }, + { + "SwigDirector_posix_wrapper_rename", "(Lcom/frostwire/jlibtorrent/swig/posix_wrapper;Ljava/lang/String;Ljava/lang/String;)I" + }, + { + "SwigDirector_posix_wrapper_remove", "(Lcom/frostwire/jlibtorrent/swig/posix_wrapper;Ljava/lang/String;)I" + } + }; + Swig::jclass_libtorrent_jni = (jclass) jenv->NewGlobalRef(jcls); + if (!Swig::jclass_libtorrent_jni) return; + for (i = 0; i < (int) (sizeof(methods)/sizeof(methods[0])); ++i) { + Swig::director_method_ids[i] = jenv->GetStaticMethodID(jcls, methods[i].method, methods[i].signature); + if (!Swig::director_method_ids[i]) return; + } +} + + +#ifdef __cplusplus +} +#endif + diff --git a/frostwire-jlibtorrent/swig/libtorrent_jni.h b/frostwire-jlibtorrent/swig/libtorrent_jni.h new file mode 100644 index 0000000..eaa6302 --- /dev/null +++ b/frostwire-jlibtorrent/swig/libtorrent_jni.h @@ -0,0 +1,94 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * This file is not intended to be easily readable and contains a number of + * coding conventions designed to improve portability and efficiency. Do not make + * changes to this file unless you know what you are doing--modify the SWIG + * interface file instead. + * ----------------------------------------------------------------------------- */ + +#ifndef SWIG_libtorrent_WRAP_H_ +#define SWIG_libtorrent_WRAP_H_ + +struct SwigDirector_alert_notify_callback : public alert_notify_callback, public Swig::Director { + +public: + void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global); + SwigDirector_alert_notify_callback(JNIEnv *jenv); + virtual ~SwigDirector_alert_notify_callback(); + virtual void on_alert(); +public: + bool swig_overrides(int n) { + return (n < 1 ? swig_override[n] : false); + } +protected: + Swig::BoolArray<1> swig_override; +}; + +struct SwigDirector_add_files_listener : public add_files_listener, public Swig::Director { + +public: + void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global); + SwigDirector_add_files_listener(JNIEnv *jenv); + virtual ~SwigDirector_add_files_listener(); + virtual bool pred(std::string const &p); +public: + bool swig_overrides(int n) { + return (n < 1 ? swig_override[n] : false); + } +protected: + Swig::BoolArray<1> swig_override; +}; + +struct SwigDirector_set_piece_hashes_listener : public set_piece_hashes_listener, public Swig::Director { + +public: + void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global); + SwigDirector_set_piece_hashes_listener(JNIEnv *jenv); + virtual ~SwigDirector_set_piece_hashes_listener(); + virtual void progress(int i); +public: + bool swig_overrides(int n) { + return (n < 1 ? swig_override[n] : false); + } +protected: + Swig::BoolArray<1> swig_override; +}; + +struct SwigDirector_swig_plugin : public swig_plugin, public Swig::Director { + +public: + void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global); + SwigDirector_swig_plugin(JNIEnv *jenv); + virtual ~SwigDirector_swig_plugin(); + virtual bool on_dht_request(libtorrent::string_view query, libtorrent::udp::endpoint const &source, libtorrent::bdecode_node const &message, libtorrent::entry &response); +public: + bool swig_overrides(int n) { + return (n < 1 ? swig_override[n] : false); + } +protected: + Swig::BoolArray<1> swig_override; +}; + +struct SwigDirector_posix_wrapper : public posix_wrapper, public Swig::Director { + +public: + void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global); + SwigDirector_posix_wrapper(JNIEnv *jenv); + virtual ~SwigDirector_posix_wrapper(); + virtual int open(char const *path, int flags, int mode); + virtual int stat(char const *path, posix_stat_t *buf); + virtual int mkdir(char const *path, int mode); + virtual int rename(char const *oldpath, char const *newpath); + virtual int remove(char const *path); +public: + bool swig_overrides(int n) { + return (n < 5 ? swig_override[n] : false); + } +protected: + Swig::BoolArray<5> swig_override; +}; + + +#endif diff --git a/frostwire-jlibtorrent/swig/package-remote-build.sh b/frostwire-jlibtorrent/swig/package-remote-build.sh new file mode 100755 index 0000000..e41cd17 --- /dev/null +++ b/frostwire-jlibtorrent/swig/package-remote-build.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash +# This script downloads the latest travis build from https://s3.amazonaws.com/gubatron-jlibtorrent/release/// +# for each available architecture, places them where they'd be if we had built them locally +# and then invokes the gradle tasks to create all the jars for each os_build/os_arch + +function downloadLibrary { + fileName=$1 + dest=$2 + url=$3 + + echo URL: ${url} + + if [[ ! -d ${dest} ]]; then + mkdir -p ${dest} + fi + + wget -4 --no-check-certificate -O ${dest}/${fileName} $url +} + +# Android-ARM v7a +downloadLibrary 'libjlibtorrent.so' 'bin/release/android/armeabi-v7a' 'https://s3.amazonaws.com/gubatron-jlibtorrent/release/android/armeabi-v7a/libjlibtorrent.so' +# Android-ARM64 v8a +downloadLibrary 'libjlibtorrent.so' 'bin/release/android/arm64-v8a' 'https://gubatron-jlibtorrent.s3.amazonaws.com/release/android/arm64-v8a/libjlibtorrent.so' +# Android-x86 +downloadLibrary 'libjlibtorrent.so' 'bin/release/android/x86' 'https://s3.amazonaws.com/gubatron-jlibtorrent/release/android/x86/libjlibtorrent.so' +# Android-x86_64 +downloadLibrary 'libjlibtorrent.so' 'bin/release/android/x86_64' 'https://gubatron-jlibtorrent.s3.amazonaws.com/release/android/x86_64/libjlibtorrent.so' + +# Windows (dual-architecture jar) +downloadLibrary 'jlibtorrent.dll' 'bin/release/windows/x86' 'https://s3.amazonaws.com/gubatron-jlibtorrent/release/windows/x86/jlibtorrent.dll' +downloadLibrary 'jlibtorrent.dll' 'bin/release/windows/x86_64' 'https://s3.amazonaws.com/gubatron-jlibtorrent/release/windows/x86_64/jlibtorrent.dll' + +# Mac +downloadLibrary 'libjlibtorrent.dylib' 'bin/release/macosx/x86_64' 'https://s3.amazonaws.com/gubatron-jlibtorrent/release/macosx/x86_64/libjlibtorrent.dylib' + +# Linux (dual architecture .jar) +downloadLibrary 'libjlibtorrent.so' 'bin/release/linux/x86' 'https://s3.amazonaws.com/gubatron-jlibtorrent/release/linux/x86/libjlibtorrent.so' +downloadLibrary 'libjlibtorrent.so' 'bin/release/linux/x86_64' 'https://s3.amazonaws.com/gubatron-jlibtorrent/release/linux/x86_64/libjlibtorrent.so' + +# Copy the shared library to parent folder so gradle test can find it in the java.library.path +unameOut="$(uname -s)" +case "${unameOut}" in + Darwin*) cp bin/release/macosx/x86_64/libjlibtorrent.dylib ..;; + Linux*) cp bin/release/linux/x86_64/libjlibtorrent.so ..;; + CYGWIN*) cp bin/release/windows/x86_64/jlibtorrent.dll ..;; + MINGW*) cp bin/release/windows/x86_64/jlibtorrent.dll ..;; +esac + +pushd .. +gradle clean +gradle build +popd diff --git a/frostwire-jlibtorrent/swig/run-swig.sh b/frostwire-jlibtorrent/swig/run-swig.sh new file mode 100755 index 0000000..45c66c5 --- /dev/null +++ b/frostwire-jlibtorrent/swig/run-swig.sh @@ -0,0 +1,116 @@ +#!/bin/bash +# NOTE: Run this script manually every time you make changes to libtorrent.i, this is not ran by any of the build scripts, including .travis.yml +source build-utils.shinc + +abort_if_var_unset "LIBTORRENT_ROOT" ${LIBTORRENT_ROOT} +abort_if_var_unset "BOOST_ROOT" ${BOOST_ROOT} + +# Extracted from ../build.gradle +JLIBTORRENT_VERSION=`sed -n -e '/^version /s/.* //p' ../build.gradle | tr -d "'"` +abort_if_var_unset "JLIBTORRENT_VERSION" ${JLIBTORRENT_VERSION} + +function fixCode() { + uname=`uname -s` + if [ "$(uname)" == "Darwin" ]; then + # FreeBSD's sed is weird, it needs that extra '' parameter there for some reason + sed -i '' 's/constexpr alert_category_t all = alert_category_t::all();/ \/\/deleted temporarily because it is defined twice/g' ${LIBTORRENT_ROOT}/include/libtorrent/alert.hpp + # The line above will be reverted to normal when we build by the checkout, if not commented/deleted swig breaks + sed -i '' 's/) &;/) ;/g' ${LIBTORRENT_ROOT}/include/libtorrent/file_storage.hpp + sed -i '' 's/) & noexcept;/) noexcept;/g' ${LIBTORRENT_ROOT}/include/libtorrent/file_storage.hpp + sed -i '' 's/(time_point32::min)();/time_point32::min();/g' ${LIBTORRENT_ROOT}/include/libtorrent/announce_entry.hpp + sed -i '' 's/userdata = client_data_t{});/userdata);/g' ${LIBTORRENT_ROOT}/include/libtorrent/torrent_handle.hpp + else + sed -i 's/constexpr alert_category_t all = alert_category_t::all();/ \/\/deleted temporarily because it is defined twice/g' ${LIBTORRENT_ROOT}/include/libtorrent/alert.hpp + sed -i 's/) &;/) ;/g' ${LIBTORRENT_ROOT}/include/libtorrent/file_storage.hpp + sed -i 's/) & noexcept;/) noexcept;/g' ${LIBTORRENT_ROOT}/include/libtorrent/file_storage.hpp + sed -i 's/(time_point32::min)();/time_point32::min();/g' ${LIBTORRENT_ROOT}/include/libtorrent/announce_entry.hpp + sed -i 's/userdata = client_data_t{});/userdata);/g' ${LIBTORRENT_ROOT}/include/libtorrent/torrent_handle.hpp + fi +} + +function refixCode() { + uname=`uname -s` + if [ "$(uname)" == "Darwin" ]; then + sed -i '' 's/) ;/) \&;/g' ${LIBTORRENT_ROOT}/include/libtorrent/file_storage.hpp + sed -i '' 's/) noexcept;/) \& noexcept;/g' ${LIBTORRENT_ROOT}/include/libtorrent/file_storage.hpp + sed -i '' 's/time_point32::min();/(time_point32::min)();/g' ${LIBTORRENT_ROOT}/include/libtorrent/announce_entry.hpp + sed -i '' 's/userdata);/userdata = client_data_t{});/g' ${LIBTORRENT_ROOT}/include/libtorrent/torrent_handle.hpp + else + sed -i 's/) ;/) \&;/g' ${LIBTORRENT_ROOT}/include/libtorrent/file_storage.hpp + sed -i 's/) noexcept;/) \& noexcept;/g' ${LIBTORRENT_ROOT}/include/libtorrent/file_storage.hpp + sed -i 's/time_point32::min();/(time_point32::min)();/g' ${LIBTORRENT_ROOT}/include/libtorrent/announce_entry.hpp + sed -i 's/userdata);/userdata = client_data_t{});/g' ${LIBTORRENT_ROOT}/include/libtorrent/torrent_handle.hpp + fi +} + +function runJni() +{ + JAVA_SRC_OUTPUT=../src/main/java/com/frostwire/jlibtorrent/swig + rm -rf ${JAVA_SRC_OUTPUT} + mkdir -p ${JAVA_SRC_OUTPUT} + + # If you're running from Ubuntu and you have swig 3.0.5 you might end up with a segfault running the swig command below + #./run-swig.sh: line 33: 46204 Segmentation fault + # Make sure your swig command is compiled from source, version 3.0.12 works on mac + # https://sourceforge.net/projects/swig/files/swig/swig-3.0.12/swig-3.0.12.tar.gz/download + + swig -c++ -java -o libtorrent_jni.cpp \ + -outdir ${JAVA_SRC_OUTPUT} \ + -package com.frostwire.jlibtorrent.swig \ + -I${BOOST_ROOT} \ + -I${LIBTORRENT_ROOT}/include \ + -DBOOST_ASIO_DECL="" \ + -DBOOST_NO_TYPEID=1 \ + -DBOOST_NO_EXCEPTIONS \ + -DBOOST_POSIX_API=1 \ + -DBOOST_SYSTEM_CONSTEXPR="" \ + -DBOOST_SYSTEM_NOEXCEPT="" \ + -DBOOST_SYSTEM_DECL="" \ + -DBOOST_SYSTEM_NO_DEPRECATED=1 \ + -DBOOST_NO_IOSTREAM \ + -DBOOST_SYMBOL_VISIBLE \ + -DBOOST_NOEXCEPT="" \ + -DBOOST_NOEXCEPT_OR_NOTHROW="" \ + -DTORRENT_ABI_VERSION=2 \ + -DTORRENT_VERSION_NAMESPACE_2="" \ + -DTORRENT_VERSION_NAMESPACE_2_END="" \ + -DTORRENT_IPV6_NAMESPACE="" \ + -DTORRENT_IPV6_NAMESPACE_END="" \ + -DTORRENT_CFG="TORRENT_CFG" \ + -DTORRENT_NO_DEPRECATE \ + -DTORRENT_DEPRECATED_EXPORT="" \ + -DTORRENT_DEPRECATED_MEMBER="" \ + -DTORRENT_DEPRECATED_ENUM="" \ + -DTORRENT_DEPRECATED \ + -DTORRENT_EXPORT="" \ + -DTORRENT_EXTRA_EXPORT="" \ + -DTORRENT_FORMAT\(x,y\)="" \ + -DNDEBUG=1 \ + -D_bit="" \ + -Dfinal="" \ + -DBOOST_OVERRIDE="override" \ + libtorrent.i + + # at first sight, this could look like a very dangerous thing to + # do, but in practice, these director types are controlled by us + # and we know we can do it. The main reason is to be able to + # compile with -fno-rtti. + uname=`uname -s` + if [ "$(uname)" == "Darwin" ]; then + sed -i '' 's/dynamic_cast