diff --git a/ndk/platforms/android-9/samples/native-audio/AndroidManifest.xml b/ndk/platforms/android-9/samples/native-audio/AndroidManifest.xml new file mode 100644 index 000000000..5eebb521a --- /dev/null +++ b/ndk/platforms/android-9/samples/native-audio/AndroidManifest.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ndk/platforms/android-9/samples/native-audio/assets/README.txt b/ndk/platforms/android-9/samples/native-audio/assets/README.txt new file mode 100644 index 000000000..3ce407616 --- /dev/null +++ b/ndk/platforms/android-9/samples/native-audio/assets/README.txt @@ -0,0 +1,4 @@ +File background.mp3 ("Background for talking but don't") is +copyright 2008 by Glenn Kasten and is licensed under a +Creative Commons Attribution 3.0 Unported License: + http://creativecommons.org/licenses/by/3.0/ diff --git a/ndk/platforms/android-9/samples/native-audio/assets/background.mp3 b/ndk/platforms/android-9/samples/native-audio/assets/background.mp3 new file mode 100644 index 000000000..88e447d13 Binary files /dev/null and b/ndk/platforms/android-9/samples/native-audio/assets/background.mp3 differ diff --git a/ndk/platforms/android-9/samples/native-audio/default.properties b/ndk/platforms/android-9/samples/native-audio/default.properties new file mode 100644 index 000000000..eada70a88 --- /dev/null +++ b/ndk/platforms/android-9/samples/native-audio/default.properties @@ -0,0 +1,13 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system use, +# "build.properties", and override values to adapt the script to your +# project structure. + +# Project target. +target=android-9 +# Indicates whether an apk should be generated for each density. +split.density=false diff --git a/ndk/platforms/android-9/samples/native-audio/jni/Android.mk b/ndk/platforms/android-9/samples/native-audio/jni/Android.mk new file mode 100644 index 000000000..63c8210ef --- /dev/null +++ b/ndk/platforms/android-9/samples/native-audio/jni/Android.mk @@ -0,0 +1,28 @@ +# Copyright (C) 2010 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := native-audio-jni +LOCAL_SRC_FILES := native-audio-jni.c +# for native audio +LOCAL_LDLIBS += -lOpenSLES +# for logging +LOCAL_LDLIBS += -llog +# for native asset manager +LOCAL_LDLIBS += -landroid + +include $(BUILD_SHARED_LIBRARY) diff --git a/ndk/platforms/android-9/samples/native-audio/jni/android_clip.h b/ndk/platforms/android-9/samples/native-audio/jni/android_clip.h new file mode 100644 index 000000000..8d168acc5 --- /dev/null +++ b/ndk/platforms/android-9/samples/native-audio/jni/android_clip.h @@ -0,0 +1,811 @@ + "\xfe\xff\xfc\xff\xfb\xff\xfc\xff\xfb\xff\xff\xff\xff\xff\xfe\xff" + "\x00\x00\xfe\xff\xfe\xff\x01\x00\x02\x00\x02\x00\x05\x00\x04\x00" + "\x02\x00\x04\x00\x05\x00\xff\xff\x01\x00\xff\xff\xfc\xff\xfe\xff" + "\xff\xff\x02\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x01\x00" + "\xff\xff\xfc\xff\xf9\xff\xfa\xff\xf8\xff\xfc\xff\xfe\xff\xfe\xff" + "\xfd\xff\xfc\xff\x01\x00\xff\xff\xff\xff\x02\x00\x04\x00\x04\x00" + "\x07\x00\x06\x00\x04\x00\x05\x00\x04\x00\x05\x00\x03\x00\x03\x00" + "\x02\x00\x04\x00\x04\x00\x03\x00\x05\x00\x04\x00\x04\x00\x05\x00" + "\x03\x00\x01\x00\x02\x00\x03\x00\x04\x00\x00\x00\xfc\xff\xfe\xff" + "\xfe\xff\xfc\xff\xfb\xff\xfc\xff\xf8\xff\xf8\xff\xfa\xff\xf8\xff" + "\xf8\xff\xf7\xff\xf7\xff\xf5\xff\xf8\xff\xfb\xff\xfc\xff\x00\x00" + "\xfd\xff\x00\x00\x05\x00\x03\x00\x02\x00\x05\x00\x08\x00\x04\x00" + "\x03\x00\x04\x00\x03\x00\x02\x00\x00\x00\xff\xff\x02\x00\x03\x00" + "\x03\x00\x02\x00\x02\x00\x04\x00\x04\x00\x03\x00\x02\x00\x02\x00" + "\x04\x00\x03\x00\xfe\xff\xfd\xff\xfd\xff\xfc\xff\xfa\xff\xfc\xff" + "\xff\xff\xfe\xff\xfd\xff\xfd\xff\xfd\xff\xfe\xff\xfb\xff\xfd\xff" + "\xfd\xff\xfd\xff\x01\x00\x01\x00\x00\x00\xfd\xff\x00\x00\x00\x00" + "\xfe\xff\x00\x00\x01\x00\x03\x00\x04\x00\x04\x00\x03\x00\x00\x00" + "\x02\x00\x05\x00\x01\x00\x00\x00\x04\x00\x04\x00\x00\x00\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x01\x00\xff\xff" + "\xfe\xff\x01\x00\x01\x00\x01\x00\x02\x00\x05\x00\x04\x00\x05\x00" + "\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00" + "\xfe\xff\x00\x00\x01\x00\xfe\xff\xfe\xff\xff\xff\xff\xff\x02\x00" + "\x02\x00\xff\xff\x00\x00\x04\x00\x02\x00\x02\x00\x02\x00\x03\x00" + "\x02\x00\x02\x00\x00\x00\xfc\xff\x00\x00\x02\x00\x02\x00\x00\x00" + "\x00\x00\x02\x00\x00\x00\xfe\xff\xff\xff\xfc\xff\xfd\xff\xfb\xff" + "\xfa\xff\xfa\xff\xf9\xff\xf9\xff\xfa\xff\xf9\xff\xf9\xff\xfd\xff" + "\xff\xff\xfd\xff\xfc\xff\x00\x00\xfe\xff\xff\xff\x02\x00\x03\x00" + "\x06\x00\x06\x00\x07\x00\x04\x00\x05\x00\x05\x00\x05\x00\x07\x00" + "\x07\x00\x06\x00\x06\x00\x07\x00\x05\x00\x03\x00\x01\x00\x02\x00" + "\xfe\xff\xfd\xff\xff\xff\xfe\xff\xff\xff\xfd\xff\xfc\xff\xfc\xff" + "\xfb\xff\xfa\xff\xfa\xff\xfa\xff\xf9\xff\xfc\xff\xfa\xff\xfb\xff" + "\xfc\xff\xfc\xff\xfc\xff\xfc\xff\xfd\xff\xff\xff\x00\x00\x00\x00" + "\x03\x00\x03\x00\x04\x00\x04\x00\x06\x00\x04\x00\x02\x00\x03\x00" + "\xff\xff\x00\x00\x02\x00\xff\xff\x02\x00\x00\x00\xfe\xff\x00\x00" + "\x00\x00\x01\x00\xff\xff\x00\x00\x02\x00\x02\x00\x02\x00\x01\x00" + "\x01\x00\x01\x00\xfe\xff\xfe\xff\xfe\xff\xfe\xff\xff\xff\xff\xff" + "\xfe\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00" + "\x02\x00\x04\x00\x03\x00\x04\x00\x06\x00\x02\x00\x00\x00\x02\x00" + "\x04\x00\x02\x00\x00\x00\x03\x00\x04\x00\x05\x00\x03\x00\x03\x00" + "\x03\x00\x00\x00\x00\x00\x01\x00\xff\xff\xfe\xff\xff\xff\xfe\xff" + "\xfd\xff\xfb\xff\xfc\xff\xfa\xff\xfb\xff\xfb\xff\xfd\xff\xfd\xff" + "\xfc\xff\xfc\xff\xfb\xff\xfb\xff\xfd\xff\xfe\xff\xff\xff\x00\x00" + "\xff\xff\x01\x00\x03\x00\x02\x00\x03\x00\x07\x00\x07\x00\x06\x00" + "\x05\x00\x09\x00\x07\x00\x04\x00\x06\x00\x05\x00\x01\x00\x03\x00" + "\x01\x00\x02\x00\x02\x00\x00\x00\xfe\xff\xfd\xff\xf9\xff\xf8\xff" + "\xf8\xff\xf6\xff\xf9\xff\xf7\xff\xf8\xff\xf7\xff\xfc\xff\xfc\xff" + "\xfc\xff\xff\xff\x02\x00\x01\x00\x02\x00\x04\x00\x06\x00\x06\x00" + "\x04\x00\x04\x00\x04\x00\x05\x00\x02\x00\x02\x00\x02\x00\x02\x00" + "\x00\x00\xff\xff\x01\x00\x01\x00\x00\x00\x00\x00\x00\x00\xfd\xff" + "\xfc\xff\xfe\xff\xfe\xff\xfc\xff\xfc\xff\xff\xff\xfd\xff\xfc\xff" + "\xfe\xff\x02\x00\x01\x00\x05\x00\x03\x00\x07\x00\x03\x00\x05\x00" + "\x04\x00\xfb\xff\xf8\xff\xfb\xff\xfe\xff\xee\xff\xee\xff\xfd\xff" + "\xf1\xff\x02\x00\xfb\xff\xcd\xff\xed\xff\x17\x00\xa6\xff\xfc\xfe" + "\x39\x00\xd7\xff\xa9\xfe\x92\xff\x87\x00\xf3\xff\x55\xff\xe3\x00" + "\x44\x01\x66\x00\x81\x00\x4b\x01\x24\x01\x60\x00\x8f\x00\xca\x00" + "\x9b\x00\x6d\x00\x47\x00\x86\x00\x99\x00\x6b\x00\xbb\xff\x8a\x00" + "\x32\x00\x5a\x00\xe0\xff\x27\x00\x61\x01\x6c\x00\xcc\xff\xb2\xff" + "\xe9\xff\x58\xff\xab\xfb\x69\xfb\x7e\xff\x52\xfa\xbf\xf9\x7a\xfd" + "\x79\xff\x99\xfd\xc1\xfd\xcf\x02\x75\x02\xd6\x00\xf8\x00\x02\x03" + "\x75\x01\x11\x00\x0f\x00\xbb\x00\xe8\x00\xb5\x00\x44\x01\x58\x02" + "\x3e\x04\x70\x03\x05\x03\x8c\x04\xe7\x03\x06\x02\xa9\x00\xce\x00" + "\x57\xff\x4f\xfd\x29\xfd\x19\xfd\x4f\xfd\x21\xfd\x03\xfe\x17\xff" + "\xf4\xff\x59\x00\x77\x00\xfa\x00\xd6\x00\x1b\x00\x62\xff\x0d\xff" + "\xd5\xfe\xf5\xfd\xd3\xfd\x74\xfe\x35\xfe\xac\xfe\x51\xff\xe4\xff" + "\x2a\x00\x82\x00\x45\x01\x11\x01\xee\x00\x10\x01\xe8\x00\x74\x00" + "\x05\x00\xe9\xff\x32\x00\xcb\xff\xda\xff\x99\x00\xee\x00\x13\x01" + "\x59\x01\x08\x02\x1a\x02\xa2\x01\xaf\x01\x9c\x01\x9d\x00\x3f\x00" + "\xea\xff\x3d\xff\xd4\xfe\xd1\xfe\xe4\xfe\xa0\xfe\x10\xff\x7f\xff" + "\x70\xff\x87\xff\xa0\xff\xcc\xfe\x18\xff\xd7\xfd\x8f\xfc\x7b\xfd" + "\x76\xfc\xf8\xfb\x7c\xfc\xdd\xfd\x71\xfe\xa2\xfe\x46\x00\x88\x01" + "\xca\x01\xb3\x01\x6a\x02\xb3\x02\x32\x02\xf1\x01\x0b\x02\x7d\x02" + "\x33\x02\x61\x02\x87\x02\x44\x03\xfd\x02\x6a\x02\xba\x02\x35\x02" + "\x8e\x01\x5e\x00\x2a\x00\x7f\xff\x8a\xfe\x5a\xfe\x27\xfe\x63\xfe" + "\x70\xfe\xd0\xfe\x5f\xff\xab\xff\xed\xff\xa9\xff\x10\x00\x00\xff" + "\x99\xff\xc8\xfe\xad\xfe\x2f\xff\x3e\xff\xde\xfe\xc4\x01\xab\xfe" + "\x47\xfc\xa8\x02\x0f\xfe\x5b\xf9\x02\xfb\xd3\x00\xb4\xfa\x1c\xf8" + "\xd3\xff\x39\x02\x61\xfe\x6f\xfe\x9b\x05\x61\x04\x34\x01\x63\x02" + "\xb2\x04\xba\x02\x66\x01\xb8\x01\xca\x01\x46\x03\x3e\x02\x3c\x01" + "\x71\x03\xa2\x04\xb5\x02\xfe\x00\x43\x03\x4c\x02\x22\xff\x2b\xfe" + "\xa4\xfe\xb4\xfd\x6f\xfb\xb4\xfb\xca\xfc\x3e\xfd\x2c\xfd\x01\xfe" + "\xe4\xff\x16\x00\x58\x00\xd0\xff\x03\x00\x8f\x00\x4e\xfe\x54\xfe" + "\x30\xfe\xc0\xfe\x09\xfe\x3d\xfe\x33\x00\x6d\x00\x86\x00\x9e\x01" + "\xbb\x02\x26\x02\x4e\x02\x9e\x02\xbd\x02\xc2\x01\x55\x01\x35\x02" + "\x7c\x01\xec\x00\x18\x01\xee\x01\x06\x01\x93\x00\x62\x01\x02\x01" + "\x2e\x00\xb5\xff\x63\x00\x17\xff\x82\xfe\xd4\xfd\xbb\xfd\xd9\xfc" + "\x2c\xfc\xd0\xf9\x87\xfa\xab\xfc\x00\xf9\xf6\xf9\xb8\xfc\xbd\xfe" + "\x1e\xfd\xb0\xfe\x8b\x02\x22\x02\x7b\x01\x1c\x02\x86\x03\x52\x02" + "\xc1\x01\x23\x02\xa5\x02\x89\x02\xb2\x02\x5c\x03\xcd\x03\x9b\x04" + "\x37\x04\xce\x03\x4e\x04\xdd\x02\x13\x02\xb5\x00\x39\x00\xc7\xfd" + "\xbf\xfc\x79\xfe\x5f\xfb\xe6\xfb\x07\xfe\x97\xfe\x5e\xfe\x70\xff" + "\xbb\x01\xfb\x00\x28\x00\xdd\x00\x94\x00\xa1\xff\xc0\xfe\x9e\xff" + "\x46\xff\xc1\xff\x82\xff\xdf\x00\x2b\x00\x4d\x01\x9a\x00\xd3\x00" + "\x45\x01\x9b\xff\xcd\xff\x8c\x03\xbe\xff\x7e\xf6\x07\x05\xa4\xff" + "\xbe\xf4\xd8\xf6\xdc\x01\x19\xfd\xd5\xf1\xa7\xfe\xc7\x05\x55\x00" + "\x9f\xfb\x04\x07\x81\x08\x75\x01\xfe\x00\x65\x04\x7c\x03\xaa\xff" + "\xcc\xff\x89\xff\x27\x02\x0a\x03\x90\xff\x62\x02\xa3\x05\xa0\x05" + "\xc3\x00\xd0\x01\x38\x05\x63\x00\xad\xfc\x84\xfc\xa0\xfe\x59\xfb" + "\xa4\xf8\x60\xfb\x11\xfe\xaf\xfd\x52\xfd\xc9\x00\xc8\x02\x7e\x02" + "\x53\x02\xd1\x01\xb4\x02\xc0\x01\x69\xff\xcf\xfe\x72\xfe\xf4\xfd" + "\xf3\xfe\x19\xfe\xa3\xfe\x7b\x00\xf8\x01\xee\x01\x3d\x01\x8a\x03" + "\x00\x03\x97\x01\x8a\x00\x58\x00\x0c\x00\x63\xfe\xe4\xfd\x99\xfe" + "\x98\xff\x50\xff\x6e\xff\x3c\x01\x61\x02\x85\x01\x9b\x00\x62\x02" + "\x39\x01\xb6\xff\xde\xfe\x73\xff\xdf\xfd\x1a\xfd\xcc\xfe\x51\xfc" + "\xcd\xfd\xbb\xfd\xc5\x00\xcd\xf9\x73\xfb\x3f\x03\xa6\xfb\x36\xf9" + "\x9a\xfc\x79\x03\x8a\xfc\x3a\xfa\x93\x03\x11\x04\x90\xff\xb7\xff" + "\xe9\x05\xf1\x03\x36\x01\xaa\x02\x8a\x03\x4e\x03\x1f\x02\x5a\x03" + "\xd5\x01\x7d\x04\xc3\x04\x19\x02\x03\x02\x75\x04\xde\x01\x2d\xfe" + "\x09\x00\x98\xfe\xad\xfd\x59\xfb\x47\xfd\x16\xfe\x7c\xfd\x7d\xfe" + "\xe0\xff\x00\x01\xfd\x00\x1c\x01\xa0\x00\xa1\x00\x08\x00\x19\xff" + "\x0b\xfe\x28\xfe\xb3\xff\x87\xfe\x9b\xfe\x78\x00\x75\x01\xdd\x00" + "\xec\xff\x9a\x01\xf1\xff\x8f\xff\x99\xfe\x23\xfe\xfa\xfd\xac\xfd" + "\xed\xfd\xc3\xfd\xd4\xfd\xc7\xff\x56\x00\x9e\xfe\x47\x00\x81\x02" + "\x39\x01\x9d\xfc\x4b\x00\xe6\x02\x9a\xfc\xcd\xf9\x24\x01\x7c\x01" + "\xb0\xfb\xc5\xfd\x7f\x03\xf8\x03\x3b\xff\xfc\x01\x1b\x05\x26\x03" + "\xc1\x00\xbc\x01\x8d\x02\xf1\x01\xb6\x01\x62\x01\x9f\x02\x96\x03" + "\x66\x02\x48\x01\x44\x02\x2e\x01\x9b\xff\x51\xfc\xf9\xfc\x9f\xfe" + "\x46\xfb\xef\xfa\x16\xfd\x38\x00\x33\xfe\xac\xfd\x05\x01\xa8\x01" + "\x6c\xff\xed\xfd\xcb\x00\xe9\xff\xb4\xfe\x3e\xff\x9a\x00\x24\x02" + "\x6f\x01\x05\x02\x1d\x03\x3b\x04\x6f\x02\xe0\x00\xd0\x01\x1a\x01" + "\x3a\xff\x12\xfe\xf7\xfe\xbd\xff\x94\xfe\xa5\xfe\xa2\xff\xf0\xff" + "\x6d\xff\x14\x00\x7b\xff\x8f\xff\xd2\x00\xc6\xfe\xbf\xff\x57\x03" + "\x99\x04\xfd\xf6\x96\xf7\xc3\x07\xef\xfc\xc3\xec\xe8\xf5\x10\x07" + "\x3a\xfd\xac\xf1\xf3\x00\xea\x0d\x17\x05\xfd\xfb\xd9\x04\xbe\x0a" + "\x1e\x02\xba\xfc\xd3\xfe\xc7\x01\xa0\x00\xdf\xfe\x23\xff\x8a\x03" + "\x23\x0a\xcd\x06\x16\x02\xc0\x06\xdf\x0b\x0e\x04\x18\xfb\x3b\xff" + "\x6b\x03\x92\xfa\x39\xf4\x57\xfa\x25\x00\x91\xfb\xa8\xfa\x3e\xff" + "\x0c\x03\x34\x04\x1a\xff\xdd\xfe\xec\x00\x3a\x01\x0f\xfb\x6e\xf9" + "\x03\xfe\x3e\xff\xf5\xfc\x25\xfc\x5b\x02\xaa\x04\xf5\x01\x96\x00" + "\xbe\x02\x29\x05\x7f\x01\x16\xff\x67\x01\x03\x03\x69\x01\x4f\xfe" + "\x84\xff\x56\x02\x84\x00\x08\xfd\x8e\xfd\x16\x01\x83\xff\x96\xfc" + "\x22\xfe\xf5\x01\xb7\x01\x04\xfe\xb9\xff\x9f\x03\x48\x02\x53\xfa" + "\x4f\xfd\x61\xfa\x1b\xf9\x7f\xfb\x05\xf7\xc0\xf9\xd3\xfc\xaf\x03" + "\x6e\x01\xa0\x01\x0e\x08\x1e\x08\x67\x04\x8c\xff\x0a\x02\x42\x02" + "\x25\xfd\x5e\xfc\x14\xff\xe6\x02\xdf\x01\x98\x03\x62\x08\xdc\x08" + "\x03\x08\xca\x05\xb2\x05\x76\x03\xf0\xff\xec\xfc\x1b\xfc\x0b\xfd" + "\x2f\xfb\x24\xfb\xc4\xfd\x0f\x00\x25\x00\x09\x00\x2e\x01\x14\x02" + "\x61\x00\xbf\xfd\x01\xfe\xf4\xfc\x89\xfb\x69\xfb\xef\xfb\x07\xfd" + "\xaf\xfc\xd4\xfd\xd6\xfe\x07\xff\x61\xfe\x9f\xfe\x70\xff\x55\xfe" + "\x9d\xfe\x87\xff\x18\x00\x12\x01\x09\x01\x0d\x01\xf7\x01\x15\x02" + "\xd6\x01\xf4\x00\xcc\x01\xad\x02\xa4\x02\xd1\x02\xee\x02\xa0\x04" + "\xe8\x05\x02\x04\x87\x04\x93\x05\xe1\x03\x16\x01\x27\xfd\x5f\xfc" + "\xbd\xfb\xa2\xf7\x6d\xf6\x88\xf5\x80\xf8\x48\xfd\x1e\xfc\xa2\xfe" + "\x88\x01\x65\x05\x43\x03\x80\xff\x68\x00\xc5\xff\xde\xfe\xdb\xfa" + "\xbf\xfb\xc5\xff\x40\x01\xbc\x02\x4d\x05\x45\x08\x46\x09\xa2\x08" + "\x72\x07\xec\x04\xa5\x02\x0d\x00\xc2\xfd\x0e\xfb\xf0\xf9\xd2\xfb" + "\x89\xf5\x48\xfc\xe2\x03\xbf\xfd\xa3\xfe\xe9\x02\xb4\x09\xc8\x03" + "\x7b\xfe\xe8\x01\xbb\x01\xee\xff\x11\xfa\x8a\xfb\x0b\x00\xa4\x00" + "\xef\xff\x97\xff\x03\x03\x0a\x05\x83\x03\x2d\x00\xea\xfe\x26\x01" + "\xc9\xfe\xbe\xf9\x25\xfa\xe1\xfd\x63\xfd\x40\xfa\xaa\xfd\xd0\xff" + "\xff\x04\x08\x00\xa2\xf7\x6e\xfe\xd5\xff\x8b\xf9\x26\xf5\x83\xf9" + "\x1e\x00\xd8\xff\x8d\xff\xf5\x04\xb2\x09\x55\x09\x94\x05\x19\x05" + "\xb4\x03\x28\x01\x19\x00\xd1\xff\x7a\xfe\x0e\x00\x32\x04\xd0\x05" + "\xd9\x05\x5b\x07\x3b\x09\x0d\x06\x5f\x02\x06\x00\xd5\xfc\x7e\xfa" + "\xbd\xf9\x97\xf8\x09\xf8\x3d\xfa\xc2\xfd\xd2\xfd\xb1\xfe\x15\x01" + "\x6e\x02\x53\x01\x81\xff\xd2\xfc\x81\xfb\xd4\xfc\xd0\xfa\xb8\xf8" + "\x8d\xfb\xa6\x01\x0c\x03\x22\x02\x84\x04\x96\x07\x3e\x08\x2e\x04" + "\xd7\x00\x7a\x01\xac\x01\x9a\xff\x95\xff\xf8\x00\xe2\x02\x46\x04" + "\xb4\x03\x27\x02\x3b\x02\x56\x02\xab\xfe\x02\xfd\x18\xfd\x61\xfd" + "\x47\xfd\x35\xfe\x25\x02\x91\x02\xcb\xf5\x92\xf2\xc1\xfb\x6c\xff" + "\xc9\xf3\x1a\xeb\x96\xf9\x5d\x06\x45\x06\x47\xfe\x59\x02\xaa\x0c" + "\x21\x0b\x5d\x00\x4f\xfa\x3d\xff\x9b\x02\xb3\xff\xbf\xfc\x9e\xfc" + "\xea\x03\x27\x0c\x4c\x0c\xe9\x07\xbc\x06\x31\x0a\x12\x09\xb5\x01" + "\x1c\xfa\xb6\xf9\x30\xfd\x5d\xfc\x6d\xf8\xaf\xf8\x02\xfe\xc2\x03" + "\xc4\x03\x25\x01\x14\x01\xf2\x03\x60\x03\x1f\xfd\xb0\xf7\x59\xf9" + "\x14\xfb\xc3\xf9\xff\xf7\x56\xfa\xc9\x00\x46\x03\x2e\x03\xa0\x02" + "\x4d\x04\xd4\x05\x3f\x03\x1b\xff\xd6\xfd\x0f\x00\xa1\x01\x68\xff" + "\x9c\xff\xb7\x01\xc2\x04\x74\x03\x7c\x02\x59\x01\xfa\x01\x57\x02" + "\x3b\x02\x1c\xff\x08\x02\x1f\xff\xb4\x04\xeb\xfe\xe8\xe8\x6a\xf6" + "\xc6\xfe\x1b\x00\x65\xeb\x41\xef\x82\x07\x70\x0d\x3b\x07\xa7\xfa" + "\x65\x04\x59\x0b\x98\x04\x84\xf8\x23\xf5\x68\xfd\x62\x02\x6b\x00" + "\x97\xfc\xea\xfc\x53\x09\xe8\x10\x0d\x0c\xef\x01\x3f\x03\x07\x08" + "\x2f\x05\xc2\xfc\xe1\xf6\x87\xf9\xfe\xfe\x77\x00\xb8\xfc\xe5\xfb" + "\xb3\x01\xf1\x07\x4d\x08\x10\x02\xa1\xfe\xc4\x01\x06\x04\x05\xfd" + "\x13\xf5\x0e\xf8\x07\xfc\xf9\xfd\xa0\xfa\xd1\xfb\xd6\x00\xae\x04" + "\x1c\x05\x08\x01\x1b\x01\x20\x03\x3b\x01\xc6\xfe\x5c\xfc\x88\xfe" + "\xb4\x00\x95\x00\xf1\xff\xba\x01\x13\x03\xae\x03\x9c\x02\xd0\x02" + "\xaa\x00\x33\x02\x07\x03\x50\x00\x9b\xff\x10\x01\x53\xfe\xc5\xe6" + "\x50\xf5\x0b\x01\xe6\xfd\xc6\xee\x58\xef\x43\x0a\xcb\x0e\x34\x09" + "\x74\xfb\x45\x03\x6c\x08\xdd\x02\x98\xfa\x63\xf7\x75\xfb\x4b\x01" + "\x3c\x05\x7f\x01\xfc\xfd\xf8\x06\x0a\x12\xf9\x0f\x74\x03\x59\xfe" + "\x22\x03\xee\x04\x6b\xfe\x29\xf5\x7d\xf5\xff\xfb\x90\x01\xe2\xfe" + "\x30\xfc\x3b\xfe\x91\x04\xaf\x08\x96\x04\x4e\xfd\x23\xfd\x33\x02" + "\xca\x00\x95\xf8\x25\xf7\x96\xfa\xae\xfe\x28\xff\x37\xfd\x32\x00" + "\x54\x02\xc1\x06\xab\x04\x60\x03\xad\x01\xbe\x00\xea\x01\x8a\x00" + "\x7f\xfd\x41\xfd\xf4\xff\x52\x02\x96\x01\xd5\xff\x10\x02\x15\x04" + "\xdf\x04\xf9\x00\x1e\x02\x59\x02\xc1\x03\x0d\xfe\xf3\xfe\xf5\xe8" + "\xfb\xeb\x44\xfe\xd6\xfd\x8b\xf3\x2d\xe9\x44\x04\x99\x0e\x24\x0f" + "\xbb\xff\xf4\xff\x74\x06\x46\x03\xcc\xfc\x42\xf7\x22\xfa\x0c\xfd" + "\x92\x04\x38\x07\x1a\x03\x0c\x04\xfb\x0d\xec\x13\x30\x0c\x85\x00" + "\x92\xfe\x16\x01\xbb\x02\xa7\xfa\xc3\xf5\x0d\xf7\xbf\xfe\x23\x02" + "\x4e\x00\xe4\xfd\x21\xff\xb0\x04\x52\x07\x77\x02\xc1\xfb\xb8\xfb" + "\x62\xff\x97\xfd\xdf\xf9\x89\xf7\xbe\xf9\xb8\xfe\xe8\xff\x01\x01" + "\x19\xff\x15\x02\x75\x04\xe5\x05\x97\x03\xd6\xfe\x3e\xfe\xcf\x01" + "\x18\x02\xd0\xfe\x38\xfc\xa8\xff\x1e\x04\x88\x04\x5d\x00\xce\x00" + "\xa5\x04\x8a\x06\xb8\x04\x61\x02\xde\x01\xc8\x03\x09\xfe\x92\xe8" + "\xf9\xed\x20\xfa\x5a\xff\x5b\xef\x13\xee\xb0\x00\x56\x0e\x36\x0f" + "\xfe\x01\x3c\x01\x01\x02\xf8\x02\xf5\xfb\x68\xf8\xb2\xf6\x00\xfb" + "\x1e\x03\x17\x07\x2d\x04\x2d\x05\x2e\x0d\x98\x12\x4d\x0d\x55\x03" + "\xa6\xfd\x7a\xff\xe1\x00\xbb\xfb\x9d\xf6\xff\xf6\x79\xfd\xa6\x01" + "\xe9\x01\x59\x00\x6b\x01\xe6\x03\x87\x06\x8d\x04\x73\xff\xa0\xfc" + "\x36\xfc\xef\xfb\xc8\xfc\xf5\xf8\x04\xf8\xdf\xfb\x2e\x02\x37\x03" + "\x02\x01\xbe\x01\x89\x03\xb4\x05\x71\x04\xfa\xfe\xfc\xfb\xdb\xfd" + "\x94\x01\x49\x00\xe0\xfc\x64\xfd\xbf\x01\xe1\x04\x5e\x02\x41\x01" + "\xe0\x00\x70\x06\xce\x04\xe2\x02\x68\xfe\x67\xff\xa6\xf4\xf7\xef" + "\xb6\xf5\x88\xf9\xf4\xf8\x90\xf2\xd4\xfc\xad\x04\x0d\x0d\x4a\x08" + "\xcc\x04\x50\x02\x21\x02\xd2\xff\xde\xfb\xa1\xf9\x7a\xf9\xba\xfd" + "\xbb\x02\x24\x06\x64\x05\x5a\x08\x27\x0c\x75\x0d\x08\x09\x13\x02" + "\x92\xfd\xfd\xfe\x27\xfe\x45\xfa\x1e\xf7\x66\xf9\x3d\xfd\x37\x00" + "\xb6\x01\xce\x01\x9a\x02\x0f\x04\xe5\x05\xba\x04\x2a\x00\x55\xfc" + "\x7f\xf9\x92\xfb\x31\xfb\x5c\xf9\x62\xf9\x11\xfd\x18\x03\xd3\x04" + "\x2c\x05\xcf\x03\x7b\x04\x4b\x04\x62\x02\x16\xff\xdf\xfc\xbf\xfd" + "\x48\xff\x44\x00\xe4\xfe\xf0\xfe\x3d\x00\x1a\x03\x26\x04\x7e\x03" + "\xae\x00\x51\x00\xa7\x02\x35\x01\x8f\xfc\x93\xf1\x15\xf2\x10\xf7" + "\xf0\xf9\x6f\xf7\xa0\xf5\x1b\xfd\x71\x04\xf9\x09\xb6\x08\x07\x06" + "\x20\x03\x20\x02\x57\x01\x6e\xff\x7f\xfc\x64\xfa\x3f\xfd\xf2\x01" + "\x7c\x05\x8e\x06\x3d\x07\x7f\x09\x9b\x0a\xe3\x08\x09\x04\x98\xff" + "\xe4\xfd\x56\xfd\x59\xfb\x3d\xf9\x5a\xf9\x27\xfa\xab\xfc\xb0\xff" + "\x58\x02\x01\x03\x2d\x03\x89\x04\xb8\x05\xc0\x03\x3a\xfe\x65\xfb" + "\x42\xfa\xa1\xfb\x73\xfb\x0f\xfa\x46\xfb\xe8\x00\x67\x06\x35\x06" + "\x79\x04\xab\x03\x8a\x04\x58\x03\x8b\x00\xe6\xfd\x25\xfd\x20\xfe" + "\xd5\xff\x77\xff\x44\xfe\x6a\xfd\x23\x01\x55\x03\x21\x02\x29\xfe" + "\x2d\x00\xc5\x00\x70\x01\xf6\xf8\x57\xf1\x17\xf8\x04\xfa\x28\xfb" + "\x1b\xf4\x9f\xf8\x35\xff\x40\x06\xd8\x07\x84\x05\x8b\x04\x34\x04" + "\xb2\x04\xbd\x03\x80\x01\xe8\xfd\xdc\xfd\xb5\xff\x3e\x03\xb4\x02" + "\x3a\x04\x0d\x05\x0e\x07\x7d\x06\xbe\x05\x68\x03\x10\x01\xe7\xfe" + "\x55\xfe\x9e\xfd\x13\xfc\x9c\xfa\x44\xfa\xff\xfb\xc8\xfd\x4a\xff" + "\x34\x00\xd7\x01\x74\x03\x9b\x03\xe8\x01\xcd\x00\xd2\x00\x6d\x00" + "\x5f\xfe\xa2\xfd\x56\xfd\xf6\xfe\x8c\xff\x2d\x00\x37\x00\xf0\xff" + "\x48\x00\xb8\x00\x63\x00\x4b\x00\x68\x00\xe9\xff\x57\x00\x30\x00" + "\x92\xff\xc8\xfe\xfe\xfd\x1a\xfe\x15\xff\xbf\xff\x37\x00\xe9\x00" + "\xff\x01\x78\x02\xab\x02\xe8\x00\x69\xff\xf4\xfd\xe6\xfd\x64\xfc" + "\x84\xfa\x95\xfa\xc3\xfa\x23\xfc\xfb\xfc\x60\xfe\x9c\xfd\x44\xfd" + "\xea\xfe\xaf\x01\x0c\x02\xa0\x00\xfb\x00\x09\x03\x5e\x03\x5d\x02" + "\xc3\x02\x4b\x03\x57\x03\x40\x03\x01\x04\x51\x04\x38\x03\xa1\x02" + "\x93\x03\xc6\x03\x0e\x02\x81\x00\x95\x00\xe4\x00\x4b\x00\x1d\xff" + "\x7f\xff\x5b\x00\xf6\xff\x67\xfe\x03\xfe\x50\xfe\xf0\xfd\x3b\xfd" + "\x91\xfd\xc0\xfd\x20\xfd\x69\xfd\x2f\xff\x89\x00\xdb\xff\x1c\xff" + "\xb0\xff\xc1\x00\x0e\x01\xcb\x00\x96\x00\xa4\x00\x07\x01\x5d\x01" + "\x6a\x00\x59\xff\x38\xff\xd6\xff\xfb\xff\xd6\xff\xf7\xff\x47\x00" + "\x2b\x01\xc4\x00\x29\xff\x80\xfe\x97\xfd\xab\xfb\x85\xfa\xa1\xfb" + "\xb0\xfb\x28\xfa\x9b\xfa\x89\xfd\x48\xff\x7c\xfe\xc9\xfe\x10\x01" + "\x8e\x02\x88\x02\x19\x03\xce\x03\xd0\x03\xe0\x03\xc2\x04\x05\x05" + "\xc1\x03\xff\x02\x2e\x04\xbc\x04\x8e\x03\x3a\x02\xc4\x01\xdf\x01" + "\x58\x02\xc1\x01\xd3\xff\x97\xfe\xdc\xfe\xa3\xff\xf6\xfe\x99\xfd" + "\x19\xfd\x04\xfe\x89\xfe\x62\xfe\x92\xfd\x33\xfd\x98\xfd\xb2\xfe" + "\x86\xff\x1f\xff\xe5\xfe\xa1\xff\x25\x01\x74\x01\xb1\x00\xd9\xff" + "\x4f\x00\xf7\x00\x3b\x01\xbb\x00\x88\x00\x82\x00\x7c\x00\x44\x00" + "\x8f\xff\x24\xff\x18\xff\x1a\xff\x5b\xff\xb6\xff\x8b\xff\xf6\xfe" + "\x75\xfe\xea\xfe\xdd\xfd\x28\xfc\xdc\xfa\xc9\xfb\x38\xfc\xc2\xfb" + "\xd9\xfb\x0a\xfd\x76\xfe\x13\xff\x77\x00\xbb\x01\x11\x02\x65\x02" + "\xbc\x03\x7e\x04\x94\x04\x1b\x04\x4d\x04\x72\x04\x3f\x04\xbd\x03" + "\x80\x03\x54\x03\xc6\x02\x72\x02\x19\x02\x72\x01\xb7\x00\x62\x00" + "\x3d\x00\x49\xff\x3e\xfe\xc2\xfd\xcf\xfd\xdc\xfd\x97\xfd\xab\xfd" + "\xf1\xfd\x7e\xfe\x0c\xff\x2c\xff\x7e\xfe\x2f\xfe\x12\xff\xa0\xff" + "\xf3\xfe\x9b\xfe\x39\xff\x44\x00\x92\x00\x72\x00\x9e\x00\xd1\x00" + "\x07\x01\x8c\x01\xd0\x01\xa1\x01\x55\x01\x5d\x01\x45\x01\xae\x00" + "\x15\x00\xf6\xff\xbf\xff\x5a\xff\x59\xff\xb5\xff\xdd\xff\xae\xff" + "\x20\x00\xd4\xff\x90\xfe\xd1\xfd\xa0\xfd\xaf\xfc\x4f\xfb\xf0\xfa" + "\x28\xfb\xfc\xfa\x2b\xfb\x30\xfc\xf8\xfc\x37\xfd\x2e\xfe\xfc\xff" + "\x2b\x01\xb7\x01\x93\x02\x87\x03\x27\x04\x9a\x04\x08\x05\x47\x05" + "\x2b\x05\x1a\x05\xd2\x04\x6d\x04\xec\x03\x99\x03\x26\x03\x52\x02" + "\xe1\x01\x82\x01\xfc\x00\x16\x00\xa6\xff\x72\xff\x35\xff\x89\xfe" + "\x29\xfe\xf8\xfd\xf3\xfd\xd8\xfd\x8a\xfd\x98\xfd\x70\xfd\x87\xfd" + "\xbe\xfd\x7d\xfe\xeb\xfe\x2c\xff\x66\xff\xc5\xff\x09\x00\x2d\x00" + "\x42\x00\x73\x00\xb2\x00\xd0\x00\x89\x00\x41\x00\x54\x00\x3a\x00" + "\xc8\xff\x9c\xff\x78\xff\x75\xff\x9b\xff\xdd\xff\x68\x00\x1a\x00" + "\xaf\xff\x90\xfe\xb2\xfe\x6d\xfe\x0c\xfd\xc9\xfb\xf0\xfb\x98\xfc" + "\x1e\xfc\x34\xfc\xe8\xfc\xc9\xfd\x54\xfe\x67\xff\x84\x00\x66\x01" + "\x48\x02\x79\x03\xf5\x03\x28\x04\x80\x04\xfb\x04\xf4\x04\x9e\x04" + "\x55\x04\xf7\x03\x9d\x03\x65\x03\xfc\x02\x2f\x02\xa4\x01\x4a\x01" + "\xc8\x00\xf7\xff\x2f\xff\x99\xfe\x15\xfe\x9d\xfd\x3d\xfd\xe3\xfc" + "\xb2\xfc\x82\xfc\xdf\xfc\x5b\xfd\xd3\xfd\xef\xfd\x31\xfe\x02\xff" + "\x0f\x00\xb2\x00\x1c\x01\x5d\x01\x96\x01\xc7\x01\x25\x02\x3f\x02" + "\xbd\x01\x7e\x01\x78\x01\x81\x01\x0b\x01\x9b\x00\xf9\xff\x99\xff" + "\x4f\xff\x1a\xff\x5a\xfe\x0a\xfe\x71\xfe\xa1\xfe\xb4\xfe\x90\xfe" + "\x72\xfe\x7a\xfd\x80\xfd\xcf\xfd\x00\xfd\xcd\xfb\xdc\xfb\xbd\xfc" + "\x6b\xfc\x33\xfc\x0a\xfd\x11\xfe\x7a\xfe\x52\xff\xb6\x00\x9e\x01" + "\x6b\x02\x97\x03\x77\x04\xa6\x04\x11\x05\xa7\x05\x8d\x05\x48\x05" + "\x44\x05\x52\x05\xad\x04\x19\x04\xac\x03\xcf\x02\xdf\x01\x5b\x01" + "\xc1\x00\x6f\xff\x83\xfe\x34\xfe\x97\xfd\xec\xfc\x82\xfc\x30\xfc" + "\xfe\xfb\xf7\xfb\x52\xfc\x75\xfc\xe1\xfc\x70\xfd\x27\xfe\xda\xfe" + "\xa1\xff\x5a\x00\xc6\x00\x39\x01\x89\x01\xaf\x01\xca\x01\xfb\x01" + "\xf7\x01\x9c\x01\x51\x01\x4f\x01\x1c\x01\xad\x00\x19\x00\xae\xff" + "\x7a\xff\x66\xff\x08\xff\xc8\xfe\xa5\xfe\x36\xff\x1a\xff\x2e\xff" + "\x60\xff\x6c\xff\x30\xff\x83\xfe\xf3\xfe\x7e\xfe\x91\xfd\xcb\xfc" + "\x0c\xfd\xcd\xfc\x61\xfc\xb6\xfc\x2e\xfd\x62\xfd\xeb\xfd\x3f\xff" + "\x01\x00\x67\x00\x7f\x01\x08\x03\x80\x03\x94\x03\x38\x04\xfb\x04" + "\x0e\x05\xf8\x04\xfa\x04\xbf\x04\x6b\x04\x56\x04\xd3\x03\x0f\x03" + "\x80\x02\xfb\x01\x25\x01\x34\x00\x6c\xff\xb7\xfe\x19\xfe\x86\xfd" + "\xf1\xfc\x63\xfc\x3a\xfc\x45\xfc\x4b\xfc\x6b\xfc\xef\xfc\x7b\xfd" + "\xe8\xfd\x76\xfe\x0e\xff\xaa\xff\x31\x00\x90\x00\xb1\x00\xe7\x00" + "\x3c\x01\x5a\x01\x2d\x01\xfb\x00\x0e\x01\xff\x00\xb6\x00\x4d\x00" + "\xff\xff\xd3\xff\xab\xff\x92\xff\x7a\xff\x52\xff\x60\xff\x7b\xff" + "\xbb\xff\xca\xff\xe3\xff\x27\x00\x6f\x00\xb5\x00\xaa\x00\xd3\x00" + "\x79\x00\xf8\xff\x45\xff\x96\xfe\xfc\xfd\x48\xfd\xae\xfc\x39\xfc" + "\x52\xfc\x78\xfc\xc4\xfc\x32\xfd\xeb\xfd\xa6\xfe\x75\xff\x73\x00" + "\x7c\x01\x46\x02\xd8\x02\x7f\x03\x33\x04\xc0\x04\x03\x05\x23\x05" + "\x23\x05\x21\x05\x0a\x05\xc8\x04\x2f\x04\x6a\x03\xa2\x02\x05\x02" + "\x40\x01\x3e\x00\x22\xff\x54\xfe\xaa\xfd\xf3\xfc\x52\xfc\xd5\xfb" + "\x7e\xfb\x6e\xfb\xb3\xfb\xf2\xfb\x33\xfc\xad\xfc\x68\xfd\xf6\xfd" + "\x7e\xfe\x29\xff\xcf\xff\x50\x00\xb6\x00\x14\x01\x6b\x01\x97\x01" + "\xad\x01\xab\x01\xaf\x01\x92\x01\x62\x01\x29\x01\xe4\x00\x97\x00" + "\x4b\x00\x2a\x00\xea\xff\xd6\xff\xc7\xff\xd0\xff\xe8\xff\xff\xff" + "\x0c\x00\x00\x00\x1d\x00\x20\x00\x14\x00\xf2\xff\xc5\xff\x8e\xff" + "\x47\xff\x12\xff\xb7\xfe\x63\xfe\x11\xfe\xbc\xfd\x69\xfd\x39\xfd" + "\x4c\xfd\x5a\xfd\x78\xfd\xd8\xfd\x80\xfe\x1b\xff\xb2\xff\x7d\x00" + "\x6d\x01\x3f\x02\xe7\x02\x8c\x03\x26\x04\x85\x04\xd6\x04\x04\x05" + "\xf8\x04\xc3\x04\x78\x04\x23\x04\x90\x03\xec\x02\x4f\x02\x95\x01" + "\xb6\x00\xe5\xff\x1c\xff\x25\xfe\x33\xfd\x77\xfc\xe6\xfb\x68\xfb" + "\x0d\xfb\x01\xfb\x1e\xfb\x61\xfb\xd4\xfb\x6e\xfc\xfe\xfc\xad\xfd" + "\x85\xfe\x55\xff\x09\x00\xab\x00\x30\x01\x90\x01\xe8\x01\x19\x02" + "\x20\x02\x0c\x02\x0a\x02\xff\x01\xe8\x01\xd2\x01\x9c\x01\x5f\x01" + "\x26\x01\xe6\x00\x86\x00\x1c\x00\xdc\xff\xb1\xff\x78\xff\x4b\xff" + "\x37\xff\x44\xff\x5d\xff\x7a\xff\x96\xff\xac\xff\xca\xff\xe1\xff" + "\xe7\xff\xdb\xff\xcf\xff\xb0\xff\x8a\xff\x67\xff\x34\xff\x00\xff" + "\xd5\xfe\xb9\xfe\xa0\xfe\x7e\xfe\x7f\xfe\xaa\xfe\xe6\xfe\x31\xff" + "\x90\xff\xfe\xff\x68\x00\xd4\x00\x4e\x01\xbe\x01\x01\x02\x41\x02" + "\x68\x02\x87\x02\x86\x02\x7f\x02\x61\x02\x1b\x02\xe7\x01\xbd\x01" + "\x85\x01\x26\x01\xcf\x00\x74\x00\x0f\x00\xb6\xff\x5e\xff\xf1\xfe" + "\x99\xfe\x5a\xfe\x27\xfe\xf8\xfd\xd2\xfd\xc4\xfd\xc8\xfd\xe7\xfd" + "\x22\xfe\x5c\xfe\x93\xfe\xdd\xfe\x43\xff\x94\xff\xcd\xff\x07\x00" + "\x47\x00\x7c\x00\x8b\x00\xa5\x00\xbe\x00\xd3\x00\xdc\x00\xdc\x00" + "\xd7\x00\xc6\x00\xba\x00\xa8\x00\x85\x00\x4c\x00\x1c\x00\xf8\xff" + "\xd5\xff\xb8\xff\x9c\xff\x8a\xff\x8c\xff\xa9\xff\xc9\xff\xe5\xff" + "\x0b\x00\x2a\x00\x50\x00\x78\x00\x95\x00\x98\x00\x9c\x00\x9e\x00" + "\x8f\x00\x82\x00\x74\x00\x52\x00\x13\x00\xf8\xff\xdd\xff\xa8\xff" + "\x55\xff\xff\xfe\xc4\xfe\x8b\xfe\x61\xfe\x31\xfe\x10\xfe\x0f\xfe" + "\x40\xfe\x7e\xfe\xb8\xfe\xfe\xfe\x62\xff\xe5\xff\x62\x00\xc6\x00" + "\x22\x01\x93\x01\xfa\x01\x44\x02\x64\x02\x84\x02\xa3\x02\xaa\x02" + "\x97\x02\x77\x02\x49\x02\x0f\x02\xd3\x01\x90\x01\x26\x01\xa8\x00" + "\x3d\x00\xd2\xff\x5a\xff\xd1\xfe\x5c\xfe\xf9\xfd\xb7\xfd\x92\xfd" + "\x6c\xfd\x59\xfd\x6e\xfd\xa2\xfd\xd5\xfd\x05\xfe\x4d\xfe\xa0\xfe" + "\xf0\xfe\x3a\xff\x84\xff\xd6\xff\x1c\x00\x63\x00\xa8\x00\xdc\x00" + "\x01\x01\x20\x01\x40\x01\x56\x01\x4d\x01\x3b\x01\x2d\x01\x1c\x01" + "\xff\x00\xe4\x00\xcb\x00\xa2\x00\x86\x00\x6d\x00\x65\x00\x5b\x00" + "\x47\x00\x2b\x00\x00\x00\xd3\xff\xb8\xff\xc2\xff\xb6\xff\x69\xff" + "\xfc\xfe\x40\xff\x1c\x00\x8a\x00\x23\x00\xbc\xff\xbe\xff\xec\xff" + "\xfa\xff\x81\xff\xe6\xfe\x68\xfe\x23\xfe\x38\xfe\x9c\xfe\xe5\xfe" + "\xd0\xfe\x7c\xfe\x79\xfe\x17\xff\xcd\xff\x12\x00\xfe\xff\xed\xff" + "\x33\x00\xb2\x00\x3b\x01\x76\x01\x89\x01\xb6\x01\x97\x01\xfe\x01" + "\xb2\x02\xe2\x02\xa6\x02\x81\x02\xb0\x02\x80\x02\xf5\x01\x07\x01" + "\xa3\x00\xf0\x00\x34\x00\x14\xff\x63\xfe\x8e\xfe\x85\xfe\x0a\xfe" + "\x26\xfd\xab\xfc\xda\xfc\xde\xfc\x4c\xfd\xc1\xfd\x59\xfe\x69\xfe" + "\xb1\xfe\xe2\xfe\x1c\xff\xf2\xff\xae\x00\x90\x00\x96\x00\x9c\x00" + "\x41\x01\x3a\x02\xae\x02\x87\x02\x69\x02\xd9\x01\x3d\x01\x5b\x02" + "\x48\x02\x08\x01\x7b\x00\x88\x00\xbf\xff\xe9\xff\x9f\xff\xca\xfe" + "\xca\xfe\xfb\xfe\xa9\xfe\x80\xfe\x16\xfe\x7c\xfe\xc3\xfe\xd1\xfe" + "\xc5\xfe\x8f\xfe\x4c\xff\xc2\xfe\x47\xff\x1f\x00\xe9\xff\x1c\x00" + "\xaf\x00\x4c\x00\x84\x00\xed\x00\xdf\x00\xbc\x00\xba\x00\x89\x00" + "\x7a\x00\xca\x00\x1b\x01\x6e\x00\x69\x00\x20\x00\xe0\xff\xbf\x00" + "\x75\x00\x9a\xff\x54\xff\xbe\xff\xdf\xff\x8f\x00\x22\xff\xa2\xfe" + "\x09\x00\x40\x00\x5d\xff\x48\xff\xd9\xff\x38\x00\xb4\xff\xdb\xff" + "\xba\x00\x8c\x00\xea\xff\x63\xff\x23\x01\x38\x01\x4a\x01\x8e\x00" + "\x63\x00\x5c\x00\x4c\x01\x8f\x01\x1c\x00\x98\xfe\xf3\xfe\x13\x01" + "\xea\xff\x84\xfe\xc8\xfd\x3f\x00\x19\x00\xe9\xfe\x4d\xff\xcd\xfe" + "\x99\xff\x57\x00\x92\xff\xf2\xff\x4a\xff\x83\x00\x0f\x00\xe3\x00" + "\x94\x00\xdc\xff\x07\x01\xd8\x00\x28\x01\xfa\xff\xdd\x00\x7c\x00" + "\x57\x01\x72\x00\x85\xff\xde\xff\xfe\x00\x48\x00\xf4\xfe\x81\xfe" + "\x16\x00\xc1\xff\x76\xff\x13\xfe\x7d\xfe\x66\x00\x02\xff\x57\xfe" + "\x41\xfe\xcf\x00\x81\xff\xf8\xfe\xa1\xff\xe8\xff\x90\x00\x47\x00" + "\xf5\xff\x48\x00\x0e\x01\x09\x01\xad\xff\x8f\x00\x25\x01\xaf\x01" + "\xa0\x00\xe0\xff\x9d\x00\x49\x00\xd0\x01\x9f\x00\x16\xff\x5e\x00" + "\x51\x00\xf0\xff\xe1\xfe\x66\xff\x9e\xff\x1d\xff\x06\xff\xef\xfd" + "\x75\xff\xeb\xff\xdb\xff\xcd\xfe\x5f\xff\xfc\xff\x28\x00\xcc\x00" + "\x42\x00\x27\x00\xfb\x00\x43\x01\xb5\x00\x25\x01\x0c\x01\x82\x01" + "\x1d\x01\x76\x00\x8c\x00\x8a\x00\xe5\x00\x8f\xff\xfe\xff\x2a\x00" + "\x3d\xff\xbe\xfe\x16\xff\x4b\xff\xaa\xff\x2b\xff\x31\xfe\x50\xff" + "\x80\xff\x42\x00\xc4\xff\x66\x00\xa6\xff\x92\xff\xc8\x00\x93\x00" + "\x7b\x01\xb3\x00\x6d\xff\xbc\x00\x54\x01\xc8\x00\x80\x00\x4f\xff" + "\xc8\xff\x3c\x00\x96\xff\x85\x00\x62\xfe\xc6\xfe\x6b\xff\x6d\xff" + "\xfb\xff\x3b\xfe\xe9\xfe\x67\xfe\xcc\xff\xa0\xff\xad\xff\x12\x00" + "\x13\xff\xad\xff\x9a\x01\x5e\x00\x6e\x00\x0b\x01\xba\x00\x5d\x00" + "\xbd\x00\x70\x01\x45\x01\x5b\x01\xe8\xfe\x7f\x01\x5a\x00\x2b\x00" + "\x5c\x00\x57\xff\x22\x00\xcf\xfe\xf0\xfe\x7a\xff\xc7\xff\x8d\xfe" + "\x7d\xfe\x91\xfe\x6a\xff\xc1\xff\xc1\xfe\x13\xff\x15\xff\xa8\x00" + "\x7d\x00\x9f\xff\x60\x00\x86\x00\x28\x02\xd6\x00\x19\x01\x08\x01" + "\x53\x01\x54\x02\x46\x01\xb7\x00\xa3\x00\xfc\x01\x0e\x00\xda\x00" + "\x63\x00\x04\xff\x07\x00\x9e\x00\xe4\xff\x3a\xfe\x22\xff\x57\xff" + "\x88\x00\x98\xff\x13\xfe\x0d\xff\x35\x00\x4d\xff\xb5\xff\xfa\xfe" + "\x53\xff\x36\x00\x55\xff\xc7\xff\x36\x00\xeb\x00\xbd\xfe\x19\x01" + "\xc4\xff\x71\x00\x23\x01\xe4\xff\x93\x00\xc1\xfe\xd5\x00\xe7\x00" + "\x66\xff\x7c\xff\xa6\xff\x96\xff\xb6\x00\x5b\xff\xfd\xfe\x71\xff" + "\x43\x00\xd1\x00\x1e\xff\x5e\xfe\xb5\xff\x2a\x01\xb0\xff\x6b\xff" + "\xed\x00\x03\xff\xa6\xff\x02\x01\xbd\x00\x7b\x01\xc0\xff\x56\xff" + "\x46\x00\x06\x00\x5d\xff\x84\x00\x13\xff\xb8\xfd\xba\xfe\x5a\xff" + "\x3a\xff\x02\xff\x5f\xff\x19\xff\xb3\xff\x58\x00\xa0\x00\x8d\x00" + "\x07\x01\xb3\x01\xcd\x01\x37\x02\x38\x01\xcb\x01\xca\x02\xe9\x01" + "\x04\x02\x36\x01\xc0\x00\xab\x00\xda\x00\x08\x01\xfe\xfe\xe9\xfe" + "\xfc\xfe\x2a\xff\x5f\xff\xa9\xfd\xab\xfe\x95\xff\xa8\xfe\x16\xfe" + "\xb7\xff\x37\xff\x74\xff\xbb\xff\xc1\xff\x90\xff\xc3\xff\xda\xff" + "\x40\x00\xfc\x01\x49\xff\x72\xff\x4f\x00\xa9\x00\x5e\x01\x8f\x00" + "\xda\xfe\xf3\xfe\x5b\x00\xa1\x01\x41\xff\xed\xfe\xa1\xff\xaf\xff" + "\xc0\x00\xeb\xfe\x06\x00\xdf\x00\x8e\xff\xab\xff\x1e\x00\x27\x00" + "\xc7\x00\x92\x00\xec\xff\x88\xfe\x3d\x00\x4c\x01\x9c\xff\x15\xff" + "\x5f\xff\xcd\xff\x72\xff\x38\xff\x18\xff\x72\xfe\x38\xfe\xb7\xfe" + "\xda\xfe\xdc\xfd\xa1\xfd\x40\xff\xb7\xff\xe8\xff\x57\x00\xa0\x00" + "\xb2\x01\x3e\x02\xbd\x02\x05\x03\xe9\x02\x09\x03\x2b\x03\x1b\x03" + "\x5b\x01\x1a\x02\xad\x03\xf2\x00\x2a\x00\xaf\x00\x02\x00\x29\xff" + "\xb5\xff\xdf\xff\x71\xfd\x5d\xfd\xd5\xfd\x5a\xfe\xdf\xfe\x5d\xfe" + "\xc6\xfd\x46\xfe\x1a\xff\xe4\xff\x11\x00\x0b\x00\x12\x00\x8d\xff" + "\xb3\x00\xc4\x00\xca\xff\x94\x00\xe9\x00\xea\xff\xa7\xff\xa9\xff" + "\x10\x00\xf3\x00\x42\x00\x4f\xff\x1a\xff\xe0\xff\xed\xff\x6b\xff" + "\xbd\xff\xd5\xfe\x97\xff\xea\xff\x1e\xff\x5e\xff\x13\x00\xd8\x00" + "\x2f\x00\x8d\xff\xb9\xff\x9b\x00\xf8\x00\xb6\x00\x88\x00\x87\x00" + "\x83\x00\x13\x00\x2a\x00\xf6\xff\xc8\xff\xd1\xfe\x2a\xfe\xdb\xfd" + "\x93\xfd\xfa\xfd\x27\xfe\x72\xfe\xad\xfe\xd1\xfe\x6c\xff\xed\x00" + "\x96\x01\x11\x02\x17\x02\x3b\x02\x6e\x02\xf2\x02\xbc\x03\x4b\x03" + "\x82\x02\x0e\x02\xf0\x01\x6d\x01\x98\x01\x4b\x01\x36\x00\x51\xff" + "\x1d\xff\x22\xff\x97\xfe\x5c\xfe\x63\xfe\x6e\xfe\xaa\xfd\xba\xfd" + "\x74\xfe\x5f\xff\x43\xff\x0f\xff\x72\xff\xf6\xff\x2f\x00\xb0\xff" + "\xae\x00\x86\x01\x39\x00\x6e\xff\x58\x00\x8c\x00\x0c\x01\xd3\x00" + "\x47\x00\xc3\xff\xfb\xff\xf5\xff\x0c\x00\x64\x00\xcb\xff\xbc\xfe" + "\x3c\xff\xe4\xff\xc6\xfe\xab\xff\x50\x00\xa3\xff\x11\xff\x93\xff" + "\x96\xff\x56\x00\x6d\x00\xc1\xff\xf8\xff\x27\x00\xed\x00\x39\x00" + "\xc8\xff\xeb\xff\x70\xff\xd3\xfe\xb3\xfd\x17\xfd\xee\xfc\x15\xfd" + "\xa5\xfd\xbb\xfd\x6d\xfe\x51\xff\x6a\x00\x96\x01\x97\x02\x51\x03" + "\x88\x03\xa5\x03\xc0\x03\xdb\x03\xa8\x03\x4f\x03\x92\x02\x47\x02" + "\x68\x01\xbd\x00\xcf\x00\x4c\x00\x5b\xff\xc2\xfe\x81\xfe\x59\xfe" + "\x62\xfe\x44\xfe\x80\xfe\x6a\xfe\x48\xfe\x33\xfe\xaa\xfe\x40\xff" + "\x54\xff\x11\xff\x9c\xfe\xd5\xfe\x2f\xff\xbd\xff\xb2\xff\xdc\xff" + "\x3d\x00\x32\x00\x16\x01\x6c\x01\xe5\x00\x26\x01\x33\x01\xcf\x00" + "\x5e\x00\xb7\x00\xe8\x00\x23\x00\x82\x00\x61\x00\x93\x00\x5a\x00" + "\x13\x00\x7c\x00\xb7\xff\xfe\xfe\x45\xff\x38\xff\x3f\xff\x37\xff" + "\x81\xff\x95\xff\x43\xff\x53\x00\xdf\x00\x23\x01\x27\x00\xee\xff" + "\x82\x00\x9d\x00\x73\x00\xcc\xff\xbd\xfd\x38\xfb\xb6\xf9\xb2\xf9" + "\x30\xfb\x5d\xfc\x3d\xfd\x5b\xfd\xcc\xfe\x90\x01\xf0\x03\x8a\x05" + "\x88\x05\x0b\x05\x0e\x05\x6a\x05\x70\x05\x95\x04\x40\x03\xbb\x01" + "\xff\x00\x92\x00\xcb\xff\x37\xff\xf4\xfe\xbc\xfe\xd2\xfe\xb9\xfe" + "\x91\xfe\xe7\xfe\x6a\xff\x9a\xff\x62\xff\x0c\xff\xb5\xfe\x89\xfe" + "\xa2\xfe\xd3\xfe\x30\xff\x7a\xff\xa7\xff\x7b\xff\x5c\xff\x36\xff" + "\xcd\xfe\x93\xfe\x49\xfe\xc1\xfe\x6a\xff\xf1\xff\x63\x00\xd1\x00" + "\x64\x01\x08\x02\x42\x02\x3b\x02\x7b\x01\xc2\x00\x9c\x00\x68\x00" + "\xd9\x00\xba\x00\xa2\x00\xb0\x00\x71\x00\xa4\x00\x5e\x00\xcd\x00" + "\xf9\x00\x02\x00\x0f\xff\x92\xfe\x45\xff\xc3\xff\xc9\xff\x93\xff" + "\x7b\xff\xf2\xff\x0e\x00\x18\x00\xff\xff\xce\xff\x8a\xfe\x55\xfb" + "\x70\xf8\x94\xf6\x06\xf7\xdd\xf8\xa0\xfa\x77\xfc\xab\xfe\xef\x01" + "\x9e\x05\x2f\x08\xc4\x08\xeb\x07\xfb\x06\xcc\x06\x76\x06\xbf\x05" + "\xea\x03\x07\x01\x9d\xfe\xb7\xfd\x42\xfe\xe0\xfe\xf6\xfe\xb5\xfe" + "\x5e\xfe\xe7\xfe\xae\xff\x38\x00\x95\x00\xaf\x00\xf5\x00\xdc\x00" + "\x38\x00\x4c\xff\x69\xfe\x3b\xfe\xb4\xfe\x51\xff\x80\xff\x11\xff" + "\x86\xfe\x3f\xfe\x45\xfe\x24\xfe\xe7\xfd\xde\xfd\x4c\xfe\x59\xff" + "\x43\x00\xc6\x00\xee\x00\x1d\x01\x7a\x01\xd8\x01\xee\x01\x51\x01" + "\xa4\x00\x64\x00\xa2\x00\x05\x01\x46\x01\x4a\x01\x19\x01\xd0\x00" + "\xa6\x00\x6f\x00\x9d\x00\xf8\x00\xca\x00\x40\x00\xa9\xff\x80\xff" + "\xbc\xff\x12\x00\x3f\x00\x7c\x00\x72\x00\x5f\x00\xdf\xff\xb2\xfe" + "\x15\xfc\x66\xf8\x88\xf5\x37\xf4\xaa\xf5\x82\xf8\x3f\xfb\xf5\xfd" + "\x0d\x01\x56\x05\x30\x09\xef\x0a\x5f\x0a\x0a\x08\x54\x06\xa6\x05" + "\x46\x05\x26\x04\x5c\x01\x7e\xfe\xca\xfc\x8b\xfc\x60\xfd\x90\xfe" + "\x9b\xff\x43\x00\xea\x00\x8c\x01\xc6\x01\xb3\x01\x86\x01\x5b\x01" + "\x37\x01\x92\x00\x36\xff\x96\xfd\x69\xfc\x4f\xfc\x11\xfd\x38\xfe" + "\x27\xff\x69\xff\x34\xff\xf5\xfe\xe0\xfe\xb5\xfe\x6a\xfe\x68\xfe" + "\xc2\xfe\x5b\xff\xe1\xff\xfa\xff\xf4\xff\x3d\x00\xd6\x00\x55\x01" + "\x7f\x01\x6f\x01\x36\x01\x43\x01\x66\x01\x8d\x01\xcc\x01\xda\x01" + "\x9d\x01\x3f\x01\x15\x01\xda\x00\xa3\x00\x70\x00\x3d\x00\x09\x00" + "\xdd\xff\xe3\xff\xf4\xff\xef\xff\xe5\xff\x02\x00\x9f\x00\x50\x01" + "\x9a\x00\x88\xfd\x5f\xf8\xd3\xf3\x57\xf2\x27\xf4\x85\xf7\x5b\xfa" + "\xd2\xfc\x46\x00\x4b\x05\x3c\x0a\x8f\x0c\x76\x0b\x61\x08\xd0\x05" + "\xec\x04\x62\x04\xe8\x02\xea\xff\x9f\xfc\xd3\xfa\x16\xfb\xd9\xfc" + "\xee\xfe\xd9\x00\xa5\x02\x4f\x04\x5e\x05\x3d\x05\x10\x04\xae\x02" + "\x8a\x01\xaa\x00\x79\xff\xa9\xfd\xbb\xfb\xa8\xfa\x04\xfb\x56\xfc" + "\xe8\xfd\x3a\xff\x30\x00\xd3\x00\xe7\x00\x35\x00\xb8\xfe\x22\xfd" + "\x94\xfc\x2c\xfd\x5d\xfe\x20\xff\x0e\xff\xde\xfe\x50\xff\x9a\x00" + "\xd8\x01\x45\x02\x0c\x02\xec\x01\x2d\x02\x99\x02\xc8\x02\x91\x02" + "\x10\x02\xa3\x01\x3a\x01\xaf\x00\x22\x00\xc0\xff\xb1\xff\xd8\xff" + "\x1a\x00\x0b\x00\xe9\xff\xda\xff\x0b\x00\x85\x00\xf5\x00\x19\x01" + "\x31\x00\x75\xfd\x4d\xf9\x44\xf5\x69\xf3\x7b\xf4\x70\xf7\xcd\xfa" + "\x00\xfe\xbf\x01\x32\x06\x53\x0a\x48\x0c\x48\x0b\x4d\x08\x0f\x05" + "\x9c\x02\xc0\x00\xe9\xfe\xce\xfc\x0f\xfb\x98\xfa\x94\xfb\xa5\xfd" + "\x34\x00\xe7\x02\x7a\x05\x64\x07\xdf\x07\x81\x06\xc7\x03\xe4\x00" + "\xb8\xfe\x39\xfd\xf0\xfb\x98\xfa\xa9\xf9\xc4\xf9\x07\xfb\x26\xfd" + "\x99\xff\x13\x02\x70\x04\x2b\x06\x88\x06\xff\x04\x6b\x01\x39\xfd" + "\x25\xfa\x07\xf9\xa8\xf9\xcb\xfa\xfc\xfb\x75\xfd\xc8\xff\x9f\x02" + "\xc3\x04\x68\x05\xc1\x04\x96\x03\x60\x02\x08\x01\x89\xff\x5a\xfe" + "\xef\xfd\x5a\xfe\x1b\xff\xde\xff\x8f\x00\x1f\x01\x8e\x01\x5a\x01" + "\xc4\x00\x5f\x00\xa7\x00\x7b\x01\x2d\x02\x3b\x02\xe3\x01\x30\x01" + "\x0d\x00\x31\xfd\xd9\xf7\x0a\xf3\xe9\xf0\x54\xf3\x44\xf8\xd6\xfc" + "\xd3\x00\x95\x04\x39\x09\x0d\x0d\xb2\x0d\x0e\x0b\x98\x06\xb0\x02" + "\x0c\x00\x9a\xfd\x12\xfb\xda\xf8\x52\xf8\xcf\xf9\x91\xfc\xd7\xff" + "\x48\x03\xfa\x06\x08\x0a\x1e\x0b\xbe\x09\x46\x06\x2b\x02\x77\xfe" + "\x4f\xfb\xe2\xf8\x2a\xf7\xc1\xf6\xb9\xf7\xd0\xf9\xbd\xfc\x03\x00" + "\x78\x03\x82\x06\x6c\x08\xac\x08\xfe\x06\xd0\x03\xc3\xff\x96\xfb" + "\x8c\xf8\x66\xf7\x6d\xf8\xbe\xfa\x4e\xfd\xac\xff\xe4\x01\xf7\x03" + "\x4e\x05\x6d\x05\x50\x04\xaf\x02\x57\x01\x4a\x00\x3a\xff\x40\xfe" + "\x9c\xfd\xde\xfd\x89\xfe\x34\xff\x86\xff\xd1\xff\x68\x00\x1f\x01" + "\x59\x01\x38\x01\x53\x01\x00\x02\xd3\x02\x65\x02\xe3\xff\xf0\xfa" + "\xec\xf5\x8d\xf2\x34\xf2\x9c\xf4\xb1\xf8\x4e\xfe\x9d\x04\xad\x0a" + "\x9e\x0e\x37\x0f\x13\x0d\x50\x09\x12\x05\xd8\x00\xb9\xfc\xb3\xf9" + "\x42\xf8\x3a\xf8\xef\xf8\x46\xfa\x03\xfd\x6b\x01\x72\x06\x2a\x0a" + "\x3d\x0b\x0a\x0a\x5b\x07\xc8\x03\x70\xff\xa4\xfa\xbb\xf6\xcc\xf4" + "\x00\xf5\xb8\xf6\x38\xf9\x7c\xfc\x94\x00\xf6\x04\x8a\x08\x6e\x0a" + "\x84\x0a\x03\x09\x18\x06\xee\x01\x4d\xfd\x6b\xf9\x0a\xf7\xe6\xf5" + "\xb2\xf5\xf3\xf6\x34\xfa\x08\xff\xc0\x03\x2a\x07\x21\x09\xc1\x09" + "\xe5\x08\xe2\x05\x1d\x01\x36\xfc\x0f\xf9\x5b\xf8\x85\xf9\xd5\xfb" + "\x10\xff\xb2\x02\xa4\x05\xae\x06\x8c\x05\x98\x03\x10\x02\x32\x01" + "\x5e\x00\x83\xff\x40\xff\xa7\xff\xce\xff\xc4\xfe\xe2\xfc\x77\xfb" + "\x81\xfa\xa4\xf8\x72\xf5\x02\xf3\xed\xf3\x43\xf8\xcd\xfd\x8b\x02" + "\xba\x06\x00\x0b\x5c\x0e\xd6\x0e\xd8\x0b\x10\x07\x86\x02\xc0\xfe" + "\x6d\xfb\xd6\xf8\x0f\xf8\x52\xf9\x80\xfb\xb9\xfd\x64\x00\x7e\x04" + "\x63\x09\xef\x0c\x62\x0d\xd4\x0a\x96\x06\x5c\x01\x49\xfb\x33\xf5" + "\x05\xf1\x77\xf0\x56\xf3\xb5\xf7\x20\xfc\x48\x00\x85\x04\x56\x08" + "\x9a\x0a\xd1\x0a\x92\x09\x86\x07\x76\x04\x07\x00\xc9\xfa\xa4\xf6" + "\xe8\xf4\x1f\xf5\xd5\xf5\x30\xf7\xe0\xfa\xd4\x00\xe8\x06\x70\x0a" + "\x2e\x0b\x8e\x0a\xf2\x08\x97\x05\x31\x00\xab\xfa\x80\xf7\x38\xf7" + "\xb5\xf8\x10\xfb\x6e\xfe\xb8\x02\x1f\x06\x0b\x07\xb7\x05\x1b\x04" + "\x3d\x03\x4e\x02\x85\x00\xd3\xfe\x8f\xfe\x96\xff\xd6\xff\xd8\xfe" + "\x4e\xfd\xd6\xfc\xc8\xfb\x72\xf8\x82\xf4\xd2\xf1\xa7\xf3\xed\xf7" + "\xc4\xfc\xec\x01\x3e\x07\xca\x0c\x99\x0f\x7c\x0e\xe3\x0a\x62\x06" + "\x80\x02\x57\xfe\x49\xfa\x04\xf8\xdc\xf7\x4c\xf9\xb1\xfa\xa2\xfc" + "\x8b\x00\x19\x06\x87\x0b\x22\x0e\x89\x0d\xce\x0a\x4b\x06\x7c\x00" + "\xb8\xf9\x3e\xf4\xd8\xf1\x71\xf2\xe9\xf4\x06\xf8\xf8\xfb\xa7\x00" + "\x02\x05\x1d\x08\xb3\x09\x57\x0a\xe3\x09\xaf\x07\x97\x03\x8d\xfe" + "\x25\xfa\x0c\xf7\x78\xf5\xa2\xf5\x9e\xf7\xb3\xfa\x5b\xfd\x9f\xff" + "\xe7\x01\x8d\x04\xbf\x06\x56\x07\xa5\x06\x1e\x05\x07\x03\x25\x00" + "\x9b\xfc\xdc\xf9\x17\xf9\x5d\xfa\xfc\xfc\x40\x00\xff\x03\x05\x07" + "\x6a\x08\x96\x07\xdd\x05\x22\x04\xb9\x02\x31\x01\x60\xff\xf2\xfd" + "\x69\xfd\x44\xfd\x1b\xfd\x68\xfc\x93\xfc\xdf\xfd\x87\xff\x0c\xff" + "\x68\xf9\x35\xf4\xe6\xf1\xe2\xf3\x85\xf7\x5d\xfa\x3d\xff\xb4\x05" + "\x70\x0b\xcb\x0d\x50\x0c\x9c\x0a\xa8\x08\xef\x04\xbe\xff\xfb\xfa" + "\xdb\xf9\x47\xfa\xff\xf9\xa8\xf9\xf2\xfb\x0a\x02\x71\x08\xfe\x0b" + "\xdd\x0c\x2c\x0c\x64\x0a\xa9\x05\xb0\xfe\xaa\xf8\xb3\xf5\x2d\xf5" + "\xb8\xf4\x7d\xf4\x85\xf6\x16\xfb\x58\x00\x49\x04\x6b\x07\xd4\x0a" + "\x44\x0d\x52\x0c\x55\x07\xdf\x00\x41\xfb\x01\xf7\xbf\xf3\x3c\xf2" + "\xfc\xf3\x5a\xf8\x22\xfd\xa3\x00\xdd\x02\xd1\x04\x77\x06\xe7\x06" + "\xee\x05\x02\x04\xe5\x01\xb9\xff\x8f\xfd\x3d\xfc\xe7\xfb\x9e\xfc" + "\xb7\xfd\xfb\xfe\x96\x00\xb8\x02\xe0\x04\x72\x06\x24\x07\x50\x07" + "\xda\x06\x91\x05\x72\x03\xeb\x00\x83\xfe\x7a\xfc\xba\xfa\x6a\xf9" + "\x69\xf9\xde\xfa\x5a\xfd\x5b\xff\xe4\x00\xc4\x01\x0c\x02\x84\xfe" + "\x6b\xf8\xf6\xf3\xff\xf2\xfe\xf4\xff\xf6\xe9\xf9\x7a\xff\x36\x06" + "\x04\x0b\x7a\x0c\x53\x0c\x18\x0c\xc1\x09\x09\x05\x6e\xff\xed\xfb" + "\xaa\xfa\xad\xf9\xd9\xf8\x1c\xfa\xd2\xfe\xe2\x04\x41\x09\x4a\x0b" + "\xe5\x0b\x47\x0b\x68\x08\x37\x03\xe7\xfd\x26\xfa\xd0\xf7\xa5\xf5" + "\xe7\xf3\x52\xf4\x71\xf7\xea\xfb\x78\x00\xea\x04\x27\x09\xb6\x0b" + "\x08\x0b\x23\x07\xf0\x01\x01\xfd\x95\xf8\x20\xf5\x73\xf3\x88\xf4" + "\x97\xf7\x0f\xfb\x64\xfe\xd9\x01\xbf\x05\xc9\x08\xa2\x09\x52\x08" + "\x8f\x05\x06\x02\x22\xfe\x9b\xfa\xcf\xf8\x51\xf9\x92\xfb\x98\xfe" + "\xb5\x01\xae\x04\xdb\x06\x89\x07\xbd\x06\x29\x05\xc6\x03\xd3\x02" + "\x17\x02\x63\x01\xd8\x00\x50\x00\x8d\xff\x40\xfe\x9e\xfc\x57\xfb" + "\xc3\xfa\x0b\xfb\x06\xfc\xb1\xfd\xcd\xff\xb5\x01\xa1\x02\x58\x02" + "\xe6\x00\x8a\xfe\x9a\xfa\x6f\xf6\x13\xf4\x19\xf4\x0b\xf6\x64\xf8" + "\xc8\xfb\xf1\x00\xb2\x06\x1b\x0b\xd1\x0c\xb6\x0c\x5d\x0b\x6e\x08" + "\x62\x04\x7b\x00\x3b\xfe\x2b\xfd\x4e\xfc\xfb\xfb\x2c\xfd\xf9\xff" + "\x16\x03\x66\x05\xfe\x06\xed\x07\xad\x07\x99\x05\x22\x02\x77\xfe" + "\x2a\xfb\x64\xf8\x89\xf6\x32\xf6\x96\xf7\x17\xfa\xfe\xfc\xfc\xff" + "\x9f\x02\x43\x04\x5c\x04\x25\x03\x6d\x01\x6f\xff\x80\xfd\xf1\xfb" + "\x6c\xfb\x35\xfc\xb7\xfd\x2f\xff\x7d\x00\xd6\x01\x2e\x03\x2a\x04" + "\x86\x04\xaa\x04\xc3\x04\x37\x04\xb6\x02\x0c\x01\xe4\xff\xa0\xff" + "\x5e\xff\xdc\xfe\xbd\xfe\xa5\xff\x26\x00\xd6\x00\x11\x01\xf9\x01" + "\x2b\x00\xdf\xf8\x3f\xf3\x0c\xf2\xed\xf5\xc8\xf9\x7b\xfb\xa1\xff" + "\x5a\x05\x9d\x09\xae\x0a\xa1\x09\x98\x09\xb0\x07\x29\x02\xf0\xfb" + "\xa3\xf8\x10\xf9\x7f\xf9\xc3\xf8\x13\xfa\x01\xff\x0c\x05\xd1\x08" + "\x5e\x0a\x6b\x0b\xfd\x0a\x84\x07\xa4\x01\xc8\xfc\x52\xfa\x84\xf8" + "\x61\xf6\x2f\xf5\x9e\xf6\x1b\xfa\xd9\xfd\xe1\x01\x89\x06\x07\x0b" + "\x04\x0d\x69\x0b\x7c\x07\xa4\x02\xd5\xfd\x63\xf9\x8a\xf6\xf5\xf5" + "\x1f\xf7\x17\xf9\x2b\xfb\xcd\xfd\xc9\x00\xc1\x03\x2f\x06\x62\x07" + "\x3b\x07\x46\x05\xd2\x01\x42\xfe\x95\xfb\x68\xfa\x3e\xfa\x4c\xfa" + "\xe5\xfa\x47\xfc\x8f\xfe\xa6\x01\x04\x05\xbb\x07\x87\x08\x3d\x07" + "\x10\x05\x47\x03\xff\x01\xcb\x00\xe3\xff\x77\xff\x0a\xff\xb9\xfd" + "\xdb\xfb\x27\xfb\x54\xfb\x34\xfb\xb8\xfa\x56\xfa\x54\xfb\xb5\xfc" + "\x96\xfd\x9e\xfe\xb4\x00\xb4\x03\x44\x05\x9a\x04\xd7\x02\x05\x01" + "\x5a\xff\x97\xfd\xe2\xfc\xcc\xfd\xf4\xfe\x2b\xff\xee\xfe\xfe\xff" + "\xb5\x02\xad\x05\xb7\x07\x7e\x08\xde\x07\xcf\x05\xc0\x02\x1f\x00" + "\x90\xfe\xa1\xfd\x6e\xfc\xf8\xfa\x3d\xfa\xb8\xfa\x65\xfc\xe9\xfe" + "\xef\x01\xb1\x04\xf1\x05\x52\x05\x85\x03\x77\x01\xd3\xff\x55\xfe" + "\xb2\xfc\x46\xfb\x1f\xfa\xa3\xf9\x8d\xf9\x8b\xf9\xfb\xfa\xed\xfd" + "\x7f\x01\x27\x04\x23\x05\x94\x05\xb6\x05\x68\x05\x54\x04\x49\x02" + "\xb4\xff\x7f\xfc\xda\xf9\xab\xf9\x84\xfc\xcf\x00\xbb\x03\xbf\x04" + "\x11\x05\x55\x05\x07\x05\xde\x03\x6b\x02\xc3\x00\x4f\xfe\xd3\xfb" + "\xf2\xfa\xc4\xfb\x9a\xfc\x2b\xfc\x78\xfb\x20\xfc\xea\xfc\xd9\xfb" + "\xdc\xfa\x15\xfc\x17\xff\x17\x01\xa1\x00\x1c\x01\x45\x03\xf1\x04" + "\xcc\x04\x8c\x03\x8f\x03\x66\x03\x78\x01\x44\xff\x97\xfe\x95\xff" + "\xad\xff\x58\xfe\x0f\xfe\x95\xff\xdb\x01\x33\x03\xc2\x03\x9d\x04" + "\xb9\x04\x6e\x03\x87\x01\x16\x00\xfe\xfe\x03\xfd\xbe\xfa\xff\xf9" + "\x19\xfb\x0f\xfd\xf9\xfe\xec\x00\xae\x02\x47\x03\xcf\x02\x3e\x02" + "\x1a\x02\x80\x01\xf9\xff\x0a\xfe\x90\xfc\xa9\xfb\x6f\xfb\x73\xfc" + "\x8e\xfe\x92\x00\x68\x01\x8a\x01\x05\x02\xbf\x02\xf9\x02\x87\x02" + "\x9b\x01\xb5\x00\x56\xff\x57\xfe\x6a\xfe\x36\xff\xbd\xff\xc7\xff" + "\x72\xff\xd2\xff\xa7\x00\x20\x01\x52\x01\x6a\x01\x63\x01\x86\x00" + "\x4a\xfe\xd8\xfb\x0a\xfb\xce\xf9\x29\xf9\x16\xf9\xc4\xfa\xfc\xfd" + "\x69\x00\x66\x03\x52\x06\x7e\x08\x11\x09\x6b\x07\x8e\x05\x85\x03" + "\xbe\x00\xc3\xfd\x13\xfb\x31\xfa\x97\xfa\xd1\xfb\x4f\xfe\x6b\x01" + "\x1b\x04\x41\x05\x29\x05\x13\x05\x83\x04\x2b\x03\xdd\x00\x4a\xfe" + "\xed\xfb\xe4\xf9\xd5\xf8\x5d\xf9\x3c\xfb\x8a\xfd\xa9\xff\xe3\x01" + "\x41\x04\x4a\x06\x3d\x07\xc6\x06\x41\x05\x95\x02\x71\xff\x8f\xfc" + "\xd3\xfa\x17\xfa\x06\xfa\x31\xfa\x7a\xfa\x75\xfb\xa5\xfd\xbf\x00" + "\x39\x03\x15\x04\xf9\x03\x17\x04\x4e\x04\xc9\x03\x21\x02\xd9\xff" + "\xb3\xfd\x2a\xfc\xbe\xfb\x1b\xfd\x7b\xff\x89\x01\xc5\x02\xa5\x03" + "\xf5\x04\x20\x06\xc9\x05\xfc\x03\xa0\x01\x8b\xff\x14\xfe\x37\xfd" + "\x43\xfd\x3c\xfd\x50\xfb\xcf\xf8\x6b\xf8\x3a\xfa\xc1\xfb\xd9\xfa" + "\xdb\xf9\xf0\xfa\x1d\xfe\x0c\x02\xee\x04\xa2\x06\x41\x06\x29\x04" + "\x0b\x03\xe4\x03\xdd\x04\x4b\x03\x46\xff\x16\xfc\xad\xfb\x8e\xfd" + "\xe0\xff\x73\x01\x0e\x02\x01\x02\x85\x02\xa2\x04\xc9\x06\xad\x06" + "\x17\x04\x8b\x00\x7f\xfe\xb9\xfd\x97\xfc\x63\xfa\x58\xf8\xf7\xf7" + "\xde\xf9\x74\xfd\x08\x01\xe3\x02\xe5\x02\x73\x02\x04\x03\x8a\x04" + "\x56\x04\xac\x01\x6f\xfe\xd4\xfc\x13\xfd\xb0\xfd\x03\xfe\x2b\xfe" + "\x83\xfe\xe3\xff\x1c\x02\x63\x04\x42\x05\xa7\x04\xc6\x03\x6e\x03" + "\xa5\x02\x82\x00\x9d\xfd\xa4\xfb\x24\xfb\x27\xfb\xc4\xfb\x50\xfc" + "\x0d\xfd\xe8\xfd\xd8\xfe\xcf\x00\xed\x01\x30\x01\x1f\xff\x53\xfa" + "\x3d\xf9\xe1\xfb\x63\xfd\xba\xfb\x2a\xf9\x79\xfd\x91\x04\xe2\x08" + "\x54\x09\xe9\x07\xfd\x07\x02\x08\x57\x07\xd4\x06\x16\x04\xab\xfe" + "\xa0\xf9\x00\xf9\xfd\xfb\xfd\xfd\x9e\xfd\xea\xfc\xaf\xfe\x1c\x02" + "\x8a\x04\x73\x05\x98\x04\xff\x01\x57\xff\x2c\xfe\xd3\xfd\xf8\xfb" + "\xd0\xf8\x97\xf7\x0d\xfa\xe5\xfd\x0e\x00\xf1\x00\x1d\x02\x18\x04" + "\x45\x06\x16\x07\x96\x06\x45\x04\x02\x01\xd7\xfe\x1d\xfe\xbf\xfd" + "\x0e\xfc\x43\xfa\x71\xfa\x97\xfc\x35\xff\x92\x00\x2a\x01\xea\x01" + "\x98\x02\x20\x03\xd5\x02\xc5\x01\x67\xff\x4f\xfc\x3a\xfb\x19\xfc" + "\xd6\xfc\xe0\xfb\x7f\xfb\xbc\xfd\x39\x01\x05\x04\x40\x05\xda\x05" + "\x01\x06\xa8\x05\x2c\x05\xda\x03\x72\x01\xc7\xfe\x36\xfd\x38\xfd" + "\x72\xfd\xb6\xfd\x96\xfe\xee\xff\x3d\x01\x59\x02\xf8\x02\xa4\x02" + "\x5f\x01\x03\x00\x0c\xff\x5c\xfe\xe7\xfd\xe7\xfc\x62\xfb\x78\xfa" + "\x91\xfa\xc1\xfa\x38\xfa\xc3\xf9\x7c\xfa\xed\xfb\xa6\xfd\xc2\xff" + "\x50\x02\x9a\x04\xf3\x05\x12\x07\x1d\x08\x57\x08\x2a\x07\x16\x05" + "\x11\x03\x49\x01\xaf\xff\x49\xfe\x6a\xfd\xf4\xfc\xf4\xfc\xae\xfd" + "\xf5\xfe\x9d\x00\x11\x02\xf5\x02\x56\x03\x34\x03\x6a\x02\x18\x01" + "\x73\xff\xa6\xfd\x1f\xfc\x5b\xfb\x87\xfb\x71\xfc\xaf\xfd\x31\xff" + "\x32\x01\x60\x03\xc1\x04\xdb\x04\x74\x04\xa5\x03\xa2\x02\x08\x01" + "\x39\xff\xad\xfd\x6d\xfc\x72\xfb\x7b\xfa\x1d\xfa\x1f\xfa\x80\xfa" + "\xc3\xfa\x62\xfb\x95\xfc\xed\xfd\x44\xff\x68\x00\x6a\x01\x4a\x02" + "\x0a\x03\xaf\x03\xe3\x03\x77\x03\xc0\x02\x6b\x02\xaf\x02\xbb\x02" + "\x79\x02\x4b\x02\xbf\x02\x53\x03\x45\x03\xde\x02\x92\x02\x47\x02" + "\x94\x01\x65\x00\x2c\xff\x4e\xfe\xd4\xfd\x55\xfd\xc9\xfc\x98\xfc" + "\xd9\xfc\x32\xfd\x8a\xfd\xd4\xfd\x3f\xfe\xb8\xfe\x25\xff\x9b\xff" + "\x2c\x00\x7f\x00\x63\x00\xe5\x00\x81\x01\x90\x01\x4a\xff\x68\xfd" + "\x43\xfe\x31\xff\xbd\xfd\xd7\xfb\x29\xfd\x0e\x00\xe8\x01\x95\x02" + "\xa2\x03\xfb\x04\x5b\x05\x45\x05\xfc\x04\x99\x03\x9c\x01\x46\x00" + "\x50\xff\xb2\xfd\x98\xfc\xbc\xfc\x9a\xfd\xe3\xfd\x8c\xfe\x75\xff" + "\x4f\x00\x64\x00\x76\x00\x76\x00\xa6\xff\xab\xfe\x7b\xfe\x08\xfe" + "\xb1\xfd\x79\xfd\x54\xfe\x11\x00\xd9\x00\xd1\x01\x91\x01\x44\xff" + "\x19\xfc\x1a\xff\xbf\x00\x9f\xfc\x2d\xf8\x04\xfb\x94\x01\xc1\x03" + "\xb5\x02\x2c\x02\x0f\x05\x14\x07\x92\x07\x6d\x06\xd9\x03\xc2\x00" + "\xfa\xff\x4d\x00\x88\xfe\x84\xfb\x04\xfb\x11\xfd\xab\xfe\x78\xfe" + "\x67\xfe\xf5\xff\xa2\x02\x0c\x04\x82\x03\x72\x02\xea\x01\xbf\x01" + "\xb1\x00\xed\xfe\x01\xfd\x28\xfc\x54\xfc\xa2\xfc\x71\xfc\x92\xfc" + "\xa6\xfd\x76\xff\xcd\x00\x75\x01\x77\x01\x92\x01\x53\x02\x2a\x03" + "\x75\x02\xaa\xff\xf7\xfd\x64\xfe\xc1\xfe\x26\xfd\xc1\xfb\xca\xfc" + "\x3f\xff\x4a\x01\xe6\x01\x53\x02\x36\x03\x23\x04\x52\x04\x73\x03" + "\xe7\x01\x93\x00\x74\x00\x9d\x00\xf3\xff\x2a\xff\xa1\xff\xfa\x00" + "\xa9\x01\x0c\x01\x87\x00\xbf\x00\x1a\x01\x46\x00\xa6\xfe\x9e\xfd" + "\x48\xfd\x67\xfd\xfb\xfb\x09\xfa\x00\xf9\x7b\xf9\xed\xf9\xaf\xf9" + "\x0a\xfa\x57\xfb\x50\xfd\x47\xff\xbd\x01\xaf\x03\x17\x05\x8e\x06" + "\x32\x08\xd0\x08\xf4\x07\x93\x06\x9c\x05\xe4\x04\x96\x03\xc3\x01" + "\x35\x00\x84\xff\x50\xff\xfb\xfe\xd1\xfe\x13\xff\x39\xff\x06\xff" + "\xda\xfe\xdd\xfe\x8c\xfe\x1b\xfe\xcd\xfd\xcd\xfd\xd7\xfd\x17\xfe" + "\x93\xfe\x39\xff\x68\xff\xa6\xff\x71\x00\x5c\x01\x89\x01\xfd\x00" + "\x30\x01\x6d\x01\x9b\x01\x9a\x00\x24\xff\x6d\xfe\xaa\xfd\x61\xfc" + "\x52\xfb\xa7\xfa\x3e\xfa\xbb\xfa\xb2\xfb\xc8\xfc\xf9\xfd\xaa\xff" + "\xa3\x01\x41\x03\x47\x04\x0b\x05\x7d\x05\xaa\x05\x51\x05\xc9\x04" + "\xfe\x03\x15\x03\x92\x02\x2c\x02\x77\x01\xd0\x00\xab\x00\x8b\x00" + "\x28\x00\x80\xff\x0b\xff\xb0\xfe\x4a\xfe\xf5\xfd\xa8\xfd\x58\xfd" + "\x2f\xfd\x71\xfd\xe5\xfd\x6c\xfe\x02\xff\x6d\xff\xa2\xff\x16\x00" + "\x9a\x00\xf7\x00\xcd\x00\xae\x00\xa3\x00\xa1\x00\xa1\x00\xa2\x00" + "\x6f\x00\x4d\xff\x20\xfe\x29\xfc\xb2\xfb\x70\xfc\xcb\xfb\x42\xfa" + "\x1e\xfb\x2c\xfe\x8d\x00\xff\x01\x13\x03\xb0\x04\x55\x06\x5f\x07" + "\xc7\x06\xad\x05\xd0\x04\x11\x04\x01\x03\x73\x01\x31\x00\xf6\xff" + "\xeb\xff\x74\xff\x8a\xfe\x2a\xfe\x9a\xfe\xd4\xfe\x10\xfe\x92\xfc" + "\x00\xfc\xb5\xfc\xce\xfc\xaf\xfb\x43\xfb\x21\xfc\x73\xfd\x33\xfe" + "\x95\xfe\x32\xff\x3b\x00\x7d\x01\x37\x02\xfe\x01\x0a\x02\x83\x02" + "\xbb\x02\x8b\x02\x13\x02\xf4\x01\x1f\x02\x15\x02\xb4\x01\x0f\x01" + "\xc3\x00\xfa\x00\xef\x00\xf9\xff\x2a\xff\x10\xff\x69\xff\xf7\xfe" + "\x34\xfe\xa6\xfd\x10\xfe\xd4\xfe\x51\xff\x61\xff\xbb\xff\x7e\x00" + "\x4f\x01\xde\x01\xcc\x01\xae\x01\x8f\x01\x92\x01\x33\x01\x98\x00" + "\x8d\xff\x6d\xff\xd5\xfe\xaf\xfe\x0b\xfe\x6f\xfe\x2d\xfe\x67\xfe" + "\x82\xfe\x83\xff\x86\xff\x0e\x00\x73\xff\x01\x00\xeb\xfe\x29\xfb" + "\x60\xfe\x3d\xff\xfd\xfc\x4c\xfa\x08\xfd\xb8\xff\xdb\x00\x6e\x00" + "\xa2\x01\x1f\x02\x63\x04\xef\x05\xac\x05\x0b\x05\x2d\x04\xfe\x05" + "\xeb\x05\xf1\x03\xf4\x01\x35\x02\xbc\x01\x93\x00\x72\xfe\xcc\xfd" + "\x04\xfc\x9c\xfc\xaf\xfc\x71\xfb\x40\xfa\x20\xfb\x84\xfc\x88\xfc" + "\x6f\xfc\x7b\xfd\xb2\xfe\xa1\xff\xd1\x00\x2a\x01\xc8\x01\x3a\x02" + "\x30\x03\x21\x03\xcc\x02\x0d\x02\xf5\x01\xc2\x01\x65\x01\x71\x00" + "\xb9\xff\x75\xff\x6c\xff\x40\xff\x1c\xff\xd0\xfe\x37\xff\xda\xff" + "\xdf\xff\x0d\x00\x1c\x00\x85\x00\x82\x00\x29\x00\xcb\xff\xbd\xff" + "\xad\xff\xb6\xff\xa1\xff\x7a\xff\x94\xff\x01\x00\x87\x00\x60\x00" + "\x1b\x00\x56\x00\x79\x00\x5a\x00\xd2\xff\x86\xff\x6f\xff\x60\xff" + "\x4f\xff\xf6\xfe\xb3\xfe\xc4\xfe\x57\xff\x73\xff\x60\xff\x75\xff" + "\xfe\xff\x3b\x00\x19\x00\x4a\x00\x4d\x00\xf3\xff\xd8\xff\xdd\xff" + "\xae\xff\xcd\xff\xd5\xff\x09\x00\x30\x00\x68\x00\x80\x00\x9d\x00" + "\xae\x00\xcd\x00\xba\x00\xa5\x00\xa6\x00\xb0\x00\xa1\x00\x9d\x00" + "\xcb\x00\x06\x01\x20\x01\x12\x01\x4b\x01\x45\x01\x3b\x01\x18\x01" + "\xd2\x00\x77\x00\x35\x00\xb5\xff\x7c\xff\x2c\xff\xe7\xfe\xb1\xfe" + "\x92\xfe\x7c\xfe\x74\xfe\x7a\xfe\x9e\xfe\xc4\xfe\xc8\xfe\xfa\xfe" + "\x56\xff\xc2\xff\xd8\xff\x2f\x00\x71\x00\xba\x00\xdc\x00\x13\x01" + "\x2e\x01\x45\x01\x1c\x01\x04\x01\xf4\x00\xc0\x00\x86\x00\x16\x00" + "\xb6\xff\x51\xff\x1b\xff\xc3\xfe\x69\xfe\x16\xfe\x2b\xfe\x46\xfe" + "\x31\xfe\x3c\xfe\x7f\xfe\xc1\xfe\xe9\xfe\x28\xff\x7a\xff\xab\xff" + "\xea\xff\x3d\x00\x63\x00\xa2\x00\xe3\x00\x1c\x01\x57\x01\x8b\x01" + "\xbc\x01\x02\x02\x50\x02\x60\x02\x59\x02\x55\x02\x4f\x02\x3f\x02" + "\xe7\x01\x82\x01\x26\x01\xc0\x00\x67\x00\x16\x00\xa6\xff\x35\xff" + "\xeb\xfe\xdb\xfe\x9c\xfe\x67\xfe\x59\xfe\x59\xfe\x5d\xfe\x63\xfe" + "\x72\xfe\x7e\xfe\x87\xfe\xc3\xfe\x20\xff\x37\xff\x3f\xff\x52\xff" + "\xb6\xff\xd9\xff\xd6\xff\xd0\xff\xe0\xff\xee\xff\x12\x00\x10\x00" + "\x15\x00\x31\x00\x61\x00\x7d\x00\x7c\x00\xa7\x00\xbc\x00\xc4\x00" + "\xcf\x00\xe7\x00\xcc\x00\xd8\x00\xdd\x00\x03\x01\xe8\x00\xd4\x00" + "\xf3\x00\x03\x01\xe9\x00\xf0\x00\xfb\x00\xc3\x00\x96\x00\x84\x00" + "\x6a\x00\x07\x00\xa4\xff\x61\xff\x24\xff\xe5\xfe\xa5\xfe\x60\xfe" + "\x2c\xfe\x11\xfe\x0e\xfe\xe8\xfd\xc1\xfd\xbc\xfd\xbe\xfd\xc0\xfd" + "\xec\xfd\x1f\xfe\x52\xfe\xa2\xfe\x39\xff\xd3\xff\x2d\x00\xa7\x00" + "\x3e\x01\xce\x01\x36\x02\x79\x02\xb0\x02\xc4\x02\xe0\x02\xea\x02" + "\xc0\x02\x7b\x02\x3c\x02\x10\x02\xca\x01\x77\x01\x31\x01\xf5\x00" + "\xb7\x00\x81\x00\x44\x00\xf6\xff\xb8\xff\x9d\xff\x69\xff\x0c\xff" + "\xc0\xfe\x92\xfe\x60\xfe\x27\xfe\xf3\xfd\xcb\xfd\xc4\xfd\xe8\xfd" + "\x04\xfe\x1a\xfe\x39\xfe\x71\xfe\xcb\xfe\x11\xff\x45\xff\x6f\xff" + "\xbb\xff\x18\x00\x5c\x00\x71\x00\x81\x00\x9d\x00\xb1\x00\xb4\x00" + "\xa5\x00\xa4\x00\x8d\x00\x8c\x00\xae\x00\xc6\x00\xc3\x00\xd2\x00" + "\x00\x01\x38\x01\x49\x01\x54\x01\x6d\x01\x76\x01\x89\x01\x83\x01" + "\x64\x01\x2a\x01\xfb\x00\xd1\x00\x82\x00\x19\x00\xd0\xff\x82\xff" + "\x41\xff\xf4\xfe\xad\xfe\x72\xfe\x3f\xfe\x2e\xfe\x20\xfe\x18\xfe" + "\x0b\xfe\x24\xfe\x57\xfe\x96\xfe\xb3\xfe\xef\xfe\x40\xff\x85\xff" + "\xc2\xff\xf6\xff\x1b\x00\x4a\x00\x6c\x00\x82\x00\x94\x00\x89\x00" + "\x73\x00\x72\x00\x7b\x00\x7e\x00\x7f\x00\x7f\x00\x93\x00\xb0\x00" + "\xe2\x00\x03\x01\x0f\x01\x2c\x01\x50\x01\x55\x01\x4d\x01\x42\x01" + "\x29\x01\xfc\x00\xcc\x00\x9a\x00\x62\x00\x1c\x00\xdc\xff\xb8\xff" + "\x88\xff\x5b\xff\x36\xff\x19\xff\x09\xff\xe3\xfe\xdc\xfe\xe1\xfe" + "\xf1\xfe\xd4\xfe\xda\xfe\xe7\xfe\x0b\xff\x19\xff\x45\xff\x77\xff" + "\xa7\xff\xdc\xff\x2d\x00\x77\x00\xae\x00\xcc\x00\xf3\x00\x19\x01" + "\xf8\x00\x0b\x01\xa4\x00\x13\x01\xa7\x00\x4b\x00\x80\x00\xf9\xff" + "\x0b\x00\x9f\xff\xdc\xff\x4a\xff\x4c\xfd\x29\x00\x8e\xff\x45\xff" + "\xee\xff\x91\x00\x21\x01\xb2\xff\x6d\x02\x77\x00\x59\x00\x44\x00" + "\xdb\xff\x60\xfe\xd7\xfe\x44\x00\xd0\xfe\x5f\xff\x4a\xff\x2f\x00" + "\x5d\x00\xbb\x00\xfe\x00\x52\x00\xd4\xff\x11\x00\xd0\xff\xb6\xff" + "\xfe\xfe\xcc\xff\x9a\xff\x09\xff\x85\xff\xc8\xff\xed\xff\xa2\xff" + "\x8f\x00\x14\x00\x80\xff\x0b\x00\x2e\x00\x93\xff\xaa\xff\x67\x00" + "\xe6\xff\xf9\xff\xb1\x00\xd4\x00\xc4\x00\xed\x00\xd2\x01\x04\x01" + "\x0a\x01\x59\x01\xbb\x00\x94\x00\x99\x00\x94\x00\xd0\xff\x9d\xff" + "\x08\x00\x4a\xff\x2d\xff\xbe\xff\x34\xff\x51\xff\x4a\xff\xbb\xff" + "\x48\xff\xad\xff\x97\xff\xcc\xfe\xca\xff\x44\xff\xc7\xff\xbd\xff" + "\xfc\xff\x81\x00\xd3\x00\x34\x01\xaf\x00\x67\x01\xc9\x00\x6c\x00" + "\x10\x00\x95\xff\x13\xff\x0a\xff\x18\xff\x55\xfe\x68\xfe\xad\xfe" + "\xbf\xfe\xb6\xfe\xa0\xfe\xa9\xfe\x5c\xff\xc5\xfe\x33\xfe\x07\xff" + "\x14\x00\xd6\xff\x8e\xff\xa3\x00\xb1\x01\x26\x02\x73\x02\x90\x02" + "\xc9\x02\x72\x03\x9a\x03\xbf\x02\xd6\x01\x09\x02\xea\x01\xe6\x00" + "\x01\x00\xb0\xff\x8d\xff\x2d\xff\xbe\xfe\x4f\xfe\x23\xfe\x9b\xfe" + "\xd4\xfe\xa2\xfe\x5e\xfe\x0a\xff\xa5\xff\x9b\xff\x75\xff\x82\xff" + "\x0d\x00\x25\x00\x00\x00\xb6\xff\xe5\xff\x14\x00\x23\x00\xdb\xff" + "\x9d\xff\xe4\xff\x1f\x00\x0e\x00\xb5\xff\xbb\xff\xe2\xff\xd9\xff" + "\xd1\xff\xc1\xff\x94\xff\xcd\xff\x02\x00\xfc\xff\xfc\xff\x11\x00" + "\x4e\x00\x4b\x00\x5e\x00\x45\x00\x1c\x00\x3a\x00\x3b\x00\xcd\xff" + "\xa7\xff\xb8\xff\x95\xff\x60\xff\x50\xff\x5a\xff\x38\xff\x85\xff" + "\x9c\xff\xa7\xff\xbe\xff\x2a\x00\x61\x00\x6b\x00\xab\x00\xdb\x00" + "\x16\x01\x17\x01\x21\x01\x0d\x01\xf5\x00\xe8\x00\xd6\x00\x96\x00" + "\x48\x00\x45\x00\x5f\x00\x27\x00\xf0\xff\x01\x00\x04\x00\xdf\xff" + "\xde\xff\xdc\xff\xbd\xff\xdb\xff\xc9\xff\xad\xff\xc9\xff\xee\xff" + "\xf0\xff\xcd\xff\x09\x00\x36\x00\x28\x00\x00\x00\xe2\xff\xec\xff" + "\xe9\xff\xa7\xff\x6c\xff\x49\xff\x43\xff\x4a\xff\x33\xff\x23\xff" + "\x42\xff\x61\xff\x68\xff\x5f\xff\x68\xff\x73\xff\xb5\xff\xc1\xff" + "\x4d\xff\x48\xff\x94\xff\x98\xff\x3d\xff\x6c\xff\x81\xff\x8e\xff" + "\x51\x00\xbe\x00\x92\x00\xe7\x00\xb6\x01\x2f\x02\xcb\x01\xb3\x01" + "\xe0\x01\xbc\x01\xb2\x01\x11\x01\xa0\x00\x85\x00\x81\x00\x20\x00" + "\x67\xff\x56\xff\x89\xff\x78\xff\x14\xff\x00\xff\x3f\xff\x65\xff" + "\xc1\xff\xca\xff\xaa\xff\xe2\xff\x66\x00\x76\x00\x13\x00\x23\x00" + "\x47\x00\x34\x00\x32\x00\x22\x00\xe5\xff\xee\xff\x35\x00\x2c\x00" + "\xe1\xff\xf5\xff\x49\x00\x32\x00\x1a\x00\x23\x00\xe9\xff\xd0\xff" + "\xd9\xff\xcb\xff\x4f\xff\x14\xff\x31\xff\x20\xff\x2e\xff\x13\xff" + "\xef\xfe\x2d\xff\xc1\xff\xde\xff\x65\xff\x9a\xff\x44\x00\x35\x00" + "\xc6\xff\xb0\xff\xfc\xff\x1e\x00\xf1\xff\xad\xff\xaf\xff\xd4\xff" + "\xb0\xff\xa4\xff\xa1\xff\x93\xff\xd3\xff\x1b\x00\x2c\x00\x6e\x00" + "\xc2\x00\xd6\x00\x02\x01\x48\x01\x2a\x01\x0d\x01\x2a\x01\x29\x01" + "\xf5\x00\xc6\x00\x9d\x00\xa8\x00\xb9\x00\x5c\x00\x2d\x00\x5f\x00" + "\x45\x00\xed\xff\x18\x00\x26\x00\xc6\xff\xd3\xff\x0d\x00\xda\xff" + "\x9c\xff\xc6\xff\xd6\xff\x83\xff\x7f\xff\x62\xff\x3a\xff\x3e\xff" + "\x52\xff\x5b\xff\x42\xff\x67\xff\xac\xff\xc7\xff\xa5\xff\xbd\xff" + "\xf3\xff\xef\xff\xf3\xff\x0a\x00\x0d\x00\x0f\x00\x24\x00\x3f\x00" + "\x15\x00\x1e\x00\x35\x00\x20\x00\x1e\x00\x0f\x00\xf3\xff\x01\x00" + "\x18\x00\xde\xff\xc2\xff\xdb\xff\xdd\xff\xb2\xff\xc9\xff\xd8\xff" + "\xbb\xff\xd0\xff\xf5\xff\x02\x00\xe5\xff\x0a\x00\x2b\x00\x01\x00" + "\xf3\xff\x06\x00\x0f\x00\xf4\xff\xee\xff\xf0\xff\xdf\xff\x01\x00" + "\x0d\x00\xd4\xff\xc4\xff\xfa\xff\x0c\x00\xdd\xff\xe4\xff\x16\x00" + "\x14\x00\x37\x00\x6a\x00\x7b\x00\x7b\x00\x91\x00\xe7\x00\xf7\x00" + "\xc4\x00\xbc\x00\xea\x00\xe6\x00\x86\x00\x69\x00\x67\x00\x31\x00" + "\x06\x00\xed\xff\xaa\xff\x57\xff\xa3\xff\xe3\xff\x6f\xff\x1d\xff" + "\x73\xff\xe3\xff\x8e\xff\x35\xff\x5f\xff\x98\xff\xa4\xff\x7e\xff" + "\x60\xff\x69\xff\xcb\xff\x17\x00\xd4\xff\x8e\xff\xf3\xff\x6c\x00" + "\x45\x00\xe9\xff\x13\x00\x7a\x00\x86\x00\x61\x00\x4a\x00\x5e\x00" + "\x89\x00\x8b\x00\x42\x00\xf2\xff\x0c\x00\x4a\x00\x24\x00\xc9\xff" + "\xbf\xff\x1b\x00\x33\x00\xf1\xff\xaf\xff\xdc\xff\x31\x00\x2a\x00" + "\xe6\xff\xbb\xff\xf3\xff\x3c\x00\x2b\x00\xc2\xff\x9c\xff\xd1\xff" + "\x02\x00\xc7\xff\x6c\xff\x7b\xff\xc0\xff\xe5\xff\xb6\xff\x8e\xff" + "\xa8\xff\xe3\xff\xfb\xff\xca\xff\xab\xff\xe9\xff\x28\x00\x1a\x00" + "\xf1\xff\xfc\xff\x2c\x00\x39\x00\x22\x00\xed\xff\xfd\xff\x1b\x00" + "\x11\x00\x02\x00\x02\x00\x0c\x00\x21\x00\x34\x00\x37\x00\x1b\x00" + "\x1c\x00\x34\x00\x30\x00\x2a\x00\x1a\x00\x2d\x00\x3e\x00\x44\x00" + "\x27\x00\x2b\x00\x4e\x00\x39\x00\x17\x00\x19\x00\x1b\x00\x12\x00" + "\x10\x00\x04\x00\xfe\xff\xf7\xff\xeb\xff\xf3\xff\xf4\xff\xf1\xff" + "\xe8\xff\xf8\xff\x0f\x00\x13\x00\x23\x00\x22\x00\x31\x00\x3a\x00" + "\x42\x00\x33\x00\x23\x00\x2c\x00\x1d\x00\x09\x00\x03\x00\xff\xff" + "\xfe\xff\xee\xff\xe9\xff\xdc\xff\xdc\xff\xe7\xff\xd0\xff\xc4\xff" + "\xaf\xff\xaa\xff\xb8\xff\xaf\xff\xa2\xff\x9e\xff\xb5\xff\xc5\xff" + "\xb1\xff\xb7\xff\xc5\xff\xd3\xff\xd4\xff\xc4\xff\xc9\xff\xe2\xff" + "\xff\xff\x00\x00\xf8\xff\x12\x00\x2b\x00\x29\x00\x2f\x00\x30\x00" + "\x3a\x00\x3e\x00\x43\x00\x40\x00\x3b\x00\x3d\x00\x42\x00\x35\x00" + "\x26\x00\x39\x00\x43\x00\x35\x00\x1b\x00\x21\x00\x30\x00\x31\x00" + "\x15\x00\x00\x00\xef\xff\xfb\xff\xf0\xff\xc9\xff\xbf\xff\xc2\xff" + "\xdc\xff\xc7\xff\xc0\xff\xcd\xff\xe0\xff\xf7\xff\xe3\xff\xe2\xff" + "\xf1\xff\x00\x00\x0f\x00\x01\x00\xfd\xff\x08\x00\x1b\x00\x0e\x00" + "\xf6\xff\xf6\xff\xfa\xff\x04\x00\xf9\xff\xef\xff\xf0\xff\xfc\xff" + "\x0a\x00\xf9\xff\xf6\xff\x02\x00\x07\x00\x0a\x00\x01\x00\xfa\xff" + "\x0b\x00\x22\x00\x1c\x00\x07\x00\x0f\x00\x20\x00\x21\x00\x17\x00" + "\x06\x00\x01\x00\x06\x00\x02\x00\xef\xff\xe6\xff\xf2\xff\x00\x00" + "\xf9\xff\xec\xff\xec\xff\xfe\xff\xfe\xff\xef\xff\xe5\xff\xf4\xff" + "\xff\xff\x01\x00\x04\x00\xff\xff\x04\x00\x10\x00\x17\x00\x0f\x00" + "\x0b\x00\x17\x00\x24\x00\x23\x00\x19\x00\x1a\x00\x2d\x00\x1f\x00" + "\x18\x00\x10\x00\x06\x00\x02\x00\xff\xff\xf7\xff\xef\xff\xe8\xff" + "\xf6\xff\xf9\xff\xe6\xff\xdb\xff\xdc\xff\xe8\xff\xdb\xff\xdb\xff" + "\xe2\xff\xf1\xff\xf0\xff\xf8\xff\xf7\xff\xee\xff\xf8\xff\xfb\xff" + "\xf7\xff\xf1\xff\xf9\xff\x02\x00\xfe\xff\x09\x00\x15\x00\x0f\x00" + "\x10\x00\x0d\x00\x08\x00\x05\x00\x0c\x00\x0f\x00\x08\x00\x0b\x00" + "\x04\x00\x08\x00\x18\x00\x10\x00\x04\x00\x0a\x00\x17\x00\x15\x00" + "\x11\x00\x0f\x00\x13\x00\x14\x00\x0e\x00\x0c\x00\x01\x00\xf7\xff" + "\xfa\xff\xf5\xff\xef\xff\xef\xff\xec\xff\xee\xff\xe9\xff\xe1\xff" + "\xe4\xff\xf0\xff\xed\xff\xed\xff\xf4\xff\xf6\xff\xf4\xff\xfe\xff" + "\x06\x00\x03\x00\x0a\x00\x12\x00\x14\x00\x13\x00\x19\x00\x15\x00" + "\x0a\x00\x03\x00\x00\x00\xf9\xff\xed\xff\xe3\xff\xe9\xff\xe5\xff" diff --git a/ndk/platforms/android-9/samples/native-audio/jni/hello_clip.h b/ndk/platforms/android-9/samples/native-audio/jni/hello_clip.h new file mode 100644 index 000000000..5f0232b83 --- /dev/null +++ b/ndk/platforms/android-9/samples/native-audio/jni/hello_clip.h @@ -0,0 +1,685 @@ + "\x00\x00\xfd\xff\x01\x00\x01\x00\xf9\xff\xfb\xff\x02\x00\x05\x00" + "\x01\x00\x03\x00\x06\x00\x0a\x00\x0a\x00\x09\x00\x04\x00\x04\x00" + "\x06\x00\x06\x00\x00\x00\xff\xff\x05\x00\x08\x00\x01\x00\xfe\xff" + "\xff\xff\x03\x00\x04\x00\xfe\xff\xf9\xff\xfd\xff\x04\x00\xfe\xff" + "\x03\x00\x04\x00\x01\x00\xfb\xff\xfb\xff\xfc\xff\xfb\xff\x03\x00" + "\xfc\xff\xf9\xff\xfc\xff\x01\x00\x06\x00\x00\x00\xf9\xff\xfa\xff" + "\x04\x00\x06\x00\xfe\xff\xfa\xff\xfd\xff\x01\x00\xfe\xff\xfe\xff" + "\xfe\xff\xfd\xff\xfd\xff\xfd\xff\xfe\xff\xff\xff\xfd\xff\xfa\xff" + "\xfe\xff\x00\x00\x03\x00\xfe\xff\xfc\xff\xfb\xff\xfe\xff\x01\x00" + "\x02\x00\x01\x00\xff\xff\x09\x00\x0c\x00\x10\x00\x07\x00\x07\x00" + "\x04\x00\x00\x00\x02\x00\xf5\xff\xf7\xff\x02\x00\x08\x00\xfe\xff" + "\xfe\xff\x05\x00\x06\x00\x05\x00\x00\x00\xfb\xff\xf9\xff\xf6\xff" + "\xf7\xff\xfd\xff\x02\x00\xff\xff\xff\xff\x08\x00\x07\x00\x08\x00" + "\x04\x00\xfe\xff\x02\x00\x0b\x00\x0c\x00\x05\x00\x04\x00\x03\x00" + "\xfe\xff\xfe\xff\xfb\xff\xf3\xff\xe8\xff\xee\xff\xfd\xff\x04\x00" + "\xfc\xff\x00\x00\x01\x00\xff\xff\xfe\xff\xf2\xff\xf3\xff\xfa\xff" + "\x04\x00\xf7\xff\xfe\xff\x09\x00\x0d\x00\x0b\x00\x08\x00\x01\x00" + "\xff\xff\x0c\x00\x0b\x00\x07\x00\x01\x00\x05\x00\x08\x00\x0b\x00" + "\x05\x00\xfe\xff\xf6\xff\xf9\xff\xfb\xff\xfa\xff\xf8\xff\x02\x00" + "\x05\x00\x06\x00\x01\x00\x00\x00\x0c\x00\x0b\x00\x02\x00\xf8\xff" + "\x01\x00\xfb\xff\xfa\xff\x06\x00\x07\x00\xfb\xff\x02\x00\x06\x00" + "\x00\x00\x01\x00\x04\x00\xf4\xff\xfa\xff\x00\x00\xf8\xff\xf6\xff" + "\x02\x00\xfd\xff\xf0\xff\xfe\xff\x00\x00\xff\xff\xfc\xff\x00\x00" + "\xf6\xff\x01\x00\x08\x00\x03\x00\xfc\xff\x06\x00\x0d\x00\x01\x00" + "\x04\x00\x05\x00\x01\x00\xf7\xff\xff\xff\xfc\xff\xff\xff\x03\x00" + "\x00\x00\xfc\xff\x06\x00\x07\x00\xff\xff\xfa\xff\xfa\xff\x02\x00" + "\x00\x00\x00\x00\xf5\xff\xfa\xff\xff\xff\x06\x00\xfc\xff\xf9\xff" + "\xff\xff\x04\x00\x08\x00\x06\x00\x01\x00\xf7\xff\xfe\xff\xfc\xff" + "\xfe\xff\x02\x00\x07\x00\xfb\xff\xfc\xff\x08\x00\x0b\x00\x05\x00" + "\x0a\x00\x08\x00\x00\x00\x08\x00\x11\x00\x0e\x00\xfd\xff\xf1\xff" + "\xef\xff\xfe\xff\x02\x00\xf8\xff\xf2\xff\xfb\xff\xfe\xff\x0a\x00" + "\xfd\xff\xfa\xff\xf9\xff\xee\xff\xf7\xff\xff\xff\x05\x00\xfc\xff" + "\xf6\xff\xfd\xff\x0f\x00\x0a\x00\x05\x00\xf7\xff\xf5\xff\xf8\xff" + "\x09\x00\x10\x00\xff\xff\xfd\xff\xf4\xff\xff\xff\xfe\xff\xff\xff" + "\xfe\xff\xef\xff\xfa\xff\x06\x00\x17\x00\x11\x00\x13\x00\x11\x00" + "\xfe\xff\x05\x00\x0b\x00\xfe\xff\xee\xff\x07\x00\x0b\x00\xff\xff" + "\x01\x00\x0b\x00\x0a\x00\x08\x00\x0b\x00\x02\x00\xf4\xff\xfa\xff" + "\x0c\x00\x00\x00\x03\x00\x09\x00\xf5\xff\xf6\xff\x06\x00\xfc\xff" + "\xf0\xff\xff\xff\x05\x00\xf0\xff\x0a\x00\x23\x00\x08\x00\xfd\xff" + "\x03\x00\xf7\xff\xee\xff\x03\x00\xfc\xff\xe2\xff\xf4\xff\xfe\xff" + "\xff\xff\x10\x00\x19\x00\xf6\xff\xe7\xff\xf6\xff\xf3\xff\xe5\xff" + "\xee\xff\xea\xff\xdc\xff\xf3\xff\xf9\xff\x02\x00\x02\x00\x00\x00" + "\xe6\xff\xef\xff\x02\x00\x09\x00\x09\x00\x0b\x00\x09\x00\x00\x00" + "\x08\x00\x07\x00\x11\x00\x12\x00\x1a\x00\x17\x00\x2f\x00\x35\x00" + "\x2c\x00\x2d\x00\x20\x00\x03\x00\x02\x00\x12\x00\x0e\x00\x11\x00" + "\x21\x00\x1d\x00\x13\x00\x25\x00\x1c\x00\x05\x00\xf9\xff\xf4\xff" + "\xdd\xff\xf1\xff\x0c\x00\x15\x00\x1d\x00\x32\x00\x2a\x00\x1a\x00" + "\x1f\x00\xfe\xff\xcf\xff\xcf\xff\xeb\xff\xde\xff\xf4\xff\x03\x00" + "\x00\x00\x10\x00\x17\x00\xf0\xff\xcc\xff\xc7\xff\x8c\xff\x58\xff" + "\x5c\xff\x4e\xff\x0f\xff\xf6\xfe\xd6\xfe\xb5\xfe\xc5\xfe\xd6\xfe" + "\xe1\xfe\x08\xff\x5e\xff\x9a\xff\xe2\xff\x43\x00\x92\x00\xca\x00" + "\x10\x01\x32\x01\x42\x01\x6c\x01\x7e\x01\x72\x01\x6e\x01\x71\x01" + "\x56\x01\x53\x01\x53\x01\x30\x01\x05\x01\xfb\x00\xca\x00\x8c\x00" + "\x62\x00\x1b\x00\xbe\xff\x8e\xff\x67\xff\x40\xff\x44\xff\x61\xff" + "\x6a\xff\x80\xff\xab\xff\xb4\xff\xc6\xff\xca\xff\xb2\xff\x80\xff" + "\x79\xff\x6f\xff\x7d\xff\xa1\xff\xb5\xff\xb4\xff\xe1\xff\xfb\xff" + "\x0c\x00\x1e\x00\x30\x00\x16\x00\xfe\xff\xf4\xff\xe8\xff\xef\xff" + "\xbf\xff\x85\xff\xf1\xfe\x8a\xfe\x08\xfe\xca\xfd\x68\xfd\x26\xfd" + "\xd2\xfc\xe2\xfc\x88\xfd\xb4\xfe\x28\x00\x6c\x01\xa8\x02\x51\x03" + "\xb6\x03\x8a\x03\x0f\x03\x00\x02\x11\x01\x34\x00\xed\xff\x2d\x00" + "\x01\x01\xdc\x01\xb0\x02\x38\x03\x22\x03\xbb\x02\xf8\x01\x1e\x01" + "\xfb\xff\x1f\xff\x2d\xfe\xb0\xfd\x80\xfd\xbb\xfd\x0e\xfe\xac\xfe" + "\x3b\xff\xb0\xff\x13\x00\x58\x00\x82\x00\x81\x00\x73\x00\x01\x00" + "\xa3\xff\x2f\xff\xf6\xfe\xc5\xfe\x12\xff\x5d\xff\xee\xff\x7a\x00" + "\xff\x00\x56\x01\xa1\x01\x90\x01\x17\x01\x8f\x00\xc5\xff\xf5\xfe" + "\x20\xfe\xa3\xfd\x1a\xfd\xe4\xfc\xe0\xfc\xfe\xfc\x3c\xfd\xca\xfd" + "\x1b\xfe\xa0\xfe\x0b\xff\xbf\xff\xfc\xff\xbb\x00\x01\x01\x7d\x01" + "\xed\x01\x5c\x02\xa0\x02\xac\x02\xd3\x02\x5c\x02\x42\x02\xc1\x01" + "\xb7\x01\x4b\x01\x9e\x01\x4c\x01\x60\x01\xf1\x00\xbc\x00\xff\xff" + "\x89\xff\xf7\xfe\x72\xfe\x21\xfe\xe5\xfd\xf6\xfd\xfe\xfd\xcb\xfe" + "\x3f\xff\x10\x00\x65\x00\xec\x00\xc1\x00\xe9\x00\xa9\x00\xa0\x00" + "\x86\x00\xb3\x00\xc7\x00\xf4\x00\x27\x01\x42\x01\x41\x01\x22\x01" + "\xfb\x00\xac\x00\x7a\x00\x49\x00\x19\x00\xf6\xff\xd6\xff\x82\xff" + "\x20\xff\xdc\xfe\x7d\xfe\xec\xfd\x8f\xfd\x31\xfd\x05\xfd\x8c\xfc" + "\x7a\xfc\xcb\xfb\x94\xfb\x71\xfb\xe9\xfb\xb7\xfc\x67\xfe\x20\x00" + "\xd7\x01\x78\x03\x76\x04\xb6\x04\x40\x04\x97\x03\x32\x02\x2c\x01" + "\x57\x00\x49\x00\x87\x00\xb4\x01\xa1\x02\x84\x03\xea\x03\xe3\x03" + "\x11\x03\x15\x02\xc9\x00\x49\xff\xfd\xfd\xde\xfc\x50\xfc\x49\xfc" + "\x22\xfd\x0a\xfe\x55\xff\x29\x00\xb0\x00\x9b\x00\xa6\x00\x5a\x00" + "\x51\x00\x30\x00\x18\x00\xe5\xff\xdc\xff\xe5\xff\x29\x00\xa3\x00" + "\x27\x01\xaa\x01\xfa\x01\xec\x01\xa2\x01\x39\x01\xb5\x00\x3a\x00" + "\xc2\xff\x35\xff\x9f\xfe\x6e\xfe\x27\xfe\x54\xfe\x7b\xfe\x0e\xff" + "\x29\xff\x62\xff\x4d\xff\xc7\xff\x29\xff\xe1\xff\xb6\xff\x6d\x00" + "\xe0\xff\xd8\x00\x1a\x00\x92\x00\xce\xfe\x16\xfe\x8c\xfb\x76\xf5" + "\x4e\xf5\xf5\xf3\x3a\xf8\x59\xfc\x7e\x04\xd5\x07\x35\x0d\x3e\x0e" + "\x34\x0d\xcf\x09\xe1\x04\xe2\xfe\x5e\xf9\xb5\xf6\x01\xf5\x0f\xf8" + "\x37\xfb\x42\x01\x82\x05\x2a\x0b\x35\x0d\xcb\x0e\x1b\x0c\x3c\x08" + "\x47\x01\x1c\xfb\x82\xf5\x95\xf2\xab\xf2\x76\xf5\x3c\xfa\x42\xff" + "\x72\x04\xd0\x07\x77\x0a\xb7\x0a\x00\x0a\x88\x06\x30\x02\x0d\xfc" + "\x7a\xf6\xef\xf1\x1d\xf1\xad\xf2\xb5\xf7\x05\xfe\x5c\x04\xed\x08" + "\x41\x0b\xe1\x0a\x16\x08\x89\x04\x10\x00\x2b\xfc\x78\xf9\x94\xf8" + "\x18\xf9\xa9\xfb\x51\xfe\x6d\x01\x74\x03\x95\x04\x83\x04\xd8\x03" + "\x70\x02\x75\x01\x98\x00\xe5\xff\x52\xff\xee\xfe\x27\xfe\x2e\xfe" + "\x21\xfe\x80\xfe\xef\xff\xbf\x00\xea\x00\x2b\x01\xf6\xff\x99\xfd" + "\xd9\xfc\x1c\xfb\xc9\xf9\xb5\xf8\xb9\xf9\x1b\xf8\xf1\xfa\x93\xfd" + "\xf1\x00\xdf\x04\xc5\x07\xaf\x08\x27\x08\xb0\x07\xbf\x04\x9c\x03" + "\x48\x01\xfa\xff\x48\xfe\x8c\xfe\x4d\xfe\x46\x00\x2a\x02\x76\x04" + "\xf0\x05\x0b\x07\x82\x06\x3f\x05\x56\x03\x85\x00\xb2\xfd\xb0\xfa" + "\x90\xf8\x06\xf7\x71\xf7\xc5\xf8\xda\xfb\xea\xfe\x36\x02\x40\x04" + "\xbd\x04\x9c\x03\x88\x01\xb2\xfe\x03\xfc\x27\xfa\x8c\xf9\xaf\xf9" + "\xaf\xfb\xde\xfd\x7a\x00\x01\x03\xcf\x04\xa4\x05\xcd\x05\xfd\x04" + "\x7f\x03\x2b\x02\xb3\x00\x8f\xff\x29\xff\xdd\xfe\x91\xfe\xd1\xfe" + "\xc4\xfe\x0e\xff\xcd\xff\x94\x00\xdd\x00\x9e\x01\xb5\x01\xbc\x01" + "\x82\x01\x62\x01\x5a\x00\x44\x00\x39\x00\x00\x00\x95\x00\x74\xff" + "\x9f\xfd\x1c\xfb\x77\xf7\xc7\xf4\x18\xf3\xf3\xf3\x37\xf7\x8f\xfc" + "\x4c\x03\x54\x09\x4a\x0e\x10\x10\x74\x0f\x65\x0b\x13\x06\xe6\xff" + "\x85\xfa\x9e\xf6\x44\xf5\xea\xf5\xcd\xf8\x5d\xfd\x67\x02\xd1\x07" + "\xe7\x0b\x63\x0e\x35\x0e\xb0\x0b\x99\x06\xa4\x00\x6c\xfa\x6c\xf5" + "\x39\xf2\x78\xf1\xcb\xf2\x2c\xf6\xc8\xfa\x10\x00\x4d\x05\x44\x09" + "\xcb\x0b\x89\x0b\xf6\x08\x34\x04\xa3\xfe\x95\xf8\x44\xf4\x03\xf2" + "\xc6\xf2\x3e\xf6\xcf\xfb\xe2\x01\x9b\x07\x56\x0b\xc5\x0c\xd9\x0b" + "\xb3\x08\xd2\x04\x9d\x00\xc2\xfd\x75\xfb\x53\xfb\x26\xfb\xa8\xfc" + "\x60\xfd\x7e\xff\x0a\x00\x15\x02\x18\x02\x2c\x04\xae\x03\xa3\x04" + "\xdd\x03\x79\x03\xe7\x02\x16\x02\xe4\x00\x5b\xfa\x81\xf6\xee\xed" + "\x55\xec\x7b\xe9\xb9\xee\x75\xf3\x4b\xfe\x09\x07\x51\x10\xee\x15" + "\x6b\x17\xf3\x14\x31\x0e\xdb\x06\x06\xfe\x1b\xf9\xeb\xf3\x15\xf3" + "\xad\xf1\xcf\xf4\x85\xf7\x8d\xfe\x4e\x04\xd2\x0b\xc8\x0f\xb9\x12" + "\xe9\x10\x08\x0d\x2c\x06\xbe\xfe\xa1\xf7\x30\xf2\x3e\xef\xc7\xee" + "\x5f\xf1\x5f\xf5\x6a\xfb\x14\x01\x4e\x07\x53\x0b\xbf\x0e\x91\x0e" + "\x65\x0d\x91\x08\x8a\x03\xb1\xfc\x6b\xf7\xcb\xf2\xe7\xf0\x70\xf1" + "\x42\xf4\x05\xf9\x74\xfe\x43\x04\x93\x08\xdf\x0b\xb1\x0c\x47\x0c" + "\x3c\x09\xac\x05\x88\x00\x2f\xfc\x7e\xf8\xdf\xf6\xb7\xf6\x1b\xf9" + "\x3b\xfc\x81\x00\xd5\x03\x88\x06\x2c\x07\x31\x07\xe3\x05\x08\x04" + "\x9c\x02\x3c\x01\x38\x01\x63\xff\x95\xff\x88\xf8\x92\xf5\x15\xf0" + "\xac\xed\xd6\xed\x0c\xf1\x8e\xf5\x16\xfc\x34\x04\x7c\x09\xd3\x0f" + "\x26\x11\xf4\x10\x3a\x0d\x97\x09\xa7\x03\xda\x00\x90\xfd\xed\xfb" + "\xbb\xfa\x8b\xfa\x0a\xfa\xab\xfb\x4e\xfd\xdd\xff\x10\x03\xca\x05" + "\xd7\x07\x8c\x08\xf2\x07\x94\x05\x18\x03\x85\xff\x95\xfc\x1d\xfa" + "\xec\xf8\xa6\xf8\x37\xfa\xd7\xfb\x3c\xfe\x40\x00\x0a\x02\xa0\x02" + "\x18\x03\xdc\x01\x04\x01\xc1\xff\xb4\xfe\x5b\xfe\x5e\xfe\x53\xfe" + "\xc1\xfe\xc8\xfe\xd2\xfe\xf2\xfe\x63\xff\xd8\xff\xe5\x00\x07\x02" + "\xd3\x02\xa8\x03\xe4\x03\x43\x03\x40\x02\xac\x00\xea\xfe\xc1\xfd" + "\x24\xfd\x50\xfd\xc2\xfd\xe4\xfe\x48\xff\x5c\x00\x61\x00\x1c\x01" + "\xf9\x00\x41\x02\x5d\x02\xcf\x03\x4a\x03\x22\x04\xd5\xff\x6f\xfc" + "\xef\xf8\xbd\xf3\x17\xf3\xb0\xf1\x4e\xf3\x59\xf5\xbb\xfb\x9b\xff" + "\x34\x06\xf1\x09\x15\x0c\x50\x0c\xbe\x0b\x33\x09\x98\x07\x1e\x06" + "\xa0\x03\x45\x02\x4a\x00\x3d\xfe\xb8\xfc\x5b\xfc\x73\xfb\xb3\xfc" + "\x76\xfd\x05\xff\x30\x00\xc0\x01\xc4\x01\x85\x02\xee\x01\x6f\x01" + "\xd6\x00\x27\x00\x67\xff\x83\xff\x59\xff\x59\xff\x7d\xff\xb6\xfe" + "\xaa\xfd\xed\xfc\x0f\xfc\x8e\xfb\x75\xfc\x3c\xfd\x51\xff\x5b\x01" + "\x23\x03\xf9\x03\x4e\x04\x61\x03\x36\x02\xd5\x00\x85\xff\xb6\xfe" + "\xfb\xfe\x36\xff\x2d\x00\x2f\x01\x70\x01\x38\x01\xc1\x00\x3b\xff" + "\xc2\xfe\x44\xfe\x26\xfe\xb0\xfe\xb2\xff\x10\x00\x01\x01\x54\x01" + "\xae\x01\xfd\x01\x52\x02\x92\x02\x12\x00\x75\xff\xa0\xfb\xcf\xf9" + "\x69\xf7\x49\xf6\x3a\xf5\xae\xf6\x12\xf9\x4b\xfc\x10\x01\x2f\x04" + "\x17\x07\x55\x08\x3b\x09\x7e\x08\xab\x08\x54\x07\x68\x06\x0a\x05" + "\xf6\x03\x81\x02\xa3\x01\x4c\x00\x0a\xff\xbc\xfd\x95\xfc\xd4\xfb" + "\x7a\xfb\xb0\xfb\x12\xfc\xef\xfc\xcd\xfd\xdc\xfe\xce\xff\xbd\x00" + "\x80\x01\x5d\x02\xec\x02\x20\x03\x02\x03\x30\x02\xee\x00\xb3\xff" + "\xdf\xfd\x78\xfc\x6c\xfb\x25\xfb\xd8\xfb\x6d\xfd\x78\xff\x7e\x01" + "\x4f\x03\x5e\x04\x6d\x04\xd5\x03\x70\x02\x45\x01\x24\x00\x2e\x00" + "\xc4\xff\xe5\xff\x04\x00\x72\xff\x3f\xff\x69\xfe\xe4\xfd\x66\xfd" + "\xe2\xfd\x36\xfe\xf0\xff\xe1\x00\x3e\x02\xe6\x02\x82\x00\xd0\xfe" + "\xc0\xfb\x30\xf9\xf5\xf7\x84\xf7\x4c\xf7\x19\xf9\xaf\xfb\x27\xfe" + "\xeb\x01\x57\x04\xc9\x05\x11\x07\x5f\x07\x1c\x07\x9e\x07\x4c\x07" + "\xc0\x06\x27\x06\xae\x04\xff\x02\x9f\x01\xdd\xff\x8f\xfe\xbd\xfd" + "\xfa\xfc\xce\xfc\xed\xfc\xf9\xfc\x47\xfd\x90\xfd\x94\xfd\x9d\xfd" + "\xa6\xfd\x93\xfd\x02\xfe\xae\xfe\xa1\xff\x18\x01\x75\x02\x67\x03" + "\xf5\x03\x88\x03\x4f\x02\x01\x01\x64\xff\x2b\xfe\xac\xfd\x85\xfd" + "\x0a\xfe\xde\xfe\x7b\xff\x2f\x00\xa1\x00\xe8\x00\x0a\x01\x58\x01" + "\x5f\x01\xb8\x01\x85\x01\x78\x01\x85\x00\x3e\x00\x50\xff\x95\xfe" + "\xcc\xfe\x90\xfe\x0b\x00\x64\x00\x52\x01\x5b\x01\x09\x01\xd4\x00" + "\x1f\x00\xd0\x00\x5b\x00\x96\x01\x3e\x00\x47\xfe\x69\xfc\xff\xf8" + "\x48\xf7\x7a\xf5\x2e\xf5\x7d\xf5\x8b\xf8\x28\xfb\x39\xff\xc4\x02" + "\x08\x05\xb3\x06\x95\x07\x9f\x07\xa2\x07\x3d\x08\xee\x07\x26\x08" + "\xd8\x07\xb6\x06\x67\x05\x00\x04\xad\x01\x07\x00\x54\xfe\x05\xfd" + "\x1a\xfc\xe5\xfb\x40\xfb\x90\xfb\xe5\xfb\x18\xfc\xc1\xfc\x58\xfd" + "\xb5\xfd\x98\xfe\x54\xff\x1f\x00\x35\x01\xeb\x01\x2c\x02\x2a\x02" + "\xcd\x01\x95\x00\xce\xff\x96\xfe\xaa\xfd\x98\xfd\xf6\xfd\xa4\xfe" + "\xd8\xff\xb3\x00\x37\x01\xad\x01\xce\x01\xc1\x01\x0f\x02\x34\x02" + "\x39\x02\x6f\x02\x48\x02\xf3\x01\x48\x01\x53\x00\x90\xff\xb5\xfe" + "\xdc\xfe\xb1\xfe\x8a\xff\xbc\xff\x6d\x00\x48\x00\x79\x00\xf5\xff" + "\x7e\xff\x4d\xfe\x9b\xfb\xd4\xfa\xf5\xf7\x2d\xf7\x38\xf6\x68\xf6" + "\x12\xf7\xa9\xf9\xfd\xfb\x26\xff\x77\x02\x9a\x04\xb5\x06\xf5\x07" + "\x95\x08\xc9\x08\x62\x09\xd3\x08\xbc\x08\xe1\x07\xa3\x06\x16\x05" + "\xbe\x03\xcf\x01\x81\x00\x0f\xff\xbb\xfd\x9f\xfc\xe8\xfb\x0e\xfb" + "\xd4\xfa\xe1\xfa\x07\xfb\x9d\xfb\x5c\xfc\x16\xfd\x19\xfe\x53\xff" + "\x52\x00\x62\x01\x1f\x02\x36\x02\x06\x02\xe2\x01\x05\x01\xbf\x00" + "\x05\x00\x8b\xff\x45\xff\x48\xff\x3d\xff\x98\xff\xe1\xff\x07\x00" + "\x6b\x00\xd4\x00\x2a\x01\xbe\x01\x1a\x02\x2a\x02\x3d\x02\xf2\x01" + "\x62\x01\xe4\x00\x6a\x00\xb6\xff\x06\x00\x65\xff\xb6\xff\x81\xff" + "\x56\xff\x40\xff\x42\xff\x16\xff\xc4\xfe\xdc\xfd\x06\xfc\xf8\xfa" + "\xdd\xf8\xe0\xf7\x59\xf7\x79\xf7\x53\xf8\x79\xfa\xb0\xfc\x62\xff" + "\x27\x02\xf9\x03\x88\x05\xbe\x06\x3f\x07\xe9\x07\xa1\x08\x92\x08" + "\x74\x08\xde\x07\x9f\x06\x6b\x05\x3d\x04\x85\x02\x49\x01\xc0\xff" + "\x16\xfe\xc9\xfc\xbc\xfb\xb9\xfa\x8b\xfa\xb9\xfa\xd1\xfa\xb0\xfb" + "\x7d\xfc\x1c\xfd\x5d\xfe\x6b\xff\x2e\x00\x33\x01\xb7\x01\x86\x01" + "\x8c\x01\x2e\x01\x6f\x00\x61\x00\x01\x00\xd1\xff\x53\x00\xb8\x00" + "\x29\x01\xb8\x01\xd2\x01\x80\x01\x73\x01\xf4\x00\xc3\x00\xcb\x00" + "\xde\x00\xbe\x00\xbc\x00\x36\x00\xba\xff\x6d\xff\xce\xfe\xc6\xfe" + "\xde\xfe\x59\xff\x08\x00\x46\x00\x7e\x00\x29\xff\x76\xfd\xbc\xfb" + "\x37\xf9\x54\xf8\xa1\xf7\xe5\xf7\x62\xf8\x07\xfa\x66\xfb\x8e\xfd" + "\xe8\xff\xaa\x01\xd6\x03\xac\x05\xeb\x06\x1f\x08\x2f\x09\x1d\x09" + "\x21\x09\x5f\x08\x17\x07\xc3\x05\x99\x04\x01\x03\xfb\x01\xb9\x00" + "\x40\xff\xed\xfd\xc4\xfc\x6a\xfb\xbd\xfa\x4c\xfa\x14\xfa\x66\xfa" + "\x08\xfb\xba\xfb\xe7\xfc\x55\xfe\x7b\xff\x08\x01\x39\x02\xe5\x02" + "\x7a\x03\xa8\x03\xa1\x02\x09\x02\x37\x01\x26\x00\xdb\xff\x9e\xff" + "\x5b\xff\x50\xff\x73\xff\x04\xff\x59\xff\x84\xff\x7d\xff\x18\x00" + "\x8f\x00\x9f\x00\x2b\x01\x3a\x01\xb0\x00\xea\x00\x82\x00\x76\x00" + "\x75\x00\x62\x01\xce\x00\x41\x02\x6f\x01\xbc\x01\x45\x01\x18\x01" + "\xbd\x00\x99\x00\x3b\x00\xac\xfc\xb1\xfc\x1a\xf8\xa1\xf6\x15\xf4" + "\x11\xf4\xbd\xf3\x32\xf6\x76\xf8\x0a\xfb\x35\xff\x1d\x01\xe3\x03" + "\xcf\x05\xc2\x07\x5a\x08\x70\x0a\x91\x0a\x47\x0b\x22\x0b\x86\x0a" + "\xb1\x08\xae\x07\x39\x05\x6c\x03\xb3\x01\xfd\xff\x24\xfe\x02\xfd" + "\x7d\xfb\x2e\xfa\xbe\xf9\xfa\xf8\x15\xf9\xa6\xf9\x85\xfa\x82\xfb" + "\x5d\xfd\x7e\xfe\x20\x00\x95\x01\x79\x02\xf8\x02\x81\x03\x94\x02" + "\x92\x01\x81\x00\x17\xff\x34\xfe\xf8\xfd\xc3\xfd\x3e\xfe\x0d\xff" + "\x19\xff\x76\xff\x4a\x00\xcf\x00\x7a\x01\x13\x02\x91\x02\xe4\x02" + "\x2d\x03\x76\x02\x36\x02\x67\x01\x1a\x01\xa7\x00\x58\x01\x26\x01" + "\x91\x01\xd6\x01\x8c\x01\xf8\x00\x1c\x00\xd1\xff\x99\xff\xd3\xff" + "\xed\xfb\x4d\xfa\x9e\xf7\x94\xf5\x8b\xf3\x58\xf3\x42\xf3\x35\xf6" + "\x86\xf9\x37\xfc\x40\x00\x35\x03\x22\x05\x9e\x06\x5a\x08\x82\x08" + "\x7c\x0a\xd8\x0a\xc4\x0a\x43\x0a\xad\x09\xa2\x07\x8e\x06\xa4\x04" + "\xc8\x02\x57\x01\xf3\xff\x2c\xfe\x2f\xfd\xeb\xfb\x75\xfa\x09\xfa" + "\xa6\xf9\x8d\xf9\x55\xfa\x56\xfb\x44\xfc\xea\xfd\x00\xff\x1a\x00" + "\x86\x01\x45\x02\x7e\x02\xca\x02\x18\x01\xef\xff\x86\xfe\x57\xfd" + "\xde\xfc\x6a\xfd\xf7\xfd\x8a\xff\x25\x01\x74\x01\x1a\x02\x0b\x03" + "\x10\x03\x3d\x03\x18\x03\xb5\x02\x8d\x02\x6d\x02\x44\x01\xcc\x00" + "\xb8\x00\x9c\xff\xf9\xff\xee\xff\x82\x00\xd6\x00\x37\x01\x6a\x00" + "\x05\x00\xa7\xff\x41\xfe\x56\xfb\x33\xf8\xfa\xf5\x71\xf4\xfe\xf3" + "\x7b\xf3\xe9\xf4\xdf\xf7\x43\xfc\x13\x00\xd9\x03\xe7\x06\xa0\x08" + "\xce\x09\x62\x0a\xa1\x0a\x98\x0a\x24\x0a\xca\x08\x2a\x07\x3c\x05" + "\x52\x03\xb6\x01\x95\x00\x23\xff\x09\xfe\x27\xfd\x55\xfc\x82\xfb" + "\x4b\xfb\x16\xfb\x62\xfb\x1c\xfc\x8b\xfc\x43\xfd\x2b\xfe\x0b\xff" + "\xdc\xff\x10\x01\xa3\x01\x74\x02\x90\x02\x47\x02\xfb\x00\x71\xff" + "\x5c\xfd\x91\xfc\xdc\xfb\x34\xfd\xba\xfc\x4e\xff\x7c\x03\x04\x04" + "\x96\x06\x97\x04\x4c\x05\xb0\x04\xb6\x03\x5d\x01\xc3\x00\x1b\xff" + "\xde\xfe\x59\xfe\x16\xfe\xc2\xfe\x6b\xff\x92\xff\x55\x00\xd0\x01" + "\xd6\x01\x22\x03\x2c\x01\xc5\x00\x7a\xf9\x7c\xf7\x3c\xf1\x2e\xf0" + "\xb3\xef\x2b\xf1\x74\xf4\x8c\xf9\xc3\xff\xd8\x04\x7b\x0b\x63\x0d" + "\x80\x0f\x11\x0e\xa8\x0c\x01\x09\xed\x07\xe9\x03\x9f\x01\x8a\xfe" + "\x9a\xfc\x67\xfb\x21\xfd\x32\xfe\x22\x01\x39\x03\x27\x04\x59\x04" + "\xc4\x03\x6a\x02\xc1\x00\xa8\xff\xc2\xfd\x99\xfc\xfb\xfa\x63\xf9" + "\x55\xf8\xcd\xf8\x4a\xf9\xe1\xfb\x76\xfe\x23\x01\x01\x03\xbc\x03" + "\x65\x02\xf2\x01\xb6\x00\x2b\x00\xcc\x00\x1f\x01\x59\x01\x7c\x02" + "\x2e\x02\x97\x02\x49\x02\xe5\x01\x0c\x01\x83\x01\xff\x00\xcd\x01" + "\x80\x01\xfd\x01\x65\x01\xa1\x01\xd4\x00\x17\x01\x68\x00\x8e\x00" + "\x12\x00\x42\x00\x70\x00\xf2\xff\xe8\xfe\x27\xf5\x29\xf3\x24\xeb" + "\x8c\xeb\xb9\xec\xb8\xf2\x25\xf8\x0d\x01\x64\x07\xfe\x0c\xf4\x12" + "\xa9\x12\xde\x11\xf8\x0c\x7b\x07\x10\x00\x5e\xfd\xc7\xf7\xe0\xf6" + "\xda\xf5\xa6\xf7\x5b\xfb\xb1\x02\x3c\x08\xbb\x0e\xbe\x11\xa8\x11" + "\xef\x0e\xc4\x09\xb5\x02\x38\xfc\x87\xf6\x21\xf1\xc0\xee\x68\xed" + "\xcf\xee\x28\xf3\xef\xf9\x56\x01\x89\x09\xe6\x0e\xd9\x11\x03\x11" + "\xfb\x0c\x84\x05\xa5\xfd\x53\xf5\x98\xef\xf5\xec\xc3\xed\xe9\xf1" + "\x78\xf8\x03\x00\x86\x07\xa3\x0d\x3b\x11\xce\x11\x28\x0f\x57\x0a" + "\x61\x04\xf8\xfe\xe2\xfa\x80\xf8\xc8\xf7\xfd\xf7\x2a\xfa\x9e\xfd" + "\x03\x01\xc3\x04\xf7\x07\xbf\x08\xb8\x08\x49\x08\xf2\x06\x2c\xff" + "\x4b\xf4\x35\xec\x81\xe5\x5d\xe4\xdf\xe7\x3c\xee\xbd\xf6\xd2\x00" + "\xa6\x09\xcc\x11\x11\x17\x51\x17\xdc\x13\x20\x0d\x29\x04\xcc\xfc" + "\x69\xf7\x3f\xf3\xce\xf1\x2a\xf3\x8c\xf7\x19\xff\x40\x08\x84\x10" + "\x1f\x16\x4b\x17\x67\x14\x0c\x0e\xba\x05\x70\xfd\x9d\xf6\xb2\xf1" + "\x84\xee\x59\xed\xcd\xee\x7d\xf2\xd6\xf8\x29\x00\xe7\x07\xb3\x0d" + "\x74\x10\xa1\x0e\xc9\x09\x74\x02\xfa\xfa\x69\xf5\x11\xf2\xe9\xf1" + "\x4e\xf4\x29\xf8\xdb\xfc\x28\x02\x3e\x06\x32\x0a\xa5\x0b\x05\x0c" + "\xce\x09\x7b\x07\x02\x03\xb4\xff\x96\xfb\x57\xfa\x26\xf9\x7c\xfa" + "\x39\xfb\x27\xfd\x27\xff\xce\x02\xf4\x04\xdc\x08\x60\x07\x58\xfc" + "\x16\xf9\xaa\xed\xcb\xec\xcc\xec\x29\xf3\xf5\xf7\x1a\x01\x6d\x05" + "\x1b\x0b\xb5\x0e\xbf\x0e\x3b\x0e\xd8\x09\xe4\x06\x39\xfe\x91\xfc" + "\x9b\xf5\x24\xf6\x05\xf5\xad\xf9\xba\xfd\x50\x05\x7d\x0a\xa0\x0f" + "\xc6\x10\x92\x0f\xfc\x0b\xbc\x05\x82\xff\x9c\xf8\x5e\xf4\xe4\xef" + "\x12\xf0\x49\xf0\xae\xf5\xf4\xfa\xd5\x03\xa7\x0a\x36\x11\x62\x12" + "\xf3\x11\x4f\x0b\xb7\x04\xe3\xf9\x88\xf1\x85\xeb\x7f\xe9\x88\xed" + "\x90\xf3\x3f\xfd\x6e\x04\x82\x0c\xe9\x0f\x27\x12\x4d\x0f\xba\x0b" + "\x11\x03\x89\xfd\x65\xf6\x6e\xf5\xa7\xf4\x36\xf9\x9c\xfb\x1e\x01" + "\x5e\x02\x8b\x05\x82\x06\xca\x09\x61\x0b\x50\x0c\xfb\x09\x08\x08" + "\x32\x07\x2e\xee\x76\xeb\x66\xdc\xef\xdc\x5e\xdd\x84\xea\x21\xf3" + "\x2c\x02\xb2\x0f\xfa\x19\xf8\x21\x2c\x20\x77\x1d\x5a\x0f\xd9\x03" + "\xb5\xf4\xe1\xef\x25\xe7\xe6\xea\x7e\xeb\x51\xf5\x3f\xfe\x63\x0c" + "\xd6\x15\x88\x1f\x22\x1f\x1a\x1c\x36\x12\x05\x06\xdb\xf9\x2d\xef" + "\xa6\xe8\x0f\xe4\x33\xe5\x22\xe8\x03\xf2\xa7\xfb\xb9\x09\x2b\x14" + "\xb4\x1c\xa6\x1d\xc8\x1a\xec\x0e\x1e\x03\xe3\xf3\x11\xe8\xb6\xe0" + "\x87\xdf\x38\xe4\xe6\xed\x7a\xfa\xfd\x05\x97\x10\x1c\x18\x58\x1a" + "\x1e\x18\xc7\x11\xef\x06\x48\xfc\xad\xf2\x69\xee\xf7\xee\x31\xf3" + "\x77\xf9\x5b\x00\xab\x04\x0b\x09\xb0\x0b\x3b\x0f\xf0\x0f\xe6\x0f" + "\x16\x0b\xef\x04\x0e\xfe\xe4\xf9\x99\xf2\xbb\xe3\x6d\xe2\x11\xde" + "\xa6\xe1\xeb\xe8\x53\xf6\x51\x01\xbc\x0e\x47\x19\xcd\x1e\xb8\x1f" + "\xe0\x19\x59\x11\xc6\x02\x8e\xf7\x26\xed\xbc\xe9\x8d\xe7\x26\xed" + "\x7a\xf3\x70\xff\x57\x0b\xd4\x18\xf3\x1f\xf5\x22\x82\x1d\x0f\x14" + "\x28\x06\x7a\xf9\x41\xee\x69\xe7\xb0\xe4\xc4\xe4\x1c\xea\xe5\xf1" + "\x29\xfd\x7c\x08\x9d\x14\x59\x1a\xcf\x1c\xd6\x16\x8c\x0e\x43\xfd" + "\x59\xf1\xd8\xe4\x54\xe0\xc1\xe1\x4c\xea\x8a\xf5\x6d\x02\x82\x0d" + "\x6d\x15\x48\x18\xbf\x16\x82\x10\xcd\x07\x01\xff\xaa\xf7\x28\xf4" + "\xba\xf2\x56\xf6\x02\xf9\x63\xfe\xe2\xff\x10\x05\xb4\x05\x7e\x0c" + "\x1f\x0c\x8d\x10\x6e\x09\x6b\x0d\x84\xf8\xe4\xe9\x78\xe1\xb8\xd9" + "\xd1\xde\xa9\xe5\x4b\xf8\xfa\xfd\xbe\x0f\xdd\x14\xad\x1e\xc2\x1a" + "\xaa\x1d\xf9\x10\xa8\x06\xdd\xf8\x75\xf0\xb0\xe8\xaf\xe8\x37\xed" + "\xd9\xf3\xe5\x00\x24\x0b\xa9\x16\x4b\x1a\x16\x1d\x27\x16\xee\x10" + "\xf7\x03\x67\xfc\xc9\xef\x34\xeb\x3b\xe5\x90\xe6\x42\xe9\xdb\xf2" + "\x96\xfc\x6e\x09\x94\x14\x54\x1b\x2d\x1d\xca\x18\x2d\x0f\x86\x01" + "\xf9\xf5\xd5\xe8\xd6\xe3\xac\xe0\xa5\xe5\x0b\xef\xdf\xfb\xad\x08" + "\x1a\x12\x94\x18\x79\x19\x90\x15\xe1\x0e\xb8\x04\x94\xfa\x9f\xf2" + "\x22\xef\x8b\xee\x4a\xf3\x1d\xf8\x32\xff\x7d\x02\x3c\x08\x1a\x0a" + "\x6b\x0e\xe3\x0e\x74\x0f\x94\x0b\xdf\x06\xba\xfe\x76\xfc\x3f\xf1" + "\x16\xe2\x54\xe2\x9a\xdd\x25\xe4\xe6\xe9\x12\xfc\xc8\x03\x4d\x13" + "\x27\x1c\x40\x21\xac\x1d\x4f\x19\x0e\x0e\x72\xfe\xbb\xf4\x9e\xeb" + "\x25\xe9\xc3\xe7\xe9\xee\x3c\xf4\xe8\x01\x57\x0c\x0d\x1a\x03\x1f" + "\xcb\x21\xe5\x1a\x83\x11\x62\x02\x9f\xf6\x45\xeb\x72\xe5\x25\xe4" + "\xa0\xe5\xb6\xeb\x07\xf4\x15\x00\x06\x0b\x2e\x17\xd3\x1c\xbd\x1e" + "\x1e\x19\xad\x0c\xae\xfa\x02\xed\x8a\xe1\x2e\xdf\xa5\xe2\x9b\xee" + "\x7e\xf9\xdf\x06\x5c\x0f\x35\x15\x87\x15\x8a\x14\xcd\x0d\x19\x07" + "\x8a\xfe\x1b\xf8\x6f\xf3\x7e\xf2\x13\xf5\x88\xf8\x20\xfe\x2c\x01" + "\x81\x05\x69\x06\x6a\x0b\x10\x0b\x59\x0f\xa8\x0a\xba\x0e\x8f\xf4" + "\xa9\xeb\x26\xde\xe4\xdb\x95\xde\x47\xeb\x10\xfd\x3a\x02\xe3\x11" + "\xcc\x13\x8a\x1b\x81\x15\x0a\x1b\xc2\x0b\x57\x05\x7d\xf6\xc8\xf1" + "\x15\xe8\x09\xeb\x40\xef\x2c\xf8\x8b\x03\x47\x0d\x89\x16\x94\x17" + "\xd7\x19\xbb\x12\x1d\x0f\x6c\x03\x48\xfe\xbc\xf1\x9e\xed\x72\xe5" + "\xb0\xe7\xfe\xe8\x3e\xf4\x7d\xfe\x76\x0b\x03\x15\xd6\x19\xbb\x19" + "\x8c\x14\x50\x0c\x73\x00\x7c\xf5\xde\xe9\x0c\xe4\x3e\xe1\x0c\xe9" + "\x00\xf2\x88\x00\x17\x0b\x40\x14\x66\x17\xd4\x16\x5f\x11\xa1\x0a" + "\x51\x00\x65\xf8\xfe\xf2\x99\xf1\xd5\xf2\xd7\xf7\xff\xfb\x54\x00" + "\x52\x03\xbc\x07\xfa\x09\xb7\x0d\xd0\x0d\xd5\x0b\xf9\x06\xf8\x05" + "\x96\xf8\xcd\xe6\x18\xe5\xa6\xdd\x61\xe3\x01\xe8\x87\xfa\x9c\xff" + "\x18\x0d\xdc\x15\x02\x1c\x67\x1a\x57\x18\x7d\x10\x9b\x00\x0c\xf8" + "\x7b\xee\xa5\xed\xce\xea\x12\xf4\x3c\xf7\xe2\x01\x5c\x08\xb7\x13" + "\xa4\x16\x20\x1a\xa2\x16\xba\x0f\x25\x05\x41\xfb\xe8\xf1\x8f\xea" + "\x97\xe9\xeb\xe8\xb2\xee\x1a\xf3\x0a\xfe\x13\x05\x73\x10\x5e\x15" + "\x5a\x1a\x5a\x16\xc8\x10\x53\x01\xf8\xf2\x49\xe7\x7e\xe1\xb1\xe4" + "\xe0\xec\xd6\xfb\x3b\x05\x77\x10\x20\x13\x5d\x16\x3d\x11\xce\x0d" + "\x63\x05\x75\xff\x92\xf7\xf9\xf4\x97\xf2\x3e\xf5\x1a\xf8\x39\xfc" + "\xe5\xff\x3e\x03\x2f\x06\x52\x08\x67\x0b\x19\x0d\xfe\x0a\x4e\xf8" + "\xcf\xf3\x37\xe4\x02\xe4\x6e\xe0\x29\xef\x9e\xf6\x8c\x04\x66\x11" + "\xf7\x17\x3e\x1c\x79\x18\x3d\x17\x9b\x07\x7a\x01\xe8\xf3\xf2\xf0" + "\x72\xe7\x65\xec\xfc\xee\x16\xfa\xdd\x03\x72\x10\x6f\x17\xc1\x18" + "\x3f\x17\xf2\x0e\xa3\x07\xe9\xfd\x6b\xf9\xf1\xf0\x6c\xef\x5b\xeb" + "\xf8\xec\x86\xee\x76\xf7\x9c\x00\xf9\x0a\xea\x13\xc7\x18\xdd\x18" + "\x44\x12\x00\x0a\x56\xfd\x98\xf2\x5f\xe8\xd2\xe4\x9f\xe6\x56\xee" + "\x40\xf9\x10\x05\x8c\x0e\xfa\x13\x76\x16\x3c\x13\x41\x0e\x6a\x05" + "\x91\xfe\xc4\xf6\x12\xf4\xe7\xf2\xed\xf5\x3c\xf8\x35\xfb\x8b\xfe" + "\x4f\x00\xfb\x03\x8f\x06\x7f\x0c\x4c\x0a\x03\x11\x6b\x02\x1a\xf7" + "\x16\xeb\xea\xe5\x41\xe3\x2c\xe6\xd5\xf4\x58\xf9\x5e\x06\xde\x0c" + "\xad\x18\xfb\x17\x48\x1d\x0e\x16\xec\x0c\x61\xff\x3f\xf5\xef\xec" + "\x8b\xe7\x98\xeb\xd4\xef\x5a\xfb\xbe\x03\x1f\x10\xba\x13\x72\x17" + "\x22\x14\xd4\x10\xed\x08\x30\x02\xfa\xf9\x08\xf2\x16\xec\x4b\xe8" + "\xb7\xe9\x33\xee\x8b\xf8\x6b\x02\x34\x0e\x50\x15\x06\x1a\x03\x18" + "\x0a\x13\x28\x08\x8b\xfc\x8d\xf0\x3c\xe8\xbe\xe5\x79\xe8\x2f\xf2" + "\xc0\xfb\x43\x08\x97\x0e\x2f\x15\xce\x12\x39\x10\x7f\x08\x4e\x03" + "\xab\xfc\x68\xf9\x6d\xf7\x64\xf6\x1c\xf7\x39\xf6\xb4\xf9\x70\xfb" + "\x62\x01\xec\x03\x3e\x0a\xfd\x0a\x38\x0f\x79\xfd\x67\xf8\xad\xed" + "\x57\xea\x5b\xe8\xa7\xed\x27\xf8\xad\xf9\x14\x08\x6b\x0b\x8c\x16" + "\x3c\x14\x19\x1b\xde\x10\x4a\x0a\xb2\xfe\x0a\xf7\x36\xef\xaa\xea" + "\x37\xef\x81\xf1\x13\xfd\x02\x04\xed\x0f\x35\x11\x6a\x15\x8c\x10" + "\xfe\x0c\xb7\x05\x11\x00\xaa\xf9\x14\xf4\x1a\xf0\x1f\xec\x2b\xed" + "\x63\xef\xa3\xf8\x70\x00\x56\x0c\x4f\x13\xcb\x18\x78\x17\x8b\x12" + "\x73\x07\xba\xfc\xec\xf0\x29\xea\x04\xe8\x0b\xec\xa1\xf4\x02\xfe" + "\xd7\x08\x15\x0e\x0d\x13\x11\x10\x86\x0d\x16\x06\xd9\x01\x73\xfb" + "\x53\xfa\x21\xf8\x63\xf9\x05\xf8\xb5\xf9\x50\xf9\x7a\xfb\x22\xfe" + "\x80\x03\x36\x06\x58\x0b\x5b\x09\x91\xf9\xea\xf6\x4f\xeb\x62\xed" + "\x1f\xe9\x0a\xf7\x02\xfa\xc8\x01\x65\x09\x42\x0f\x5d\x14\x87\x13" + "\x8b\x17\x5e\x0c\x07\x08\x97\xfb\xc1\xf7\x33\xee\xf5\xee\x24\xf1" + "\xf1\xf6\xb3\xff\x58\x07\x8d\x0f\xb3\x0f\xf9\x11\xf2\x0c\x9b\x09" + "\x78\x02\xff\xfd\xe6\xf7\x68\xf3\x0b\xf0\x71\xed\x21\xef\x81\xf2" + "\x71\xfa\x95\x01\xef\x0b\xd2\x11\xf5\x16\xa0\x15\x0b\x10\x85\x06" + "\xf3\xfb\x63\xf2\xfc\xec\x4c\xec\xde\xf0\xe0\xf7\xb5\x00\x7d\x07" + "\x12\x0d\xe6\x0e\x65\x0d\xf8\x09\x81\x05\x29\x01\x03\xfd\x78\xfb" + "\x9f\xf9\xe0\xf9\xb2\xf8\x10\xf9\x53\xf8\xef\xfb\xc3\xfc\x5f\x02" + "\x92\x04\x6f\x0d\xd7\xfd\x92\xf9\x22\xf3\xb1\xed\x5d\xed\x12\xf0" + "\x2d\xfe\xd3\xfb\x57\x0a\x50\x0b\xa7\x13\x79\x0f\x11\x14\x5a\x0e" + "\xf5\x05\xdd\x00\x9f\xf8\xa6\xf5\x56\xed\x5a\xf3\x33\xf4\xac\xfd" + "\x86\x04\x32\x0e\x19\x11\xf3\x0f\x09\x0f\x6f\x08\xb6\x04\xe1\xfd" + "\x53\xfb\x63\xf5\xd7\xf2\xb7\xef\x2c\xef\xcb\xf1\x53\xf7\xee\xff" + "\x71\x07\xc0\x0f\x8e\x13\x04\x15\x6a\x0f\x09\x09\xd3\xff\x89\xf7" + "\x68\xf1\x2b\xef\x99\xf0\xc5\xf4\xec\xfb\xaf\x02\x7e\x08\x44\x0d" + "\x07\x0e\x43\x0c\x45\x08\xf1\x03\xec\xfe\xaa\xfb\xdd\xf9\x34\xfa" + "\x37\xf9\xc5\xf8\x0d\xf9\xe6\xf9\x69\xfb\x86\xff\x6b\x04\xa6\x09" + "\x0a\x0a\xf9\xfd\xe7\xf9\x3b\xf0\x96\xed\x67\xeb\xe7\xf2\x9c\xf9" + "\x8a\xfe\x63\x08\x42\x0c\x00\x12\xe8\x11\x28\x15\x5d\x0e\xce\x08" + "\x88\x01\x3c\xfa\x6d\xf3\xdd\xee\xb3\xf1\xe7\xf3\x1a\xfc\xd5\x03" + "\xf5\x0b\xbb\x0e\xb6\x0f\x1f\x0f\xc0\x0a\xa4\x07\xe2\x01\x03\xfe" + "\x74\xf7\x6e\xf3\xb7\xee\x5b\xed\x6d\xef\xbc\xf4\x49\xfc\xaf\x04" + "\x65\x0d\x96\x12\x86\x13\x35\x10\xe3\x0a\x75\x02\x42\xfb\x05\xf5" + "\xd0\xf2\xda\xf1\xb0\xf5\x11\xfa\x0b\x00\x8b\x04\x76\x09\xe6\x09" + "\x20\x0a\xb7\x07\xac\x05\xd8\x01\x3b\xff\x89\xfc\xe8\xfa\xc7\xf9" + "\xbe\xf8\xf7\xf8\x11\xf9\x2c\xfb\x7a\xfd\xa6\x02\x75\x05\x13\x0f" + "\xdf\xfc\xca\xfd\x6d\xf3\xfe\xef\x26\xec\x8b\xef\xf6\xfb\x8f\xf7" + "\xda\x07\xf4\x07\x76\x12\xac\x0e\x0c\x15\x6e\x0f\x21\x08\xaa\x04" + "\x65\xfc\xde\xf9\xbe\xf0\x84\xf4\xb2\xf2\x98\xf8\xda\xfe\x2f\x06" + "\x94\x0c\xa6\x0c\x86\x10\xdd\x0b\x50\x0a\x3e\x04\xcb\x00\x4f\xfc" + "\x01\xf6\xd4\xf3\xb8\xee\xd4\xf0\x9e\xf0\x57\xf8\x13\xff\x1a\x07" + "\x18\x0d\x07\x10\xc3\x10\x30\x0c\x48\x08\xd4\x00\xac\xfc\x5b\xf7" + "\x58\xf7\x03\xf7\x50\xf9\xbf\xfb\x6c\xfe\x5c\x02\x64\x03\x38\x06" + "\xb3\x06\x87\x06\x6a\x05\x2b\x03\x3f\x01\x71\xfe\xec\xfc\xe0\xf9" + "\x3d\xf9\xe2\xf8\xa6\xf9\x8c\xfb\x3e\xff\x8b\x07\x61\xf8\xfa\xfb" + "\x27\xf5\xce\xf3\x74\xf0\x16\xf5\x63\xff\xf1\xfb\x6e\x0b\x2b\x0b" + "\x79\x12\xfe\x0c\x79\x10\x79\x0a\xe8\x02\x98\x01\x03\xfc\x8f\xfa" + "\xfe\xf2\x4b\xf6\x0c\xf6\xb5\xf9\x88\x01\xf5\x07\x20\x0e\xce\x0c" + "\x22\x10\x82\x0a\x5e\x07\xa9\x02\x73\xfe\x22\xfb\x84\xf5\x9d\xf4" + "\x71\xef\x37\xf1\xe6\xf1\x06\xf9\x4a\xfe\x4f\x05\xcd\x0b\x08\x0f" + "\x24\x0f\x34\x0d\x50\x09\x7a\x03\xab\xfe\x4f\xfb\x1e\xf9\xd2\xf7" + "\x1a\xf8\x9e\xf9\x45\xfb\x4d\x00\xd8\x02\xc8\x06\x01\x08\x21\x08" + "\xb5\x06\x6a\x03\xfd\x01\x69\xfe\xbd\xfd\xf3\xf8\x84\xf9\xa5\xf6" + "\xfb\xf8\x02\xf8\xae\x03\x83\xf7\x95\xf6\x9c\xf7\x7d\xf2\xa5\xf5" + "\x86\xf3\x2e\x04\x76\xfd\x7c\x0a\xbd\x0d\xfd\x10\xeb\x0e\x1c\x0d" + "\x54\x0d\xba\x01\xb9\x01\xa7\xfc\x7b\xfb\x5f\xf5\x97\xf4\x25\xf7" + "\x85\xf6\xe7\xfe\x92\x04\x88\x0c\x91\x0c\x8c\x0e\x59\x0d\xe3\x06" + "\x59\x05\x6c\xff\x83\xfe\x24\xf7\x76\xf6\xee\xf1\x7a\xf0\x9d\xf1" + "\xc3\xf5\x33\xfc\x8f\x00\xd2\x08\xd8\x0c\xfa\x0e\x67\x0d\x6d\x0c" + "\xac\x07\xa3\x02\x4b\xff\xfa\xfb\x11\xfa\x43\xf7\x03\xf9\x1e\xf8" + "\x9a\xfc\xef\xfe\xee\x03\xb2\x06\x98\x07\x40\x08\xdc\x05\x0e\x04" + "\xf6\x00\x38\xff\x8f\xfc\x7e\xfa\x58\xf9\x92\xf8\x71\xfa\x4d\xfb" + "\x2a\xef\xa8\xf2\x50\xed\x53\xf0\x88\xf0\x13\xfa\x5c\x03\x6e\x05" + "\xe2\x12\xf3\x13\x14\x18\xcd\x11\x02\x11\xc2\x08\x6a\x01\xb7\xfe" + "\xfc\xf9\xb1\xf7\x60\xf2\x63\xf3\x9b\xf3\xfc\xf6\x82\xff\x7a\x06" + "\x03\x0e\xe2\x0e\x79\x11\xaf\x0c\x7a\x07\x62\x03\xc5\xfe\xb2\xfb" + "\xf7\xf5\x9d\xf4\xd3\xef\x87\xef\x1f\xf1\xcd\xf5\xde\xfb\xd3\x02" + "\x00\x0b\x30\x0f\xa1\x10\x9e\x0f\xe2\x0c\x83\x07\xc9\x03\x21\x00" + "\xdf\xfc\x17\xf9\xa5\xf7\x8c\xf6\x7e\xf7\x2f\xfb\x19\xff\x9b\x03" + "\x0f\x07\x8b\x08\x72\x08\x51\x06\x3a\x04\x7f\x01\x84\xfe\x66\xfc" + "\xb7\xfa\x76\xf9\x99\xf9\x36\xfa\x48\xed\x03\xef\x59\xea\x05\xeb" + "\x87\xed\xab\xf5\xb4\x01\x91\x04\x0a\x13\xb3\x16\x09\x1b\x15\x17" + "\xf5\x14\x79\x0d\x4c\x04\x4e\x00\xe4\xfa\x51\xf7\xa3\xf2\xc0\xf1" + "\x16\xf2\x48\xf3\x26\xfb\x30\x02\xbf\x09\x78\x0d\xe1\x10\xd7\x0f" + "\xd9\x0a\xff\x06\x21\x01\x66\xfd\x1d\xf7\x2d\xf5\x5b\xf1\x8c\xef" + "\x2f\xf0\xa3\xf3\x54\xf8\xac\xfe\x54\x07\x66\x0d\xeb\x10\x2e\x12" + "\xf1\x0f\x89\x0b\x53\x06\x7b\x02\xbf\xfe\xa6\xfa\xac\xf8\x44\xf6" + "\x4d\xf6\xc4\xf7\x03\xfc\x19\x00\xfc\x04\x01\x08\x63\x09\x32\x08" + "\xd5\x05\x4c\x03\xbd\xff\x0d\xfd\xc0\xfb\x4a\xf9\xeb\xf9\x02\xf8" + "\x02\xed\x97\xed\x3d\xe9\xd9\xea\x2b\xed\x5a\xf6\xb4\x00\x74\x05" + "\x16\x12\x0e\x16\x8d\x19\xee\x16\xd3\x14\x8d\x0e\x5e\x06\xd8\x02" + "\x44\xfd\x9b\xf8\x34\xf4\x64\xf2\xa1\xf2\x05\xf3\x2b\xfa\x87\xff" + "\x4c\x06\xc1\x09\x78\x0d\x81\x0d\x02\x0a\x6a\x08\xe8\x03\x3b\x00" + "\x27\xfa\x47\xf7\x5d\xf3\x9d\xf0\xaa\xf1\xc6\xf3\x1f\xf7\x8f\xfc" + "\xbc\x03\xb0\x09\x55\x0d\x27\x11\xb1\x10\x84\x0e\x81\x0a\xc3\x06" + "\xb6\x01\x78\xfc\x1e\xf9\x23\xf6\x1b\xf5\xcf\xf6\x86\xf9\x46\xfe" + "\xe2\x01\x6b\x06\x02\x08\x30\x08\xf2\x05\x6a\x04\x73\x01\x48\xfe" + "\x77\xfc\x26\xfc\xc2\xfa\x90\xec\x57\xee\x2c\xe7\x65\xe7\xd0\xe8" + "\x96\xf1\xfd\xfb\x40\x00\x14\x10\x38\x14\x61\x19\x90\x18\x10\x18" + "\xd9\x11\xb1\x09\xab\x06\x80\x01\xa0\xfb\x60\xf7\x6a\xf4\xec\xf2" + "\xe9\xf0\xf1\xf6\x76\xfb\x01\x01\x8f\x05\x2e\x0a\x35\x0b\x56\x09" + "\x68\x09\xa0\x05\x08\x03\x7d\xfe\xe6\xfb\xd6\xf6\x95\xf3\xf2\xf1" + "\x20\xf3\x8e\xf4\xf3\xf8\xc6\xff\x67\x05\xb6\x09\xe3\x0d\xa2\x0f" + "\xb3\x0e\x46\x0d\x51\x0b\xab\x07\xdd\x02\xa0\xfe\x03\xfa\x04\xf6" + "\x98\xf5\xe1\xf5\x95\xf9\x7b\xfd\xdc\x01\x4d\x05\x66\x06\x0f\x07" + "\xc7\x04\xd9\x02\xf8\xfe\x0e\xfe\xf7\xfb\x88\xfd\x40\xf2\x44\xef" + "\x60\xeb\x4a\xe6\x76\xe9\xb1\xec\x57\xf9\x8d\xfd\xce\x0a\xe7\x12" + "\x4a\x16\x71\x18\x2b\x16\x59\x13\xac\x0b\x47\x08\x3e\x05\x37\xff" + "\xc5\xfb\x0d\xf7\x43\xf5\x61\xf2\x89\xf5\x10\xfa\x73\xfd\x69\x02" + "\x0a\x05\xd0\x07\x3a\x06\x18\x07\x6f\x05\xd7\x03\x5f\x01\x70\xfe" + "\xee\xfa\x5f\xf7\x1e\xf5\x7c\xf5\xd2\xf4\x31\xf8\x0a\xfd\xdb\x01" + "\xc0\x06\xa1\x0a\xe8\x0d\x23\x0d\xc1\x0d\x36\x0c\xbc\x09\x2a\x06" + "\x08\x02\xd9\xfd\x17\xf9\x27\xf8\xad\xf6\x4d\xf8\xa2\xfa\xaa\xfd" + "\xbe\x00\x26\x02\xa6\x04\xd6\x03\x75\x03\xa7\x00\x92\xff\x56\xfe" + "\xbf\xfe\xe2\xf3\x9a\xf2\xf5\xed\xb2\xe8\x01\xea\xcd\xeb\xf3\xf5" + "\xdf\xf8\x38\x07\x48\x0f\xaa\x14\xd3\x17\x4f\x17\x9a\x13\xb4\x0c" + "\xab\x09\x6e\x06\x75\x01\x37\xfe\x7a\xfa\x22\xf7\x5e\xf3\x95\xf4" + "\x93\xf7\x8b\xfa\xb1\xff\x63\x03\x35\x06\x8b\x05\x90\x06\xf3\x04" + "\xc2\x03\xf1\x01\x37\x00\x14\xfd\xfb\xf9\xb1\xf7\x58\xf6\x85\xf4" + "\x8d\xf7\xca\xfb\x50\x00\xee\x05\x6a\x0a\x81\x0d\xf2\x0c\xc1\x0d" + "\xd4\x0b\x7a\x09\x9c\x06\x5d\x03\x5b\xff\xd2\xfa\x0f\xfa\x84\xf7" + "\x1c\xf8\xaf\xf9\x60\xfc\xee\xfe\x4c\x00\xe0\x02\x93\x02\xf6\x01" + "\x8c\x00\x4f\xff\x65\xff\xfb\xfd\xa4\xf4\x98\xf4\xcb\xee\xef\xea" + "\xd1\xeb\x71\xee\x47\xf5\x2e\xf9\x47\x06\x65\x0d\xd4\x12\xed\x16" + "\xf5\x16\x0c\x13\xd2\x0d\xb0\x0a\xd1\x06\xb7\x01\xd7\xfe\x6e\xfb" + "\xef\xf7\x25\xf5\x12\xf6\x46\xf7\x20\xf9\x3b\xfd\x97\x00\x3e\x03" + "\x0b\x04\xf8\x05\xdc\x04\x06\x04\x5c\x02\x87\x00\x77\xfd\x38\xfb" + "\x05\xf9\x9d\xf6\x72\xf6\x23\xf8\xc7\xfb\x8f\xff\xc6\x05\xab\x0a" + "\x71\x0d\x7d\x0e\xc1\x0e\x2e\x0c\x11\x09\xac\x05\x6a\x02\xc8\xfe" + "\xf3\xfb\x6f\xfb\x4f\xf9\x82\xf9\xf5\xf9\x2a\xfb\x6e\xfc\x2f\xfe" + "\xbc\x00\x45\x01\x3e\x01\xb0\x00\xc9\xff\xfc\xff\x1d\xf7\xa2\xf4" + "\x31\xf2\xe3\xec\xfc\xec\x58\xee\x6b\xf4\x7c\xf6\xff\xff\xcf\x08" + "\x2e\x0e\x4f\x13\x74\x16\xda\x14\x35\x10\xf1\x0c\xa0\x09\x93\x04" + "\xdc\x00\x3a\xfe\xd3\xfa\xc8\xf7\x3f\xf7\x62\xf8\x1d\xf8\xb6\xfa" + "\xc7\xfd\x1e\x00\xfa\x00\x3b\x03\xb5\x03\x37\x03\xaa\x02\xe2\x01" + "\xd2\xff\x82\xfd\x31\xfb\x6a\xf8\x45\xf7\x99\xf7\xb8\xfa\x64\xfe" + "\xde\x02\x33\x08\x8a\x0b\x1f\x0d\x59\x0d\x86\x0c\x6b\x0a\x37\x07" + "\x83\x04\xa9\x01\xcd\xfe\xea\xfc\xe2\xfb\xba\xfa\x92\xfa\x53\xfa" + "\x5e\xfb\xea\xfb\x9a\xfd\xc7\xfe\xed\xff\xf3\xff\x8e\x02\x8d\xfd" + "\x86\xf6\xe0\xf5\x8a\xef\x12\xee\x3a\xed\x17\xf2\x7d\xf5\x1e\xfa" + "\x96\x03\xbc\x08\x13\x0d\x89\x11\x43\x13\x73\x11\x1d\x0f\xac\x0d" + "\x26\x0a\xd8\x04\x5a\x01\xa5\xfd\x15\xfa\x95\xf7\xde\xf8\x3a\xf9" + "\xc9\xfa\x48\xfc\x80\xfe\xf3\xfe\x91\xff\xd5\x00\x3a\x01\x63\x01" + "\x3e\x01\x19\x01\x21\xff\x9c\xfd\x3a\xfb\x03\xfa\x17\xf9\x59\xfa" + "\x23\xfd\x77\x00\xb5\x03\x7a\x07\xe8\x09\x40\x0b\x25\x0b\x2d\x0b" + "\x8b\x09\x65\x07\x7d\x05\x76\x02\x9f\x00\x54\xfe\x1f\xfd\x8d\xfc" + "\xbd\xfb\x5d\xfb\x6a\xfb\x44\xfb\xae\xfb\xee\xfb\xd6\xfc\xc7\xfd" + "\x44\xff\x8f\xf8\xe3\xf7\x36\xf5\x1d\xf1\x74\xf1\xac\xf1\x48\xf6" + "\x42\xf7\x0b\xff\xfc\x04\xfd\x08\x4f\x0d\x43\x10\xb2\x0f\x73\x0d" + "\x2d\x0c\xa5\x0a\x25\x07\xc0\x04\x43\x02\x50\xff\x59\xfc\x06\xfb" + "\xf3\xfa\xf2\xf9\x8e\xfb\xab\xfc\xe4\xfd\xe2\xfd\x51\xff\x71\xff" + "\xef\xfe\x1f\xff\x48\xff\xc0\xfe\xbe\xfd\x6a\xfd\xcf\xfc\xa2\xfb" + "\x32\xfc\x86\xfd\x9c\xff\x09\x02\x63\x05\xee\x07\x07\x09\xed\x09" + "\x5d\x09\x3a\x08\xa8\x06\x9f\x05\x4d\x04\x97\x02\xc8\x01\xfe\xff" + "\xa3\xfe\xab\xfd\xb6\xfc\x5a\xfc\xba\xfb\x13\xfc\xee\xfb\xd2\xfb" + "\x2f\xfc\x03\xfd\xa1\xf6\x04\xf6\xeb\xf3\xf4\xf0\xbf\xf1\x29\xf3" + "\xc2\xf7\x83\xf9\x3f\x00\xb6\x05\x72\x09\xa6\x0c\x47\x0f\xb8\x0e" + "\xa7\x0c\xbd\x0a\x37\x09\xc5\x05\x66\x03\x1d\x01\xcd\xfe\x7e\xfc" + "\x9d\xfb\xe3\xfb\x82\xfb\xd6\xfc\xcc\xfd\x08\xff\xae\xfe\x71\xff" + "\x3d\xff\x19\xff\x8d\xfe\xcd\xfe\xe6\xfd\xdf\xfc\xa0\xfc\x00\xfc" + "\x32\xfc\xdf\xfc\x0a\xff\x46\x01\x88\x03\xd2\x05\x3d\x07\xb8\x07" + "\xdf\x07\x78\x07\x2a\x07\x4d\x06\x85\x05\xa1\x04\x2e\x03\x4a\x02" + "\x83\x00\x6e\xff\x65\xfe\x83\xfd\x36\xfd\xe7\xfc\x80\xfc\xad\xfc" + "\x10\xfc\x03\xfd\x10\xf9\x00\xf5\x7c\xf4\xc9\xef\x5d\xf0\xbe\xf0" + "\xdf\xf4\x34\xf8\x25\xfd\x57\x04\xda\x07\xf7\x0b\xc9\x0e\x88\x0f" + "\x30\x0e\xde\x0c\xdc\x0a\x2a\x08\x80\x04\x3a\x02\x8a\xfe\x22\xfc" + "\x81\xfa\x30\xfa\x09\xfa\x1c\xfb\x1c\xfd\x10\xfe\x54\xff\x35\x00" + "\x8a\x00\x0b\x00\xe4\xff\x46\xff\x62\xfe\x70\xfd\xdf\xfc\xc9\xfb" + "\xcc\xfb\x2d\xfc\xca\xfd\xde\xff\x66\x02\xb6\x04\x3b\x06\x28\x07" + "\x49\x07\x02\x07\x6d\x06\x1a\x06\xaf\x05\x4b\x05\x34\x04\x7b\x03" + "\xca\x01\x70\x00\x55\xff\x3a\xfe\xae\xfd\xa3\xfd\x53\xfd\x99\xfd" + "\x91\xfd\xe3\xfd\xd4\xf8\xc7\xf5\x76\xf3\x61\xee\xce\xee\x27\xef" + "\x7d\xf3\x27\xf7\xb6\xfd\x50\x04\x36\x08\x4f\x0c\x8c\x0e\xbf\x0e" + "\x1c\x0e\x62\x0d\xdc\x0b\x5b\x09\x6d\x06\x75\x03\x88\xff\x45\xfc" + "\xf0\xf9\xed\xf8\xfb\xf7\x72\xf9\xa8\xfa\x5c\xfc\xed\xfd\x81\xff" + "\x64\x00\xa6\x00\xba\x00\x1f\x00\xa0\xff\x1f\xff\xaa\xfe\x11\xfe" + "\xfe\xfd\xf0\xfd\x9e\xfe\xd3\xff\x58\x01\xb4\x02\x05\x04\xd8\x04" + "\x93\x05\x71\x05\xa0\x05\xac\x05\xa9\x05\x94\x05\x3b\x05\xb8\x04" + "\x3d\x03\x7c\x01\x2f\x00\x30\xfe\x70\xfd\xd4\xfc\x94\xfc\xcd\xfc" + "\x71\xfd\x5b\xfc\xba\xf7\xb4\xf6\x88\xf2\x0b\xf0\xe9\xef\x64\xf1" + "\x1b\xf5\x16\xf9\x29\x00\x1a\x05\x44\x09\x86\x0c\xad\x0d\x39\x0d" + "\xa0\x0c\xca\x0b\x80\x0a\x54\x08\x55\x06\x71\x03\x0e\x00\xdd\xfc" + "\xc3\xfa\x26\xf9\x67\xf8\x1c\xf9\x2e\xfa\x8d\xfb\xbb\xfc\x2f\xfe" + "\xb8\xfe\x28\xff\x4b\xff\x85\xff\x68\xff\x9f\xff\xb8\xff\xe3\xff" + "\x0d\x00\x45\x00\xaa\x00\x05\x01\xc0\x01\x7e\x02\xf4\x02\xad\x03" + "\x45\x04\x59\x04\x94\x04\x97\x04\x8c\x04\x95\x04\xbf\x04\x67\x04" + "\x71\x03\x8e\x02\x4d\x01\xab\xff\x50\xfe\x55\xfd\x6c\xfc\x27\xfc" + "\x79\xfb\x85\xf7\x5f\xf6\xaf\xf3\x48\xf1\x7b\xf1\x4b\xf2\x66\xf5" + "\xa1\xf8\xa7\xfe\xa8\x03\xba\x07\x70\x0b\x1f\x0d\xcd\x0c\x54\x0c" + "\x5a\x0b\xe1\x09\x01\x08\x19\x06\xe7\x03\x33\x01\x81\xfe\x5a\xfc" + "\x97\xfa\x50\xf9\x5c\xf9\xf3\xf9\x1d\xfb\x36\xfc\x9f\xfd\x28\xfe" + "\x35\xfe\x7a\xfe\x67\xfe\x64\xfe\xfb\xfe\xb2\xff\x49\x00\xd8\x00" + "\x4a\x01\x7f\x01\x98\x01\xa4\x01\x16\x02\x3c\x02\xa0\x02\x8f\x03" + "\xe3\x03\x70\x04\x85\x04\x88\x04\x0e\x04\xac\x03\xac\x03\xdd\x02" + "\xa7\x02\xe3\x01\x34\x01\x09\x00\xf1\xfe\xc3\xfd\x11\xfd\x1d\xfa" + "\x20\xf7\xc0\xf5\x2c\xf2\x69\xf1\x8e\xf1\x88\xf3\x51\xf6\x91\xfa" + "\x11\x00\x0e\x04\xc2\x07\xe5\x0a\x21\x0c\x07\x0c\xfa\x0b\x29\x0b" + "\xb8\x09\xd4\x07\x17\x06\x64\x03\xb6\x00\x3e\xfe\x33\xfc\x10\xfa" + "\x18\xf9\x40\xf9\xa5\xf9\xa4\xfa\x14\xfc\x39\xfd\xd2\xfd\x6a\xfe" + "\xc1\xfe\xfb\xfe\x22\xff\xf1\xff\x72\x00\x30\x01\xb0\x01\x2f\x02" + "\xea\x01\x95\x01\x32\x01\xc5\x00\xd2\x00\x1a\x01\x13\x02\xfb\x02" + "\xea\x03\x96\x04\x1a\x05\xc9\x04\x87\x04\xd6\x03\x26\x03\x6c\x02" + "\xd3\x01\x10\x01\x1d\x00\xef\xfe\xa4\xfd\x41\xfa\x94\xf7\x40\xf5" + "\x5c\xf2\xea\xf1\xfb\xf1\x61\xf4\x22\xf7\x4a\xfb\xef\xff\x9d\x03" + "\x1d\x07\x71\x09\x62\x0a\xfa\x0a\xc5\x0a\x75\x0a\x85\x09\x1d\x08" + "\xb6\x06\x40\x04\x00\x02\x6f\xff\x21\xfd\x2e\xfb\xdc\xf9\x6d\xf9" + "\x8d\xf9\x23\xfa\x19\xfb\xf0\xfb\xb6\xfc\x42\xfd\xd9\xfd\x45\xfe" + "\x08\xff\xed\xff\x0c\x01\xfc\x01\xd2\x02\x61\x03\x22\x03\x9c\x02" + "\xab\x01\xcf\x00\x19\x00\xd4\xff\x13\x00\xc6\x00\xb5\x01\xba\x02" + "\x65\x03\xf6\x03\x06\x04\xc4\x03\x4b\x03\x16\x03\x8e\x02\x3d\x02" + "\xb2\x01\x0b\x01\x0d\xff\x92\xfb\x4f\xf9\x9a\xf5\x13\xf3\x12\xf2" + "\x8b\xf2\x78\xf4\x6a\xf7\x04\xfc\x02\x00\x75\x03\x8a\x06\x58\x08" + "\xd2\x08\x5b\x09\x87\x09\x44\x09\xb7\x08\xfe\x07\x98\x06\x79\x04" + "\x36\x02\xf7\xff\x88\xfd\xc5\xfb\xe2\xfa\x3d\xfa\x81\xfa\x05\xfb" + "\xcb\xfb\x58\xfc\xda\xfc\x63\xfd\x8c\xfd\xfe\xfd\xa4\xfe\x82\xff" + "\x7c\x00\x7b\x01\x5e\x02\xe7\x02\xea\x02\x99\x02\xfb\x01\x31\x01" + "\x91\x00\x17\x00\x44\x00\xb2\x00\x64\x01\x39\x02\xad\x02\xf9\x02" + "\xd1\x02\x4d\x02\xef\x01\xae\x01\x80\x01\xad\x01\xc0\x01\x91\x01" + "\x65\xff\x5c\xfd\xa2\xfa\xf6\xf6\x2a\xf5\xcf\xf3\x53\xf4\xff\xf5" + "\x37\xf9\x08\xfd\x2f\x00\x71\x03\x99\x05\xa0\x06\x79\x07\x14\x08" + "\x8a\x08\xd6\x08\xd8\x08\x52\x08\xe9\x06\xee\x04\x74\x02\x9b\xff" + "\xff\xfc\x2e\xfb\xfa\xf9\xc6\xf9\x3f\xfa\x20\xfb\xef\xfb\xa0\xfc" + "\x12\xfd\x63\xfd\xb5\xfd\x41\xfe\x08\xff\x09\x00\x32\x01\x16\x02" + "\xaf\x02\xd1\x02\x75\x02\xb8\x01\xf9\x00\x60\x00\x24\x00\x52\x00" + "\xe0\x00\x98\x01\x3b\x02\xa1\x02\xdc\x02\xad\x02\x3f\x02\xfb\x01" + "\xba\x01\x88\x01\x8e\x01\x92\x01\xe5\x00\xb0\xfe\xae\xfc\xf2\xf9" + "\xae\xf6\xd0\xf4\xca\xf3\x57\xf4\x1b\xf6\xad\xf9\xcd\xfd\x67\x01" + "\xc5\x04\xe2\x06\x98\x07\xd0\x07\xcb\x07\xbe\x07\xc7\x07\xe2\x07" + "\xf3\x07\x44\x07\xfd\x05\x28\x04\x7d\x01\x9e\xfe\x2c\xfc\x47\xfa" + "\x71\xf9\x68\xf9\x33\xfa\x1e\xfb\xee\xfb\x91\xfc\xc0\xfc\xff\xfc" + "\x58\xfd\x39\xfe\x90\xff\x2b\x01\xb8\x02\xe0\x03\x28\x04\x93\x03" + "\x72\x02\xe5\x00\x91\xff\xd2\xfe\xbe\xfe\x51\xff\x33\x00\x50\x01" + "\x3e\x02\x8f\x02\x92\x02\x29\x02\x8e\x01\x1b\x01\xcd\x00\xe7\x00" + "\x15\x01\x28\x01\xf0\x00\x0f\xff\x50\xfd\x2b\xfb\x83\xf8\x24\xf7" + "\x66\xf6\x17\xf7\x8f\xf8\x2b\xfb\x47\xfe\xcd\x00\x2e\x03\xf6\x04" + "\xb5\x05\x2e\x06\x9a\x06\xd7\x06\xf2\x06\xe5\x06\xa0\x06\xa7\x05" + "\x38\x04\x8f\x02\x9e\x00\x9c\xfe\x28\xfd\x3b\xfc\xbf\xfb\xce\xfb" + "\x24\xfc\x71\xfc\xa9\xfc\xd9\xfc\x15\xfd\x5c\xfd\x09\xfe\x20\xff" + "\x54\x00\x8c\x01\x81\x02\xed\x02\xa2\x02\xfa\x01\x1d\x01\x1e\x00" + "\x69\xff\x3c\xff\x9c\xff\x1b\x00\xd6\x00\xa1\x01\xd4\x01\xdd\x01" + "\x02\x02\xa8\x01\x89\x01\x56\x01\x8f\x01\x71\x00\xc9\xfe\xc3\xfd" + "\xeb\xfa\xf4\xf8\x60\xf7\xbc\xf6\x0a\xf7\x7e\xf8\x9b\xfb\x6f\xfe" + "\x63\x01\x20\x04\x8f\x05\x16\x06\x54\x06\x46\x06\x2f\x06\x42\x06" + "\xa2\x06\xa7\x06\x3a\x06\x5f\x05\xc4\x03\x68\x01\x13\xff\xde\xfc" + "\x2f\xfb\x56\xfa\x6a\xfa\x28\xfb\x24\xfc\x39\xfd\x02\xfe\x55\xfe" + "\x63\xfe\x71\xfe\xa3\xfe\x3c\xff\x38\x00\x65\x01\x7e\x02\x11\x03" + "\x19\x03\x64\x02\x1b\x01\xdc\xff\xb4\xfe\x2b\xfe\x4d\xfe\xf2\xfe" + "\x15\x00\xf9\x00\xb4\x01\x07\x02\xda\x01\x8f\x01\x3b\x01\x1d\x01" + "\x1d\x01\x4e\x01\xa6\x01\x20\x01\x21\xff\xb6\xfd\x31\xfb\x84\xf8" + "\x37\xf7\xa3\xf6\x80\xf7\x2d\xf9\x5f\xfc\x8b\xff\x0e\x02\x75\x04" + "\xb8\x05\xcf\x05\xe0\x05\xdc\x05\xc0\x05\xb8\x05\xed\x05\xda\x05" + "\x1d\x05\x0a\x04\x77\x02\x4c\x00\x38\xfe\xa2\xfc\x71\xfb\x07\xfb" + "\x55\xfb\x10\xfc\xc6\xfc\x8e\xfd\x29\xfe\x74\xfe\xb6\xfe\x3f\xff" + "\xdb\xff\x9f\x00\xa3\x01\x78\x02\xdb\x02\xb2\x02\x1b\x02\x07\x01" + "\xcb\xff\xb2\xfe\x15\xfe\xfa\xfd\x77\xfe\x73\xff\x66\x00\x38\x01" + "\xc0\x01\xf3\x01\xc8\x01\xc5\x01\xc1\x01\xcb\x01\x04\x02\x4a\x02" + "\xbc\x01\x0d\x00\x6e\xfe\xdc\xfb\x38\xf9\x79\xf7\xa9\xf6\x15\xf7" + "\xa2\xf8\x6f\xfb\x58\xfe\xf1\x00\x23\x03\x52\x04\xa1\x04\xda\x04" + "\x0f\x05\x62\x05\xe5\x05\x71\x06\xa5\x06\x1b\x06\xfa\x04\x3a\x03" + "\xdf\x00\xa3\xfe\xf3\xfc\xbf\xfb\x73\xfb\xd9\xfb\x8d\xfc\x41\xfd" + "\xca\xfd\x1f\xfe\x21\xfe\x26\xfe\x7b\xfe\x1b\xff\x13\x00\x4e\x01" + "\x62\x02\x1e\x03\x48\x03\xc5\x02\xbd\x01\x5e\x00\x26\xff\x4f\xfe" + "\xf4\xfd\x49\xfe\xfb\xfe\xbc\xff\x75\x00\x03\x01\x23\x01\xed\x00" + "\xee\x00\xd8\x00\xf5\x00\x56\x01\xda\x01\xa2\x01\xa5\x00\x9e\xff" + "\x77\xfd\x53\xfb\xb2\xf9\xc6\xf8\xe7\xf8\x0e\xfa\x49\xfc\x8e\xfe" + "\x9c\x00\x4a\x02\x0d\x03\x1e\x03\x32\x03\x41\x03\x9f\x03\x23\x04" + "\xd2\x04\x39\x05\xf4\x04\x44\x04\xd8\x02\x0e\x01\x61\xff\x20\xfe" + "\x61\xfd\x35\xfd\xa0\xfd\x2b\xfe\x73\xfe\x9d\xfe\x77\xfe\x28\xfe" + "\x07\xfe\x36\xfe\xc6\xfe\xa4\xff\xa8\x00\x9a\x01\x23\x02\x28\x02" + "\xa6\x01\xcc\x00\xd6\xff\x14\xff\xac\xfe\xab\xfe\x11\xff\xa0\xff" + "\x3f\x00\xad\x00\x02\x01\x16\x01\x14\x01\x2b\x01\x50\x01\xa3\x01" + "\x15\x02\x44\x02\xe6\x01\xb3\x00\x26\xff\x0a\xfd\xde\xfa\x6d\xf9" + "\x9d\xf8\xeb\xf8\x3f\xfa\x5e\xfc\x9e\xfe\x92\x00\x15\x02\xc6\x02" + "\xe7\x02\xfc\x02\x0b\x03\x6c\x03\x00\x04\x9d\x04\xf1\x04\xbf\x04" + "\x10\x04\xbc\x02\x17\x01\x81\xff\x3e\xfe\x8d\xfd\x7e\xfd\xdc\xfd" + "\x59\xfe\xbd\xfe\xe8\xfe\xc2\xfe\x78\xfe\x3a\xfe\x40\xfe\xa7\xfe" + "\x66\xff\x54\x00\x40\x01\xf5\x01\x21\x02\xc5\x01\x20\x01\x44\x00" + "\x80\xff\xfc\xfe\xe1\xfe\x16\xff\x7c\xff\x04\x00\x64\x00\x87\x00" + "\x81\x00\x61\x00\x45\x00\x65\x00\xb4\x00\x43\x01\xb3\x01\xaf\x01" + "\x01\x01\xd9\xff\x4a\xfe\x7c\xfc\x25\xfb\x66\xfa\x7d\xfa\x78\xfb" + "\x0b\xfd\xd2\xfe\x58\x00\x75\x01\x02\x02\x23\x02\x34\x02\x67\x02" + "\xcb\x02\x41\x03\xbd\x03\xf0\x03\xbb\x03\x28\x03\x3e\x02\x24\x01" + "\x1b\x00\x50\xff\xc7\xfe\x85\xfe\x7c\xfe\x80\xfe\x72\xfe\x60\xfe" + "\x3d\xfe\x2c\xfe\x35\xfe\x74\xfe\xf2\xfe\x8f\xff\x3f\x00\xd8\x00" + "\x3f\x01\x49\x01\x1c\x01\xc7\x00\x51\x00\xf4\xff\xb6\xff\xae\xff" + "\xeb\xff\x3b\x00\x83\x00\xc0\x00\xc5\x00\xb5\x00\x77\x00\x22\x00" + "\x11\x00\x19\x00\x50\x00\x94\x00\x77\x00\xf6\xff\x1f\xff\x02\xfe" + "\xd3\xfc\xf6\xfb\xb7\xfb\x1c\xfc\x19\xfd\x7a\xfe\xdd\xff\xf1\x00" + "\x95\x01\xbc\x01\x9a\x01\x73\x01\x7f\x01\xc0\x01\x33\x02\xad\x02" + "\xf4\x02\xf2\x02\x9c\x02\xf2\x01\x20\x01\x61\x00\xc8\xff\x63\xff" + "\x36\xff\x2f\xff\x21\xff\x0c\xff\xe1\xfe\xa6\xfe\x78\xfe\x6c\xfe" + "\x8b\xfe\xe3\xfe\x6a\xff\xf6\xff\x72\x00\xca\x00\xeb\x00\xca\x00" + "\x7c\x00\x2d\x00\xd8\xff\xaf\xff\xba\xff\xf0\xff\x40\x00\x88\x00" + "\xcd\x00\xd5\x00\xc7\x00\xa8\x00\x79\x00\x63\x00\x65\x00\x3b\x00" + "\xf0\xff\x7b\xff\xb2\xfe\xd8\xfd\xfe\xfc\x77\xfc\x55\xfc\xc1\xfc" + "\xa5\xfd\xb9\xfe\xe6\xff\xe3\x00\x8b\x01\xdd\x01\xea\x01\xe2\x01" + "\xe2\x01\xf5\x01\x37\x02\x68\x02\x90\x02\x80\x02\x30\x02\xa7\x01" + "\x02\x01\x60\x00\xca\xff\x5f\xff\x15\xff\xe4\xfe\xcb\xfe\xcc\xfe" + "\xc5\xfe\xcf\xfe\xd0\xfe\xdb\xfe\xee\xfe\x1e\xff\x53\xff\xa6\xff" + "\x03\x00\x55\x00\x8f\x00\x9b\x00\x80\x00\x35\x00\xf1\xff\xa8\xff" + "\x81\xff\x89\xff\xb4\xff\xf2\xff\x3b\x00\x5c\x00\x60\x00\x44\x00" + "\x2a\x00\x19\x00\x28\x00\x56\x00\x53\x00\x37\x00\xed\xff\x70\xff" + "\xe3\xfe\x65\xfe\x18\xfe\x19\xfe\x66\xfe\xf0\xfe\x8b\xff\x20\x00" + "\x92\x00\xd2\x00\xf0\x00\xfe\x00\x12\x01\x37\x01\x69\x01\xa3\x01" + "\xc8\x01\xce\x01\xb6\x01\x78\x01\x1a\x01\xb7\x00\x50\x00\xe4\xff" + "\x93\xff\x51\xff\x25\xff\x0d\xff\x0d\xff\x00\xff\xfa\xfe\x07\xff" + "\x09\xff\x1d\xff\x3f\xff\x6c\xff\xbf\xff\x0a\x00\x3f\x00\x74\x00" + "\x9c\x00\x90\x00\x4c\x00\x09\x00\xd9\xff\xc7\xff\xc4\xff\xd7\xff" + "\xf7\xff\x1f\x00\x25\x00\x16\x00\xfd\xff\xeb\xff\xea\xff\xc9\xff" + "\xb6\xff\xa0\xff\x86\xff\x6c\xff\x44\xff\x28\xff\x1b\xff\x39\xff" + "\x81\xff\xc8\xff\x1f\x00\x6b\x00\x90\x00\xa8\x00\xb2\x00\xbc\x00" + "\xd5\x00\xf4\x00\x09\x01\x1b\x01\x22\x01\x1f\x01\x06\x01\xdd\x00" + "\xb0\x00\x74\x00\x3b\x00\xfc\xff\xb6\xff\x86\xff\x69\xff\x58\xff" + "\x56\xff\x52\xff\x5a\xff\x57\xff\x4e\xff\x52\xff\x4f\xff\x64\xff" + "\x82\xff\xb2\xff\xfa\xff\x2b\x00\x53\x00\x5f\x00\x4a\x00\x3d\x00" + "\x2a\x00\x10\x00\x08\x00\x00\x00\x06\x00\xff\xff\xea\xff\xdc\xff" + "\xce\xff\xc3\xff\xbd\xff\xaf\xff\x95\xff\x81\xff\x6c\xff\x64\xff" + "\x5b\xff\x6f\xff\x93\xff\xc5\xff\x10\x00\x5a\x00\x8a\x00\xb0\x00" + "\xbf\x00\xc1\x00\xc3\x00\xc2\x00\xc9\x00\xcf\x00\xd1\x00\xbb\x00" + "\xaa\x00\x9b\x00\x86\x00\x6e\x00\x5a\x00\x38\x00\x0d\x00\xdd\xff" + "\xaf\xff\x84\xff\x6b\xff\x62\xff\x61\xff\x6a\xff\x75\xff\x86\xff" + "\x8a\xff\x93\xff\xa2\xff\xa8\xff\xba\xff\xd4\xff\xee\xff\x06\x00" + "\x13\x00\x1a\x00\x18\x00\x0f\x00\x0a\x00\x01\x00\xfc\xff\xfa\xff" + "\xeb\xff\xe0\xff\xc2\xff\xb4\xff\xbd\xff\xbd\xff\xc6\xff\xde\xff" + "\xf8\xff\x05\x00\x09\x00\x11\x00\x15\x00\x14\x00\x1a\x00\x1f\x00" + "\x27\x00\x29\x00\x31\x00\x2e\x00\x27\x00\x1f\x00\x1c\x00\x25\x00" + "\x30\x00\x44\x00\x4b\x00\x43\x00\x35\x00\x25\x00\x28\x00\x2e\x00" + "\x39\x00\x47\x00\x4a\x00\x47\x00\x33\x00\x1c\x00\xf9\xff\xdd\xff" + "\xc8\xff\xc4\xff\xc3\xff\xc3\xff\xca\xff\xc5\xff\xc3\xff\xbd\xff" + "\xc2\xff\xce\xff\xd2\xff\xdf\xff\xf2\xff\x08\x00\x1d\x00\x29\x00" + "\x2c\x00\x26\x00\x19\x00\x07\x00\xf6\xff\xe3\xff\xd9\xff\xc7\xff" + "\xc8\xff\xcd\xff\xd3\xff\xe0\xff\xdc\xff\xd0\xff\xd3\xff\xd4\xff" + "\xd2\xff\xdb\xff\xe0\xff\xfa\xff\x11\x00\x27\x00\x2f\x00\x32\x00" + "\x35\x00\x2f\x00\x2e\x00\x37\x00\x37\x00\x3f\x00\x44\x00\x41\x00" + "\x42\x00\x40\x00\x36\x00\x31\x00\x34\x00\x2e\x00\x35\x00\x37\x00" + "\x2e\x00\x2b\x00\x18\x00\x08\x00\xf8\xff\xe2\xff\xd4\xff\xc0\xff" + "\xb5\xff\xa6\xff\xa9\xff\xb1\xff\xbe\xff\xcf\xff\xe2\xff\xee\xff" + "\xf4\xff\xec\xff\xdb\xff\xe9\xff\xe7\xff\xf1\xff\xfb\xff\xfd\xff" + "\x01\x00\x01\x00\xff\xff\xf3\xff\xe9\xff\xe6\xff\xed\xff\xf4\xff" + "\xf9\xff\x05\x00\x06\x00\x05\x00\xfa\xff\xea\xff\xe9\xff\xe6\xff" + "\xed\xff\xe9\xff\xec\xff\xf7\xff\xfe\xff\x05\x00\x0c\x00\x13\x00" + "\x19\x00\x1a\x00\x25\x00\x2d\x00\x2f\x00\x31\x00\x26\x00\x2a\x00" + "\x29\x00\x1f\x00\x1a\x00\x15\x00\x0f\x00\x06\x00\x06\x00\xfe\xff" + "\xef\xff\xe5\xff\xde\xff\xe1\xff\xe4\xff\xeb\xff\xf3\xff\x03\x00" + "\x16\x00\x23\x00\x35\x00\x3f\x00\x44\x00\x42\x00\x3f\x00\x34\x00" + "\x22\x00\x11\x00\x05\x00\xfc\xff\xea\xff\xda\xff\xd3\xff\xca\xff" + "\xc9\xff\xc8\xff\xc0\xff\xc8\xff\xd2\xff\xde\xff\xf2\xff\xf4\xff" + "\xff\xff\x0a\x00\x0e\x00\x17\x00\x12\x00\x1f\x00\x1b\x00\x14\x00" + "\x13\x00\x0b\x00\x05\x00\xfa\xff\xf0\xff\xe4\xff\xde\xff\xd8\xff" + "\xdb\xff\xea\xff\xf8\xff\xf8\xff\xff\xff\x01\x00\xfa\xff\xfd\xff" + "\x02\x00\x01\x00\xff\xff\x04\x00\x05\x00\x02\x00\xf1\xff\xe6\xff" + "\xdc\xff\xcc\xff\xd4\xff\xde\xff\xec\xff\x06\x00\x15\x00\x28\x00" + "\x38\x00\x40\x00\x43\x00\x44\x00\x46\x00\x41\x00\x3d\x00\x32\x00" + "\x30\x00\x21\x00\x0f\x00\x05\x00\xf3\xff\xe2\xff\xd4\xff\xcf\xff" + "\xca\xff\xcd\xff\xd7\xff\xdf\xff\xdf\xff\xe5\xff\xeb\xff\xec\xff" + "\xf3\xff\xfc\xff\x0d\x00\x18\x00\x13\x00\x1d\x00\x21\x00\x1f\x00" + "\x1f\x00\x17\x00\x0e\x00\x07\x00\xfe\xff\xf5\xff\xf1\xff\xf2\xff" + "\xf0\xff\xec\xff\xe9\xff\xe1\xff\xe3\xff\xe1\xff\xda\xff\xd9\xff" diff --git a/ndk/platforms/android-9/samples/native-audio/jni/native-audio-jni.c b/ndk/platforms/android-9/samples/native-audio/jni/native-audio-jni.c new file mode 100644 index 000000000..bc1ad856c --- /dev/null +++ b/ndk/platforms/android-9/samples/native-audio/jni/native-audio-jni.c @@ -0,0 +1,605 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* This is a JNI example where we use native methods to play sounds + * using OpenSL ES. See the corresponding Java source file located at: + * + * src/com/example/nativeaudio/NativeAudio/NativeAudio.java + */ + +#include +#include +#include + +// for __android_log_print(ANDROID_LOG_INFO, "YourApp", "formatted message"); +// #include + +// for native audio +#include +#include "SLES/OpenSLES_Android.h" + +// for native asset manager +#include +#include +#include + +// pre-recorded sound clips, both are 8 kHz mono 16-bit signed little endian + +static const char hello[] = +#include "hello_clip.h" +; + +static const char android[] = +#include "android_clip.h" +; + +// engine interfaces +static SLObjectItf engineObject = NULL; +static SLEngineItf engineEngine; + +// output mix interfaces +static SLObjectItf outputMixObject = NULL; +static SLEnvironmentalReverbItf outputMixEnvironmentalReverb = NULL; + +// buffer queue player interfaces +static SLObjectItf bqPlayerObject = NULL; +static SLPlayItf bqPlayerPlay; +static SLAndroidSimpleBufferQueueItf bqPlayerBufferQueue; +static SLEffectSendItf bqPlayerEffectSend; + +// aux effect on the output mix, used by the buffer queue player +static const SLEnvironmentalReverbSettings reverbSettings = + SL_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR; + +// URI player interfaces +static SLObjectItf uriPlayerObject = NULL; +static SLPlayItf uriPlayerPlay; +static SLSeekItf uriPlayerSeek; + +// file descriptor player interfaces +static SLObjectItf fdPlayerObject = NULL; +static SLPlayItf fdPlayerPlay; +static SLSeekItf fdPlayerSeek; + +// recorder interfaces +static SLObjectItf recorderObject = NULL; +static SLRecordItf recorderRecord; +static SLAndroidSimpleBufferQueueItf recorderBufferQueue; + +// synthesized sawtooth clip +#define SAWTOOTH_FRAMES 8000 +static short sawtoothBuffer[SAWTOOTH_FRAMES]; + +// 5 seconds of recorded audio at 16 kHz mono, 16-bit signed little endian +#define RECORDER_FRAMES (16000 * 5) +static short recorderBuffer[RECORDER_FRAMES]; +static unsigned recorderSize = 0; +static SLmilliHertz recorderSR; + +// pointer and size of the next player buffer to enqueue, and number of remaining buffers +static short *nextBuffer; +static unsigned nextSize; +static int nextCount; + + +// synthesize a mono sawtooth wave and place it into a buffer (called automatically on load) +__attribute__((constructor)) static void onDlOpen(void) +{ + unsigned i; + for (i = 0; i < SAWTOOTH_FRAMES; ++i) { + sawtoothBuffer[i] = 32768 - ((i % 100) * 660); + } +} + + +// this callback handler is called every time a buffer finishes playing +void bqPlayerCallback(SLAndroidSimpleBufferQueueItf bq, void *context) +{ + assert(bq == bqPlayerBufferQueue); + assert(NULL == context); + // for streaming playback, replace this test by logic to find and fill the next buffer + if (--nextCount > 0 && NULL != nextBuffer && 0 != nextSize) { + SLresult result; + // enqueue another buffer + result = (*bqPlayerBufferQueue)->Enqueue(bqPlayerBufferQueue, nextBuffer, nextSize); + // the most likely other result is SL_RESULT_BUFFER_INSUFFICIENT, + // which for this code example would indicate a programming error + assert(SL_RESULT_SUCCESS == result); + } +} + + +// this callback handler is called every time a buffer finishes recording +void bqRecorderCallback(SLAndroidSimpleBufferQueueItf bq, void *context) +{ + assert(bq == bqRecorderBufferQueue); + assert(NULL == context); + // for streaming recording, here we would call Enqueue to give recorder the next buffer to fill + // but instead, this is a one-time buffer so we stop recording + SLresult result; + result = (*recorderRecord)->SetRecordState(recorderRecord, SL_RECORDSTATE_STOPPED); + if (SL_RESULT_SUCCESS == result) { + recorderSize = RECORDER_FRAMES * sizeof(short); + recorderSR = SL_SAMPLINGRATE_16; + } +} + + +// create the engine and output mix objects +void Java_com_example_nativeaudio_NativeAudio_createEngine(JNIEnv* env, jclass clazz) +{ + SLresult result; + + // create engine + result = slCreateEngine(&engineObject, 0, NULL, 0, NULL, NULL); + assert(SL_RESULT_SUCCESS == result); + + // realize the engine + result = (*engineObject)->Realize(engineObject, SL_BOOLEAN_FALSE); + assert(SL_RESULT_SUCCESS == result); + + // get the engine interface, which is needed in order to create other objects + result = (*engineObject)->GetInterface(engineObject, SL_IID_ENGINE, &engineEngine); + assert(SL_RESULT_SUCCESS == result); + + // create output mix, with environmental reverb specified as a non-required interface + const SLInterfaceID ids[1] = {SL_IID_ENVIRONMENTALREVERB}; + const SLboolean req[1] = {SL_BOOLEAN_FALSE}; + result = (*engineEngine)->CreateOutputMix(engineEngine, &outputMixObject, 1, ids, req); + assert(SL_RESULT_SUCCESS == result); + + // realize the output mix + result = (*outputMixObject)->Realize(outputMixObject, SL_BOOLEAN_FALSE); + assert(SL_RESULT_SUCCESS == result); + + // get the environmental reverb interface + // this could fail if the environmental reverb effect is not available, + // either because the feature is not present, excessive CPU load, or + // the required MODIFY_AUDIO_SETTINGS permission was not requested and granted + result = (*outputMixObject)->GetInterface(outputMixObject, SL_IID_ENVIRONMENTALREVERB, + &outputMixEnvironmentalReverb); + if (SL_RESULT_SUCCESS == result) { + result = (*outputMixEnvironmentalReverb)->SetEnvironmentalReverbProperties( + outputMixEnvironmentalReverb, &reverbSettings); + } + // ignore unsuccessful result codes for environmental reverb, as it is optional for this example + +} + + +// create buffer queue audio player +void Java_com_example_nativeaudio_NativeAudio_createBufferQueueAudioPlayer(JNIEnv* env, + jclass clazz) +{ + SLresult result; + + // configure audio source + SLDataLocator_AndroidSimpleBufferQueue loc_bufq = {SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 2}; + SLDataFormat_PCM format_pcm = {SL_DATAFORMAT_PCM, 1, SL_SAMPLINGRATE_8, + SL_PCMSAMPLEFORMAT_FIXED_16, SL_PCMSAMPLEFORMAT_FIXED_16, + SL_SPEAKER_FRONT_CENTER, SL_BYTEORDER_LITTLEENDIAN}; + SLDataSource audioSrc = {&loc_bufq, &format_pcm}; + + // configure audio sink + SLDataLocator_OutputMix loc_outmix = {SL_DATALOCATOR_OUTPUTMIX, outputMixObject}; + SLDataSink audioSnk = {&loc_outmix, NULL}; + + // create audio player + const SLInterfaceID ids[2] = {SL_IID_BUFFERQUEUE, SL_IID_EFFECTSEND}; + const SLboolean req[2] = {SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE}; + result = (*engineEngine)->CreateAudioPlayer(engineEngine, &bqPlayerObject, &audioSrc, &audioSnk, + 2, ids, req); + assert(SL_RESULT_SUCCESS == result); + + // realize the player + result = (*bqPlayerObject)->Realize(bqPlayerObject, SL_BOOLEAN_FALSE); + assert(SL_RESULT_SUCCESS == result); + + // get the play interface + result = (*bqPlayerObject)->GetInterface(bqPlayerObject, SL_IID_PLAY, &bqPlayerPlay); + assert(SL_RESULT_SUCCESS == result); + + // get the buffer queue interface + result = (*bqPlayerObject)->GetInterface(bqPlayerObject, SL_IID_BUFFERQUEUE, + &bqPlayerBufferQueue); + assert(SL_RESULT_SUCCESS == result); + + // register callback on the buffer queue + result = (*bqPlayerBufferQueue)->RegisterCallback(bqPlayerBufferQueue, bqPlayerCallback, NULL); + assert(SL_RESULT_SUCCESS == result); + + // get the effect send interface + result = (*bqPlayerObject)->GetInterface(bqPlayerObject, SL_IID_EFFECTSEND, + &bqPlayerEffectSend); + assert(SL_RESULT_SUCCESS == result); + + // set the player's state to playing + result = (*bqPlayerPlay)->SetPlayState(bqPlayerPlay, SL_PLAYSTATE_PLAYING); + assert(SL_RESULT_SUCCESS == result); + +} + + +// create URI audio player +jboolean Java_com_example_nativeaudio_NativeAudio_createUriAudioPlayer(JNIEnv* env, jclass clazz, + jstring uri) +{ + SLresult result; + + // convert Java string to UTF-8 + const jbyte *utf8 = (*env)->GetStringUTFChars(env, uri, NULL); + assert(NULL != utf8); + + // configure audio source + // (requires the INTERNET permission depending on the uri parameter) + SLDataLocator_URI loc_uri = {SL_DATALOCATOR_URI, (SLchar *) utf8}; + SLDataFormat_MIME format_mime = {SL_DATAFORMAT_MIME, NULL, SL_CONTAINERTYPE_UNSPECIFIED}; + SLDataSource audioSrc = {&loc_uri, &format_mime}; + + // configure audio sink + SLDataLocator_OutputMix loc_outmix = {SL_DATALOCATOR_OUTPUTMIX, outputMixObject}; + SLDataSink audioSnk = {&loc_outmix, NULL}; + + // create audio player + const SLInterfaceID ids[1] = {SL_IID_SEEK}; + const SLboolean req[1] = {SL_BOOLEAN_TRUE}; + result = (*engineEngine)->CreateAudioPlayer(engineEngine, &uriPlayerObject, &audioSrc, + &audioSnk, 1, ids, req); + // note that an invalid URI is not detected here, but during prepare/prefetch on Android, + // or possibly during Realize on other platforms + assert(SL_RESULT_SUCCESS == result); + + // release the Java string and UTF-8 + (*env)->ReleaseStringUTFChars(env, uri, utf8); + + // realize the player + result = (*uriPlayerObject)->Realize(uriPlayerObject, SL_BOOLEAN_FALSE); + // this will always succeed on Android, but we check result for portability to other platforms + if (SL_RESULT_SUCCESS != result) { + (*uriPlayerObject)->Destroy(uriPlayerObject); + uriPlayerObject = NULL; + return JNI_FALSE; + } + + // get the play interface + result = (*uriPlayerObject)->GetInterface(uriPlayerObject, SL_IID_PLAY, &uriPlayerPlay); + assert(SL_RESULT_SUCCESS == result); + + // get the seek interface + result = (*uriPlayerObject)->GetInterface(uriPlayerObject, SL_IID_SEEK, &uriPlayerSeek); + assert(SL_RESULT_SUCCESS == result); + + // enable whole file looping + result = (*uriPlayerSeek)->SetLoop(uriPlayerSeek, SL_BOOLEAN_TRUE, 0, SL_TIME_UNKNOWN); + assert(SL_RESULT_SUCCESS == result); + + return JNI_TRUE; +} + + +// set the playing state for the URI audio player +void Java_com_example_nativeaudio_NativeAudio_setPlayingUriAudioPlayer(JNIEnv* env, + jclass clazz, jboolean isPlaying) +{ + SLresult result; + + // make sure the URI audio player was created + if (NULL != uriPlayerPlay) { + + // set the player's state + result = (*uriPlayerPlay)->SetPlayState(uriPlayerPlay, isPlaying ? + SL_PLAYSTATE_PLAYING : SL_PLAYSTATE_PAUSED); + assert(SL_RESULT_SUCCESS == result); + + } + +} + + +// enable reverb on the buffer queue player +jboolean Java_com_example_nativeaudio_NativeAudio_enableReverb(JNIEnv* env, jclass clazz, + jboolean enabled) +{ + SLresult result; + + // we might not have been able to add environmental reverb to the output mix + if (NULL == outputMixEnvironmentalReverb) { + return JNI_FALSE; + } + + result = (*bqPlayerEffectSend)->EnableEffectSend(bqPlayerEffectSend, + outputMixEnvironmentalReverb, (SLboolean) enabled, (SLmillibel) 0); + // and even if environmental reverb was present, it might no longer be available + if (SL_RESULT_SUCCESS != result) { + return JNI_FALSE; + } + + return JNI_TRUE; +} + + +// select the desired clip and play count, and enqueue the first buffer if idle +jboolean Java_com_example_nativeaudio_NativeAudio_selectClip(JNIEnv* env, jclass clazz, jint which, + jint count) +{ + short *oldBuffer = nextBuffer; + switch (which) { + case 0: // CLIP_NONE + nextBuffer = (short *) NULL; + nextSize = 0; + break; + case 1: // CLIP_HELLO + nextBuffer = (short *) hello; + nextSize = sizeof(hello); + break; + case 2: // CLIP_ANDROID + nextBuffer = (short *) android; + nextSize = sizeof(android); + break; + case 3: // CLIP_SAWTOOTH + nextBuffer = sawtoothBuffer; + nextSize = sizeof(sawtoothBuffer); + break; + case 4: // CLIP_PLAYBACK + // we recorded at 16 kHz, but are playing buffers at 8 Khz, so do a primitive down-sample + if (recorderSR == SL_SAMPLINGRATE_16) { + unsigned i; + for (i = 0; i < recorderSize; i += 2 * sizeof(short)) { + recorderBuffer[i >> 2] = recorderBuffer[i >> 1]; + } + recorderSR = SL_SAMPLINGRATE_8; + recorderSize >>= 1; + } + nextBuffer = recorderBuffer; + nextSize = recorderSize; + break; + default: + nextBuffer = NULL; + nextSize = 0; + break; + } + nextCount = count; + if (nextSize > 0) { + // here we only enqueue one buffer because it is a long clip, + // but for streaming playback we would typically enqueue at least 2 buffers to start + SLresult result; + result = (*bqPlayerBufferQueue)->Enqueue(bqPlayerBufferQueue, nextBuffer, nextSize); + if (SL_RESULT_SUCCESS != result) { + return JNI_FALSE; + } + } + + return JNI_TRUE; +} + + +// create asset audio player +jboolean Java_com_example_nativeaudio_NativeAudio_createAssetAudioPlayer(JNIEnv* env, jclass clazz, + jobject assetManager, jstring filename) +{ + SLresult result; + + // convert Java string to UTF-8 + const jbyte *utf8 = (*env)->GetStringUTFChars(env, filename, NULL); + assert(NULL != utf8); + + // use asset manager to open asset by filename + AAssetManager* mgr = AAssetManager_fromJava(env, assetManager); + assert(NULL != mgr); + AAsset* asset = AAssetManager_open(mgr, (const char *) utf8, AASSET_MODE_UNKNOWN); + + // release the Java string and UTF-8 + (*env)->ReleaseStringUTFChars(env, filename, utf8); + + // the asset might not be found + if (NULL == asset) { + return JNI_FALSE; + } + + // open asset as file descriptor + off_t start, length; + int fd = AAsset_openFileDescriptor(asset, &start, &length); + assert(0 <= fd); + AAsset_close(asset); + + // configure audio source + SLDataLocator_AndroidFD loc_fd = {SL_DATALOCATOR_ANDROIDFD, fd, start, length}; + SLDataFormat_MIME format_mime = {SL_DATAFORMAT_MIME, NULL, SL_CONTAINERTYPE_UNSPECIFIED}; + SLDataSource audioSrc = {&loc_fd, &format_mime}; + + // configure audio sink + SLDataLocator_OutputMix loc_outmix = {SL_DATALOCATOR_OUTPUTMIX, outputMixObject}; + SLDataSink audioSnk = {&loc_outmix, NULL}; + + // create audio player + const SLInterfaceID ids[1] = {SL_IID_SEEK}; + const SLboolean req[1] = {SL_BOOLEAN_TRUE}; + result = (*engineEngine)->CreateAudioPlayer(engineEngine, &fdPlayerObject, &audioSrc, &audioSnk, + 1, ids, req); + assert(SL_RESULT_SUCCESS == result); + + // realize the player + result = (*fdPlayerObject)->Realize(fdPlayerObject, SL_BOOLEAN_FALSE); + assert(SL_RESULT_SUCCESS == result); + + // get the play interface + result = (*fdPlayerObject)->GetInterface(fdPlayerObject, SL_IID_PLAY, &fdPlayerPlay); + assert(SL_RESULT_SUCCESS == result); + + // get the seek interface + result = (*fdPlayerObject)->GetInterface(fdPlayerObject, SL_IID_SEEK, &fdPlayerSeek); + assert(SL_RESULT_SUCCESS == result); + + // enable whole file looping + result = (*fdPlayerSeek)->SetLoop(fdPlayerSeek, SL_BOOLEAN_TRUE, 0, SL_TIME_UNKNOWN); + assert(SL_RESULT_SUCCESS == result); + + return JNI_TRUE; +} + + +// set the playing state for the asset audio player +void Java_com_example_nativeaudio_NativeAudio_setPlayingAssetAudioPlayer(JNIEnv* env, + jclass clazz, jboolean isPlaying) +{ + SLresult result; + + // make sure the asset audio player was created + if (NULL != fdPlayerPlay) { + + // set the player's state + result = (*fdPlayerPlay)->SetPlayState(fdPlayerPlay, isPlaying ? + SL_PLAYSTATE_PLAYING : SL_PLAYSTATE_PAUSED); + assert(SL_RESULT_SUCCESS == result); + + } + +} + + +// create audio recorder +jboolean Java_com_example_nativeaudio_NativeAudio_createAudioRecorder(JNIEnv* env, jclass clazz) +{ + SLresult result; + + // configure audio source + SLDataLocator_IODevice loc_dev = {SL_DATALOCATOR_IODEVICE, SL_IODEVICE_AUDIOINPUT, + SL_DEFAULTDEVICEID_AUDIOINPUT, NULL}; + SLDataSource audioSrc = {&loc_dev, NULL}; + + // configure audio sink + SLDataLocator_AndroidSimpleBufferQueue loc_bq = {SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 2}; + SLDataFormat_PCM format_pcm = {SL_DATAFORMAT_PCM, 1, SL_SAMPLINGRATE_16, + SL_PCMSAMPLEFORMAT_FIXED_16, SL_PCMSAMPLEFORMAT_FIXED_16, + SL_SPEAKER_FRONT_CENTER, SL_BYTEORDER_LITTLEENDIAN}; + SLDataSink audioSnk = {&loc_bq, &format_pcm}; + + // create audio recorder + // (requires the RECORD_AUDIO permission) + const SLInterfaceID id[1] = {SL_IID_ANDROIDSIMPLEBUFFERQUEUE}; + const SLboolean req[1] = {SL_BOOLEAN_TRUE}; + result = (*engineEngine)->CreateAudioRecorder(engineEngine, &recorderObject, &audioSrc, + &audioSnk, 1, id, req); + if (SL_RESULT_SUCCESS != result) { + return JNI_FALSE; + } + + // realize the audio recorder + result = (*recorderObject)->Realize(recorderObject, SL_BOOLEAN_FALSE); + if (SL_RESULT_SUCCESS != result) { + return JNI_FALSE; + } + + // get the record interface + result = (*recorderObject)->GetInterface(recorderObject, SL_IID_RECORD, &recorderRecord); + assert(SL_RESULT_SUCCESS == result); + + // get the buffer queue interface + result = (*recorderObject)->GetInterface(recorderObject, SL_IID_ANDROIDSIMPLEBUFFERQUEUE, + &recorderBufferQueue); + assert(SL_RESULT_SUCCESS == result); + + // register callback on the buffer queue + result = (*recorderBufferQueue)->RegisterCallback(recorderBufferQueue, bqRecorderCallback, + NULL); + assert(SL_RESULT_SUCCESS == result); + + return JNI_TRUE; +} + + +// set the recording state for the audio recorder +void Java_com_example_nativeaudio_NativeAudio_startRecording(JNIEnv* env, jclass clazz) +{ + SLresult result; + + // in case already recording, stop recording and clear buffer queue + result = (*recorderRecord)->SetRecordState(recorderRecord, SL_RECORDSTATE_STOPPED); + assert(SL_RESULT_SUCCESS == result); + result = (*recorderBufferQueue)->Clear(recorderBufferQueue); + assert(SL_RESULT_SUCCESS == result); + + // the buffer is not valid for playback yet + recorderSize = 0; + + // enqueue an empty buffer to be filled by the recorder + // (for streaming recording, we would enqueue at least 2 empty buffers to start things off) + result = (*recorderBufferQueue)->Enqueue(recorderBufferQueue, recorderBuffer, + RECORDER_FRAMES * sizeof(short)); + // the most likely other result is SL_RESULT_BUFFER_INSUFFICIENT, + // which for this code example would indicate a programming error + assert(SL_RESULT_SUCCESS == result); + + // start recording + result = (*recorderRecord)->SetRecordState(recorderRecord, SL_RECORDSTATE_RECORDING); + assert(SL_RESULT_SUCCESS == result); + +} + + +// shut down the native audio system +void Java_com_example_nativeaudio_NativeAudio_shutdown(JNIEnv* env, jclass clazz) +{ + + // destroy buffer queue audio player object, and invalidate all associated interfaces + if (bqPlayerObject != NULL) { + (*bqPlayerObject)->Destroy(bqPlayerObject); + bqPlayerObject = NULL; + bqPlayerPlay = NULL; + bqPlayerBufferQueue = NULL; + bqPlayerEffectSend = NULL; + } + + // destroy file descriptor audio player object, and invalidate all associated interfaces + if (fdPlayerObject != NULL) { + (*fdPlayerObject)->Destroy(fdPlayerObject); + fdPlayerObject = NULL; + fdPlayerPlay = NULL; + fdPlayerSeek = NULL; + } + + // destroy URI audio player object, and invalidate all associated interfaces + if (uriPlayerObject != NULL) { + (*uriPlayerObject)->Destroy(uriPlayerObject); + uriPlayerObject = NULL; + uriPlayerPlay = NULL; + uriPlayerSeek = NULL; + } + + // destroy audio recorder object, and invalidate all associated interfaces + if (recorderObject != NULL) { + (*recorderObject)->Destroy(recorderObject); + recorderObject = NULL; + recorderRecord = NULL; + recorderBufferQueue = NULL; + } + + // destroy output mix object, and invalidate all associated interfaces + if (outputMixObject != NULL) { + (*outputMixObject)->Destroy(outputMixObject); + outputMixObject = NULL; + outputMixEnvironmentalReverb = NULL; + } + + // destroy engine object, and invalidate all associated interfaces + if (engineObject != NULL) { + (*engineObject)->Destroy(engineObject); + engineObject = NULL; + engineEngine = NULL; + } + +} diff --git a/ndk/platforms/android-9/samples/native-audio/res/drawable/icon.png b/ndk/platforms/android-9/samples/native-audio/res/drawable/icon.png new file mode 100644 index 000000000..a07c69fa5 Binary files /dev/null and b/ndk/platforms/android-9/samples/native-audio/res/drawable/icon.png differ diff --git a/ndk/platforms/android-9/samples/native-audio/res/layout/main.xml b/ndk/platforms/android-9/samples/native-audio/res/layout/main.xml new file mode 100644 index 000000000..b9fb95ac7 --- /dev/null +++ b/ndk/platforms/android-9/samples/native-audio/res/layout/main.xml @@ -0,0 +1,77 @@ + + + + +