From af91fc48cb721cf7028c4b9857fdea1ae266043a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=8D=89=E6=9E=97=28=E7=94=B0=E6=A2=93=E8=90=B1?= =?UTF-8?q?=29?= Date: Wed, 12 Jun 2024 09:52:36 +0800 Subject: [PATCH] feat: publish v1.0.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 小草林(田梓萱) --- .gitignore | 30 + .vscode/launch.json | 28 + .vscode/settings.json | 45 + CHANGELOG.md | 13 + LICENSE | 232 + README.md | 62 + analysis_options.yaml | 33 + android/.gitignore | 9 + android/build.gradle | 70 + android/gradle.properties | 31 + .../gradle/wrapper/gradle-wrapper.properties | 7 + android/settings.gradle | 1 + android/src/main/AndroidManifest.xml | 3 + build.yaml | 8 + example/.gitignore | 43 + example/.metadata | 36 + example/README.md | 16 + example/analysis_options.yaml | 25 + example/android/.gitignore | 14 + example/android/app/build.gradle | 116 + .../android/app/src/debug/AndroidManifest.xml | 7 + .../android/app/src/main/AndroidManifest.xml | 52 + .../com/example/whisper/MainActivity.kt | 6 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../app/src/main/res/values-night/styles.xml | 18 + .../app/src/main/res/values/styles.xml | 18 + .../app/src/profile/AndroidManifest.xml | 7 + example/android/build.gradle | 61 + example/android/gradle.properties | 34 + .../gradle/wrapper/gradle-wrapper.properties | 7 + example/android/settings.gradle | 47 + example/assets/jfk.wav | Bin 0 -> 352078 bytes example/ios/.gitignore | 35 + example/ios/Flutter/AppFrameworkInfo.plist | 26 + example/ios/Flutter/Debug.xcconfig | 2 + example/ios/Flutter/Release.xcconfig | 2 + example/ios/Podfile | 44 + example/ios/Runner.xcodeproj/project.pbxproj | 742 + .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + example/ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 + .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 295 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 450 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 282 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 462 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 704 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 586 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 1674 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 762 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 1226 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 1418 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + .../Runner/Base.lproj/LaunchScreen.storyboard | 37 + example/ios/Runner/Base.lproj/Main.storyboard | 26 + example/ios/Runner/Info.plist | 51 + example/ios/Runner/Runner-Bridging-Header.h | 1 + example/ios/RunnerTests/RunnerTests.swift | 12 + example/lib/main.dart | 273 + example/lib/providers.dart | 12 + example/lib/record_page.dart | 89 + example/lib/whisper_audio_convert.dart | 57 + example/lib/whisper_controller.dart | 96 + example/lib/whisper_result.dart | 11 + example/macos/.gitignore | 7 + example/macos/Flutter/Flutter-Debug.xcconfig | 2 + .../macos/Flutter/Flutter-Release.xcconfig | 2 + .../Flutter/GeneratedPluginRegistrant.swift | 16 + example/macos/Podfile | 43 + example/macos/Podfile.lock | 52 + .../macos/Runner.xcodeproj/project.pbxproj | 829 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + example/macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 + .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 102994 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5680 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 520 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14142 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1066 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 36406 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2218 bytes example/macos/Runner/Base.lproj/MainMenu.xib | 343 + example/macos/Runner/Configs/AppInfo.xcconfig | 14 + example/macos/Runner/Configs/Debug.xcconfig | 2 + example/macos/Runner/Configs/Release.xcconfig | 2 + .../macos/Runner/Configs/Warnings.xcconfig | 13 + .../macos/Runner/DebugProfile.entitlements | 22 + example/macos/Runner/Info.plist | 32 + example/macos/Runner/MainFlutterWindow.swift | 15 + example/macos/Runner/Release.entitlements | 20 + example/macos/RunnerTests/RunnerTests.swift | 12 + example/pubspec.lock | 489 + example/pubspec.yaml | 57 + ffigen.yaml | 15 + ios/Classes/json/json.hpp | 24602 ++++++++++++++++ ios/Classes/whisper.cpp/.gitignore | 27 + ios/Classes/whisper.cpp/examples/dr_wav.h | 6434 ++++ ios/Classes/whisper.cpp/ggml.c | 18732 ++++++++++++ ios/Classes/whisper.cpp/ggml.h | 1540 + ios/Classes/whisper.cpp/whisper.cpp | 5460 ++++ ios/Classes/whisper.cpp/whisper.h | 530 + ios/Classes/whisper_flutter_new.cpp | 284 + ios/Classes/whisper_flutter_new.h | 18 + ios/whisper_flutter_new.podspec | 36 + lib/bean/_models.dart | 2 + lib/bean/request_bean.dart | 109 + lib/bean/request_bean.freezed.dart | 882 + lib/bean/request_bean.g.dart | 77 + lib/bean/response_bean.dart | 63 + lib/bean/response_bean.freezed.dart | 568 + lib/bean/response_bean.g.dart | 58 + lib/bean/whisper_dto.dart | 8 + lib/download_model.dart | 87 + lib/whisper_bindings_generated.dart | 39 + lib/whisper_flutter_new.dart | 135 + macos/Classes/json/json.hpp | 24602 ++++++++++++++++ macos/Classes/whisper.cpp/.gitignore | 27 + macos/Classes/whisper.cpp/examples/dr_wav.h | 6434 ++++ macos/Classes/whisper.cpp/ggml.c | 18732 ++++++++++++ macos/Classes/whisper.cpp/ggml.h | 1540 + macos/Classes/whisper.cpp/whisper.cpp | 5460 ++++ macos/Classes/whisper.cpp/whisper.h | 530 + macos/Classes/whisper_flutter_new.cpp | 284 + macos/Classes/whisper_flutter_new.h | 18 + macos/whisper_flutter_new.podspec | 35 + pubspec.yaml | 40 + renovate.json | 18 + src/.gitignore | 30 + src/CMakeLists.txt | 32 + src/json/json.hpp | 24602 ++++++++++++++++ src/main.cpp | 284 + src/main.h | 18 + src/whisper.cpp/.gitignore | 27 + src/whisper.cpp/examples/dr_wav.h | 6434 ++++ src/whisper.cpp/ggml.c | 18732 ++++++++++++ src/whisper.cpp/ggml.h | 1540 + src/whisper.cpp/whisper.cpp | 5460 ++++ src/whisper.cpp/whisper.h | 530 + 157 files changed, 180217 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 analysis_options.yaml create mode 100644 android/.gitignore create mode 100644 android/build.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/settings.gradle create mode 100644 android/src/main/AndroidManifest.xml create mode 100644 build.yaml create mode 100644 example/.gitignore create mode 100644 example/.metadata create mode 100644 example/README.md create mode 100644 example/analysis_options.yaml create mode 100644 example/android/.gitignore create mode 100644 example/android/app/build.gradle create mode 100644 example/android/app/src/debug/AndroidManifest.xml create mode 100644 example/android/app/src/main/AndroidManifest.xml create mode 100644 example/android/app/src/main/kotlin/com/example/whisper/MainActivity.kt create mode 100644 example/android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 example/android/app/src/main/res/drawable/launch_background.xml create mode 100644 example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 example/android/app/src/main/res/values-night/styles.xml create mode 100644 example/android/app/src/main/res/values/styles.xml create mode 100644 example/android/app/src/profile/AndroidManifest.xml create mode 100644 example/android/build.gradle create mode 100644 example/android/gradle.properties create mode 100644 example/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 example/android/settings.gradle create mode 100644 example/assets/jfk.wav create mode 100644 example/ios/.gitignore create mode 100644 example/ios/Flutter/AppFrameworkInfo.plist create mode 100644 example/ios/Flutter/Debug.xcconfig create mode 100644 example/ios/Flutter/Release.xcconfig create mode 100644 example/ios/Podfile create mode 100644 example/ios/Runner.xcodeproj/project.pbxproj create mode 100644 example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 example/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 example/ios/Runner/AppDelegate.swift create mode 100644 example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 example/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 example/ios/Runner/Base.lproj/Main.storyboard create mode 100644 example/ios/Runner/Info.plist create mode 100644 example/ios/Runner/Runner-Bridging-Header.h create mode 100644 example/ios/RunnerTests/RunnerTests.swift create mode 100644 example/lib/main.dart create mode 100644 example/lib/providers.dart create mode 100644 example/lib/record_page.dart create mode 100644 example/lib/whisper_audio_convert.dart create mode 100644 example/lib/whisper_controller.dart create mode 100644 example/lib/whisper_result.dart create mode 100644 example/macos/.gitignore create mode 100644 example/macos/Flutter/Flutter-Debug.xcconfig create mode 100644 example/macos/Flutter/Flutter-Release.xcconfig create mode 100644 example/macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 example/macos/Podfile create mode 100644 example/macos/Podfile.lock create mode 100644 example/macos/Runner.xcodeproj/project.pbxproj create mode 100644 example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 example/macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 example/macos/Runner/AppDelegate.swift create mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 example/macos/Runner/Base.lproj/MainMenu.xib create mode 100644 example/macos/Runner/Configs/AppInfo.xcconfig create mode 100644 example/macos/Runner/Configs/Debug.xcconfig create mode 100644 example/macos/Runner/Configs/Release.xcconfig create mode 100644 example/macos/Runner/Configs/Warnings.xcconfig create mode 100644 example/macos/Runner/DebugProfile.entitlements create mode 100644 example/macos/Runner/Info.plist create mode 100644 example/macos/Runner/MainFlutterWindow.swift create mode 100644 example/macos/Runner/Release.entitlements create mode 100644 example/macos/RunnerTests/RunnerTests.swift create mode 100644 example/pubspec.lock create mode 100644 example/pubspec.yaml create mode 100644 ffigen.yaml create mode 100644 ios/Classes/json/json.hpp create mode 100644 ios/Classes/whisper.cpp/.gitignore create mode 100644 ios/Classes/whisper.cpp/examples/dr_wav.h create mode 100644 ios/Classes/whisper.cpp/ggml.c create mode 100644 ios/Classes/whisper.cpp/ggml.h create mode 100644 ios/Classes/whisper.cpp/whisper.cpp create mode 100644 ios/Classes/whisper.cpp/whisper.h create mode 100644 ios/Classes/whisper_flutter_new.cpp create mode 100644 ios/Classes/whisper_flutter_new.h create mode 100644 ios/whisper_flutter_new.podspec create mode 100644 lib/bean/_models.dart create mode 100644 lib/bean/request_bean.dart create mode 100644 lib/bean/request_bean.freezed.dart create mode 100644 lib/bean/request_bean.g.dart create mode 100644 lib/bean/response_bean.dart create mode 100644 lib/bean/response_bean.freezed.dart create mode 100644 lib/bean/response_bean.g.dart create mode 100644 lib/bean/whisper_dto.dart create mode 100644 lib/download_model.dart create mode 100644 lib/whisper_bindings_generated.dart create mode 100644 lib/whisper_flutter_new.dart create mode 100644 macos/Classes/json/json.hpp create mode 100644 macos/Classes/whisper.cpp/.gitignore create mode 100644 macos/Classes/whisper.cpp/examples/dr_wav.h create mode 100644 macos/Classes/whisper.cpp/ggml.c create mode 100644 macos/Classes/whisper.cpp/ggml.h create mode 100644 macos/Classes/whisper.cpp/whisper.cpp create mode 100644 macos/Classes/whisper.cpp/whisper.h create mode 100644 macos/Classes/whisper_flutter_new.cpp create mode 100644 macos/Classes/whisper_flutter_new.h create mode 100644 macos/whisper_flutter_new.podspec create mode 100644 pubspec.yaml create mode 100644 renovate.json create mode 100644 src/.gitignore create mode 100644 src/CMakeLists.txt create mode 100644 src/json/json.hpp create mode 100644 src/main.cpp create mode 100644 src/main.h create mode 100644 src/whisper.cpp/.gitignore create mode 100644 src/whisper.cpp/examples/dr_wav.h create mode 100644 src/whisper.cpp/ggml.c create mode 100644 src/whisper.cpp/ggml.h create mode 100644 src/whisper.cpp/whisper.cpp create mode 100644 src/whisper.cpp/whisper.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..96486fd --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock +**/doc/api/ +.dart_tool/ +.packages +build/ diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..4fab6a1 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,28 @@ +{ + // Utilisez IntelliSense pour en savoir plus sur les attributs possibles. + // Pointez pour afficher la description des attributs existants. + // Pour plus d'informations, visitez : https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "example", + "cwd": "example", + "request": "launch", + "type": "dart" + }, + { + "name": "example (profile mode)", + "cwd": "example", + "request": "launch", + "type": "dart", + "flutterMode": "profile" + }, + { + "name": "example (release mode)", + "cwd": "example", + "request": "launch", + "type": "dart", + "flutterMode": "release" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..bfcc311 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,45 @@ +{ + "files.associations": { + "*.ejs": "html", + "__bit_reference": "cpp", + "__config": "cpp", + "__locale": "cpp", + "__split_buffer": "cpp", + "__threading_support": "cpp", + "__verbose_abort": "cpp", + "bitset": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "fstream": "cpp", + "initializer_list": "cpp", + "ios": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "locale": "cpp", + "mutex": "cpp", + "new": "cpp", + "ostream": "cpp", + "print": "cpp", + "ratio": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "string": "cpp", + "string_view": "cpp", + "tuple": "cpp", + "typeinfo": "cpp", + "vector": "cpp", + "algorithm": "cpp", + "map": "cpp" + } +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e2d7bd6 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,13 @@ +## 1.0.0 + +* Optimizing performance +* Update Dependencies +* AGP8+ compatible +* Support custom model download Host +* See the example project for more details. + +## 1.0.1 + +* Update Gradle version to 8.4.2 +* Update NDK version to 27.0.11902837 +* Support MacOS \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d0a41f7 --- /dev/null +++ b/LICENSE @@ -0,0 +1,232 @@ +GNU GENERAL PUBLIC LICENSE +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +Preamble + +The GNU General Public License is a free, copyleft license for software and other kinds of works. + +The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and modification follow. + +TERMS AND CONDITIONS + +1. Definitions. + +“This License” refers to version 3 of the GNU General Public License. + +“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. + +“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. + +To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. + +A “covered work” means either the unmodified Program or a work based on the Program. + +To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. + +To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. + +1. Source Code. +The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. + +A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. + +The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. + +The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same work. + +2. Basic Permissions. +All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. +No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. + +4. Conveying Verbatim Copies. +You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. +You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. + + c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. + +A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. + +6. Conveying Non-Source Forms. +You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: + + a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. + + d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. + +A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. + +“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). + +The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. + +7. Additional Terms. +“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or authors of the material; or + + e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. + +All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. + +8. Termination. +You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. + +9. Acceptance Not Required for Having Copies. +You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. +Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. + +An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. + +11. Patents. +A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. + +A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. + +In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. + +A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. + +12. No Surrender of Others' Freedom. +If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. + +13. Use with the GNU Affero General Public License. +Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. + +14. Revised Versions of this License. +The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. + +Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. + +15. Disclaimer of Warranty. +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. Limitation of Liability. +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16. +If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. + + whisper_flutter + Copyright (C) 2024 tianzixuan + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: + + whisper_flutter Copyright (C) 2024 tianzixuan + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. + +You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . + +The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . diff --git a/README.md b/README.md index e69de29..cbc48c3 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,62 @@ +# Whisper Flutter New + +Ready to use [whisper.cpp](https://github.com/ggerganov/whisper.cpp) models implementation for iOS +and Android + +1. Support AGP8+ +2. Support Android 5.0+ & iOS 13+ & MacOS 11+ +3. It is optimized and fast + +Supported models: tiny、base、small、medium、large-v1、large-v2 + +Recommended Models:base、small、medium + +All models have been actually tested, test devices: Android: Google Pixel 7 Pro, iOS: M1 iOS +simulator,MacOS: M1 MacBookPro & M2 MacMini + +## Install library + +```bash +flutter pub add whisper_flutter_new +``` + +## import library + +```dart +import 'package:whisper_flutter_new/whisper_flutter_new.dart'; +``` + +## Quickstart + +```dart +// Prepare wav file +final Directory documentDirectory = await getApplicationDocumentsDirectory(); +final ByteData documentBytes = await rootBundle.load('assets/jfk.wav'); + +final String jfkPath = '${documentDirectory.path}/jfk.wav'; + +await File(jfkPath).writeAsBytes( + documentBytes.buffer.asUint8List(), +); + +// Begin whisper transcription +/// China: https://hf-mirror.com/ggerganov/whisper.cpp/resolve/main +/// Other: https://huggingface.co/ggerganov/whisper.cpp/resolve/main +final Whisper whisper = Whisper( + model: WhisperModel.base, + downloadHost: "https://huggingface.co/ggerganov/whisper.cpp/resolve/main" +); + +final String? whisperVersion = await whisper.getVersion(); +print(whisperVersion); + +final String transcription = await whisper.transcribe( + transcribeRequest: TranscribeRequest( + audio: jfkPath, + isTranslate: true, // Translate result from audio lang to english text + isNoTimestamps: false, // Get segments in result + splitOnWord: true, // Split segments on each word + ), +); +print(transcription); +``` diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..795cc13 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,33 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + prefer_double_quotes: true +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options +analyzer: + errors: + invalid_annotation_target: ignore + exclude: + - 'lib/**/*.g.dart' diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..161bdcd --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,9 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures +.cxx diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..290ac70 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,70 @@ +/* + * Copyright (c) 田梓萱[小草林] 2021-2024. + * All Rights Reserved. + * All codes are protected by China's regulations on the protection of computer software, and infringement must be investigated. + * 版权所有 (c) 田梓萱[小草林] 2021-2024. + * 所有代码均受中国《计算机软件保护条例》保护,侵权必究. + */ + +// The Android Gradle Plugin builds the native code with the Android NDK. + +group 'com.devac.whisper_flutter' +version '1.0' + +buildscript { + repositories { + google() + mavenCentral() + } + + dependencies { + // The Android Gradle Plugin knows how to build native code with the NDK. + classpath 'com.android.tools.build:gradle:8.4.2' + } +} + +rootProject.allprojects { + repositories { + google() + mavenCentral() + } +} + +apply plugin: 'com.android.library' + +android { + if (project.android.hasProperty("namespace")) { + namespace "com.devac.whisper_flutter_new" + } + ndkVersion "27.0.11902837" + + compileSdk 34 + + // Invoke the shared CMake build with the Android Gradle Plugin. + externalNativeBuild { + cmake { + path "../src/CMakeLists.txt" + version "3.22.1" + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + defaultConfig { + minSdkVersion 21 + ndk { + // Flutter does not currently support building for x86 Android (See Issue 9253). + abiFilters("armeabi-v7a", "x86_64", "arm64-v8a", "x86") + } + externalNativeBuild { + cmake { + cFlags "-O3 -s -flto=thin -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden" + cppFlags "-O3 -s -flto=thin -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden" + arguments "-Wl,--gc-sections,--exclude-libs,ALL", "-DANDROID_STL=c++_static", "-DCMAKE_BUILD_TYPE=Release" + } + } + } +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..0d3c80a --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,31 @@ +org.gradle.jvmargs=-Xmx10g -Xss1024k -XX:ParallelGCThreads=8 -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC -XX:MaxMetaspaceSize=5g -Dkotlin.daemon.jvm.options\="-Xmx10g" +org.gradle.parallel=true +org.gradle.configureondemand=true +org.gradle.caching=true +systemProp.https.protocols=TLSv1.3,TLSv1.2,TLSv1.1 +systemProp.jdk.tls.client.protocols=TLSv1.3,TLSv1.2,TLSv1.1 +android.useAndroidX=true +android.enableJetifier=true +android.nonTransitiveRClass=true +android.suppressUnsupportedCompileSdk=UpsideDownCake +android.debug.obsoleteApi=false +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official +kotlin.build.report.output=file +vcsInfo.include=true +# android.enableVcsInfo=true +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +# Enable R8 full mode. +android.enableR8.fullMode=true +# Only for Debug +android.injected.testOnly=false +#kotlin incremental +kotlin.incremental=true +kotlin.incremental.java=true +kotlin.caching.enabled=true +#MPP +kotlin.mpp.enableCInteropCommonization=true +kotlin.mpp.androidSourceSetLayoutVersion=2 +firebasePerformanceInstrumentationEnabled=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..a441313 --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..daa618d --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'whisper_flutter_new' diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml new file mode 100644 index 0000000..5d08c80 --- /dev/null +++ b/android/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + diff --git a/build.yaml b/build.yaml new file mode 100644 index 0000000..bfe1abc --- /dev/null +++ b/build.yaml @@ -0,0 +1,8 @@ +targets: + $default: + sources: + include: + - lib/**/* + - exemple/lib/**/* + - $package$ + - lib/$lib$ \ No newline at end of file diff --git a/example/.gitignore b/example/.gitignore new file mode 100644 index 0000000..29a3a50 --- /dev/null +++ b/example/.gitignore @@ -0,0 +1,43 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/example/.metadata b/example/.metadata new file mode 100644 index 0000000..b6d125e --- /dev/null +++ b/example/.metadata @@ -0,0 +1,36 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "761747bfc538b5af34aa0d3fac380f1bc331ec49" + channel: "beta" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + - platform: android + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + - platform: ios + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + - platform: macos + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/example/README.md b/example/README.md new file mode 100644 index 0000000..d98c2c1 --- /dev/null +++ b/example/README.md @@ -0,0 +1,16 @@ +# test_whisper + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/example/analysis_options.yaml b/example/analysis_options.yaml new file mode 100644 index 0000000..649c758 --- /dev/null +++ b/example/analysis_options.yaml @@ -0,0 +1,25 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + prefer_double_quotes: true + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/example/android/.gitignore b/example/android/.gitignore new file mode 100644 index 0000000..edcb691 --- /dev/null +++ b/example/android/.gitignore @@ -0,0 +1,14 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks +.kotlin/ \ No newline at end of file diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle new file mode 100644 index 0000000..063c009 --- /dev/null +++ b/example/android/app/build.gradle @@ -0,0 +1,116 @@ +/* + * Copyright (c) 田梓萱[小草林] 2021-2024. + * All Rights Reserved. + * All codes are protected by China's regulations on the protection of computer software, and infringement must be investigated. + * 版权所有 (c) 田梓萱[小草林] 2021-2024. + * 所有代码均受中国《计算机软件保护条例》保护,侵权必究. + */ + +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +android { + namespace "com.example.whisper" + compileSdk 34//compileSdkVersion flutter.compileSdkVersion + ndkVersion "27.0.11902837"//ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + kotlinOptions { + jvmTarget = JavaVersion.VERSION_17 + apiVersion = "2.1" + languageVersion = "2.1" + freeCompilerArgs = ["-progressive", "-Xjvm-default=all", "-Xjsr305=strict", "-Xno-call-assertions", "-Xno-param-assertions", "-Xno-receiver-assertions", "-Xskip-prerelease-check", "-Xallow-unstable-dependencies"] + } + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.example.whisper" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. + minSdkVersion 23 + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64" + } + multiDexEnabled true + targetSdkVersion 34//flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + externalNativeBuild { + cmake { + abiFilters "armeabi-v7a", "arm64-v8a", "x86_64" + cFlags "-O3 -s -flto=thin -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden" + cppFlags "-O3 -s -flto=thin -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden" + arguments "-Wl,--gc-sections,--exclude-libs,ALL", "-DANDROID_STL=c++_static", "-DCMAKE_BUILD_TYPE=Release" + } + } + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } + + buildFeatures { + buildConfig true + } + packaging { + dex { + useLegacyPackaging true + } + jniLibs { + useLegacyPackaging true + } + resources { + resources.excludes += "META-INF/DEPENDENCIES" + resources.excludes += "META-INF/NOTICE" + resources.excludes += "META-INF/LICENSE" + resources.excludes += "META-INF/LICENSE.txt" + resources.excludes += "META-INF/NOTICE.txt" + resources.excludes += "META-INF/LICENSE.md" + resources.excludes += "META-INF/LICENSE-notice.md" + resources.excludes += "META-INF/{AL2.0,LGPL2.1,LICENSE,NOTICE,DEPENDENCIES}" + resources.excludes += "DebugProbesKt.bin" + resources.excludes += "META-INF/*.kotlin_module" + resources.excludes += "**/*.kotlin_module" + resources.excludes += "**/*.version" + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation platform("org.jetbrains.kotlin:kotlin-bom:2.0.0") +} diff --git a/example/android/app/src/debug/AndroidManifest.xml b/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..5035aa9 --- /dev/null +++ b/example/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + diff --git a/example/android/app/src/main/kotlin/com/example/whisper/MainActivity.kt b/example/android/app/src/main/kotlin/com/example/whisper/MainActivity.kt new file mode 100644 index 0000000..1fe40cf --- /dev/null +++ b/example/android/app/src/main/kotlin/com/example/whisper/MainActivity.kt @@ -0,0 +1,6 @@ +package com.example.whisper + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/example/android/app/src/main/res/drawable-v21/launch_background.xml b/example/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/example/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/example/android/app/src/main/res/drawable/launch_background.xml b/example/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/example/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/example/android/app/src/main/res/values-night/styles.xml b/example/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..06952be --- /dev/null +++ b/example/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/example/android/app/src/main/res/values/styles.xml b/example/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..cb1ef88 --- /dev/null +++ b/example/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/example/android/app/src/profile/AndroidManifest.xml b/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/example/android/build.gradle b/example/android/build.gradle new file mode 100644 index 0000000..fa3bbdf --- /dev/null +++ b/example/android/build.gradle @@ -0,0 +1,61 @@ +/* + * Copyright (c) 田梓萱[小草林] 2021-2024. + * All Rights Reserved. + * All codes are protected by China's regulations on the protection of computer software, and infringement must be investigated. + * 版权所有 (c) 田梓萱[小草林] 2021-2024. + * 所有代码均受中国《计算机软件保护条例》保护,侵权必究. + */ + +allprojects { + repositories { + maven { + allowInsecureProtocol = true + url "http://download.flutter.io" + } + maven { + url "https://oss.sonatype.org/content/repositories/snapshots/" + } + maven { + url "https://jitpack.io/" + } + google() + mavenCentral() + gradlePluginPortal() + maven { + url "https://repo1.maven.org/maven2/" + } + } +} +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +buildscript { + repositories { + maven { + allowInsecureProtocol = true + url "http://download.flutter.io" + } + maven { + url "https://oss.sonatype.org/content/repositories/snapshots/" + } + maven { + url "https://jitpack.io/" + } + google() + mavenCentral() + gradlePluginPortal() + maven { + url "https://repo1.maven.org/maven2/" + } + } + dependencies { + classpath "com.android.tools.build:gradle:8.4.2" + } +} +subprojects { + project.evaluationDependsOn(':app') +} +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/example/android/gradle.properties b/example/android/gradle.properties new file mode 100644 index 0000000..7329f10 --- /dev/null +++ b/example/android/gradle.properties @@ -0,0 +1,34 @@ +org.gradle.jvmargs=-Xmx10g -Xss1024k -XX:ParallelGCThreads=8 -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC -XX:MaxMetaspaceSize=5g -Dkotlin.daemon.jvm.options\="-Xmx10g" +org.gradle.parallel=true +org.gradle.configureondemand=true +org.gradle.caching=true +systemProp.https.protocols=TLSv1.3,TLSv1.2,TLSv1.1 +systemProp.jdk.tls.client.protocols=TLSv1.3,TLSv1.2,TLSv1.1 +android.useAndroidX=true +android.enableJetifier=true +android.nonTransitiveRClass=true +#android.suppressUnsupportedCompileSdk=UpsideDownCake +android.debug.obsoleteApi=false +#android.ndk.suppressMinSdkVersionError=21 +android.packagingOptions.jniLibs.useLegacyPackaging=true +android.precompileDependenciesResources=false +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official +kotlin.build.report.output=file +vcsInfo.include=true +# android.enableVcsInfo=true +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +# Enable R8 full mode. +android.enableR8.fullMode=true +# Only for Debug +android.injected.testOnly=false +#kotlin incremental +kotlin.incremental=true +kotlin.incremental.java=true +kotlin.caching.enabled=true +#MPP +kotlin.mpp.enableCInteropCommonization=true +kotlin.mpp.androidSourceSetLayoutVersion=2 +firebasePerformanceInstrumentationEnabled=true \ No newline at end of file diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..dab2a01 --- /dev/null +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists \ No newline at end of file diff --git a/example/android/settings.gradle b/example/android/settings.gradle new file mode 100644 index 0000000..8610712 --- /dev/null +++ b/example/android/settings.gradle @@ -0,0 +1,47 @@ +/* + * Copyright (c) 田梓萱[小草林] 2021-2024. + * All Rights Reserved. + * All codes are protected by China's regulations on the protection of computer software, and infringement must be investigated. + * 版权所有 (c) 田梓萱[小草林] 2021-2024. + * 所有代码均受中国《计算机软件保护条例》保护,侵权必究. + */ + +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + } + settings.ext.flutterSdkPath = flutterSdkPath() + + includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") + + repositories { + maven { + allowInsecureProtocol = true + url "http://download.flutter.io" + } + maven { + url "https://oss.sonatype.org/content/repositories/snapshots/" + } + maven { + url "https://jitpack.io/" + } + google() + mavenCentral() + gradlePluginPortal() + maven { + url "https://repo1.maven.org/maven2/" + } + } +} + +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.4.2" apply false + id "org.jetbrains.kotlin.android" version "2.0.0" apply false +} + +include ":app" diff --git a/example/assets/jfk.wav b/example/assets/jfk.wav new file mode 100644 index 0000000000000000000000000000000000000000..3184d372cd2f8b804d3a540c70ec50d927b335d2 GIT binary patch literal 352078 zcmeEuRd^Ij7j0GdXxxR61W5=9K?4LhSRlB&ySuylK@aZkaBz2bmp}+fh`Y~Zyu0eI z!2Pd0+}Hc`GheJ{y1HuD-fK&(P4{-KTelvfBz>ZKw;DZZW(5~Q2*qn@Q~a`s5P`Um zj_rE%EQdeab#C3IU60m1o$!0dVY5fqYgnUBWR2RjYLSt{W)345<-h;_D}nz?;J*_1 zuLS;oN`UkK_tQB3{qJ|_?_bNV{JHw)xBq;i4EO)M{&Pp!=l{=ZWuyJ)(|>;d&tHE= z{?C2?_s{=xg#Y^;#u?pVhHvK^`E_2v zhml=m4(URgkhbJ6%shjuNEOnIj3gV#VzQTOftojUo(BgkMf8uREwI+F6F7}wA9OME_` zjuCUQ+9Vze`Ay}6`Cq&ecf$9{cy;1Bc8G0Y2Qa=9Bw5TZu~}>_JIQpc5wFQrT;SFD zGU&r3!pS6hf}W=@=~cRf?xas?0ZpNcs6G8co|3O5pH!tSs1MebPTr9$5=Y*X(_|E+ zB=Jnh*us6Fk#8}dBm5*kgqd~VgRr|pc?6H-Z^MT{&NCpjJ^VTM#vFUXPR^4HpG90 z`?0c<;_xTcCbulhn-dNOy+>~eud1g@|CcpL0Een|A9L-u-BHP7G_)p zE6?B$@Tn~5#(k`@H*W{KyM%pl;tqT~e*<}4gSC4BE!;_E5)8~Kz@Ft|_m5#-cVUO0prr-8 z0vUkME68U&FAX;O5L*2Ybm0W7;Sv6N$)7^H1^hGa$l(Ey!+yx*1&Jpm#EXXg*1tWZ z7jP(p>w$vlkopyVhTrCUu>)tYMhmZsovnu5&c!$Zz@#2z8c?VQc6%UZ_yp_T1HGEU z8(^)4OoGMDVRg#@QVwLzS$j4GGOiALoC>+_&wlvya>#2QcEA(+)gCguh}qeb8RR1=N0-5xcF}1-g{Ij5zv)r>j2dZq zAzC;qNCFkPP%OLl=QuF|hOV><1j37Hd7khO=nai1lKduo5e449%JctC@f? zB7qQz*yBm0F4j90*Pmeaw}B*C&@E@uAJS`q*^GwGm4`mmBAa3Np;%8p;KOO4#dhfO zR(c()Y(aG-gGfXJJ^4%$Nic1WYrSX}tm-)#PxO2V(0mH-%w1q->w&bC+~sX~G#?Gr zD`uD35$uWry6Md;@Ibs2yc8NA0NEbK>Jx$OzhK2qq#I_j8`c{GjD1S3!HSk+rqP(^ za`GJSw8L!w!PPzZ-T?ls67--kiRW9eYXhG+xnEzSDv5g%h#!|?!Z@Ly@Rv|Qa1%0UEVO10 ztw7IXU&7(p(y+6U*xNhUpBC_kec*xr1?mmp2l#i`>R~>YH-ty=gzS1k8!td3X28dE zgD+?YZFr7Z_ya}L;kSG9id=+GNQHi6Lmy7F>+Car-@|${S7w$gv%ai58_ABc$LtEb z!_2HX?BEuj@(knN#`EIv{Sto-f4mY_wG93-1-h364fKE(^#z`{MPcCuDNo1HQ*=Ca zqLj*{AN@qFG=@HaS2+j?bbv+Fp%VE~ao`72Q2IKHm4+xWTxNj+jO*hV&hErU#RSOWB+goWV#FOW_S@F0*x0Wb4l7e%Bt zEW#d$ng#8B1bjV2&X59JZB0kg`9O<7G@1^E-PE9dh$dX9I}OFB4e+_(+5xg#9kOt75L6F5-NO}eD0c+U@q}~dwi-c!vj+X~d!3tyGg+h1} zpkNn7QnjG_=lKU{%6DK#b#jTgVD2f{;ddmJsId|s?D$mdN^RPaE(S6*f?w>0_4cRL zXaRYE^+nR5vjCm_duvgNl=s|Wur@%pgt9`HD2p8o)B^9A((B=+;DM9x)za- z5&AI~KE{a^%W3j6d5gS2ULjwSHL$Ro%#GKB2fmJZ_QNiXhqw9xe^Hm#gG`3d&4|3J z3wFYLBn@qZ1;Qa=xzJ5;75v~i8X?w9L4@`Q_M{PFATe)5WF?T^Vfa}UP~r(Bumy+^ zf|(D+OnO6qL%4~lfV@U%?^Sq$X)FTs`XyIDY`Btjh4n9D87vsqwE;NW3Yb|H>uCke z35Ew4K*qoyErxYhg-7DN0cj3obw^CU8E6#73!w2itOEDt*}#%A&9BR=Af6fsi9Ljb z?!njZgI`^V-J-zPvC!dju>4d~7g*SuRtDM;`j9-t&Zod4&OmQx;k9|O>zQhq3j~QMd0r;K@AG;HNpaNvnA2Mr&xI7!)N6$2nnTp$UB@aOCkPWO~ z0_&g?uNK4!SyVY7XEm}2*1Zh# zz6!1G$z2gQxMD`%;fq%z+Drwyt;1^fvDe7JD#P~-;ybXqvMBf%tR)Un*n9ZUw#aZg zVdQYcUuWQ1_w(Jrf{wf~*0h12MqHjCMafeY*4 zEgH~rKn;6D$AyFuk!AuN`@ueIBZ3@-oz-K+P)>k9x1nie(Qyp?SR^8{vp}fMkZezQ z_891>7MSP>eGP{OH^N@5LB#M1sJVg+!e6I}nfOo@p5;T!Q!ApibJ(GW=^jk z2av@Kpx`3lXgqX$7iK;THrE4k-w55A51eTUzo}zJro_*V(33mAWArER2CpESEwItk z(D1GJo&@wv;i1S-^gzJ($Zs2ym6+!p_>3K}%mF~;vPwdK_^EEcEod592)${FD+#12 zq)?3-kvHvwU5CPo1>nO2V9OYMt;XCAVJ?2aqUP{ib1~DhmDT3{h$j6p4_D~ZdSFX^ zGIX~BokY7L@;QiHgkjGm#Bi;!m&4$_hX2msJ;+VW%$~b* zH(rLxdk|41uvUnAM&ns`QH!_%pOyN1WmQolI0A%T0qv>|jmhB?5n+8HNd#pFL{|pb zN-KB{H)=;C=qTt$Cm~h1C3F%5;R(G%_0WtfzyvqcCh9_87SOr4Zz?p?6YKiFi2?7ONrEkAd@2ed!g!&FP)YC+d=V{6h@l(8hO>b9jbQ2Bfq0XF zY$e#G@36M-@b*ST^>Ns#D)3pAV2f9Q*&mT1Jz+NF(=y8g(z#=I$6%dhE3X5zX$B9K zf~ch(G8|uehh!56*q#kIF&Ekz2EFsbuE$~g3y2eHVGT`T3G)zfZ-BltJgWz0k&AV& zMtt%TR`V5-I0Wg<#{MpWH~fUkfdh0S3qJ84z6Swwd=TNJLr0@IW4oCTJ0Q1`?d7I& zUwINbm>`-T9R@<@f-PsR$hdf6fFOQU)%LC=r@_ji*PLWltHS53{uyGivJTz(q zGR1Nj{WbFj)-1r7F2HjWsYZJsmuQE0`2_t&Z8Svi7CzC(sIkd z9=VB%%wo)7JgjssYI95AxBN*y;`6eK!5ZxDXGGSWq51EDeYauX;nJ>E_};y*pmUCF$a5EmN|@tXD7hfj>rjDVZ6^kj;PA2wtihkohQVp&GQw1$XPACo#~MpLj1FcWi)dz1hxRLov;#5 z_}3B8<-*_ox)-a+?3hV*WmVW9Xpagy=JmUBco$e{K<051)u}qL@p`b8htQR}$idnp zliyDh=~&^eunp0rg+8H25Jl{#Z=p#W=w#$1P2rOT=z)op`ROo3=$(*hm8UPU?n>k~ z_BrTxRmC0^kTQ!>K@Ua%|34$HdILKwJ7d-Z_ZPtPG(rrq8hCITm7jQ^q89d8jEZLn zYAaRQ{3ahKePRaM*d;{viGbeG^>!8$DXzVj&Da+T@DCv z8(ty|o+BE26OGvZ7@~{H(1Spl2TgE9jOmP3Bm@0xqE?lT>ToDLRyZtJi(Pw#9UlTT zZi)EeBW(2!=6(cmnFNj20Q0hVAa;BrH0S}jg7~F8-A&!#XBP|Yg|Bo49SCa?=yk*q z7Z97?MRa=!GaG}PxDw)*s))IAfuINQly|WFx~Qgf0PZeFRo5MLt+znC6NtV$AZuR@ z30#2o%*QI9Lr?U`-%Xg)CE(#GAZ|M18XffH96yTB?FELm1_C+r1XOwFK~wbbBZ-Ux zrN_gA?S&p(#ZJ6~OwZ!W#G^4cC*XpLDzTrz^e$qeX2`uOAuhUzeDMS%bdl(YJG@C2 zVm2*SHXBu*Nx+dSzoU$Ds8l4u#?H|7sPWXMrSRVkA^YaQq4uzrfAGXI%zcj9K@WK1 z2*|OlK6@Vpw`PdM%jyLmfs1pn+P{E^G042)5EEn|QfvVGSOB^8gx~D|JlqGZ5&27? z%6s+}k=Ps5EcT)TGX*)!Hq>Cwu(RwF^MQtxqIwhoOS^-$9tRrVhUPh7gb-kLQ)Chg zp%FK*Gushi)WLigAPPJN>*etJMq~nN1Z3R_A;RNfcfdOlENDPo~*(6)V;{T_V2HDbITz^@uWQ3;s(7+TT} z8kG%i+ypz{5nB5T*f$!x=#L#(hDhu>iNFqL10Bu)3I4|J52l;wF+`f1P-WRb7vkDt zXhlQ%4VCm*qQJR_1AK8M)LtSehaQcAlun{<-w(1YizCya%Vp;?*YG_Q{v-@nrvNPk z=txDxZ2pL^`eNRu_L)8#hB?2$ju%&D&>YwuwTQ@-UuNhW98k*S>*uM+5TvliOmsrVQ#M5Cy2fQp; z-!k~g@u*(4hUd&hWoa2=q|w0koHLJqha8g?Jm_zghAMu`2Qp^t&kxs8Z-kK$CPF7k|v(EoDqL|yQgid;n8@5_H7 z7OIcA4np>R6h6KkbZrgnv@Le0I%f2Me1c_WK^K1k+smrPyO32!0Qn~3DFdNh-yzvX zkWm@3j)gWXhwtiu`i&D}-Lvo{4N&!N%_=iLRuz6DSN3N;*(lUEW1tzutQ>S@6%g7U z-l95A2P=+2$HG{S=B-QUk#sViS;%Eh91PY?I5pii2Pll881-trtFjaPL7jb%g^Nu z{EU$eau{;jQ?LL#!9!p*lkxnu znBidLCE@UYt)PLQu=;4!6H1{qGf=?@fmOAGRIj4mw-h?Q4H`cle$Na)Q+D3+9JYT5 zzo!BtD?pwd;bCrLZjXT$wfHwku2|k9ca}qBtz1JsBzq&uo5O}dXL_>fY&)WKC;0eV zybIPENmrw~DKZ}rCorhNEAhY(vXU4Z<+FiVGNQl%h?wfqvGDRuP_cZ7JbOQI?i=>ljJPNU)s=a$ z>RRv^k;rW}!sk3d?zjW-IJ=?i<#F%+@V7iHyWBy7K2YlzEO!E177yQng{cARC)G8CJo_<=c97701~t3*HDc( zgIYut)CfXRH@uBAVcxM^SB>O?vPq@=DuCX%jyv zJQiyS?RklmZ#yO>vLkevXeSEPo9}1m_&1zow83fU65`CC$}QOu(pW4Oy@ap)H7Yl| z;f-8KE%?7-yqbJm8qMlZ7qO+dN?3(BYcBL?C7&n%Ycty_G7nf}Ev}NcSp6)_`VX0; z{%&vQ&_h#R_-LzQzF^r$`fD#c&3C9M?l6rhdQ`AcSIu@+Jfdl(2~hOsjimxx9UiN! z<(TCBx4pYaq;KXz^IO~Bq`l&$aNg!%2sCuERiY~43J+z0K>7pn4^}J$sc)(0DkA7* zauF3bCsK-xqM^LR_R?0LHx*+{cUYyxoVziIbeNc z`ymZw+jtmqidn)Y#U$k+g&yZtgN4IlW3eVTn?nt^jeBfG(2VicqsB#sM&@7g1>v%o zirrnIN^tn%taYraR*P%IDeC%mVVXJgt3_=v>4zICnj6`g%Z=n`ws2clsVBQinkg!1 zPdH@TpHYufbW$d0?%6%i)K?tG`X^gvnQX>d=AD*w%Q?$t>uTwcd{%zRkEo)Z4Q>jj zU5fj1s#J@-7hfnEP-(B^H1@)uDxT*E2vQN z%KDQ3E&ViF^%r#yi^PIwMb#{o702x2?8d2s6eq+vs%*QhPQRQhIUUvZ74zivwjs70 z%W*^ZlG5VP(jP{%v8}0%Es(wtM+%SVOJ%5ifBQMA8Nvf$n0S@D+G)h6BV&Gej}eY{-wxYM6B@i{|bvNsudQ%GHUoAD1 zXB{G(?3_v*25V{vi8R3Ou-jPIF6!}ejA^>AO74O5J=udxefUp0TpFSqlT)1i-FVn} zaFuD*YgQso8M2q-J*Kybl7=~_(r!l_jUp`SgzS_r*eK{|C~)P_RQXwaVKkFag2Oc=_vQey7rF>H-zRRvMV)z0ChQY&%)Pv6LYh(?&Xd%tx;t*RC|zl%ZQ*9A^Bc*zYR1?Y3*JUE_Mgr_eLV>AN;V-BOrjbC#1-|7u%X`X?@Z zGv$3+>MpXleB-eA0LuHNv+RlXhU!1-1q3BHDujn}JJ zThE?)l%{Y`ev(dA3Pjf#!D=a5$^PhK2Oy5At!DjJtjwB}XpKFZ5SVYz zjGA1#RhlWvrQ$I42G8c9OCwn56SsKjOVOGfA?J9>dcIT~SvoXnW5SE#5h_>pC&P)X zn^{u9rXp5QuO!hDB@EYiJ0I}$^R(F!oYwm}cdq0a-nsH5_50MISH&+wQ@s@~-X~lS z+WMq_j7v}LBK7s&PSfz)bf3>aE>r}4exy|X2Yc;Pdw;Gzhtde!LF`-~gdU4w8f^EjurTud~(l2H# z$!VQGK`#rv+^cx^aj>v@wr=#c-6N0q!0lCv{nLeGsU1Jx{4t}XzujkdrfQKpm^N^Hr}rAK}4_vvoRnbKF5Nd2b5m%4ac zIn_b;_m$^{dsgY>8}GHSLj9mzkLoPkM8sr=6w#q1F1uo3e(|&{eSF)5)9JIa3R3r{ z&n~^9nrm+p#z;M>m*aV#RYB)#Wz;zkFwtBR`|Zn^>~e}jF87rBZ12~nZk2mRvaI$= z{^7p&9G+^XyDaf*T`4>`yz1?+4?#Pf2Nvy&Iq|_O;Zfe5g6FC3Kg!3BOCG43>S(OS zn(S@xELdCqVWp_hUx9U9^v=Tr2LzpQIG8;oc6)No!sGcHQ?4eAPI69K`*YE+@5N)3 zOC8KA53zxEwddE0FT!uvITkv>p-=XcZ$2pl*k%tm_fo4V?$~4Jhi77T8aKMS_-=H5 zPbXV%NW0b7eFxNV{cBBx>^Y%$U2M7UscB=2{d8aQJkyUQe2hJmm|&Rb8(GJnGJ`9rikg8L$WK|;>m;J)Wl=41HLtTd-7?w4W_-HQ^fuBIu{I;Ak;oBNCO*u`S45Ot`@wF9{+7Pv@W^SpZo zR;poFhXr<4RW&vJtI)6hW zuiBAqTe>%DQ*n^IDQ^Fp>Ob!o>j+y**2Q|goAUK}^5DG3ri=DlD%J}B6g1Cmq_~Ex zR~@yVuDvIiZISvK=>=c5e5jSImd`oQa5|}YLoSNtRI4>dJSK<5G)h6<&6nE!9dG99 zlO$bB$70uMlAL0U?V5Ne-6!X6$!x_u-xigEecZ)s`Xi-(2}_;2JD*aSZ2=|GY2Cli z|2{fL5N0^ERJM>FvoEU6>iyy^yGs>y^=!3seR_!dg(#3pv3mf)Duf#238v|v-c!`%eSrnJELr9Yj2 zEzEVHoqhifc^%~D*3tYeE2W^8vYWTyepOD%z7{|BOSz9vt^+P^;AJO98GpDyq}kAV;^JMUwo~&e2(vrn77s5TVjsKCuRDRE`eF$7yONM zv0=5~6mX@%>b5mod4xK#!-?yDF3zXc3x<2yb5d`mduO?44$69`d#=3|4R1>0h((*Iyh#3X@CaU3_iXq*U+!|s zvxfIxZGR&xTw1!ZbXe-gm)~z+ezY^DxFFE}cyPVyoqem>1{V7&&xgKh?bA)wdS`Gs z%d8(eV&4|dB^|A`vpyv3NUEP!Ep=(8i*=9JkZL8>`&X#$U?*)fa@#HC1p6=Qe=U2{ z4DUZbZ}s(Z!D(d8`G&D2HI2cx8uB~k6u;Qo%6iKxc{#sw+Fm}lVu^bScQZ{e$wfIo z#g`>dM}HI&$L94BvdV{6QM;w%q5 zzuA6hGolP!Im9!)qOyvQUzoyIcUgZ?eC@o*X^g6c+^5j{$JEztV{Yo7IxKSNA~i30 zTw*RAZEm6r3-}Q+E@D-H(Qb`hB_C^Gk#~KKqrBTF=KIFGzAyJSAm(gJb=^(XSMTB8 z4TN7gDH&5_Mdh5R1MP*#mQG7DBjZZ)nC7cTAMH(}BL92#$&3rB#aTs`7`MPGQq{da zdu5;O6X}Ob{t<3CxH(=BUlzCinf5;RTfKr{@r(T+?Lu*cv{3)G=(DuMw@aO0b-ewj zX|mP%9uB^P>^oXh44cdyixoc?ysZ3c@%Pa5<;78|jg^npu~oWG>lF+%?)7+FuV;sX zb_c_n83(`S4|l{*qN_b-IQ}p<&&)|Uo_ITJwDql9uh6184?W<41MXisx!{2)XX@k9xk+Qx!*snC%Sx zj0<(G(yd>&zrXb5YkYdf0aF`~IyJR*2l(HV=HzbDFLA%yu((U3=pgUxq@@poUN~mj z(P7F6>!f0H!GpY)>9>*x7HFJ$M>Ip3|Aynk^haNGzrNah+y{Dg74~Pe{^0m(#P^E2 zoesNwqC6KlG*!JOZ!Gn!^_;5L3T&P9S9`x+bc*eyw8@xWm|wEOvO&K!q1B6Rk1D)A z5i1l;^pF~wTKpAs*vON56p!_Fiu&AreXEN8rFoOzc6j?L?YdM~d4OLtT`Gyn?UK4J z^^^Xon^<#2{pvx9ik0~lv-XvElX2Q-_D@vtrr9Y`pLTp{lx?9gE`!|;IZPJDmQKxU zVC?JFw*Js2o2&VF-*CC;TG>8LzG8}&Hb|TEhkdtuFMZh@cj?ER_-@5J+y;kl55MAl znQzs%x4w1%RNuX`cl1_om(1V~}#p^!pdA~R5b7?Ax7J}t4eOUVWuMOYMiXACE3Y*qyb;Efs8?&On*Gv|zOTDtg za;v>}`;;TT>;7SPZhOsW&%ti>G}~;;3yRZ(oK5_s--~en>Pstyc$U{3m985lYplxN zv6yOd_kZj2;nAlnu}d?<>8J|l>U0hBbl8|5oAS(%9@w^B*FF(VZ`lt|OnvS61qD{) zZknQ=qHbzyo>>?(B_<==(XMjHf?DAf^>kEPNX*?Im2$J$5tsVDVXjThx`b+9Rwb3# zK6}*)3aj|m<$>i;)|M=P>2L2rRa2|}42<${QUw@&3$jY9YqLGqIo#LHj$8fK{%w!A z*9Kpo!L>c>4hrZd&&!;jTc8cBJGg6Fr;{}lic`spKA!%Zo)T$t(TsFDqpo9Uo6zi) z`|HbDoqW8S9Bt}e;cxSX#E{rCsaGw#-PQycT%B~qF^TU|V}o)ISYBx3y|R6JJ6@AA zN|U5Or+fbSRc41-sxjW(v`*aR&(@z&d9`heH72Kcl|#|TuWMfA$0k|3`)>-LSov?e zkwwcAz2e=nC$JvwxqgS;o=ZKmlH>O!Bxb#_+MK48%k-=zo-FK}z0Vlu{3PgL^{wH9 zg6?`0lP$WMx^Ysz_?55Lolk8Y^Xl!k&kJ*U+eKD-T{+ivoLt{DO;JB!Rs-kOmL?M_ zFI7x0Xqp`IGc93p-Yr_g?YZ*^YuBV+A3w$D3v0V>3;7k~?=+>fUdF)G>Dh}7Lsbs$ zKiyQyBwg3cyQ!zM2A6JC9&xj{mBOx?l$1B;sJuMm1KI@ttnxe{#c{9P&Q!_TQFgFN zr2`6Xru~R}82dKeL$qzVoUwx+_bExIq!-B%xm~I7l9W^Yyy%*_ws=&PO&dx1l2K9D=^s}o=M9ei z-Ol=U^wWCQv;QcJWkqr$*1)>3_(tZz^lte*&0aJ{Y$oLJjpUGOi)+X7jungilRck0 zW~zL6GeevFojI$E-dm?CG8NY?OLDT4>tvM}9`WX^hw)a)D}A8pqH&`Bbjc0fTf;b; zSTGJ^;rc)Lr0}|`|^#-J#i0oGTTWiu=CCR4ed-TY<@T)IVKxT z){>D$UL`;E*GlvCkMu7}GfP$a3dMN^PYXPXw;DFe?uuaLS<=T=!OA3plNUE$MBG$; z?YZL(r@k)s?z22byKCJBxD~kGa%`(^FC1nG<~AiE`HS*875eGZ&Gp$kRP68ZD?+x` z-nEuTmirO64=!2ucf@WIGrzR#k%oaG+7w!yRXn($X5pw3vwmdhaNX#lPX*13(si?p zEi7i61MexkP`Inwsah%v#0WI8`3cTsF_@jLgc+(z+DN<4c1da>%^MD<*|9oliK6Ji4)fhgD;>mo~k>s#9@ zTZE;uskyPaf#_QldlvO9KCQ2A8f`vq9HGBbvR)r<_G6N0Rr_gHC{E$T(n)Yp^cQ;& z2l=)&))Ho|Dmjo5inZ#`noioyc216GTmn3*dfL0EJH4}8rM|0(5niLFeHABOx463; zXsc_RDGijH$giaoX^-S?`)STI4mWNvow7vQ;;qdsf##Ox(Uy$v=sqL*9rPe9WixyOgFQL->94EPI)S4f%AX#H`wCpzDu)MNtGbs%dO0OH$ z)?!;T>8UN-8fZOjttkhRU~rx^f)_a}*Rq9JTA9mRR$6yhOU&DhA%@O|Oyfz5N=lNl zr33ODevpn7Un(3_3F_K*(GHg!nd4K(JjZ@cbDXX^x;tFawp1IHLzEjK$6PvxEc{&u zzslP1L0}I2keg#iDw;l*?$jIg(T1x=tEs$YjHSN$v{7lgXdTO4gdxHKFm4{xv-A<~ zD*0I3T0dHsSko=jEicUXOp{Er%mZzqWSQcKs-rqieO*&oJ6L2l>!qo#eWpf#XMROysmMAmoSu^l6zZgnaUe3mVP%> zGBq)EHx4wsHpnKuwU(R?uFw>zuPxvD#u{avW$A8NX|XpOOPA|TmRu;Qr%TaaH|i{P z_38mk3yG!zmPnXQmA2O^lRkG~2#@b#= zAEX*mPpK{V(DQ85&6078>8*K_<)mdUW*2WMwjJV1#c=fxO$Tk7wu=2rhwqMO9h*3; zvzx8mp_!%bs0vX{SG#Fbw0E?%v;#Dms;kO8Wt4iMrl01NYMCNc_&|^06!kn?Dj6+_ z<|xYrOG8V9d9bOGX_)Dlv6kUvX}qDF`MTw&rKV+wd5F2O<(lO-_U>(|Sn6chYwBn@ zZysqnW;$iv%P)%G6*U!06n#{OGz;uZb_VS}%@1{sdcDR+>#Ye>_7_gj{z9f;5Gsk= z#c0J~MH6dseu&Z>8 zK3VrpU)M-1!8R&emaaR}RLE9o1hkzmBR1WmCmeQ7N<}yTH4sgY(W3u;eS^?ClZekz*hIhM1pXIIQpBoqR1cJTahb4B=r2wc+lrrs z5Sq_A$T_wP)~RUhjkZ0rYOIee4Xh(<@1+9yIJ>|;;QZ;4E!OI3onT#r6Q`NBYSshh zRMTAZ56g8MVGcNtWH|N9=NfuSIHs7WIIZ;1xvQnYmuGXo1mHotOqD?%hc&w-hw0?w><*hW17J|Lj zMi?xHD^5V#jv@yqHj};6!J3<-SE>t!g_ihmb0C8L7+HqC4#wNy8afs^X1krQP8F za!58fqp!dX=)$+-Z0!)3DvNL)8_8>sPxOo6C@vOfDf%j{N{i|ePI$`fb-p4<5uvOP zTW%$up%ut&oL67r3vt$8kKdL%$i3No?2-&F;4itYJPYSzXQX=4W?QLsgRL{7zPa)d z>6_GDej#^Y<=8=a40{W^(&1FM1*;DaFc9pRDYBdN*mh8=A^XaY<@)esgXk5(L-AGl zRDDtXuTrCYrWBMr#pmL7g+WnAxkYh7uz;h|n|2qJqL=tDShw}z)pme6b&AL&oVKK| zaoT%@EtV6c>T+YYiAUgca|P>ylk}|^Um&g63hAV6i_JlrB_-GvSo>OrnHQQynWmc5 zruC)*^EOKx>rq=hDNcI929hz(2L!p5n?yX)kmZR*3h-WMQH( zjrIm3!;d_W7f4T})l!sHSF%_yS{_^ct&uiCHcESJ=WP>hUe*q_DD)QiGl6xHM@YA& zJ#s%51Xf}4$MgNgGJ-9iId5OZW*!S*-+ zR!j(3MLI5m(Q5-&pc(kf={y}B0UyCH@S+dE-iv-jp?4%f@RYz`u%hd`YG(gvfS z5SEBe!b(`_c=0K<7Y7PUcq>*_zF~a>SqE9W**-`ErC-uA@YdqlIC2uPjlEbT+6xcK z2=I4DGkeyNPhr>Omu{2R=tAlepv{;}xEYrz$)Js5lOwjH)!@?yCnGw_?N zm+hmqrCi89uu+~gVZJg^y~!LfM3JE3df9Xh=7z!(J^oyg3OZY8tin`|Xm z2)<+v&EvW9C|(cjy9D$RO7tSQH9mATxJlJ%lHe)yfo2wwJhq=t21XTgA9Ryd6WWVZ z2q91CUSTAiDjXM@f~Vpx%p&J_Td*`J7~1>5B@w_}jfH$5 ztUcX}ejW?BWwYrpalY6U9b`3y=2T0Mh6r0W<&hnubA>ciB0Rv|geF;vIy)aa0NPh8u zfeKmRt!`sRISBgmL2f6-*qD48_qFH4vAZML3jPIbsGZ~<`dDk1@#HbLSoQ*)c1w|g zMDVUGsf-KC`ts%I`g>1JbPIST4Z%)IrWv$834tG-1|Cr`>BxUD@Ho+Bc@VvV@2I0V zPtilXD$G-OD4K)6v_e=-e~?II5fNlOxHPYUMB{)b%fbD;0wnLjUBFx&4qlGTljTQj z0vKmz$a4@22b*fF++I?$!R&{0PR`_uzxBPR^3vhn0J4+mpwJTbCsQV-cApGU;+ zA`g{ASyM2RQh8Zt|2eQmyMj5mir%J9!Yt}c`as_ofPv)-WLryWa(DFndXPde-ztD7 z?g;+B3yFevPehMwA-L`F=s!45`qRPuI@`iO0PTk0lPdVl!{Btn4oGG64ZP)#i3-S4 z3p>1=*OszvIr3U|7W!;u8|A8eFr?^$j*?Q$<~cnCmeVfUKq#RfzzaGHPT>l$r$^F> zLIGIo-zi3Y|>F$6-_yIkDUBKAdOgu1;iX;uZ z&R0|+4o60sC+wk3!O7Z7TMDxUC2T2)P66*M7=H5x#;OIYTm?xz=I@vjc>vaY3RuQ- z(I>SK(ZFM9<0WwMB}6qxz?X}_6W2rHL(tRm0KKxC!BO`BW=td9nN_ZUF5MMu2NR2kbB4%6VCdzC9iKVt)a>4}sx2lP62Ny#~&wH(SeRk{7Iy2MXu}k+tCO zMuDxmnN^ejl_!I}zZ@LHhrByE1csdtwHHp)31HDL1WF4$6Taf5JeOtjE$FQIivAf{ zu7hrpg;;52n#wD~DjZ2Gu<*aJuhKPnD0?kkk)E)X+zuJ)J5He4*Tt)16Y+*n04y#9 z!#D@=R}Jb-vJ@!3kQV?$f4fTcjP7bho|7}g27Pi z0KRTHG81f4EqliLBjX_aj{Jr_CQH$`^O=qjwu39T1ToW6K8EjRJ(v%?^KSHHO#|~g z6rbW0-3jQLX(fE8pTTk8PZT^wUXQM@Vax)C7y&=6oxBs>0T0;}vVk&iGVSS5(vY`g z_n>omz|JwO3Z%Az=MobQ2dn(C5Gz~&v%Nj-2+ycRZWAfy(B&kah6_Is2lWPOL@|@p zUydd<>2ZFI3=@*UQEe+G2{Jt0QFP|lNAK}fc1G6AlaRZX12T7{3gKUVK(5J?5PA79 zBbh)SFmxsgbxB1ziuWOrVE1^iZ@0<~WJRh2!)xyzzWG z5&o$?s+%wPY*^=Fxkz>c1GEjdLlpQG9a1?!!rG)1{%;6V$VcQ?@Ck>Z!%D$Q)8GMS zpuaE~{pRSqCfTe4d&OqSNzyU?4`H$b+1F9)3R@5Sj|F?#Y{aC8_;BPcxri@q==`|@ zF77_`7lzZFhzUx;+G~d^OX)Qp%;L#45&vfiGR6?`9O5lkAjm>Qy(P$O`-oSFBRUzH zpp!Y91$fAd=}aLKHrijPfqHbbxJB?_d!!~<%SCw>%aqGW(X1&w#+yj%tvQx+ zwx)=f5>WMnx0WCC`}8=e53l!~9puSEBgJ|$2)n%lY+Ce_qKozm7_ajXlXYf&nczRZtf%@iO_@6A|`3i9GYhs+i*z+y&d-UdYmy6Ije}wtN z9uA>XWUIJNC}CB}NFkKOu$j2~0{m15u7_UVmPg1R(T$MFR*?5>jAWK~^8;k0I7GaR zigSP>Of2TB$up`Thu9Gy={WhOe3{gveV}Kq(Cb-XI4?kFNng4{tfLq};n@(uSmBqM z5JcSB4df(~qzvmK^wPbR9sqAM1hdqc8~E-OcE$Lf@^thAdQmQ#vRnD5i;ZX*?{kGJ>??lhBQ^a107Cd(R``=30YW(+?A_oTl^m=hY_QD@l?r6nlHVS&aqU~mK#tr zYPzT__DLEix}-JK-m*!v8yp9mQg*B%jzmUL*)A zS!orT@))UuG(^_P7o?-MRH-4dkK3%ad>K*YYC);=SNM~$(j_UAJXVg?%uyc~eaUKh ztF71;ijKXFsF?eRo0KaQeTmh!#j@LWPz-k1SGAyGo%cQEuWNEve>b)*-h3wyjbXd4aXE zsTTM@yXB!|1+q6+gbKx>^9lQ*$MXZ9PAuN+Q+EpD(9%Qss_Z)+SlCN(#yKsmTEg} z4L7ybZ7GT4cHQJ5`pztW(cdMYbwG*#3BM*DJ=6oOUG=SW zNxJ*RKXP-@CjD~$IWji#$F+p6Y4dWKt{0nZchObl?%{5B&+r)JS?aOJt)Y{h)=BY` zSF=VGFGyD>-2SonM|51xgq7)!N><5f3U~X9u1manddGPNd$$V63JI;*DeX?5s>)e>*TlDuYSD$C)St}oOjr8T72d9!CzNtWaSb-A-pTLB#|CG<*PSxQ*kXhr$F*LS11eX^snIF& zd*kv=el+Y~cTCuGzr_w)=w4~NrK!$4)BUI7Q{v0lPdYqtc;y-J zZ~bI-wD;30jq5jws@J+j+l%eSwC&Y=O6?jI*SV#OPYvsG2d0MqobvI_Q}26jcS|2M ze3A3HIIX_a((7_~%O)4vTxqu|s(jt#&}+e)D;EU#d8KO8q{O1{$)7&mfAZv}-K9C_ z!Y|alVR{~tu+{Lu`F_CMn+pV2PuT(7wKIh|CtmaFO(B`)G?X?)x=TF(~O3wkm45HTCTuIhFb#vsTvg#Ww3LVz;a>TeR81 z2Q{g%liDi5daz!pcq9(yZ0_eZT9$_9r2ORkz!iLGlg*wYykZ;)B}Z+Hf1jXSUF~UN z_8yQue^12W7EFPr_Xy?UWs-pT>+|=;R+G2bHa%&hKj+t@&R9QTZ3!W-=B{s9Y35HR zJA=9enG=z`p9iT5y6VdL3Uo#+sb#pfhFH7ul3eSGYC-UgTcOQ4kRqy;<*9i z<3x;^r%wD~hqd2pUD-1`etWh{dl$A7ISH(qvmSNr-9I!VE`vNUQBh90eO>f4vOLVo zNrrTjnogT=w)5Z4^(($;{B&4#;_T`1#4dEbW%;*K|C%#>HuGWl?~XS@{MR4ddSM%2 z9oW-_cwBLZGuC&p718{(SH~+<7ejBMUn7;;_59?4W$blhiL)2==TMI=)-Y2;ZifSX zPFsF~{HqbD9~<_DbK0i>I}lX&W|lcBY$MhY*8Q-XE$1)s1VTp0XUCoK$ zh`sdps134XlWTfIJ7b1AXLkd?Auc1%f^6j|j*PA9zB0UCcu7eC?<8(?xa@DXsMQN^ zTZMa#cn@!f>|AKj_-ie63}peI%I>WhDefyk7Uh(EZeAEGSLWb}j=)7#8)4h65|=LP zadN;3mA|Gcx^@5UcI(6d~&s-8r$HwXYts^grps@U&0?a zx#Mt(u(5wy;%ewE>@l5e8ORDI1HaR@&N)tBpSV4l$m^O*Sb!Rxcg*pR4}Rl5PjRrM zSv?~S;J<*{)G{?(w^y0Zi|BT(ykE4dP+9VCHMOH*e49dmTj|IOtyx!=a69h$%Edl$ zHhqw%f{D)hniq{WLy0pHie#mYEKK}jI&h+K?DXUUZ**>lPKpCM{NsBoz{*W+{~xu0 zw%qQ4sS*m-+Z(88r1BLfp<{n}d;Z0oj{Kss|1~cj-LBX}{ErCFuwg(%~_jNZWPV7zAteT)5n z^k=jFlbj7RmJ%4#BCF;S?f)- z(tx^o*E%N~1YM7(uP8<}J*v_99AVf5Y53S^3ddT=k&FVKn!k373)vOe#HzM?XW!;z zL%(bB47nQ=48-a#%q9)R)#nybGdoiwGE08tG?WZ+r8jZsST7>qC%W%ClX!i(n3ZVU zu4awxY+7Aw)>XkhEbCXnR4e3Y$uUv2V3#OQJR_kS1eQg%KRwp@{c>TE51RdD384&H z-NpY0Yk=)RP=QqOaW=1VL*B{s-5HSu!pct_zb8gjPNp3mw^yxA3fx}4i4bP%IE`H- z&Fj-Q)U*gkcF+En+s!W)hYR*|Ws{FMPXxHRl}ZpS#>(GA9-JTG;}U0|Z+FB2L^U;* zfIW4`7y1BM@~E-O`ZEQaQ?Gv8kTzd*t{&LeEc8bjGx*DB3GD5ZExXpG1X9kvy)VNpmf?E=D@XWeq3GQAl# zCKLqlF`W0D)M+WtQWPY~m31j0;BDqvh&Q9ikY16dLw45D&5k`>AeD zIyE2v^)=Hm^KSm3Kaz%^p2?}pI=$rqzY}X}6SgHi**L!>l(mESR`R&}Le076?W0kG z!`!G*yV2|kFehy~Tm+gsFuzoP*2siu9;6S@vf8NsQ2m_YF2nZEi6;#AFg%O^h!h2M z?J6tE+nl$gFto(CQrsdLiB-%QpLcgyuG`3s_lWUZ5${Dc$0&~va2f;JbH@Wk$9NmZ ze~y3RM(~Avn#glDNxD>X5mRRW#wXgp&c)J>LgCX}7`Lg}xD3PQ@D}*!Lb=GRJN3^{ zUTU^^&h32P(v*hU!R2x*Q-$Y`m7VcTTbCu?UVAdI-$0HqM#Ec-JJyfO_=2hDBd5kH zIc3uacp~Agxv}|Dbv)9WV(x9`Z^ZgSzF_m3KFxe*7lE%c@XVDEG@wr)Yr9_Tl3AY` zo!*v1{|#zz8c2|O7%lbiU6C0}*ixK$e#3a^6Z>~y<`k^UhMmGC&wQI&F-RI(HgTQf z%oXs8#CPRt{Q|au_T5kIr*;goT4j6FWrg=<=Zhvw;f;tzed@o3i&}P2R^)(25v>oo#sgMeq zY!PWaEn)eV!<+wJUEm&xE120n_+n7V`Ni8iys91A=E`myY91sED#wVT9QAALEr+vy z)&85@Rxuqs*9A0sD`?A2exSRM2cSH;=g9Z!YuP>D?|;9V7M-grJ=Uxp`A?}b`^(#X z1$9$+;*O-N8$1KcE&X(Cp2-xBf7Sr?9qJ%92X+44|G$1a_Rax!jz~sA4``uadHl&8|f+clsE1C5p50dfe_! z$fdas4Uh~WZ1T*suc&`&r0aQIMm?b;xyQMCW6$o9tDfq&mAKgBCZC>Cvh}`27`|nb9+QzTmDe>PjGp_v}ZaXyn1nfyk3|PH#OZ4uzFR@N5 zSGpDAP34z(NBCx98~)b*x~6lD5gi3R-aXh}_(-_0R^v`cbGq)o*Vojg(WTM9@%B9W%_QD)d0m1dC?- z#PX@-Rikq4>(L#xt+`d-87a!Ig0!Zhgr@L`#o95mGWX`CymgP`8WY#VmMuAFp9`^> zUC-Mtc**}dyrcP9HKIw4(*6(ycii_ChoSB=& zU*_Ei?99Fn;qS*;?4Or^#$^l?{8!^O5H1bCPS6R#6)Q&9!(+vpik6Qt?a*1X9TSfy z{ds0n2YZI<;~T&BwvB!sy)c5~mdiH4f=TTx7vDW@8rldw-|Kr&y_XgBwNV{m%=iTM zx$^wrsmfhBYf~M5LehQnX8(}de{gDmVYbiwlOk`dWo>*ID_CC=46^2^v6DxK^2TpW zsRm-2hw7?25=R@RnkVWft!Hcv>C!5ypVv9>Ovfv>){f3TS^hXC!ps}B7h^$q2RE1O z?cMxmHoGu=F5NSG?AM_>zrJK~Gsc@aw)pXy^&7f2RmU7(P4?trl>$6_Pw%JE#Ie+_ z`Fd`PerRI)0ska#T6jhF5twDXlaUb6>GRpqg?iDs%;%i%FZwDX0QL#K2sx?$hZooG zQ@Sfxm-RS%eSTe;Tg%7M?W)V>v0l$2zC;a2*T=4jxg9yqya=U_J!$@{4LO)R@T$48 z`d;hi(QiD6AY3>xyF#G_5RDa#Z-H_CN0`<20;gH8UY{y@C?Nzq2>t-QtcjR9(d77x zlC>fIb$Vg;<`O{T>)|-1#?;zl$I{%juVZkV{S($j4S6xKAEvIh+;8<7cs8hNbErqR zn~t3n&}W9lTcy+TOWHlC1Pa~rhnJ1h1M)7apUX8bj?-_WRD-SkEo?vVo~WqPx@=Xh zEOUDnF7NJdR%6+asr;1DR~JgSV0~2rW$V(d9WkYg4q0xR19rV_^lzW<>}^8T+-zJo zaGB>d`$qap@kFy^VH@I!<#yLrpA?rGJDlALrh`|NOP!?|Vl$`&Y6OXqof~>y!ztLD zh0SovjL&~u9?)LS2?l)}dD0iv!K0H1VceH*M+OcqjCz^%uEIpL^4z#%qlaYu#%ew@^mp zGers)?KZ$|kRM0_O*Y<15B3OWZKSNRxkNW}m$FK%5J+1P3+e^o$>Ya^TAj*+3m#?m zrpYsT#gLX4ljFKq76&~dBYs5xOuVvw7Ne+|N3ASOY0^W~AF@8kE=q35H_f$Mx@o3v7?NqT;P;ZN6OI3@euDr6K{%8LNVW$kB zq^VA6uIbYuzQiFa&1H~bMlrTZp7H#x%iqppDT53sS+6p3*8<5jgvJ`oRow z{@R+>!5p~~-%jriJh|a~{+L9X`9(3L!Tvk1p+O@lf(rw=IrSVOVE#FAxrPFD1 z7J?uh@E|P3!o-2&+(vz9cEwP#-A)yS&e!+g8k?N>EPlnxFjofJLXg?Jqoc0!Mu~qmiBR6!RV#5fzKELo>di3`v--=U< z3*sB+r|LoXtV!-iL$RwoV>}W+#(^W785E`%jf+KL6+Dlq)Ih)WyH9 zw@Ub(@Da*uFV5nrs4WS*w(Z}1DN@Ebi#jt?H1MJ0cXLv0QMp}pXQ$iLv)TX2|IrG- z{;0k9ujVUg!LAG!FZ*C?7A49V%G^c~5cz05PJufOsucS5kSmRHjecxTVSYQ6eyP~L z!)7)VN2Z_gD_Hh?lk>Ji+jqrYSW-!YfOk)kJB^x7)G5p7OWZ00yG^HKq!9IOP$X4W)mff3|ADeuOU|{)X3UhNnec7b|b)H)KSmzsR_oOQ_)X z;T3ozN5?JxPa~Ja97+0|SP%_eY(~TM-gtk#r?#?WVEChiMnVJ>1G(zCoM6x;C{E)c9)PwV-W2Qym4mh3dz% zji)UaJJc|X9H(pmmYue2I)PSXS_1n7nt)w}eO9?nj4kpl9UwXhDK9p?e)QNNIgfFP(;uK>C$!sa45k&9(DA!Q-OodBX}th(Z{zw4yks zx*u}AZnwvBw@oc=oHkCPU|L`~sB75A&~eFzqIbRruJvo=OH+UC0PbokJ({{v5Ru; z_arl2ZR;(U*v8ujke?8J5m|`$*l0}k0!%o?{?Oq6=TE_=tk>!1vfdVRnpK?tfo82{ z-8i8ct4OhDl6J=*k9_75PPnerO-~NZwd1RA{Vx9#)O3vfVmwu3si}eABN|ybJAQPZ zbNy=n#$0dLDNwcWmY`p?apU2Vj^(y><}4~-qXo_L51XE8k) zEGxSt+cUH#M=s@*Q7imE_y-IEg9U67diHN^v93}6KANx3;$|-|#x?zz0O?cA;+Z`` z-H}nzrxNDlE!X_^)>~Wz?U&xSt}M!3y(oP!0d+wC{9ep_I__dSDYp4VYuO(=9HH zyJjqQcj8p+_Q+)SMzc`h!tBb4w(iIEmn*s|me=uGul4_&j!@Wu(=jRLAr3jNZLD3i z`xFW-(P_KGN=rMu9_@htjBkUjkw2I^#6HkeT6Qq6A=5m2zTkbu>Mk?UI)pW~!Y6jw z(&z(;FSnR&`m-p7wio?TA>m%^yVPj$C-zrbaaqNtmIp&GM5UTNh*zeEX@7Za@V?I+ zrNXI~=$=kzY;O?qVIJ^5=m3ucEHoYvhFfTVEzx8)yqw5G(d6hWg=offu z#Z*klHtg1{q}%ssvEx7kT%L&)0I zzhZ_q{}&gxiseVQ6X7El>_o@<`x^bK+$zE<`E?69rdQy%{N?k{B#tIW8$ZS1o0G&Ym+%jhYig#CouhfM)rmrRVfw<#(+iiWb@rJYXSpI1;(*bNn41vy(RcY%iq*G$DY zCX{ZRUYg~y+-wuXMRAC~FraK{t8K2~)Y&)R?cOtPHoHgjH#D0_r|e=LaZP6qIKN|R zU3!@N>~5Rk2>y6Cj2iG%tR8Y}y;q?r*p~@OU7Y$m$FFh=`>nVQHe<8Y>u&ggsJ~-w zCnRr5U%J4&Wo!&QHZPeT?;mWsTUAiGtM+KKV{hu@^jv`^5%QHFv0cGPVLYKX(nDBX z?vGqU9m1_>X89&%1Y>BbWa-GQR^O^`#S1wH(&Rszb1qf+_9xDrLcAhZdt423UQLMk zl3=#+=wgKv$oMPBRJMkDwC`+-x^7k7o`w~z&)Kx8;JLdR32c|Ct38$B;hapLb1Y)n zyB#*nJ8fp~jcN&V=-+_C*`blKHdWQ8lJ2~7m-@zc+tZaeCe9p&%IrV@kc^6}9BmYDzRN z=KXrNC99qH8FuzCK6xmpRa=!-39ip=zSR1rGjMpRP@u3}2!d|Iy|PTAzjY1v+U-N| z4e;^s%wze{02U7rL8=hpxsjV~rwvo}^_;gkcXAIE9<03Bvw5Z#hPF|-u@*gFd1u4Z zn01>xR(}Y%XPXS+i8IH4^maB?*96udX?xHu>je*8<911Pnym|K!C1_&d6nH$MuXvB z`#qmLFOXZE^N^j&%mNlF8{uLH&$l#|b>!M+3Nn6VozG`hAbRp<;^Cn-#cu4-Zz~DW zdt)EQEQx9hHl{5?CCMQ$*fLoo|Ljx-ZTSgA^Udb}`0LV5}w5iIj)K%}} z7%=63$j8Rxl`D?9lkzV%P4!Z6Yn;PwY78m+S%@q=SHvzht$?)7jlEW=Fm05-Ja;Yn z7%{kP)pF!=&|(vh7}6!+WpVU)SGS_!ORaZvSJ#T(yzY~|1*6`gZW%^JA{;e&JoFy`%x%m*P@iD>fBzhN!W1Th`~T*|=oH^`5y7cziZ{w4q&61FjO*wlwv%9Botg+@9#4^-w1R$I$yp zEe>!ud%ty|=fX}0WqIYf-eSD6EkRGo;-)pqU5v2-~X z<7&6myL)lM%12SXYr~>amiPFN+5JF&SFGdEyJxFz8NQ6ue-i5+G>O}e^?#h+Ah!b$ z5R=4a8#|{Cw?MzNknGU8fYaV-?td70HfYon*`LWJz4ndPf4T~ya}?R@3$~Qm)mL`i zo&2Hvic7XX>GL8Sy5`pUhz*JB0IRkxg0mKx{Hr_2-`wY4-&#^ySo_ zrOx$3-7lu>RF3#wTBRRxS#s2ub*iYdt1Fi4gP$>6jaxN?-0eSIr}fmuCS2g<8TgQ-`EmKd!sprW z%l3QUxn3m>t=^Hho?BYW^~xuq>Z9w43-{nl^se5UD-B=0Vxt zWzp47nvZms4MDgX|g|_61 zhyuIJ9cdHkhjQ1JLYg)XzMs(pFPd(0atv@-c5KbLD2J7`OJspXo+FMnq(}r!8OOUc zAa5zHK3Acx8mK?t;@0(R(1UYp#z%1k{M4wI!es_~2Lz3Wfx|Ij4FOzF8dGdrgwN2_ zar!&+tL_&WWuHs0NZ*;WyM$i{X7i`ts`sEvECZc)_>#jamOff~VDXxe3;qW^?$KXZ z^d;-XrA zksI9pmC;c^>rCLtMEid=y5CO<_ZEj9U&J?H?)+!Y(SB{aS#x~DtGdeC;yOgrwRV@jh6()K-~t9;VMAu_^8Fdw zyd-?d%1}T5DK{Q1+S~(iSJ^(z@3Uwwsw9=#mX!Q{R&l!FWOx1e#H>g^ifOWZ;JDIb zpWlhVJwYP@Dc-(@E1Mh18@~f0Q4Y_zbIr$+2VQr3wtZ+yZY*h%w(`4IjQr-mmfM2O zh{3jQOof+aU|EQHXiVToPY{d1f#N#KGz zCcxq|HQ7n%qW1Xc_0_Z5EuOj2fk9qu){H#@-Kt~B4hpFgxc=oGV@?F30@lP<2UAdhxWl@3wpJVD@IP5_V4d_)4ZGkP1MMs$-7K|2F=85Y%T_Y4t#Q zCVTe{228XGcFJFaQgC{UAnH@cKTL{C83XT7VAE}yi`@_5t8R+7ags*#{gl3=ef0xL zqeyP^OoO~u{{|+(dYXK)IA(Rk<{xqi`Jzp(CB%HO@h454sz&G|?>g%w*Jf z%vj3!30hp&UJR*oUweHwi+Ztyu!UO3Nld}mm1wC44`*I9JD`W59ij;xCu(8 zo4L=X&-3?*zRnfM-)l&K?T}Q&OH3YqlxS+qH3}i7;nrh5pj?p&hPm}RC=qZ#zeoE- ztyeb7Kh6(GIrFiKB=ve-h9TwMsM}yD(X@t}q7I|W&^yo$r~pI@^gPH_w^ptaO9XrP z|MDLR*g`*XgtShPY9LCNLM|h`(F>ThI3cbUw+6QgdjgF^u7jCFPzD0#Jt!Nv3E;4B zPQO@hqTjDurv0NnrUIyl>U!;4L%!G#fHwHGivVxI$6$Q8C*mi38B7FL0UC7M)OY1~ zC6VF`kzTZ4{CbWoyQ}KfJp&p+Zy-X@A25X&4tg!>5&{C3K~12xkRi|&U@hP;AP{^4 zvI&|9Jr03@e**6V>huS+KI-R6xH3U?Q>$9=0wD}EBN1}JKyqdnl5`IZ9^IGvA8L%k zKx587kuH|x&6>{YW&@-rzV-lB?EE&0h|TZ!cQUhBkd6TV1GkS7?OkF zg&_l_7HPpibP`~aR&%Yqb#Fq#MAgPYz<}rtw(N!FF^XiZ@@bY zZ#oK4=)%-3@`v-iQpfqB`7N?I8Cm8oGn2O~xT-)+kmkGkgZe+sfR?5^uKlEWuSw7@ z*Et$o+-LREI;u{qtyowc>O;y3MUb*q>7;a!=Nj1Gs}kb8OqQc4 zQtmepiN|#}09!ydpk079`fP2l=A7n{CQHj&_!qPmhC*$^!U*%kVB=2X!^Q}s$M|&^ zE95bl6087J=rS}58cV&m!5sZoU#elM8Wqh7p3>ZK^u(%S6i4J%iW((U{Zr+s+^RUC zbkP6}EY4O#Q%&%~M+1i@)LzyoR2j+u!`o7|AV48F3w9fsiAlo85*!FC2{FVZBcf3> z!3g&X-HwQdeS};!7(+u1#D$BY|H2z^MXypXSB%U@&A&8I%W}4A39C7%_-&LB2-^;@1#-afdJx>h;eu}{1luG`wmNo>k%Ym4T6D^V;~0SY!~`BF3dR3WQvfD;z7MYOSCi6 zyP}`MPH~6yy|QG%25}Jk8@n5mg`r~ENH!3yREW#?8@P`qi^jks>Y;x}A>7|Hdt^o$ z3!ohS5eGA#F|jwRHD5=%K=QIkHtRG|5Px7yV3&YP3=F|@U9s9;g9i9Qd!gYVPyLMg zv%Giqtk7I^NAg|u5Ksn};|b<-q|&jfSQS9oNe zshE{j$#{xdWsUr{46T|3tVWI!`YrU70eX@XmTqd-V_j#m9J!z#6EqELy5rkPtv2ae)XzCjFPnHV9N+g3 z+kF%-x~Rz1^l1GJw8Bm8GSzFpUto8u%IR1)JrwPNDiT)Rut^)vDU`x=}_)?QWONMQc?wTDE*n85K?;q)N!}&A`gSK2C z&wU*(Z;q?ETPJ8b-TJKi;M6s3IWdQ9MN4#`*d4I|pzi8~$}CMZFa~Zgw^Lu+@6Vo!SB)zMQbh)?58{RViO(i+s3+}F)OS=LM=I;H zVJMmZ(!yjhL<^&_|b*Hn{oVnGpt7$XI_><$bGTsDg&f{-g}cc}PY@F^=NC#fQLU_h=%r&x_K z!UL8sGWLJ%B9A{uqdleQ)VQr#ii`S_~_c?BaNhyy(wldkrK_ zZks<0Pc|c3y)v0WG2m>}L;Oa38|EHilT9>pi~IkW2Wf|G{D{vqgs}sSj%B|Kd3ip? z@0vaNi7+H-ojrrK&L`aOAk)P>4k}Z|3AYU%X8FPIg>IPN^#{u5~jNuyGka4KFBYD_)tM`4MgDke~knt(Vj3~A1 zRk^m%rC_p9P%i1=%%h00c9qVPuC?AuZU^Vj|7IzO@RHWUEMrPpRj!|%l;(Qq1nBeOb}Q0AZg4xO2D}PYVU}Ze+qr}V z^EmA%3;5{aOG(Dv0gTL54VyK-EQObhlm=HFY~Xi1^{WeUaLs*xXC-Xfz?$6NZf@plU2i|!yCDO=2dzr;E}!% zKt^A+NTzzxmN~>S-g_i^Zg&)!ZiYQl-QaKQ&8X&-6#UMs9BlqL;-$K8+~uHQFXB~7tVCjt9pjApg2zO5W>igMU zKd_&7Ql74j(p_7iA<9j@*rq##I?0%8y@CSH`QRPnO+#RL3f1K2)}pc#zifWLsl3=) zJJGKzFb#VhBCi<~O%VdkjIW zyD?|XyEVq?8||v;c{@s;nO1Hz5JG>$b%Z9XtqvcU&8`!kCIQAl-5yFZ5WPZ;;(h9@ zD_xYcF30UxZPl@E_{>*Sv7N13hsPUFxz{%L5c?hi8@NV!M|6Lvr?t2B=Wyqofnr9A zjFr>_OpM{Zegl&wNj%B;(?M!4yL;6@GDjr=XwMtSs>8@1Mk~obo%Aj%+#9`#f$@IL zjz5X-^*_bF!y|Rph1lG(Uq`E%owvDWU?`U*uA!& zb*1e=Q+MSMAQ<(R`5}jG&MR$sSRcJmx?c2yyK+2zIBukNDt?xteq%8AI{VVh~}bsnEw0Ci`&A-#L|L=v+z2jIqDH+q+_M|J7~7TR~*C(nE(wR9Lyhe;y2GH zY2exg%{ma2P+*(QNOK$UIvTh!G|CS{`;6hJss&90fckI6tm5h_mv-<-@*Eq%AcLLx zPBspWc3HLu%n|5rz+FwKOv#;NJ9QJr(j}exH0VZrD%qJC$hc!w3xBMr6#e8zkHz#? z_59Pnek$7FEjBasVLSvI9I#|-M!c(yyPMC4K!)EodIBz3mB{}vSk~xPQl9_z_o~L_ z1BjXZ5SC?{Bb2d=zTfV+%}$fU2&sOz`ljqA&#!N5JF9=G&|mEcEJxZ~Rxr$53n?75 zwfesq4(H#IaQ3Dyd2ho+jx-p^gO4Cypzn)yKfQ`Z9(bOsI|)UKk(ni-i-KyW*(fn6BRbC?Q3I1r;H1 z=KGx_uI2XjxN5^|og4=au)BggntMo-qw*H`J;G9ACSj>*9eJ&zFJr{Hm}T$P;br8Q zK`2wV@|^nH>r_R5a(#+p>+1)0N~+N)yJfB%R|n@ZyVF*#gkDgms!a})I&our7BwI5 z!gD*6`wgYs5HiOl+&hMuXKoIE>o#KPLwoAuRmH;nm1IcY~C_FHdl@;wH;;9oX=BHR=Z3$V*Un>X<~IS zop`Q(1ks(>zeM1xSqXn@a@66R*M47X7MS!K#1-=UE!wJ^-nC43nT;pOpabUlAO*Ha#avsOrNL*U3fTuLuFXcH!fcpfE%;F=VmYyQ?8lc zBpM+<>NYBz)kZqEdDNJ7XLt{pV=w0eALFy^CcM7;-*EM`x&y(9g4qum+vpS;A+(5X0!KtihRak&bmAw zpxKB55;_-_O$4<{TdoiPoq3{D!Q%xj=q#zRD!D;*j=4|x5g zR>FOi50%wgd(9%X37CxYL`6u$*)t74+fGc3sNqIoj!*njg70}GTg)jpu<^ykKTz2p zT6T#Mus0?S_64q+n4e8AYaWZ)3LErS8+#VTZ&%=)>mF06GH&E@fyoi_vKA>8zn?x96b6|^sYrtGkoV1m_q~=Y1=*WI` zva!zjXV6p_*K5YyO@6uiOVOVn{W&YTALv@m^T{$RjrnOpF5vM@`}8eEw-J%GI0z7i z3&c4EVKPL!J2#bo_!Uy|wKr`3Bo0J&BTI?Nka56K=oc6j_;leua-->06A)5tV9>2} z>3nY6UzG{XGVW4n6`AMtA}lDR&=HSVF|BP}nKzX7rMyKjYTQD*PT6VRLHr-8TNf=o zuGo#Kc1#KJkF1GE@v*l&qOKg8tFQHgkenrYaOIj)ErSlzpmSb=ZLa6-ojyee!6db-q>Rt(y6{n+7N7 ze*`+r5rPAGYWJ$K5R`chQy!GP73Mp@pckPwl{3iVc!?l5A|!NyjtEC zmS;;FuF1#Egd~5o*5F%V0=Gf#qryz}_Cz1s@a4-a0#{Nspa@P`ySkyPU;@V@d|hg<86Mx;f3#| z#jub-##w@4AKLeC{gS4GL$aA2^3eH*;u6tc;zCJ{vKrQ5lj(Wc=Kw7b{}jyB2Px*H z`*a(y1B6?8(N}JMP;Ng|*HBm-UZ`rynrEBFTD?KW%f5*! zqz`~rL>R@(O&W46Vt?pU=Q3R3{K*kvC#J_?{Dz1wCU8rJ!Ur2CKF-LLNwDRX0WJ&f z^VBWaBfulNFRD)p`-N0&fyqlmpAg;gsD4c!No8!6;N1}N*t5m7Wu7_+Z62t|D+hE1 zDUO)oY+j;6=S`;NLh}WgDbE?<|1eA$R^_vrnvB{hPvTw~?Vo^%_DX7nHbYCB$^AJQNDW zPLec1*5IL*Uyab-L(?+(1yC8$kM`I_MSE_%2-yH1g9d@Kkm;mMyC~DM^Sq9-${j83 z0u(OX$=Tx)O$=A?<^4~3OuJP*tsHykBb)y$O&5H}6MHe^iCUNy#{Il^l`GPj=HO#H zYsSWHffZ}M&hF*KPwgGDX;oHw*ZtkE7yOb66&u0dOk!>AtUZjlm`Ut!JdZf=|1CbG zB-mP>aoderS(j{XkPt_z7gL!>sKO`2V$}_%Uvs_jP5)PpLU3DZ z1Ab-ll$=DqVxcz5BJ3eHnYdb2Qx03NL4@-^wDTL${d@@n^WJ)cRRmPP-PxZsi8i$2 zl&WdkXHXbM3PI0TaPl})QZ}O2+L&HLb+RZoIbeC#zSa4*^8?#AXsoP&qaIHko$0M^ z+0%Ay;Mk;ytD6Z}XdtHBtfZ1`msnWh$*8Ni5R#tKV=YB~5xiLR6@7vD8tY)@OyqLyG_RN2uS(rLMto^r1bWn_K;c&+AIyZPpPk<{sHjFHMFO9wYAk zCVZJL3`*A@5PuuK)Xr;h={qRM)|+581Uuvxov%6@gdmb^a%qK5J`P#NXB8G>L&NK4 z^q_x?r54}Or-gydfNBIgO!^e4Unp11iEJhxkFkX>7tr`WmJxIl<`D`DcN?~ou$@}W zg1A!bEzp@W<|B6}Wm1VoEjQuomO}nAe@XXtHSyAV zZFX)q-mABrdnzEzEYk=uGe$eX_orx$D=PAvzfYc1Zqei9alG-#F;TAWC+eZ`e>U^Z zOpjQXal0Q@o2*CeU@o_PrregAo|d={9~pI@nNl@t(q^7?Rg}aOY^d_>J;sH}vJGY@ zKh+N91?XL?J+8feT>z2sggA;%F z&!^bDs?%C$y?k;p{B{jj?=bv+4j?_%} zis`cR!o7XDbvLWvE&d~k;%K=}@}KyU{1t4_%#wP=5#aidm$T1S&kU9kEtOV`q)7f?gNh_0Ob(^rXQRAA;L!nP;zc3UjIQ*zT?J z{_QPwUqU}=285kcxC{4jL;2rl{uV;UnO(zmH>=BO6sH!)$jx| zSHLCY4x?PlYCAK=57*~z_g(M1tYvo5*%Xq+zet**nfGpb`%KnM{$yo0zV2Gtv-0(A zVUr(R z($E#wU{}Q`53hu@0Ve;IJdqD6&gmH_Z}Up~O|D11FL>{Bk7u1_U>Vg;2Wd%G<(Nh4 zplR@+fSo?nFiGQ@jy>(RZi;Lo_sxqA1An7u&_Rd>L=9n`%`N9=o{#+aJ_#%~<&$Nn z#VNC3lS@V$P_FXKLBnFGcBbiR&x;}DKv+AdCa5~J{qFe8oWK4XEC{(3`3twrvddwV zW$l6Ssxc&xznEVpWa3WY^Y9WwVQt?`O<#F^am`%&Z8##dX2X%ULQKvWQ=L;E{q>!>!ew-4Z% znYch4BDlMIOR2kW-M!tdck8y)-QC^Ype=R7-61#xLP&_)$a{b9;T-;hOlI!AW6$&X z<}A(6tDM!ez5S7LtFo+pk#co!6aIwFak=Dv-Y3%E5wI@!X6W_Myr2@_i*7Fj#q=cN zre&V~lUAa^yDqlOtb19tqIyNcU#i{KH26F6jnJcRBrBaPRJy(LB?YbvznmF3G@h10`eJW11?rD!bf81ft)+iUO8XF%xOcuuW}62rq*UYp z1O(l2}HJIJaxytG1#Nv$+^_6^+eU`75^#Re;1$-A?q?3a&kMe<(?`Sn2)i2PV z=$Wma**&8hQxELTFs`uO!wx_nD5IHbPNwr!?o;kH=UU(b*D^2CLn%?vCQN7_V6M^? ztAje#?R`4r%2moWomW&UHLA(fms%U~^9YCjg}sIQo|n(-<$H-1yPR-c=dxX}mvfC) zj}*f_@Kcxqv9Jz{7`WvV%nZ8%{e_jHV;w<`wO9o-kJ>~3L>JSZQm4{iF=N zw8h9yVm{hqTW5J}RO|A!4>j{OPc>V$TYCLfD|wt%e7ksB*W6t2l)1c5JiD?P>N@`yQL!l3^}2cUuoSj-j=VJ@#^tgEPe;2KH4W zNMbdE9Q5(TOS}Tpp^0dQgW;HGA7KC2ei-~Nu(0l0VjOC11^aH>u-bSuM79p;%H^~*W`JP1muskdfe~hc~H+VAs6x#^I`AfjE zYbOnZ^1wcx4E(2yKu2;1bsDKQXM35w8)(%@j&uhL%||z4YRnzDR9k^{Iu)dOyMY{D zHqh1lLG25K)WchW=dB{2A-5qjkO;&KK4KtFpC% zI)GM34(1HB-7CP-y8~3`G^hq7Ixhh38IR;i_~VnYTGWCb1{u-{tQPz%#@?cNs0}+$ zaDc%j0ZQBwpugV7hk*QB9Y{AX1wP*qxD?@nqufCWqE4i4qvRuT@HZ$8*!hzXFQg9~ z3B3gg!DE3`wHxvWTIFlfO6V*ci$oz(;MX36X>bil!{tL+KpmR`(zmyP@5>>fz?iK7 z8X8E_#-E`&dx@>iy3k6p?Y0j{6-i-&I+Gdd391OA) z($Gr|9|zxY*HH_E?rLC5_XjEBAwc;|2MR9>@k6E~%aOB4B~pfbLB^5&DWfShWEMFD zc@Je1a@-D{-uH1hIh6Jv;8>P8%%}*TNt`F01*WhIQiJ>j#(6x|LVW=|>j_8}u&_bW zEl3Lf1hN5y4hK;8x7cjJgSh}+mLhsb`{=5P0NOhPYVSMb?H9BDLE41XaH zqi&`yr^J(^5DaM76NzLz0BZwd<&=G<{gr*OqaDofztKu`4aNqk!(zfjNWcs=faLf= zz{EZTeFZgDbAV8~2zb03K#Ey1ke|Q7iEtnUlA3|@nh50Awb(i!eD5H6LVBRr^U06M z;gmNN61A0*MLA3nP!5pGz$y>|4~G_z{E1&!G1>?H>39bu?WgEJSYP}e$m90GNw^MU z;)_8l@)02J%>>WM3Zeb*F?b-X0^<5rXbkiNsKF+jfh*A6juv~PUFx{%c#fK}27D!< zA;ypjNC%-5I0uXqFXUf<6-_5w5Iy_`at4Xi&qzOs9rzgR1FAr6;KvhNjh)7Z0^4^j z`WDrov#_Q35~2(E#BHSC&>q+sd4sGWXOYv$i;*?(6v%`02mcTIhW-Y7YA_gkm%%!b z3o3i$AaR=uoXSj+6r_YJfXTie)PPBl0mv@oCh`}u2wns=lAe+_0xvg!ID+HA?afF3 zMdMLVbS}!my0B-!ok<4?-AjSPeiRtnBM=HXkh~r^)BiwiqyfOaJrBfGF8&Q`08*a` z9|%&^pMeB$7veU-1i9%bunE7wVgv!o zRsb6?4rE*)Kv-lESBX2Me2_LBgv25Jfs;4|WD2~1XTYf-6|b>X$jCZ#iVK=)5ie4&J{lo z*0X0=KRgFGmM=kmdLCF^)_^^%C5d4I-VWjzH-mZEhwOk)17-C-sD?ZU%u6j+jpYJg z{xzBejt_w@1fT2$k_W}?VZ=2-`{AFP%S zfUb>UN-PXN3KY- z`U<}aR;zd^yO3$_@flHUYb>k(kBehP9W#zS4uMDXb_NR+$) z%_c1awRJ=B49pFqVQawX^uvea(?AM)8b}8)fNPD%;QXW}&VV%bSYS-wftP|=DMi-7 ze}Kb$2FieHp#-p^X9B&u9VG4yB{;+rd^<4P`J@HVZy-R&f%Js^;2XY!!r<@lZ+IO% z9sUQL36B98d=Rjk?-4e9C!UUf#GMIWV7Xoaq9hORK`)~WuqPoPz(#`{+o50%8~`Id z1^oAU_(R}Yp95m=G2r260eRE{g!=E`h^@t*gL=r__z#d3Pk?V=BEABvayhgWtRCaR z*kXazWd@K<&jUgH50HT;6Q@Cj{Qtb>A7Bfgk?sKd{W%aHSCbxr8q{0xS;!Tvw$TIz zR*48=5$P~+p(#)p$Okz^;P_j-3*Sp{NOICw-~(%c^V~|z2iIj4Ko4F6O!J{&or@wG ziT{A#83`QhpWtd?2C#8YK|PQsFo3DB9;iDR&`luLU%;t&0!{^Ucn-KKSV}4bYqTG< zgJc6|l3*aJo&`F4Jd^}X-%321AcHiDIv}uzL#v@Bq{VnW+K7tr7-BS7QzW2Lati(( zj|F?u3wY48z~@~A*N-c~@p=Y@gPD66RPOF0Jp~!{1MqOX2|o`y-=#pqR{%R51Gxfw z@#FXyu$TJ~A;4FUB&{XRffV_<#7q(m9Lvcd=cgK+_2YrE%mn8aIvfV4K*hu?aL&FC ztpJHGb>Nt%K z4FG$k;Bxw}BbF0c?>4xW7Z;M{ou_2#$jm6Q6;+Itx9Bx`FeQ z73k#@k`q4G@xyk_UJK0UnM4Oj$;tvY_af45XcZJp97Xp!W}rq)2G;zO;QD~T_TtUN zR8lf<^*^9%v3bA|e+ssGBZ)>#1EU9Io4`?UFHp!`;C5s-rJCYS*@5JMx~JdZ?=!$v z@o?bc?!=U6HufLk0j>x1KsfcKo}~nnM<5TuS{wn7B5tCK9K+EJpr;2w9mGBChvO7T z5;;tag$m&q@=(eSiV9(qc<4(z7kdRw2FXum#@h-jn;sL%(1?K~X__As~>8ASRA`^%ncU2bJM5{X9mEK&&E z>%XvMAbHORBE2s)l5!Rri2b(b*mt8*gd8}se#jnhpD_#D3ld}OxR$gT)UN)Z97IZh zp+5q1Lqi>l?M?O=EP*70EnxhEfHZI}TSer9(PRaAH6fH=6esdR5(7KzSmnq^M}uqP z`yhoT7xMub71h8pT||z94&(n~I5w9!2+c(XA|oI(IIoQ$PQp_tMrsD_Je7@{!p>SB zSUx${LnA<<&@J)`C=O3SYaFjp3zql4jBt8C)+2^D`2zOU8fxw_F>HM79ro0I*Wz#e z=`dne#|Y~N^H0kTbQDreU&f4~N0E1uN`Ub_7~FgAM>^0lGu4!5j<@si0%#bLMo=tG zy-#!sD+e*KM+kGo8~Aa|M@Ty9e<|yH^9pM-F`vd~R#Cl)kEZ{?EB(Q`S}TVXMt)D( zLG_}2rX8Ru$Pj5h`Wa(TbWSPa6)sGEBz+zhVK$pC+6yp)W0K{9(bMeg_zhCX7LxOc zqt@^GO@=3EU)EU3I4_N7l%$mXosgLq>e$+0>S?Ovo+jg0$8L0r`CL!FGFMsEbJ9AJ zJcd)qj}$+09Uvtn0+(AnKId%U0%0KF0m93rD>7h>{ zUNh32eYw|J2goy_PHMXFo6oG!%;1BbuXriYP(7`4V5_8MT+5QSvt1js?|aj`O|9z2 zKCPKO6zsUuboXz8kHRKJBu1o!Ee~AaIm1Q8r8sZr=5X_w1JQitgfjP^)=%@kZzz0Q z%WO8aZ0d;Bjzn9TV_ojLfA=^io9yyXQsQ$W@<-y8gk_-MsNGGpo84|26OFG#RC2w&0KFj*u@AL7@kH9Ue2iPX-~8CnDk zGV(9|sQ-%p+*-s@u#{QK7tKix39YWZccE1xOCXe}>NjhEeLzG12Pv`PXJn(9D@iAT z-+avy-f_8LLSaUG(iL=#>8T>2C78?=sBY2S8YA&03ib-?2 z;e3}>N@~*1tMAQg{9g7o=0|2OR5MVm!7fr=DTj$b{0%vszry!;{G!3%M)Ss=9x-je zgaogEzqvB2TFGyV?-I*F1AAXvthQDi-28XRzxnq|R@PKC+-e_VJjifJ+ue_gBU#zxkyIb& zzHYH$l$7%RPg8}lsK46vU)pKCs4=K)Wyy<*vYMV+tolcJTTxQD1+#{b$d`-csXK*h5t6 zndx?byBoe}yK9?@oDo=kk4K9VXT|;#lHj#N?8Z1}DQTNlt*8oYJln=-8CP?%xF+vh z!IWyZ9x*+|>v!b#xSw&4V#~q`+<8tA#R`wYYSrgzCY7$LyQ=m?7g5QKm!#(2y!NQh zOx+GMZj3f#q#S2A@k%Ex{!O<=^Ujh%Crj~w#nC4dS0{Ev!2xoKk-Dwdw_aPyu7Voh zHtwl@TkKIdqy(?Y>kP#cT;GIWN!pwAGPWeN$Nd8<$UaK%(EaQ=*fh4htV-9t7qRk2 z2?d-5q#Dya!%53-yTUBd8THeM>#T5A4;tA0w1wWKw!LSCO5Xd-3inTJN#P_M4gT9j zO4M~6ukxr&Qs|om^?k};7w<01s?BL1Z=TN4`@5yE2R%v~8AJ0dWC>R4yHEZD zwrQqyELYy_+6%nfekIhpd#06wAAWG)VvjGvt(+Q$2j!Y=obtcQ#*$Zc`&CDKuc~w{ zYum4xPdNMgB}aKCl%?$McRFoQiaPX+u+fxJZT@-e^Sv*suXn#*`Zd22?O`ENT#kenPd>@aa_1LXjxFBuTJuU z_0c-DB{5g_Hsay$2d=Lxf7UCWJMK&W#4Z@HV<0>APhw3}q0d66^Oi^L;;LKul!A&n z@7_dPsIId$p=}Rvj+Xfii_S~f5$_)sDz{PHwEXf1AGSTIe9`{Pv-yLif_Bv9Yj9|v z2?NZ@%flb}yZasVP4{34HzAWWZj~p#j(y|(lJk1p$7zLYdw%eeBJ29kALcXCca+Bv zPRu^hJj>6UV zQLd2=@6)V>y*`zqug6|(dqH|1lryv8l=(GpW*9UeaQMVQ8lb6G#$O8EF1yF{K=-Rt zYv<-{`ohop_;L4FOYzvA2+pd2>xsh$<&D}qx}smMPb*Z?cC^$vr}q~>|9IW*Zh!p% zU5d#_sh2GestsKdzCU_N%&dS3oEw_XvdqshFP=O;_VUb^U1j&w39OsJjQ-ujb`L#0 z7#Yk+yAbu*4Pni*-EWtbjQJMzVfTkcpYpyBEZM0_rGNB398VrxF(z)@t$`zgkFvZAoE5!|X0|?#FjQ^!=|7Js~t zEN=7Q&7-akPKur9v5C3Kw7uE8)R4EZa8Y?hoo6Qn-681olY~nnTcgfJ$%7JHevwXe zf31CAX#Fk!(Eud#gB8IlCrBY$s@L}zVy?(<~! z3vSkr;wjx*$Sx9PuwTlQA(Ej#Q}DnOqG#|X&A8f4d2fDY{I1Fsl*PBHv12Zy0*^+Z zF{cweV{3imIIB!ETDz)i%36y0=HWTI(z=eRIGOj@ZEE1^7*StCe|GTo==a+C9JezO_C$bSLY{_-_yD7JyqGgJ*DTMZd`Ymy&$LUU|H9 z&O`;OC3Wjds|s!vtS>*&-i4;}Hn~6WV~5bgGlN#k7Sc4PrK%Hcn;Y#_Z%QtdJgEJr zbD&8=(3mF4=inoW7y8wv;r$-;-5i(Vy_kMn^S;KEeLi!}lb;X8Z+L&!G~Bn26_f=R zBN8qwpe(W7?Im{~ z?Vz-LsqI&hUcI=rs+Vf_hGwt}+}&g9`$Z0VHSp`eH)&YZEtg39hSu0p{9DkgOAiyC zTR(Hk8aoL{CLbO7Dfw2PMJc!9-UR$5*ox<9<2oW0v&%e6(iFkEjS!!a=Co7%ulr>8 z8-mf~c=Kg-xbjEaq_*JJH_bQNA~gQi=irW@hdM&MH(*PQcao{k!v6RBPf2k1@}}HV zRh8fU5&Uk`(|1qSzN-Q)=+UHYk`o~V_!i&S}y}rF{OK=Nle0!pHK!I!C53n{Rf7u3vZ2W zNDfPk3i`_5gO(|)O0R#>y;}Ng!;2~JkLE$0TWDS$X(9hbJxzSkcVOa+fWx9thKyL! z3)R2Nk1Jf)uwFaWYQqN77l~cn7fHv>2g-R z_>RW#fXBA}V-}z>laTDzwsuIGsUJsQuX3WtgExLyn~;b}B> z59&J7RjWGNQ*BBjujb+6IPrht2I*7J9IrL#%OU=7lkW)Q^)P zSk6_``VeWB-m>JNQcnWdV!u7U$d=05nT(v3LYuzMwLUN8M8gcgJi4V>d1E?U7(gAgNCMeUlW zS!0l!##p{!t0;>Y$7#dhP)DGCUuQtm*7^*Ew0T?mydJT`i}l!*=h^9#5VSL*E-EbS zx!+UIwQe3_Hr;Mn+`Xm^YRawsQgN{CPr0?yrDk=#sr7MhH$H+z73tiiK@Y;+!-fQ? zy;QR4ynaxZuC%*O1NNrL+x*PdL$XsVsg0yH)=|Cs&ezS;>uGgU8cwxO={<&TbUG=o z^IH*;9{D-$Xu_^&ZJ@7bu=E#yI0e@)YkgkVzvgk})snCI+wy3I?@P)mD(llb9p;3K zI&K-qYdKvm&BN+e)D<)~wodE})pN)bT(|ol4BHvqku)_;+|L|4J+Q_jK+?eJaWK1T z>o-?1%PR`Qa*a9r3WTM~%Fc!!)k3SD{15k!d~lFY^w$`E#KIu8Z$I}HT<}aoMQ(bk zc-AOyozWT4`?qx|eg_%?Gl`Mri0<%KS@W3IH|^1#t27SB5T|&LsF3l|QxejX2PFr` z^$jt2Y!yvr1rkejvi5=X@~YUfkwv6}m4*3bgKB>^8M_)R8d@I_%|jCSAZlyEzp;v- z8}9wYS)8FHy@m#=@3vIFtnN|hlm({6u$g|BmF|Q(r!&*h`kp}@C)+1>pzTY$GEL(c zc6oFNKlVeSIY}8G9kJY327rm7ls+1=7LRaY9W zwOnY;=ya zUxeQAm@a!HpFE7-VUj#buz5|dx90DzB;|F@2aLp_N>2C$g{}_Y8#LE@jC{JVKW)3k ztDD}=X~|SnR(Dnj6}Hw(%Hy4TRlS-whCx;V!DS9|VS3*Vnip9Ue=ad4685A!C%~ze zyIuWjrA6WScMHZ9*H^VEspvH37VamZQu;^!L6D9-G_`4Nb`R;=)g5RmhrPI$vkJHm|W~;B#-yieNVvO z;cw%1CkG~O4b7BJpzpWFcOP$|zywNg02t-<$}Uq82DJO(3=Y{XH+&d%?xhdUxwOS(369OxLOa_$kS zuc$KAWxAObF@AutK~fS(joFhJ-3LzfNje{Nk-rzEsVf@%N>68h`TZ-evD8w_>io;G z#A&!>r`+hi+542|TcJO>&hkXh)qU!nVvNM%=|gxV*9C5G-BVomvHFsDj$G?drPM`WmpD`pZAeyhbNtri4N2s1x$7;0roNzP zEYAIX>StD-y>d?zRkhQqVCp5CJ)OOxJmQ z@s`XKxG@&Pec*NEzDO8;+CJSu#VTyRx`Rq>(=0`1?TMNV^-tQK^?t-))-Fj-;N{q= zq&rFT6COmL@VE1BIBL50w60g!swP!_sD0P8vdyb&x*-cf*>$`sLB061B*itA_n1~d z2+#wL0CWmE8TG_#;Szd3wvrh@6H|PsOnL`x4COuKOVF@!)*sr(?YWBY)urY4N{5#7 z>Nd5P=?)Qg&O`aOAg^d++{pNUVuyznyS3A=n~!v#YOSt4TW+s7THo9h+?t`fW;;d? z;N^;Xq;e0V+W?n!PXAHHptFoKdWY$58n;{G9s6K^PNn#P%wHZT>nCNop5Xg2Z;=jK z<8*FaKf(NZP*G8~sob-AS;MT3E!y*T4()`XuSZGX@Q9G;tSEZEVCV*=dpz&!fIb z;FFO1A!;ACsDk3{*l)0@@|%Mc5ehvJpVv1I=qbWR&|Nr_1()Rgybj49^A1ptpbPZ7 zRjysvHCxSRu#wbl{3{-l1Lp-Jfe(F_y1~NRv}5)xExq$cvtNB^^}R|;)%NPTI$FzL zUAQLCP-H(rap%96TYb1eJHqBfB}Xq0?e*~BPo#~(wTAXiT~lFQUPWw4cX>!lhOQ49 zhn!(=bY1UB^=xtd>Euq1v41oSG!C-mU>~9J43&7e@5rE&ej7Y0qkj=vgQqnXGeNP;>*5(+ z2mD3;TfF-y7_S{qrpurjq~di|QFQyq6S7fp+7cN`yxv9v@k>bk@; z(tlv+wWy$&rD0n<`TXq^tu;$^Ua_P6QGw>qzrX(~BosO72bNU0+W9CjRQvdv+@Fhc zn9bM;v(h}#E_3X6_#(Ny$sVhGUw9ps6XJo+!DPO5Nl#H*V#D$pMb+He%Ek>q10oFV zj&;aRdId9={gykxCBc22w~w#Ce|6CC5Es8N*N@Chf@2)ev9LD1EU!?P9rL@mpijdn zO}*6!?RVNI+wBc`E8P5D&asAJLkv_s)AZWZXriM=`b<%r?5ymQWR|$m*+|X8oQ&CB zj~bcP)^d+Z-`eCxs6AXg%#=)gr4C{~VOp90IGF_FTmz*IvbmmoKh!tDquAvVS4mxO z@77S2VNKGiu;TF2?s{X_B4a9klR3lXpvM)jUT{oZcx%WH?JKNf?4|Yr;5l~>yH+yD z>$CT4Pnm2w|0r!F`n`8X`;b~)N#8=ZqRz5;wQbEyx(8W4Ad@+}_(udLzC?fuOu}^G z1_2?MC|W3D3C22u95qB`uhCsr?QV6g+gwgAFRC5cK0u4uN|EPIxR@lnFPkqJCK$}j z0J)E=NlhTf@d<2U8AQKj8hN#Jy!e$<1m&gUn|@8#?#7{2UrTqCdR1W6|29ZFzG%nU z^ASDspz|NTuXwoRku*^{Sz0ceEccaO6#o#6;T~jMB;B{(*X4BXQHaYg6}OgduO85J zMzzm86h6nEE^3vXcH1uz3wAplVGEdQ$}8j-Rp4}41j#J!|9F%r5?(*O_}I|8+6B`a9_0zi+FB!&oB)hopHPYOg6? z6Ftv)ioG}}dgaW?%Ci}Q}2Y71a-(0D}NluSwuAp<>&9JpAr{V9)JEh5G zk1ChfUu(Oi*<^cyykTDvTom6FjR*O2i0GwAB4~G>%e^6NbhS!CU6+YI@?zQR$!+!p zz4zM>*7=uRDq!Z7fzWu!yx)({R zg<7XKv^dg8+ezJS<>vbS<)cfUl#Z@6*74i#^nQ1+C~a(!;GSr@u$aGHc-|!gRIOI< zYlOF4-$`#t$4d&tWB52LiyVu>dWmwIBBYX4GO>_fIHLG@`INdxZB^Q*_Laytrj6$$ zx!``@%j9kH+2^~{r`prUy;b(NYbsyHoC0rfxEflNH|j-|TPl86<Se4)(Hl>=GZ z!02$k&l}7g3_7_YUDV<|!pFjquH)sX8}8=khDweIikUAVg~eCBsqtL-{DNsYtn4j0 zvkII+Du+i~xi-}iP9DzcHGPImiHMqX9ElTqU*l4q;TUnzy%bgPVy)I<=5BW~{7WW|UV&AX6qrCriSGdmM z9ijUZ-lmbND~$&#X~k3XH|0$(m|PN471Y?#Y0%ppBgsG5St7c-n=d^O4qg}hBxq$o ziO)a}Tv9CPVP{cp;SBR()yRgm6^lzxm(8qP!9$L(QqZLCVtluNAAxk5xUY8_~2~ zIaNn@%!04eZ#f;}PZDev#EO~Hl~Niw?lWB0$Rj-B+_Po#B%eji&ZFtG39}JI0oSiA z^DnrY17|m7I~Ar^#k4Nagj=H_HN%HLP{Q;G^BL_|%oHV=?$p<%z z`(pV^smY~;|Ah4n{?BqmRiv0xwj{qcyX{YW&i4Xp<>jWc-3Lt5@YmE7=YcL)+&VoE zc@6Z=^7+U2r1x+4rLuU}EPga|Dv4}4(i7cszXHuWmFis$k&2}<_8{_)Y-RyP5tz3=-(dW3ej^?x{VDNtu?ZyH zh0HIo1?0`imUTda*R2v3)faAHNWmzYOkaq z&U3^y@>$-UegplZd@H=UzUTeU`IO235tgyFWP|;s_EP&_io+FO3No{kas)-}>h-PP z^?N7-UAFmr3jP+pC45!DVp%`#V}>_nE8zobzl+JkoiXuNX}oN$w8|xqw}^JY7NrWW z-(GSf_v`PhUvsht7wKw7DIc1?z!N#`!hfZMJV-v1ee=8zcwY4U?z7kbv#-FtP4tB0 zf&`i>JNR`wOYUax`*!Kev!5f2$cigHGRQ8J_~nIZg&)H9`wvIJ!?hWq^ zwYZXB@&?QEyubMRd+(I3D2KVJUy%W*HcQ@=`Ow2q+`b8B7FWn0{K zc=ULdcx;l}B>B=o?tgj4xeXNASV!S?=8g`}>L-QtT-)z{zlY_uR}SmAZ+=c+Ab%fr zBH?_}jfD2-B>|p-I&`pRn`%vWhsbd1ydM|L9OP^vn(J{8_aGvSc z!{4oWkIIKMC25M#TMQjPTC!iRk`0h>UBe{nB}-hSq9&0=a!p?9y3k1g*O=7GPgTA- zN4}l?di&eqpDzoN8y@LyAu>@|peSi%+Lu0a;v8XLynNU>hO2GUTbFji>Rr9R?H3sX zT;6#O^7HcHNg$@5eQ)>XhLxowa*#h$@{22)nl|)+7asIMyr-hST_;H=yME>WcBTo6 zUGK^QWRSea)8<#|bJJxO)n?3ZbuAtDee8$#AIE%q@aJgh-|god)11QHriOZ^Jna7{ zWkCe)J4u>D57O^w9?~{2V;>Zg85~6AnpT)Ta?Un}%Pcw7ubHP*Vso=TOU?XA2;bpA%e7nm? zX_1)6cEv{+LVMLTf9abotgLMrqCJQ^oCsN|@9ogVv46+cgw=a26G6^% zD4C{c< z+j62^?c6A-JXt{b_3=kq(Zi+=^-#kD$0vrf>m1K`-$_C1!=<6UUe7@X=`v>>^sTq5 zV@BsNjhB9#>764T31=Px{WAt3;Zz0Q4r}ygO;(q+CA@*wFuM7EyHoc$-CRq$;|$5h z=n>6#XL$v9-}2iU^eJeT-&l`Fl4-mJNT=>v%gw6mp#L@GNB_L+y1^=U-8isfra1p6 zo92@r)F)CK)jwpq_er-nS3TpGaeP})Gui>EvovBO6-%IEoZ&*D%XOPCnT(U)74%2oA@ zvK_hee#hst>J(iUBZ>Ma_>BKWZx8WbP#=x5V~wgo8*g}S zd5nvxE$n>$YSAz7lxvjbM9acrgzDGs+)o&=jm7kIQtMI0xp?jqMnQ@W*DEY4QC&^)-kg$Ex zPa>8D=J`~5s0E2cuj*5CL2Gj-vxj2n>(~ej=`ozO+(+y>Qn7x1*P-^Ctyi1BH;roP zYMa%0TXW4~12tuc)z5YdzQw5$jB?rJ7Uka>GB4zQK%7*mJc8=ont*?o{KG}EpW2(H%fTk34x`7 z=lpN@j`SP=-nvcDK589Vzp;EZsD}7YF}tg==a%-2c?LX^V;3^qo(CjH2*YH4V?FI| zLq)#idP9c)vKkw!ZCzN~G0U z;>a{-w#x($c~E@Bg3uMdf80${g2zD)n9ms|S}xh91G};inodinPoOSDNCaw*=}88a zGurmGo$~G`%>)D2Qer!VzQR2T79NDphOaS}a_dBoWG}t0`@QvB;*;U|RW^=0iFmE) z-}<_4eZ{%b%*wM(AG#pzQ^Q`zI&7pq|EJ{p{f3G-wOuH*>JFfPY(XL|7**6Lj(xao;=Ncfwgy>6K&-Jeg>7tgsB# zFY6i9RoYH!``Ws>?Nj?E<(sZd_2FKDvBGS!COZ=Ga;QJ`0P7p~fpCYoN_ zm&H*tDfE5hOi~aw&>m^+W2P8`^;qvK?Qczhmgt>l$TvEhL?(-AxaFDkh}{XRCuYGM zijIDVbA`7}FiLQNSK~B_6-S$Z>?8g-j#$^4b4^#w(bk8yv-a~2XRI0TAn9Q`#SWfI z+G*LezVthcYF0Og=4^Hv%b_waPzX{uw#u%tq?%X;cl}sB)9}XNZX9mBZtP>ym{yt} zm>-#En#JbF<`dRP$5HGWQ4Jj=kEKO1WXuE1B<4r@aq3-i0I~>zi4ZIZ!|_7WQP9;A z0`GtW;dCe!RBQ*qeUUkoG4x($0c#)g6a64<2yFn3N&7>!P_mITq!$I-S;|evj0X&f2D72b)N1_~?I!+(e&)LFB;Iy(GESNcgwv|#v zUQ2$15O5ltL7IXOLAL>8b`@%Ih#W}{AM^wI30;V;bzHGcv`jH&8$Xzo<_{Ky^`#xg zW)S-zE6fH}p9-wf_R<_?+G>n8elQ+0Z?;*`k3<3K4rvFd%f3reK*Py{X%`qq<{-A6 za}y}PqqvuxzdA8F8pcrS8iWHA&{KFKvIW@$OG(o(9_Waef>nUtm9gkJN4DMFF18J| z(t+|@Ywd4OLnCns;R33kcjIz=4z>vGu(w&&=Dwz123$`V`kK?MS8X1S!I+Xb3)3i# z)X%grv=-`H+8Ra-E1aFqMu7=C)cGCvEN>(4K6j`y&Te7cr;a6WL9QXkL2rqMB*Hh? zS6U{TubXqsf#zkVT_(hG%QgrN!v_-^hz!u#gF9fyVVl*gHiYZ{(aQ}{h8q1*JpyW1 zEWI|}aATwShPAR5v zvlFOyNE5MG&>?gIR6ir6U&H{=d(@6j!+Sul;F444Vy0oFX%ldo+ZrBC3=Bpvdbkcmra@6|JuEnpB8yOOgjWdoTV$WrnS-wu~ zT#=wnpy$W%E<5Wv0(K=sP75Ya1oo}~HGq!ZP`HQ^L5G2A-9VX${0l86^#`@iT=cBt z5Be0pO;Cw0bd_zg>9Q_NyAE`O=V`JuyR~<8Lyhico0(^sWhOwcY^Wj8NHr%~$&NyN z2(l6g!S`7#b~kGq%gXd+&0tG8CRRKnj2cgVhtwiB5Km+-+!wNe=YE4o#mH6qT=pT( z9`+cfAMIZxfs}w}pq=&uKz^;YUqSo)uagTav}ah7OrggAj7Lm&&Ce_+tdnh>U-*5 z+AO*k1E+h_9+3ATU&%{p9~l2KCo;;ZzmY7`VEjIs%I9p z!dPP^p=)st^cm>Rb(B5i=`a`ahO!_YQbY-3oMesUq&jcmy%1yw9|*Q^b6NMO$KjJu z6|#VKiZPwxLn}hqkQsD|Xuw}oAsfjg3PEwBF=%<@J)}^_DDx6Sv;KqOsEdpE>ibP-(fs$UIWf!tME0XF`!E> z5cDWLAXbv5l7-AoPKTZ6I!)(XU5kEyX0*HT!f+gCR`ktsiUM2W@BUa=OOz5un^zj3g2Xlf$1G9vmT?V4R>AQJctj zDLa`|E~wdMAE(QxV&pmIW~16ONqrc{o#*h!^Euow)*j@hW3yRm(wc8O2EY`$oOz1+ z2jlB^baX2Cwe__h8a}sms9ENrpbN0qw!oC%%hbHkp0xy05aBAfe&CJeIOnUB2aYh4 zyS0sM=6`cNEga2y1Ut}p2ZNYFbK!;wDg5E=dsGXl+S*^o(>2*YGj53k+~0X39^+h< z9GKjK868g8R?=e1JjN7;4*u7Cuw!`@y1kDRN?Wy2jrzjnZ%}34euxs?!P720JkXX{$;8r)exmmZ8$`<*!%K0vgSZI*F z)R1K0Lr1PLj&;sN17Hv#POiQ?HCx?$w$wGKCuy?VO6{=-#SUsDw5|$O(%` zI35}0@r!<5*WK*VdR0FVv9o+RC_N2NRZpm_`u;ZaXV$tRQuiCm4AF8SnV#jC2n1~k zeZCY5AJO;ifUSLQhWC*h$zI)9)t>U<3PwkvimSg1?sBJ_x3?{+?y4Q5>VSCeixcMc z&yRf~8Bg#vP}`x#eH|ohxU4a1bo`9qBO+(~y^7Yprgs}Mg!f(emAjs1u(o$BEpPqx z;VUoarDBo=V{PGAGUhru^oge9q|^Lk0nDUjX$O-}ge;d1rMnoojZT%Jb*I{syRn{H z<7klPP^M-zysF`}ZMN3)62fxQN>d;CeJAf$Gn*$Xb~K(=Poy03m=`uV@PTL_KC?@z zSk|0oddG?e3C>HME|dPzPE-6{nExx}cXP=zWi076Z;bFTqZ)l{^(9WSW$yKnL;AT6 zcoe_RH%@qr{9kXNBD>PJF+$~~IjH?^=>q*;PWpn@JuN=ktH@88U);(eclr>K_L1o#tqA^}n4g>#p6IsINkMYeys24J+#e`VquM<>XuZj#gH)sA znfg=bK!Y=7oupqxZNIS8#eS~H92K+qRl}i%b;@`=Q%VjS9aiP>hP~FF-y`jrX~)?0 zVg>IN#l@bc9nwN7-<1>d=Y7$e=GoS7te?DjjFTY!V<#OIUi63v4v6K(1qCrBjqG8F z!sy-nr*vKE_ZqTdPlH>h-2Q~7BR84P^!(AA;Irb{!55RCrB03D^3CRj%1w>j+NApR znoc$nK#558o68@Lztp&PdFUR%FmEw`GGi+it?zC>R5d#{=GXE3t_GUrBd1AvR~pT) zXI@$-wm3^Jg zQ+v6K#5|7JuYAuZn5^{(j!^er7^<|ilW!}WmOeZsH|##e8EQKm%1%x&*md#`YFdU;~Tj~i85%EyTg9vf=xz1sSLwC{d z4%r4K^b%D|?aItIACzy>K6hm%S8P}LnGEkH!kY~1RcGbS!V){zV7ET%-jn?w7-h7Z z7Hs=*BRM&pDDTckb-NgKsWEvl8UEI1kZ+@zAQgG&~>S9{yO7?gh5$M{YGeXu> z{iyhJ*^Som#0|-PdaLqR)4_`Exm78nlEQMsI{TP^4k?MTjoA?rV>6vvq&UME8Vz$< z=ho9oE;uRkuI01e#b19u;AQJq`=V#^Y?CQ|QzK}fYWR%J$Zm$-yihD|L z@ouZ`b~6lVrhn7N;oj@x?K5?7YX8iTZgxB9`&}bs$LYbQm&|AA%vG+e8&fbZb;_qcALb`@ z72T7y8m{y9=rJ#(%<^AVUBg1zMT2}#+wiPVOIJHxwz(`jC9(1Qo!=wdl5~8WLxNKy zW(O~FsulaT?#o}AF)PQW_M0+;&u3z~?CS;>TK`;>Ijp2eQE2vWKuh1efrI;P3VdT3 z##gkD?<{3Ei0_NH@GrYw*6Qawr1UZ|;%f6=z;5aM8|DE>S#H{HyA&e$r`CwJvi)!io4P zX(uY~uu5BH_sRVxh2L;!mCU9O>igL(M~AwlT#y%%8l4=N{iC*uu`qUW*7`(Z zX4qJ#{rdHal=8Hn*%Q5l*j)rs#(hqve69`_wL?*XrJxD3mwnu zRco(z)HU9yjj5g8nAp-**04s19#G-0-dLW#gh|zIJTUke_is zOffgUC$rf4T=%*GpZlzKn=PR)<93&_F~62(jLE%Sb+oIJyUx4HyVYhEohn(-(k>kBFgtKakGoO6 z5m~;^>>8xM$uF8uvTbcsnq`gu)R~oi$ex_)o76KsymYgwkJaNakHO3P*ZOMA=Ib6Z zthJ-O=J;K3e{M>vh8C{>GUlz%=byhfbUl*B+0Ae{>u7Af-(-MvExl9Ot8rrKkWL-|bDfl1xl;_#Bi%}K(ZPAT2b#M~IVd2mtW?r#6-|HJK69POOfX4gET{!(Rg z!RVi%DF(^unU^arYsXkG4DF2m(96*~)MBE(+z91Yx0UV#9iQrpWLbIbpZ(uF`(&Q$ z*{PJeJ4)SboZ>AGLu2_Qu~hkY%f9OUrBjQil+CLjB+tMkgoASDMs;mtyPx2o^*!Il zp66ohqmKriu{7Y%wY4>dwG3`w*KW}wtqm`FoB2KI+4roBQRQn@6($F~Eh5UhXL{VV zjxx)$Dsx%vv(|5z`!x*WYAxTJd?4=d`#WjjH8Os`*(8TjI}>w8Iv01$oweU(-fi`b zd+M|5BU?>W*NNxkQ*~jhQ{&Y3L;MqyCvMWPzxyqT7IaUx+b`hd6T0>&=V?!B_b5fJ zo6EAGZrdl}Q*wTRPRB>xux_hDbHmU3opy}0nrM^eZ0MQb+3LK=Bvmt|Y*5nfw;x|O zeRV57qf9d#=D5d2VykPYBe{Y<tD>?C4X$n+}`kxcCotbeAcnke3#YW} zhWE{9yS_1pL?iSsOY5j{GQMt2)rp2Cm7ji~^R%Ga$OB>ap2y7=(Vl7yBT%Ze3prD* zeYh)qT>EPt6-8T=OOQ0~kod1%{) zCjaIUok!RP-96@eEG7E-n*DWY#rsM>wQLg}b2uBkI%-M8IuAo*bFQoFZr2&jIDv&; zZygoW(l9$OA0C;Uu3xrVHOX{>=kmZqULxE748I#}x3uqe+Gm;Xi*5nN&s4?bm(u5a zx$?y{^I=tQ&0A@Wxs~~BgCOxRa)@@f>~zc4`nPrF&9~%b)I`I%W`X*vwX5nf3+Cj% zsSeV-G9Kif9pWEe>>uIKpx2Yzqk5w5&&z}Y0{QQLcWjN13iM%9r#e1DG*tJH>w; zM9b5LUk&c<@yr3eBJ!n--O}C8Edkd;!~H8A)Y8dZjv`m#&m_{$ z5<9_5<-c`x`R_AFWX#W7+B8OZ-u{r^uhg$-zm{i} zbo9&DG~;rARf+V8)obhRCX9q5_1PQBoc2eJ!|KM?oobpYd(0P0hUxAlZ+D)oDJoxI z_e;4_>g>42CnsQuuflnj>2={iW{ygruFx*xB3Y_gtq>a0H3ny$#|3$WfANpAoTu7cc;Z`LT;k^qxmVj4N}?@vtul;KMX~%At+Bd5 zezoIl%l@YJ7L41Y!u7kGIO?bHC)$ZR_xdzhr{uD|uV3HL)j`MIV$JV}LRq!ikaoYdP@5VY4n$+5fP67c|OZ|m*uYClsS2fOF=fcj-W zZ4%CYlBO;y8?Lm{BQ1_taE21e7*eTO+|{dTNDao()XizvXEuw=rQan{Y|pk!)n6)) zHEm#a8ZC1<=hr{5)caq@1IA~B-?tD3=}=HzUgtvZ?*Sl$MeQVg7VF7u-gpt6Z$6%Z(FZ%d+l4}on&V(%xS!w z!+js{t$Vt*^jxQs9H5tApfFfzkS6UW$>V#;>#e5E=kH!Um`LOBh(5~b^uu-RevJVa*WL>~kj4D{?fJQw)LoVM#ZbY3lb zp62k)>w8kxo2ocP5AiG0o3`g1{;`cQK1YaJ1ImXKH&o?yCQ$kM6OAHuNUeW!AUc5G z+9=|ap@VIZGuvk&CLSrL;lfU$4u%eca<%3I)*Y=ZV3EWJ6*sX9i^62LxwK}N3MD&_EgL!^m zsmmfW;b-;jI`7{L(&AHoWsRu5%PqHg-ba}0tcHtfn4QQ7u_XXO_=QUrBo6QP?jCNRTqwaY5AINg4t z8v1YY6=vSd;g2Z~)d%DaPO1G8{ryqS#TG|>cc08CWlw#7V}}u@riMDkjh0ItcH0jz zKEf=nE6wvspOg6Ri)U(R$$yGqgBk~W&w8)WZUaqyxwa;cs%zEirfQi1Ye+i^O4;ZR zvid>^RoT?$PU)FRT#kC%`pxw8a`RG&sA|deO1Ycx`&)Q6QGb}PvDoKj8e$rB(sind1(DPtYHVtl(r&1(V>`9x zig9f(>&BKhmasMUDwMtU$352hj|vt9YFuYo?9qEGn8nO!KUQ<6Voaqg?ug&WFwPYG z-dvJYYoi)(^vO*Sa-he%K0bZM1l_R=Bbrq;e6;8VwMuoi!C zwZZk>D08`9f+(7Jthms!vhIAv@&aL2M8=Gq2jv%9CThAQldP7z{_Qh9FeChA?>jw4 zdK{MSRC+<3U|{R^PDi;_yJ6MhoC|64R6*9#lIYG=`f(l;BV3~Th823AF*~MxU40}! zy}-5dV1u@mk&RRb$e%Zyt{70Q-!YB8Y{__Ejx^}AKQhT@k4-3mF(+?kvrxCU`ihK=oZO!TCYEFN2Yz0$uvxn;V1jrNv$T-(p8 zk7b#44jLolsh*3X;s%cFH^INwJd;msCmM?yel;uG4BK}#ch!n2UKKYMZ>#>*5ly%o zwA;qIFY=z}GsRyTvMKn3Tcv(R*U<7yzr*sywY1unnx!V|Z1a!*T$jQ9ime>T+_O6C zKdz@?-yJ*`H}^r)$CrOEZ;8bc#B6OMO4(aI#+d-e#Apr$@ENSYKt}IbWHr zt*F23Tm7WUl*&yF8Lc5r#^vjB*JlM}m*wYI&sOa;4D7Zx;Ar=4VIF}YF2*LSg?HJ- z%5EKGOJ>t*+#bm<8v!fadRPY=OxEjVs&AKXby%FyzPQ9W z%i_nz^w^w=($IR#X7iTy9g*4>;`L^aT)u@IiVhi&6n@|Fp3tLpV{v}o=xSrtztnl= zSW9}TS62DA!CwTwVmdCGzVxr@wV{t;$VdBWk`ncjF0O-?yE0|uX8ykHc-_1bvpnP9 zQDt9c{}?ay*%@gUdDyqnqL^!Irxa6l#@hXMX|aAQN@=G`Gk$JP9h|;2zgO+=_8KL{ zX$AA7N|Vploz54$2Lv^T7zdy7-eWz6n^2*jnU`)?Fsc5y{FU~${6bZJ=GG+BpM15N zH*(k(u`haHn7w10bTK`eIiqaVI*R|3T8g%6lpQ0Q)>S0rjm&>vt7Y0vS9p95%?cyD zN0@$P>f1~@)NX7nqR5&1#@*T2^za1D@*bw=DyGWSyim;VR+cN&F4jcso!IlC&r6VEga-% zVT4|ZR4VGOoL`$;Q1)wemgcuxRdo9`rBwYubA~9F7#d|;>~r*Rw{#omP-L~yD$Qz_ z8KcXx-mNE!ebQHb_e)PN8Ps7%$@Ls{A2F|6mNxn;z4TYR+D48Y@VoC;uU5&Nmic8t z7113U@m8x|Rx`yBZNCc+XSDxHsC6KRTFKo7J_#;y#y6=)+*5&xeue2ltC?1@2F==e z4X;bG^A6_@C{LsEz{}h>WJ%#(!>ZH42D}Avz6K8n7uYg)}Ll%Vlv*ix4{(g zQ|OjjRHT$fR4lG8s5faNx(0V_ZhhB2N;#0fA--)ySXtX-TMEo8Ou~(H4XO+#8e1Fp zmFkIB@tYKt&3Sc64aaa-?z-j(zmZJB1kC3orIT!2X`SUj+8;L^FEZEM?3md)tvyrL zOLbozu1+uAonl?;PgmVg(?gX3 zCFvIBX@ypPOZiqahLciug7LI1l}{}dj+R{0yJYBK(#u%aAW1h*JY47_s1*DoyhJDQ ztxTOZQTu>N;AaagM0+VA|b)rj(hF)U2l~8m^x0#P1W3&|LVNkrK3`^BLuvz!tj|7kyO18k>-^AdZ%ZXLUEhfOTH027R?af6a5hWCpseW z(=E^?^iJtWMZd^PTsrez8>aQs=4#?pSLOR;^@^L?7{W{7CtfaDfXVb5Fw^xRwTKY0 zm1<6*Bg^QR*iqK$CGS#bWhr&DQTT89e7oV`Vu(V5Rnh#Kw+)2?2j+$pb=c`H<^&)UcA8%~4yw~br~p(Hcu z)57l1eddIVXlQ*f>G30UY85PguxW{CZA1M6MeaO=9+eawv(Af6w#-I6NG~Wr>G&seQrGG#a9zo zs6DilCMiQqGwws|BtkG5@FCI8`Laz~OKq!$V9MDwyqE~)SE2jf2Q!MFGX-oX*TyGf z`tmELQJbRGYRhnoXf&ozzT#@w>udn`AG+kp^i#oI!9z?%Hz(ioR@@8bF z_hL+PHp0Zz1;lec4Z7`0W;bSj*0A0AGejzRg5oF_%qC2xyfIgG6Q(_{C-)FHxMj>h z%@I|w@}?p{`ARia7u64v|&%n9zx`mp`k zx9lj)d2|P__MCPU&J^khcL`eQ0rYB2B`)TZ*%s|5%|lHu?J%Z|4I~0FKm0m<5L1r{ zVUuu?C{^@LR3!8kNGUBJ#y!JX$Ted%jQXYeoVr=PS2IMro^j_WBAztEtZ5A$Oq)<` zm}P6lPvY*dU5pVkO#4$K*Cc8KFo&`~=}$irv7C&iD%Vd9>mM}kzUg&4=@vb*q| z12wNO!F!+DLPKl!GM2msno33cx!hs0?gz6f;qB(Q>l~(_GP%Rzv#Qj zLoCKr{|4O6D+ze23OsEEtb(MKq$#Fo-XdHv=hcrq zPH6b0nDv{;Rx*0beCj#QJBX&j9<-_u`TRUc)>a1Ht9=AsW|c^<~d8SS}P(2 z(|bA0Z0>=%@Jra2Ock?@b>#}VBEFnBLW-$n)IKVddQXO9uYHLLnCI)q`EsiEJAI{f(o|C10?YU&2#fN>%yk~l0J670j-c!|zWs)moC7&%9$Q zF|#;|31IeOy7+PIvm^1DxI)gLo>H0A1x(5PNj@OYkP+k(Vif-`ru|OCB;PxP3nie> z&`yH$f@Hw~JlRH?qK8xe;$)s+PU&34<3sFw<|SrO7jgZeoZwHrfq%P7&=tkVFJweXHwBViOAlM$J?y^^ypW2(+4(%#Ttc_zMFlTrR zkx4$GBIr#}K=_V{^lvdqc?u=~%ekJITpGu8XNE8|tZg4Aoj>LiiMyENA4IREm(gK# zJmy`0A&&CHxxVZ*Or?Db4TCk9DSI5V=e@`y&v?#}h59#WlDF*Th!MD8PI@QX2} zel`5#GG^;GV`lIMO!D0Wjez^`zY+8hT1*#F->Cm6hHS_D;Ovqg(Na$;5a*p8d_-V=ai&6e$o0 z#?j-bxnv$DZ5v@ua3AbS5I5L?U%e5ldGf2otWk>C8tv}=vkPDpH4J#C)gl%D0`V*gYR#} zN-wg**qu$(zP(r&P0MW;Q5>S(1W82{sgD`7b2b2GgVv2bHCO?md&8)zF{fqBhN=)L1 za4*!#BH^QXWCfz~ZD?M2QWWKl)lVi)VPgFi;uk-GTZKvTd*QL=m{EO@b6{hb zwamY4Hm672gQu@R9CzSp&KUO)gSb=t22B0$&MVpN>=aHyc#;}K(ovXo?uEJPL&+J4 zyFd6R|DUUV0I@WZi)OXBovmPNxGugHYt$zv<2MVacq$V5D;9JsS%VBV6Bgq~&;)K= zapMrrG~7+>em?f;B@sg<(n|y$f&p|pPTCN<5|`-Tz!%%eS==IRpe9|rifiY6G5xv} zcD{x@LdmGjR6ePQgzg_VQzK8{323%3UG4QF|!`_SXZae3LYx z&7lM#q-bI=aM}QEyymjzf~HDyRO`if02g&>*D#w|Id_O?#0>Cc=$-UIM7~HZqUIAT z*%MkHMvwnUjTN30y3jtn7xWW+_)hX9@?8uSMI40Ez)WZv%piLlNAY z*g(pu-h!ue5ZTBr0$JBa&_TL6s(HCF|U_K@wZ*`oZdIH5Yq z%qO!2-Gyb;7rvg2PNH9;Fig4DqjvHe8L@VN)`qcT_ppbV@mg=~ zL+xQ^1M9;b;f`UJx(Pp)cmTAuo;bu+G6`C#_Jzh19@w13Ok+a;HMBzkeyDkA>2jsDP~c;(fuYV7T%|i)7yod z__8ENqy>_iMTG-zSF=*)wdRC2n!U~1va^{+%|ms%CYp;Q2hicbaQn#7rn;=X$uFdJMdf01on)PUx+C>|N$=~A z)8C;NDhU+)A`Wm9n4{|33T@Y+j-~Bf$^cN7+D#Cyt#`IAQkP#iHS|x3EU6HDd+A&Or_7Zk)F8`I*k<8E?r29hhLnK4K zM?Jw$XIE>LYNhIls#x`xYPRC5Y^Hpg>N2yDn2jtSiJ9jC^gn_=;#Qsgx(2$ZaFcn9 zPJ+lwz>`AEDt^Hx;&i0yB??Emp~70VSKX+2%QlhGqK7)a_44$3=)4fQOMXj77@aZd zVc;XtgF0Bb%t`jN^LU4DXMN|$u4i2_vL&)C*;A#A-6#y#8)PuZFvlRo;H`nHk)d&u zp+w3E&+}HAEO~C{gm!Jq+UB#(_gWWqILO)+JJb?}<6T9^q$i9n8NW5EGT1GZ>6{dw z6b=_;Q@e=}ZXuJd&XO}70qw3G6`~P_`67j->b&Zvic z06kf7lm1LT<<0rt1V_rKP1Fd|lknyJfE~n_E-h)kE_zAT7j>4dNC&C=aSt}w_XOSZrAo=?l95JRqYz>ULfpDCW$RT#b^ptv=OU( zOx03uvnL9Xjfg}103Z-G7lEBIhoVF}ut^6oh1dyomO!X3Idbbc z88n)%K`E#QaRPcwuYjZKiFkCrCh%Qc4b)3GPKed_<@;f$9`F^sA!@$w!~s;ydw@wN z!WNfPv#36(pa@b*=<))t7n={IohLxEXW72MF8Qd;w?prWqgF#j!kDf{7Of5VT;#zyh(vGcW}k__|Npssb8`j;}M29Pg^y~I1B0_qwjsQNbGow)$u$unFf7mqjAo&X7K zq?S;DR4Hm8d$I>`%yZ5j8b5CA8oc`xsU@_b+G6b`yrVTAN=nWAE@+GNMiugd986uq z%HL3vp_KBBI0^k1Gp+zCFK@Z={9FDTAJ2d1e}QGHgRaO6;vi{6*-)9JEfg_sK)bDw z+sN(bzTz}P_z_T+nF9Th{rr2>fK~hoUW>D~0&1(~O0d&2`9f$Mr4uE2>Bc?8#wC?s)c#{D(ur* zpi@0Oa~3g!%myA_1ofU^dIarDpQT=qS%eCDN#po+V5*9-zRzH)A`z>0;?E^~FL>2; za8+ff5E8gU+*4=}ZHJmn8W9S_A51EU{e&mfc8=oQ!ifV=rlX--H5q#~mv4Z&PXpdb zc7wLdK<*b;GN(fLVgyY2G;PENYhkAw8?u0r_4tIrn$fYU zd4HhcWvHh$z`#bZm223;OZ;Zw?^nR6<@`J%pJ>6J#-U#L5B^aNwImnRA(_P7|JNDU z2_6``gN&diPzzxnxzO)t1BZCkj=Ic2E=)O z7Ca~p3O&W_M&NK$RB2aHdtb(zlBIlqVhjB32KG3I(1T8p20s%AO`4&ol3ST^P{V7} z&V)KzHai;jp^Iv)f)>Jrh|k0abooM;SK3_14#DqAPGcR1ZJKARtgy&Z_N><3*O zC*lM=wSo=C3J5j|-0WC*!5?cAAyP8LV{#=mhUTFQ=pfibtEtP#c<&G|_M;vSgGw5~ zW?|K9k>eOHi+=_WSOC>1UA!SW8h&F;`Xe?8z@~%)ksI-cv2uc249zJAGz~vqxDuG`1w%CD{B|DBumk{td$_e}d29 zP*05mpECnHEJ2+=8;qBRAA~B}6VH8==!JK&-KhY|glfjSmTK5@6lnqbA5LySjQ<7n z@EU(p086zbiul*ip!|#QCZ7OT+$R%I5h|fWb__dO0GmHX1VP_xJ+$?VU{{CXUC#I^ z4WG#GM(sZozxy0K{Tb}|A(R=PLgh;z69&wo-bI0lH6;%5&U__Q-llSq$g0n{B2R}sK!DO6)w|*jyfazZZ=5HW;G@bAz=aVCGo+`E3DWY9*&&Ls=2Hh^uUOXxiBzQZV>!v-y7!8Eo*Ia$&hIp;=}{ zJcK5wE7mrUzW{wO7x?v8M9nq)b<7UFNDL&?v2z#Tze!N}TLT5WDL@&~L@3T72KuNC z_%s{*do>Y6Hj)2Oa;iV@&QdVbKVb_cu;xE#ZU($^6CzVIR$<2f1sx}bzeez5kB=0U738aK|8_S z(m)p-z!5UM$*Ba>Gy^9pA)A1eRv`l00C{{O2=Gdi$YJn_X5sQs;sg)f zxpHLHCcJmt4ldN={~59b+}?012e>4N{Eaxajkp6g&xyE(mHY?H7LT7hOjx3aaTPdp zCnEJ$Sju7O1op<0FD9}OU+%(^*FmN39Xd$C{4V|jP?|r#g=5%H&^h|XCbAT_1kv&f zR}5R2kNrMH2+6gG`8?T7CL)gngVD%`4P1iiAWghO#w$hkdkDU4JZv=+n4%FLJCU$O zo*D$Lu^)(h2Y6GwnY<1hbt7BPMkD+B1D!8N?&(RWiF>3L(dsq!LynAg2e!5p`%wz- zZ9xv42)5=9>~SqLz?Qc?WyktH8)|2=Gi|>Q!0&Y0Te10Ec2o8P$ zc@66}09#%FE@&?uOaG=^z>BJ38TPQzQta1YA`>3D1W_Rt(O^09%SoI`8!S15r~os& zl3UB(1IIZFO!ZwxpWOzIcn>rhKe2{fAAI#g{8|Uy&N0BHC%8OL0UfQLh?w`m{Xc;R zJ;r{R0#h6WPZ2`oVs&CLr=iftwSd2h2rppKzrgEVL>BCYZq;POf+t`bt-!PP$Gn0Y z$dY(R5xbI$XR3fTbO*XRi!YM^Q%9Na{Rl_>EAY{6O;X%2BY&*H8!i8w~${ zKm~a?p$|~6{B!a-;J24zg`fE6z$^WM{ud(h#$v@Cz&|6Qsc8$_-v>pvT;2dmX)LOO z&FB`iLH#&|?FJiXcoFcWFXe^$C=9z<3FP+(9{3fRcQbSxZ(^4gvddsk*5K+NLs9QP z)GhOYa=pO5#*(gN3ZB>zn!=sHp87yPKKu>D_EPQ)`g^C5nPbq|aKzId1-mv4yP*#o z9}A?R8Fx*IFVT+F|i z1gvRAWx*=`==$}6w&5>)x)NMs1tQ>3ZaTM{>j{={BP{Sel+OHtG%i5<%o-MP9(~T? z=p#-BoYWuq5)1Bh=PPMhTO5LMl{CaB07p*{~rKf(9^8i$$a;d&zSI}^qHXsA&C z;{N3(foTrrRBRIB;Ce)ra75dlz~gV=Nxjh-ng_d~2!AMBFGpk}kdeQgb)UsO0cEB;VY+zO0v3t4k1xc_8uu$>I5W%eXaErs8K-$ekKX$T#h*)yCn zGB4J!314H7F~!hubjO~X6W?J$gOPVt55^AjFcFNGa6=otFUeFrGFQ^~iGA#!K|R z&p}7L7)-)=%@WoUvEeMN${d}?NY(->p+DHY+!~y2GL>+AkPVg09@sqx^d7>ohn~RC@j#*5xefeA)KqGs7`gEQBHm2wiw^M7S*-XP z5V;Ap0#)WijdL4z}k5W;^yv2%5pu5+_K7#N5h7G*NL;`cvrtXOLjzAk$Ksj6B>u*qT^yPK% zQz=|4^2Gu!i5r1j{-;hn1+-rV)!0hx$u&ZY$W=-dpkK>E-#Y^t?me)zBf2=9(Czd` zeJRH$%mvc6zz#}L!Dj-WheHQ60RI03PwR>f{u-!LCZi6#k9ac~NW_A;52Qa2IU)j4 zzZ+_hFF5%i^gS0qV^NK0@Tbdym(O@(XmqOZgl`f5>Y?BJoZAbmh-h1|Z&P6(pAjXizz;k_Z8ZpceF>*fiArS#Zj3Z> zVqmFuFdP-Yq#T}PI6SV6m<+_J1B;&mkGI4WAPLY=D)kKgdM!B>HP8mkb~%iwa{)0H z9cSRh!H7Lp$W0r7n5UEG=)kTtz=?Z{E%U4(fg31%jiXh zg0+f5M4Hbp11H)Gb9vsQd!2+`%;$&V|13fk@EP@`FO`anD<+2l2S)=x`=AbUm*(JhUMfi67Ylfw0g`3W;v_FokV8T1xD^d>|2FM z-3uOa0%tlCNcA!D$^t|NFM{VM62IY*_NXX$(u(Ry?S`6iGB}tF)cBi`&k67U4g-(W!2jY9>CYjeUc}vi79gk<@XN_SE?ZC= zD!|BD-~_AK5zwfej%vykCwGsW3PkXU4eRR2v(QDuZ6d%pfB8p$h(&erE(}! zlma`z9%hhtVGpa3VLXT_ya|4%6Tg=m4g45@n^i`*AF%`Ldw`v=LFacM5F!cw{taTF z5vtcZoFk7tt_701hsPln z-NmWdBZk~Xym*f6+8258EKue9|Km~%WWqlazLThnz>q<>k#h&t!a`uQ704`Q#2iF` z8PMC7fz$jGPlBKYJC?kK3=)d_A`^&bU@Z$#3%^HfdV;lxP`lZnCY_1BPs6OJ3`D*Y zhz%~NRqvuo$;4Lz_Wdw0ng%@MP|h35=Xa28G{Dcx@N@0l5d3TaZw4LQhuEvnh^CE* zg(>jjkHB3kke8J3qSx@~vGCNj;2QJs6EpFDP5>z_1{PS4)9a47I~>pQ7*XjvEM+C| zR4!u6b@<|bpoC?xlpctkThIyU#9Xp`=-7+F!mok$^F*)-&#>w#!0mQG+{7_RTInJj`Ndy$`jI<)9AJfqH1 z9I$%~IT$s^J)p0-!@VBh&CXa{>VUbsFz1Ud)k1Uj#~B)QYwZOti(wk z0vad40yjZ*dN$b04_rEG(tcP~B=(m>_KU+>o4F}Kqdig0jRY5Q5$xbYaCC*p)7QA? z$bHX%m0qLrJ%ei55#F~7HWvuyqyW7QSFB(y&OQ+cDi67EFwieUu0|AAAW8%SW%9uM z@37)?sAcW2<{WUtb?7%eB1DLM%dmgzNlWry)KIfw>4W+6_${Yl2QB!yr^pVb$lx<^ zB6VQ(uERQ9!Nbi$lqf`Xb(T$MZGe+;&j-G-gF66(zYP5eW9;cd;J+H=X#x!V9oSBH zE(%fOHtL)qxUsSqHaH&a+8!WQPuv8mNA6yY)$PFquS`@wQ^40zuqGd{S^cr2W~eNp zFmWjq7+?kv%69nRHel~U)D}-*ZwaU#CgTbF!Um=R_uN1f&O`nPLXMw_Q@IWw-NV_S z%Vfpf`g6YryvJZvY(e1PzMv+mj;;mEZwH?!QpI-UAP_ z61nU$>al)c#LgnG$H0eDfTKLHLw$fIt^naL0$<>Zyto7%y4OJFH^@0aN$vlSdVhLF zNAR64I7@59jyNExDY>2snVXh%Vg`ReF;Yd5-9gr%M1IegiQ~!AF40e*@lo0@y$?aN0w} z;$-SAZkZ6+Gj~Ll@vu2vUlj3|Phf{f0p)K*wQ2!;au>E`23{r> zm4q+;iH7&BM9im=d92V|+>1T!1m;={CTI+h@Dp%7zqnd3R}rWnmV?`}MHV$eZzlnD z+%4S0_y_2IHrJP%i3*_z2-*a7xHXXeZp2aCG(?POf!BM1m2w2@@|B!P-9c@t0Me`i zq6h(-@(!!)B%D!4uRZQ+%Ri6yA?(%^jykjq>V z)h6P<%iz@+;3zf&O|62RzCa#3i|8vryS;Ll~)?-AfxUL#|s09j68 zXM>Zt$NpxA!t!gm{#ZEyHTmg4MP}%HTm^PIg%cZ(|LWkvkU#IhVh$mXhaiewgSVOE z98wU~z7suA)g%B(-arOEfxVoBoPe8JIE#6>&2$J6d>IhkYQ&KD*w1=cLOS|P-#HQy zC=DJQ22YG2d~k+=h$|zJC;V{Z=shw?GotcitmHGg!?}o3sih7NhG88QR zK&+t(CwdMnQ2+mDhD3PYM{o}(;R!LY7MiaGI`hKa)SckDUV!D=$~u9wjX*s(4|}r> z9Nbhy!a&^FI)yy=1E01D$YVDm$#QgMo4J$VEq#$UoRIUbKyU3WR&bN*2iD~=zAm5# zJp%Y}BNa@UQT5;=>d>XwfOi_~X-oP8`ojY1I{454bWMiv`q)1nnC3Y;k%Kr7+*e(T ze03XjVmMaN2R`Hp&S@=ByCaabEBx*a^4tl;`KdTf^gB@v*&~a!1MLdQ2B6+=KyX)( z9d-fDzC^4a3uZ=vTThRW6O=#;Gw^J)VS!6wQ^jD(ctlB_n~vYH3$~twulJ~Xf>DQ$ zhs~M5W{q)rai~|;<9ik$R?E;sYX=q#0K;a8Y;_O6=NbB|MZksCz;|Q7YaYNS4+M8G z9a&rqMkpF}yYaSl@LZy~&8Z`(T%MfNCrd9VPIkt%w%S zu&bwV`qPm|#AGIL^d90oVs8Ozp~0vZBWWfADdC*g`lwS%?aJ zEO1y3ZYl>L&y7JXqJm8vMfDVjy7?Z^8OiD5esLr$#tb(M4Ulv9a(596z5>CEvG-2E zs<*kpoR+->ZyU)@g7u`Z9c(BNMj!MUw_~-wK#FhhRSq`U103K^c-G&D8Df${o-lz$ zj{#@R;nwjiDuQYOE0cqJoWbbv90T_~7uBnjdWT!x%fR2SMQ`69tmHz(UmtiuC3bEu zIz&y#SNDN%FW_l-c#bu8Z#tg)9d@IU$Oh{)06p78pyQi(!k36(neh2eFf|-2=6Kc- zw$lp{_9*chC!hxQ3`I1b45auSpL__Xwj5S}75U{V&8BPP!f z-B5SM@HL34?-6Zw!rPu8j^0Q0`{xd045IN|#0wq7?g5A<&Zx-VA)_ooR$GMpA>&8l z?tv>WeZgyaP-@(ePk;??M63?IPrH3!*dH1cCP zkf#I{iv_URKd6$d&@J78>UShQZ6SDm7jzYF<96*8vL~3{8#t*yC~O<7)fx9{&Vk#C zrgl-=si8ReWaNyIbnr{#vBg4l`^-vWkZ z8>+*-_>3p~MdXbbbTVp?+2e5z67U~A;PvmplaI#dTm@dJ!`B-ynmvH2Tfy=q<7Wrs z(}Vt?Tf`VYM408s4;$g7KXF5O0sLSY{4^W+!wJ6Lh)j1MJ2(~C?+7s086cVQ@YZ3l zzWrc=?*J1mM0WE-efJvnbqM%r3%oHC44yq0tW;o$IHDU6!D!?KCwP`VZbE-YZv2B| zafb%GI|=OZ8uW!S$WHXf(oxYS;T#SjQ(uJd?*o(M3-8~8lkAC=4~Mm9A#ZI%A|m_%7kLEvs1Wt=edLNqsK#2+=@5c-HAehe z4OBK5)o2y+V+fcCM?76`>|QE*|550FK(Yc{$W(9}XMpy8;41x1t-8#KVd)P5CMV_%T~imR)MeS4($CHb(t|bgKDrF5>!)0 zn4>)k-P9lW?j#_36L`Z1^nsmlOR5ex)Azw%OHq&Z$Ni8k)B#jj?x=$nqKdi?mRNx} zmq|`QzIh8z__J37;P=+R{9QonxyVN*@YVyUIzM3-K7$*G!#?bSon1n0R|CHG8}|Ma zp1J-1ezO+2AObO>1l(FD&eM?-pmxb&ud##KGTb?;V<_Abux1CMa{Y>|XMAO4o^~Zs3BkuAHrjM5M%gw zFlF{!Hn_kqU`FHF4|uceHG0sk=scQ$7t=-N%0<7n8QjxZ&Il1E65Y>k=%AcNl=<^U zPY$s7d7P;MxedAM51+mYm3BYe+L?m9770v~1^(m^;@ed)G9=hA2OysUVjTGhwNfNd z<4PcqXT(UnMR6Kv-j7N^9n_4S(E;K#qh{kC-&f#{RKzutVMlX%SlwFA6p^45 zzP1$kYYwtVD}I{}{~eY33-D@lf#~m}YRW)dHbyUPEv)4ZI%qO*ec6~v>jHk!0YC8{ zqV-{TjyLN4&)C;~$Rckrhy5$NmKy~Yc|5p4C(KCyNZ+Lg(S^W|_2h1>oFE&4K)sL; zuLEJ0;}+*qurns)ZFm8LyzU4L)DNG#A2BNjd@1h9B8G*-V>)qi=BOS1a2A`8_oeUv zJDlEi_@53k@(sMjq(ywI0gv?z*>^ggZ!>oF8ayi*-&2hmz#6=^H{x>@EO!Tf+iGC> zSbTm5kmD2}yJ9@k9>kK%*!uxM(Ve)Pvkm*w3D4Mx6=mW^g%3Q-4;di{^^6D%dMv8Q zJ~+3_$b038u4|D&X5u{W5Y6cN$$)MCyxnjgF{TL>TNJRe13C(~*fs14yw}tLexf_- z{3EDEpj?CfUWo{wjQbfM@TSvU@KU32Pi+}Ez9PiZ5xBvZh`*bFKB1IK1j@XGznP2L zjz_L7LbP6rPgsVvzQ;}wh^uz6@RdNNIk;@3eeJoOp~}BLhZD2Uc2u zowNeKkOUiD0;~{(XWx(2jzZ^S4p^;Zb}zdeH`i9O(^+5K$ZEn}to`VY_yE!01I9=| zc3X(dz6mwf4&dbLU{UOlC61zoj0GAS15fXQr{2LD-=On;8a8wYXD|WLS&1hf2Y$=~ zr&W&(IT!52QGC58?eH$rVMLP2lmS(a=TFDZ_5=3Wj`*7m936?TA?T#-17ZnBy*d)H zcNnb28oj#&ME7Xy=p5LyE20R23V#+d(K>L`zPP8>g801=bxHzq;S*qJL!e}j|MO6n z5ZnIL38R4SLvgm_u{wSJB5a)CzOZvyOI86EXC_;~Zsb^Q8ho^a4~6x`qNXSZFCoDF zmk6>4dZYhi=`6sa?4CBhL3blch$0{$V7FMn@~kClbzK!qvt|rqcWJ6gKjb+^P`!J_jeQPloITQpd4drW$+C11H)s z_hF#GThz5TXvpu#TOPxHj>5tnVGv0?uQR$+9eTzj>S$8x>}Oy--N4|dYUNgrzdaG}(_wc=9xMMr?_Ov5Hkk5WIK3_TNjf>?G-hZwUe_O=wBg@K`l+`t#sPdSg}J;U zj#?2rC&9a#5haaLbO+J(^n#g_g1#cl+)LaKA}2k>Xpgh%Lm25DB2qlhTFLqk#;4{I zOM6p`C?NKUdP$_>Iv#u)^be&wCy^TAA+SD>d20yA9L=bvvszL*VarsujI9(*{l+`y zk%i9$9W3Yo`oq4rB9L&nv=%N=q*h=j@XS|yRtFfK1Bf>O4kPwXr-3|esdOh28^U=; z2suw%o*_k>UBoPog5xAm_Zr75+Y#l*p(fe#XbcnN%pVx4VB4Zz?8y4fA?rPaR;epr zCf_4JCO;|P%wFe9bgplbrx8(n>BmvRLEmF}yW#gLvfz#Qb}%zKhM2pXPnZT$mytV- z#vc8!NKM^N09b#IRn*&nS==mu}F@C2-+5`4EI-i?Q6 zda=UJYKCnNCRj=Tk~6M@RZ8dp=mYclsb0M(#V19)LV`BUDOqH9rF8tHlI@GyYA5h& z09U!4SH^=#=2%)37&!+8X*Yjykm%B*R0U%#Cet}bM$(A-NDWo)o2W`RP;X1=gh^2M zX?1{YECFFez3UB`Zy7##kQK3H?bh(QnW~mt;YKPILFgOi=-cP8x4z70GFHRZW5xZ5ad+wL%aCZH-v)ywZO9mZP&f`utp<_prso zf1}G?U=$y)@{!yxL7N)9ir(}Y*zA7ZdoYZ>FVT1;nc8RSaDRx-r$E;}Xce(|{snMr zE{wPrp4A7KUpr-Ubv2thl6bXAN8yQYE)3c3tjLB>PO$3f;mPBxWD zC*%_5AwtcF#64#kf)#7H#tGoz4^+l13#c0d;4zOF`v4(Ec5Eae-Ml2Kv^pfA^1M zqBN3j@(QUhb?9}}AK%l{yAB@Lm71v^el~@=$N{N@o!G;O&2!K{P&*UaZZ{*M7OPO)0`!KdCR7oSit{Nc(^=&^}F zB_6~m$Etag9o5or{8q z^p0I9TVd;WU=#JErC6WnxmwIK1F1`t!r8^m5wD}*&!k(r7dQO?YKrUT+4-YunW;>~+MAf^qV0@e(xbwpub!tCs&CbXEUqNue9 z3tPoC2M{ZEpp#arrhpI@u&49vZYX2zo?%%Yj zLOh3h-ZXU&juZLcC6MD1=oG_z&jm?5`1}Q+O>5>wbUQwT;~2r(-(eeu?AF((dRidW zBjZ>o+fO#)Pi>@$>?O*H2azL`_&r~mg`a%q3iY@WZ?vCM7{N!Z&4Jq366zht`K)f} zIUlh-CD~a7JaGfw@`_#7C+QN|2Qmy&TGN4lRdH7lLC!TV7NCqI6jc^zYXtfjF%ttp@Q!%vRQU05Fme^_sxx}WJ+A)-ub4^w z-Wi`yp(gx>xbi}ckp0nm6HsY#6}`ZcDtdR;@y^G=7bPsL6|V}yqwUC0M2G!w-ZcoN zr3F20518R{aLpEmvWj@BFLfse%|(fs!U_)r?=FIZn!HaFGJqB!geRYGuQDPV$W!Xk z;gf?>@D2Tb5gEp3V)R>9@-6>YgZI1fheSA89KK+L!sPuukIe5Vb@pibS`_%+ zH))}?0ab>U>~q_NCACy@`Vh&Ye3n*%*;wKQ3am9 z1v_f#)Ev*<4yTjh-%)4byU0+2(Xb+!pC|Odq_We-oO=8%PQVz#j+3S2TsE-%nJ`c% zJky&jz>Z2y7W*f{i5VL51bW97$X0-QyRhX`RB3il+1bz6T7E0eEYKzMxjaN}F4v=}OBrfc+NJqI4T;(My&uiw|7j%9Fe+p+DxiH5U zii3)Cil*@83!s`0tmrIU;w8D~GQ89c1*RJnoD0~1(5X58NNGe=X-jko#-q;T^CQuG zo-#*;*sEZN*U?Ca!p0kczGu|DV=>BGEvQvRM$!tMC8T#ztwvr9`K0?;Kp6>$pY`IlAgmpB+@`spIoBZGHl)qb`uWYt7OK+ z4zUTSB>v2`m2@$jdL5R05+9k34_?4GUeZC~0eff!OYlT-YYg`cqhHOK{VshJkJ;1t zfSoee6h(?|RC9j7%LZes9=yIYzR?49WC33;pyO_$y9*h=JsRr*yhP|D;=WIw@SKGp z=pph59Tef0(r~QU9vk>84dY7YFr&v&$SC48@z5!W)JYt%d3@It~A#r#B=j#qd*K zo@>tfo2e4WQ-8ucOF++hDCHS+<^_`P{Q-R*f_N|Z>>2QVx#SN#XC?3E3FopPaU>tVWyXUT`vTM)5B318U|lEke>>ttL-GrEdLnFjcyJxsvQ4rS znYBEZe%_6;S=4zKqJJjQZ*mf(@J9K1Kt}3Dk3c?3$Xoc<4J_?3mcNhq-->>Ujm+sp zeBK*A{2#2Q6M35-&x=MkTunr2fV~C7XF|zkZDHj`%-=5jtT#XXBj3Npif_jrAA-Rl z*jp}@@D`wU1?c@9z54|_2V<~2!IoO9S*krN)dx2Iom|ElUh7H)Ckd9jlDyMMRmZxv zz#l>xZybpKp3FRv*(jxZUWM*ZOsstXVt5cSimBgoUrSbhHvD`!_P7Pb{xyhHi#K(^ zpB{pWt6&04SyxVK0g})+1FlTz-(fu(A=h=tZPtR zIzt^Shu+R0{+cDgZ%)tir0$6bRifLPu7!Pq~lG`nR{JwjCgqQDq`IsSk_1~|6^GEbe`9jn(8|I zwJpr+6HL24C^3aA+z*3~VV%B$T{dtDTly|~f^xaUy&~#-EwGDxaUKS{3up4Lf&4!E zhDxL{U}QekKyB$GEPFgx@`sUk!qaWY;LWKg*rGhxfl;HG)fgCi5vcnQPJf2y&8OO9 zP4(g%5oA5}em`(Uj-Tt(HQ)+go=q(80Q2)jGpdL83zeoh>+gfr4Fc~Zsx#Q#UMf{G zs#kMiD|d)2hv5Q6C}$Sb5lqolmJ``#g46?93z6qZ`CTw*@sS)nj(w=sWXSL z8pW(T`oIyaJQ}NcLpS$gK0Os1$;GRlD<$Nh*1X$nP~8{rO~8_puoNe-^fLHwgiQ}Y zLDS=FI2ELEM1rOG-V!oYV|29=Dgsw{=4!RNszshGaC#j`n+ImJWZrMX8aj}t2az+( z;#%9HIk>*8aqb}BJkGy^@$1>F;Yo1n4@$)+IPP!yr8`LtBfzmhf8V{KMqJuR4F2|4mExcx}EZjV20zkDo^_`&%m5AA!`o(q3_a<>&i$WAlrS+J1nC^UVfX+(EjYD4LG*%@_q-H1#fmXZF#{_ZmJKaBeTzZr!` zo&<|a$YG}7x7ysv@&ol%SL~t{8HyerT})n3gx?QhwrjA5U-+mEUbBe1s)>GDrV0TVvpuFM02WoSJbOT`QWdiwL+|0Ga6!dUSF? zXB8MM>LHD#iLj9U*fSmN^s`=ox!gbty2rb(A#zOT=i5}K-ZPF!aPmBvR|c_DMpVCq z@05XUq2w0k#Pg_RIz&Bu})ti^;T4x5UwhW%HJn$7E=&cTUPC~}Na9H+ygiTX z)Qes>CH-$}WtUO3u8`4<28s895|j9U7nr=9Zk%uM%w@!zE@U1$*pKLq4&a?`z~;wN zD`^5-yG8Cj2g}n##ra59e2@7tqcY$NB8(z0=}oWOQ0l?S^fBdA=UYrqULaivzT_*; z)Kmwd2hAp8pT=gs;7j>btU9qCuc#Pgg6}t&(a+5E2k_pWne&I0r@}(VvNvX|y6*K! zYDHywl59Bm<}961aCe{J$n%xN>h3bK3fQ4b|q$AqPi4`9^pVQ({HNQ&RF|EHScVqO2Q7F;9yFTo@D{+%_GvkfPYnU`o?JbdDEmLWH+(u{j#g@iegUFJdZ7RVNXo~D%@nM zl8MxTwXmIW>?Z0CzSvSN@s!4(8|UI-$5_WeYC506q&x5!12Aj~nDtVvsAXf1!LW}r zM1yO@l1DIWkuSH!7mQ%4r|~x%b)7*DCrFmG!FL={QHTI2X|J0 z;xcs%cR~wGgPT7GVJ%s|B%YN^Rx2{qR(zr}D$ol2*aCYrhBJ%>c@{9{0r1E6up5CC z{&dplVl96T`b7V4U0Gy@Ro;#l&+za;if_u5xl_O?q*zah2L!??hsVI6)_t zwUcuVrXXk>NIahCv;&S?fEIp%zLpHE;{ds98vNoHnaT;ZZ7!iIpO4a5BWXc)wu1<> zlDRdICJ}=!!^Di)lMzccevkMTg$MsfE}h3{PhzoIFoNx{i(u59Fc{-U*iIibn2R8G zH9yA?JtQcxZ>g^qk&D%1rifvPn7X7{5zQL-ycN5BD_Kc>X}tf`P=QX{?bS7{3Zm?nm@K0>c~5Pjks=ykVz4JpT&O!GxMfE~t2kR|!wZ zf{hPDDGFw_53?VjE0Me}-8nJD_*2+NQ>yU`iB5-M9HPtY0M8pnZjuCkY~sDM8D(Ge zWFvZ;UQr1wRJ20__am}-V}pCiV9tTO6;uQ5h;Kfy>lJ+3NoG-Wx*cW)GtqivoXa$U zn9-l_o-(gv(E?J){L=BtM3CAX1*jvQrX)WSdz>=ql=Fd;*s;$b78Y~>Y_$S4^wp@k zoa=4E*v5dOe%QbkBDW<>>mH~vfW9jk73UXdTIZ-cmnzJOGiLM|y+-BCV;A0W=KBKm z^i9N|Whmwc;h!mZa9=zl1*W|itjNOm4NwZF(1#g7C($ERsu1kh8A}+%wdB)}^OE0x zMA59~?5^AJkD;)qH^j?lXtZ(6=x8#EuJ}kDtD*sFyoJGj=j#%z{2zNCj8VkBQTbIU z1X-}LI1r^bOgV<0+b3Y*D;}YIcLLpL5#QOf`aj70lptpmk5AyhJD630Y8*MeT%AMz z;&a6=!9Vzz(B>_qsVF@5l5}`iTUL7%YulBdMQz)K5p*J21)&@?;(K=(XeI9^&g}Sw z*F`fT&Zgok9sXMfVt)tGreIa(SVaYK>n#;XOLnpva9%>4!k9??A2S+AHu8;1O|r5- z&ku*?>eCyMCFu-je?a{BN~GEXN_^)0lQQh14;6DxRVBuZr2C^Bl)fg>rarxqxZ}>8 z&PM%e2__#Wmb}8EW|QT*(HX}brP&|*gy??>3z$M3kV+x-9!>J;_25D{JnI}DGKQ7y z0`rK$uMFr;F;$7vv)+RXGs#5SuqR{-5i%Z(8$(~54^bx!zVaOQqz#L*Ac`&~@`~(S zNfywNJn9naup4=E3EHa(8u1jyG?@5MgFV+s2B7F(#R?*bj~%2RVc3gM=mvnuPr-J7 z*zt0rLk#no4??Vgk^SSdw8$p*gTgn-I_GdDf^Q_F7CL|zv#|61M2!d7jX1@23bmEJ zaI8Ii*8qeppca&l9~=PPf8qU_tZi3V<8-*qPI!#)=XmB~DvWOy(MaHwKWuC^@A(aW z@(&L61MYZ%d7Fe5xfRy(3X2S5G%37WGGh*8^slkGpRDOR(DM$T>4@DpV%hf@^AsXg zB@8K_oT`irxg5Ovr_`rzXN9(sMwDtrG!(U(>#U5D{Yj(g?wO9J6^r(7hC1hm9$Zbw zRtIuXGg%Jm_-j=1gY@z=$Bq+G1V#LIBJ-aQvMfX65bB~A%4h{D(hZnfAlb-VvU~?v z@pqW|9jssp+IJgpbS0J|b}ZLNwaaA;Bj9nOC&vwru@hV9haG#ugMwf~{jldWdLANB zLxU7^VIcRYJw&6I-=$U}*yv^$n%HBrj9IaP?cF4TWwJ;8G@4@wIrA;44HfpYoX{k? z)O*65kI|dem3$>^lZ%^Y%%0z9xE-&vz$B{SkCpkZ%pAr2&cj7`s0=YJd3nbaaU_Fno> zYLtnvic0MG3sE@^wiQa0?o2#fLj^Sq4RH-R^cHfLF=SXh>AvU;KWU0u!ToS~yDfEbJ6ioIa;dW`=ptnepm5Q2A31@nwmPtk;eu<~o@8Y=v6 z1va!2j%NisY6ByL6V7W>FRrM|>!?L)aPf^|QKU-pA}&f%3ZaC#%yV+>=x3!exgdwLA_ zSxrAfBedln;BK^HuVNh9axC?S&3N1vVt18d5|R3k(hMJ-!c~Qn|BC%8A(C!r5Ou`e z7;0v*s95ir&8_4jr{S41h#i+fkIy__(~}j)9-KRzYN10HRH{1DZq6Q@RCs7UT38YP zUnAy^gKZk%9s2CX+DtBQMK^^3=wCo(?-SADgSvlS0kiCjXEj5`Nd?n1R2f8y2V99S zIa4?Oou)oPE1rn5AImt$&Y5j+jf)^lcjCMA z!4AifRrbIRhof3Np}O%OQBa)AlL7h~qx?@IC$LAm=?-Uj409J9qxH}MqQK1VVB0Bm z#`=~R6$WabXT4KUEZSfXhU}X-NUYchesp6dYRE#q!K*gHq+VicznQB6L=YeRz5uON zL3D2l=hSAjQ;6&PS(TUAd@NC{hT8gdkb4uh;()3wYGUIUvkl#PW#riUFxwuCrwN~9 zOst&7XlhYbCFtNP&IaiRs%e2FVpl{ISNBq_0Q4afzsY_B8+t1yv&(D&nz$3Hii+_( zgay~|brow}!1JboB6AqYHEjMkt1=lzY(pndBDmR**u4`xTFG-}vud7r$3}WYC&B7& z<7K9-{|kCuN>KO~qii;(r%yxqgu2-%PWISJ$Av=SKs-4LUYzDU@E8;1Vw0F~azmQ!~rJTHX6kB>rY)u9c4&dL%hyjyf5hIvI6V*pn=`_|^%}7dNYDcil z$?(gKAlN+e?xCRBSRR9jgSuoFhf$HoQVXafM=?cdjNn=#loN>_S3!j&7CEsRzZyq^NcXbx-aLDx!WMzEUPG=%YFaE^vIv3U|ZW5cK`8FNx+C%A_MwXh-m zTiZAv;|&#+dZ=14@M=r$5Alk;VK<-l5#JvJnu?tN6H)UM{&E2S5>L@&$Pa)G4~P)!v4nlFdu?pI2n+85daoh37N;kbl5sn+T3gBR&cpb(!mi4> zl2**-Q|#7ET1N%Y4XfS-+I>NfwW2>nQx*wUbb>!@0xROFs?P-D3gDyFVC775*%9#6 zhU{|aPOgy;ifZFOH{qeF@E0ra;{xn*AKo3L=TQ4apK_ z;3==c_iNz&67VCByx=bD)&lD=Cl5;_FUa5;IuM!qZ?IXOTyapM@zSc5-&BU5$c)3s64j)QLoRAu%vuL&sN zLzzD_DkCmrB!|?IV*`ln1IO&c|2@b~eYv~R9nh-}V_C8Y#=zQ^GbNpPO?hpKJ z2Ur#gf}Mf=<|(wnwKD$yg+lm%-y|!Vp)6KY^&7yd-lXp53KzQx54#WQAAz;)h1*Yr zLk!{ffuQC>*x5k1Lp2sq40bE&?GpXAU8%ioqz-n0Rj(i>|D&rV1S_k>ry^jl5uh-4 zKfsnVse_k+ilWvT1-6Xi)eVT)JBUE(%K9+hEVB8@_?j=A!VX2#3x+WbkBf!LeWXs) zg!;lQSY`ze71rhp{tInnH=loqudR&xJlazZeOVf;`eY)EDydexqf*pqEcU zEkQ{(dJ=4&$73Bhy@fd4hzO@*gyEo?IL##j|D8qLZOXWwGh2svY^18y9;7`83J0^M z`#^+pwZ?WC7SV$odOR`I8eXpC-%;4{Y0xYUA6rXKDDWZy+-L^7> z1>}3;?8whBb_-sA32o;d)-a0v)t@=mA#uU))TFd4uxG$*kW?jd=gI9IbT*+vB(J`xsj6z=7~ zt`!sX<1Dn|EJYl;kQ+0-9Yn5HiqpdOGM{?XfvTAG{$OAxENvV+I^xie$E!O>eAS4w z2RwRA4N3I2EFxq5D>dQ_E;)53Gj)IGUszfw`1_Q8+G|us#(@h4u=gZv$_b6p7v10= zHa3?T^+9iW1+Th~m5WnxhGW6uWEeuh`UC$x$>TcyAFcSz{s3QvzQUUws1rE3_oE_; z-4v_o=-Wz`T8v*Nu>X4o3RoDL=WW!4_2f8J%-T5Y`UO#73Y<%a-ESsXu7r5OZ64X( z)Pp_gJ*kh$II~~`8u)G51y1*QuI@}7O)PZeno_vpgYZz%by&bW+f#S^j8%@IqOg*z z`8|8xB2nA!k}YQ_blJ1jm3(Lo-9cACK4S8rOnQa34g)y0lEmk_0 zEJ>U=IUY8-i&?$~zTE>^?w}ofgi-Cn_C)`JJ8?~%u^~DG{PC=5c-m@Ir15CqsUYkf z_^h}SfHzrj6ggxzpQ8dd>gZlCN6`}bXDc$1L$JuRC=*HOZxz^OClFy4IFLd;uLF#} znkvFCEXW5>Q_%epPR~mX*b;@U{=z2%!0(e-@D@1uMZC|SOr$OG&;Z^dcE;Z%(rIB6 zV)uO-=+zAbhy*$2u^Uy?PL)bu=4C(e`aZEH7!GnAG#2L$>k<)Lk-yZ!px!H;xw6Ud zIMEZao9Cs$0Gi>?!62%HlWJnYhJi$}Mbvig!_{^Xd9U#ZL(4A!?X;<>e<5cLBKif8 zp=^RpC*WzLh;m~8!ffW-K;ln@!8(2LH zMMHEN>EWwaS)n6X);*MhAM^yt@H9hq^XlU_pO}};d`>I0gHB*iIsS4PH5mE^5L%CjJ68Q^Ves7P*w`Xs-EYZHR?r6?^B(m51^Sh9 zJuWC6v$5>wTuC)+@5RoAv+(#v@ULM+i!JnNwu5POA!EG`O6;TZZX(U3BV#%%;6W49lC2tmp2_(BQds9g&d%>Z z+?x-=iT#rI@Ws9S`zU1+ zc%Lg4Ukis@fR~k_1lh^{@ysVE0nYRIdi%4wyGPfvop2ZAaMT* zI>UKzf=92@AO8OCEeT>!)ANLWnGqa~+=Sd-t)=C6;Ktpc*9K3MlOSVRzN z*-`8^i#($fdD~1@bqNgUBnnG0eKt0-Lio=>a?oe&G_0Wy{3LhHJPWJr!+2}xz!06j z;+}NJc&!iGY!zAFY4ErayzezUcrt4$&JaEc2li%%M>lk{LBx?w*k=@ov6gGOigs*8 z#k36fEj(CbVv*ZxnGnr`B5!jj$c|i=C-5&Uq zH}g}Um^6X8Q79*Y9A^0cFk-}Z9-D~~f2sGyQ}ek4Q@X_Ohrk`C@fmT{fW+>&Vd!vn z(opzRL(~y*GNl(QI}tpY51+qHmx3SMvRrAy=UTzbgz}b0uG|UV6sWw5dF>CwnFt2Y z#1iv~A7WS6dyu3%$hLydjzgLH3TqUq5O;&3o2Hsw*~j>4AV}2;u5=APy%?my>N61zlqKUs#JmXG`mUQ0x;g{Cr4Po$j zZ{lwyJHy3^57$`lm-J{=5bJ&u6Wf9h3DP#4c<}}md@sA8%E_4egMj7iSX1lLxut>%Y~#VM~ZZ zLx=^}S;^jHwF(~D3DtrH%&Isc^&Xu>wT$`=Rh4>- zNpxG)p*TJzXXwi(FNE>lCGMzL!BhDCIo7BLRdorcDh8>u_ttbmzJhJuA-BIpls<ZQfkm%V8?SlUl(QMHE7ot@9$3BE@X5mM1TyU^fcN9KLv(* zs6;34KvZ!fc-BYqL`#&i3FIC1d9-DH8sQse)D4Yz?r`$4yJRyORJ%J68BgGG2gn(B zqSy678SMeTcn0^gLbtz<7kt30GvIl_SotJ8`!sfWoYA_{75s=RS;NW*z2zgm*aZvO zgYwpzj`l@hbANWTXrjo8n7oWwCVIQlP-I5Jh_WR;h$!#D+ZAd(>j(YPcI>n8WB%mQ zH)P8N?7^sE-j5R929q`2r_LS&*W61ylClF)#n{fWGU8N#1TsE7tauT#)eC%Xi?!Ck zei~pYd$ACARU)x)3yOUJ6<=pYrB8-Ek=U}3T)PeUy&6W5q;$gzR`QrnE+z80Ca}*m znCnd#s01|p%)Wzdpj0lpY#$VR2ibUfPG{0l_L%*r>9QgoHJtbMnr^cL=$Zv^(K+O% zE#OKM$v?cM;b=E!@tD@ckn_ycKeC`#?1tB6cTm2tI_1 z6}uGH^AhvA0Uo%Nl@Ein?&4kU^L|^gs`FS`EM1+Gi7orVm`q|$0v`Vy+?h|FF_cI< z7$oYBUVoAm^?|Kk#Ez!nGolkO2^$*>rq!atBw>$n;OrlElNnCdZoat(vX zqzX~gE%B&9FraMg@|l|Be8MWtU5si0^;N6N}*I+Nk*bnNe%ClC_;^ zC3b~8V)i~zZI`H7#Aq^-xy(X)o@GQ8L+lYbhpuC!66azC<8Kd@GQ4sxme~$=+lWXK zz+)L+d6K$+D_-eL+;k$F>p<+A#u_dl3sOmTadPt^9$VpRk#x9yrq``G_jhiH`gaz_ zxgABg6TIm*mOhu-Xg#iZ3o-Q+Yx|B-yaYwp5__XKBixVt;WZ3AoH4C{ou#6rJ!2i4 zV~?T_t_KQNZ#eH>Jitx$3+$Rr6bxnb{pk&OEG8Dh{w-}$NN~V3E-3^QEd{LXAri08y({*R{f32X%xB0E3y)Q6s%IX zP$fF1yts(|}{0%F29A8Lg-Ok{%i@0i$C+hP)9YDN;M8BncRtBEDQe8P+j$KW| zKIVbF+sSOlk+nu}h4)y+S$NC;b_)$Acl`l(nuhW zg)p9nU{*9;WxI&BbMgOll(nf`(^uwtGq`+(J|P4Cx{?aQMY6tu^x?du56+2MJ^V|IuUt zP3V=q3*Lwmy*7Yu3wg(4@NN~cUogqV*g;=Zls&}QQCMqRc*Styi5X)O=WK|*vLaKh zV6-cV9=>EE&xVnAnbAfL>B zEOoAL)WzPQP{`4B1n}+|ho=#CeP(}J_Xa(^sg zG^1?7s^@}R32<6>?%O#OyPO3RQBXznLq++32NsZ##?iHOhZ$T#eW|OuF4md+=`PVC zpTCNeWej<(U>N7{X-#<9L|BszbI}#gTFw}RPSpiH;wF7;Uc}-%vI2T||8g(Te=y7? z*oL@siKy7cGTvylt~~|@GL^WdiSiat?^-t4c^N$!3tOWs~vXpk^1CzvceVE^Jp^I zbvz?cX^X$Tq6X{<>PG25fQAL9Z+o{eS2I($?bkEQLrCdcX{9NdRC&}kBS#=p_FvhaV ztMUCva*R5DpM8fepYcG9QHCX%^OaA4ipI> z0F2l}UeXY>%_Ig1hAw5L%*j`Dz?n6y$~oq#5s_mMJS>#@kqxP5z34IXzP{`F;+1>ZQ!*tg&r zlUadTcwA$ukqM0G3KlE6VQ*p;6Nqi=VMhLZzX}yRkWqi2Lni}kumn^77nAoBL*Bt; z5}4!0VAT-V?kL!u3f;Ra{`Hlf6n84V6JVaJ)G_2UDCkD4h(WQa0jD?cy4TE*4-xb- zDc9#&^Tm zJCm)2(1S9F+Oj_9&t=jzp9n8INuR}BqOdq0ISt^F$^@)Gls((c3w{++A!xpCCm;LeQE99bg zLCa&rjU4iYm2jfnSWXQqkg3*LyqJx(izkqWZt##Jfx z$jy54nftL$OYmeoip34^Kt^v=Z#Yv6_~r~)la};3YWQ-H&{c9u)likg`p3dCs$ol6 zjPeVdLhPv6K-RwoU(8pE&Y!W2H3`eVkHt>ss$=`lm`{XMK{w8WMX%|`nk2m?BgEuW(HA4>l5iC%!V@QRn@ zP;*dU#68f=$OD70-dr;Ca54ldRXhszMznzC@cnMglF)j(uqKY=4d(CwO?dHeGS5Qt zo(g90G2g!gJD#z6XL+3;_M+gliDl$LFR`*Ktgz_Et;X_hP^<8TWmx||qpJgb-oiCi z)Sxc&i6ijlExh9gILBJ-C=%|cQd>?GS#LU;gV?81Mt-X$c}PS)!??AH3lI6+E95($ zL8?@cQpK~x-D*C=?lo11iNu}g)^wq#qCNL6?}q{t1838q1LPps^_u5JaV7ceG*|>O z4uTQ;5%1&I6@be1@|Ic%#O%4bdCASoY+T}fUTS$(|Sq9HH41tGP2Y6 zT#E+xMHz=@{^S#H!_~vcKPq5h#pI@<>!w^e0&Ltv6dVrLZB%=gCU&3C49{kq&&iWs zVaY8(>je0lJH1&&-2Zqat91{S^@gbP0-p6$oyC@*Gh~8#->6%(g)1)wQQLvx+wd_9 zVo3`8-HTYzlX&8)?s_cdUf~Z3}=w!j3Ufv-C8(2%vOC6D; zA#qkzVl%Mu?=bcCXj}vW#{}K z_O;wWf%}FHbfDK}I99TUEZUO&OuF=g#K13F;=|KnLrHku5~ANj&WCM4mz6eWtIWXH z%#~48T(T5;bd_#`;nXU-v9769=z4;$)A6u=WSky6nvm6XSJz;4hzoo1x9QC9A=vPE zp49?&5{6wE@~T1TX0dc$HGs>^18v3m2O8`cm4bVJVLdnDG)3qI-?6DAc*iwnA(QKG z#w!niJ-X6AJV)G5N$k?OfJJA*nAVZu^add`iD~XI$*riw)6szXU<+;0WIxd__LC@l zlUR6%hXiKwgbs@Bc=}97w**-ru`mGE)gUP$2WfQ$&Yv( zAa`&i>qw;@J`*f+LrcCz4|)hSaWk^%d1Qj0&|ID2lu~M9eeuYJ_+&Ti{}@<*2yatT z<8|QuzmO?(Mt^f9@(;$se{w>k0jt~qoR}j$LkGG6yxECITe7HjWTlx@NS|XXW%Q7Aql*k+9s}_9UrLdKjv;57hcAh9k445R?z?lBSg{SxQ6dkz@?h2KBs>i}_Q4q0{qy;Ox{QNO^%1hB^xlpKt*dlBTX4}TvFVlM(8`runu zV3Yz*YC&`nJI5l`%F{jO?Jm(JfKUC&UnBU8LgI=Z`K>$t(F?B*hVe(jNyL7UUep7> zFwfhFMvkf&s$pk{7gxyOexvgQlHqM(CqOd0C8jd|AXdg0Us#E@bO_rNwYlb4^msC+ zKr-DM*qahN>4z;uqWgu@+y9m>c@0?_S-y(i-P`c@9?W7myjGmOdW?MMDa>dao#j!) z^{;r`0DQrf`H3Vun8S*8AY;&hg;|4WZm27-7@HMQ!h@fOu?CHZ(>DCR7KAp2-H1Il z=ZKf1VchOm{Ae)vH>zkPn7kK;ahYgS!;b%t@PAi6Z9198Z?p*$x)qm@=bQy28W6{( z6ALHNYjYHioIvd8PW@{vxpgD@Z1Q2$j?$mt?@I7C1WyrnHW9qH97RX$Zu4N>#xQCV zPgE#N2+w+p)Z6qFRqOB<3WbJWPYfI`P`&#H3HE5qN$Mr^srfqeNooPhijwK?L!= z$o#)B?m#?XJEPxC?AXD3O~9&jsM;(9IXm)hZBUhq(UZkF30Kis{Ft@xbf!E6qd&rh zf0Os?<8c-I{W;G|M4z=pTOY(&mT;{<$gvlb#bi^*vLvqRqYgXJYc-PU=UMDy3!24d ze9H+Y?+Js~Mjfm`Ek2AwC{CB^L`LEXPI!>-nNs;bMMUWjx<7$?YoGvS;w$gbOM=i; zW5IwcjO{tGVg$QL?O{GM$cIkwSJ6+JK-35WL9TNJzj$S1B2If4>q#=VYeeq_`0FFE zryLXw!FT>piLjw6KNa+p!GVpb)(OQjfUb#0?2W9UBfX5=`X{-Dg8Q9*gF);j@>xn> z;}=u$NI8scGTK-x6t!q{%0X0BCZhVCLoX>r@2$`37ILD%O0{q2!wIA5fiWk__ajDl z5_8sqGr?%hGeFL1tW9fhQtSl}gslxmx$?(jo5GU^z?5BJsamW=28b~lW#lMdPhfae z#0Oh)vVKJM3E;m!?DRbLeGngZ#Rg0HdnM=~2T6oZ*BXzOfC#3rR!uth%2>sRVAe>q zuqN1Y4VEyR9?g10=LKLzl2T69zgnpaW46NsACTc)#R^t|6vsfeRIo<_tFi(m=E2OO zQ6Iixje%rC_duXbm}C~+c!$&#QA24CvFjH-N&k_Neg%8~!(uFXSd)E}!$3-@{1?z; zRS!jAw6uUMs1M$I3QO*c()S#+aD_ueW067BW@mw4AMpG4aJX0ywG>;pK<2!Ze>332 z`YIJXu9BS7gj_X(v5!IP7AN-(QlArlguODWc&BK(g>GRr&0%&yaPq+*ol?>d)je5# z{?$F%M_Cz||fbuAQadh=e1+;lHrIAdt-;WUFHw z5Yw zoM zS+|F~6~c4vs0xVsKu2P=xNk-=&mD^uzhIR^@y>kgBo36gPwbnIVsE1SLe07vxUz`T z2?q0Xx>hs%f`hnUkPeEtP(J*yT?H z*4z_bwiaYqz)W9Y-NlKxA!veM)wSws6k1n0BzA%vtFeR^%-2#rcNr1N16-@ZUTdl0 z7x1M+yb$-0?7{DiU=re9r=r#@l;gfU+l+`d9j4wEOTP_Hhh8X3-KcA?{lD~9D>K`kT+JcE360Ft3DAX59Ps;@3+D5^XXA} z18X=B)-EM89gDS$$DU$PCFbHuZbY*8yx&k}(+(ao3(c{p#bevoWJ&!h$}i|dw|EE$?s#arWtr;JSvsg110X!)CKFcfoX2QE(XHLHo_m? z(;@H8-nwN}J+$en`b>T79T}-79r4Dp@9>DZSi~Ia(Lv~j6Hy|Pu=ZZeOC|3v_F%j6 ziQ&v*AeF68^c{{P@^{A;JLA!Vh_WVJUko}-0qkG`mK_O)jKC(26QUWU3V_A$C)3FfLS)_xNxv4+QF&exqtG;Yc` zW|7JD=l5wuWmnd~m(}RTb#8>?yaInS$%OR4cy~DOS`c?9UcZ$1DbU>wf0@9)^;vOo zhM)x&A?{Ht_Mv^n8skx_dXZt>=j!g0e>7;>XBcD@mc;{`zT_8 zE9zPZii0JLP1Irn$Zn&sk|TJUAG-P{vh!?^NJ7>w_(mSOy4VMAfcDWEPHch|Ci0HQ z@yTkm6c-|*m+Bw$pQP*nrq2i2-_xsffXqRPI%!WWsWF+m3AyETGJ9|IVLz;60iA1Y z$mcAG9apKN#)Easv2s_G>U(%g2=O=o@3}-o5_cK62*M7o za(h`?)!2N?tbV!AOX6!awFj6+n&-0xz@#+3s-bRc%h_hJ@{{E|i*}b5RAiMsEI5(# zCVzfqu;iZ1L1n5m($qKoVDrqz*=(;)Gg-KFidL1LtL_$Mhoa+I^YbrNHB}C(sVqBQ zKB;DvVgcGmZ<$i3so`0J`FcKjvHF(`z8j1(erFzMK1#n>DX&~wzOCH5bXeh?{2oOw z${tlttXf^ET`{q;t7NfBn}+7jwRVa6?W+q5Z0Dx0 zW?0=@ISp=mi2Bf3t+&QwtiM_o*HrgZO_bi2 z-_>fS^H8U!{$k^ICIto$wY{_kY2VgNksMHZOD}4?(>Nw|Pz;I@h?gu&lg% zTU{&7hgu(03u+#zMj5WO`DxqJ`n*AR$-lCuh385vYBiOY%KK%`N|dIin{+QBC2#{bDQO1%r#l;oAiRv6WVY24Rr zSEHZbJasxWmaFAVaeQ({+Qr~pP z89?Wbhh`7MMW)$$oRU|4R1vQ^+Mv*MsC7T9w>pmH({q27BuGALb(Wdc^RrEc_BDYhaRnelH18IBy z-7BAIxZ2*{v8?_M%V@I)CPgO4Ezj3$U^1#^YU=Jkv;R&@Kbx~X|3}fzVtMYARL}I+ z<%TJ;6W1dq#w872>e{Ah-a`hHg2b4rt$yDjpE%U8Yd;Jan)g?wN|D$0S z=P^wV7(J?ZU6ilt(BNF_bzOs-A2n%Hey1?1>WJ!2omQD~?#eW?c#A*(qSt2(SNt~p zV|&}K%DRDRhGBt;bN!D_*PVl{U2C0^XZ+HR-I}&4=UV>g!qIu>QX9lwN-d~*YIx3U zwZ5;;H4{DC+YY1bj@hkic+0k@QHip;dP?2#Due9UX#FVLzjw1EtJ`S!%XG>&WFE<$ zpenVU)jYD*Z})762G(25<{I1SS}C`b4lCG}6Ox=CRrO{3AG4fwbq3ly4J^#8>s8uT zG;;9R(4xj&+xoDwy6|nmlaiao-Z>r8OjFmU%}nW$@F8hV-hVayR8Go~vgSqx_4d}c zv778X->cZ8z~Q`kslJ=aFvIxEkPl_C{mW2bs-9%p##lv7PF$jhaG33Vw&|Ptr>#yn z%y*saY-Q_bx>u*Ju0#Hk_zRI;J`eg4kR&VWQ@0y$yDzsfl-W=9s%bl`g_Wb3(Jc9S zDW@1zh0-dNlKeJdS4^K@M$zAr{d0O1OKNou+SoR1XjnJoY9e;Nvis67D^@4c!N0N0X0pjmi@6OOy4-A%>^RPDl^J&d%hHU! z`g?2q+03Vf1B#aBYGg}`=1N{$Ty&Y)>SL?R&XyK>29YM)Ek77fl@nu1ALkY%2L6ox zuK(vo!rYAVk}~NngPF!tjFT)wn^?E`*Y26Cr?ErbjmiW?L(MdeMO8J)b3Ubn-3Z^1 zwzTT9BA464&d@w(7HWH`aiL3r^CkObrunifWqq z4VpaiI_{a)IMb%0UW9!I$7MGA^g7jzEb>YX{xRv}#)z4}+r&?a4@v4=utWCQWOcpe zjf-0hY3JxR+G?%&r^Y{*?Us{#g9ndn&VvATVs>SVe40xqmBPFzFuGH+N)U~ zr)!obIwrL<^F!0-r(Mjd%j_KgE%I5^m&`oLPUB(b>E@@*4jFXN&NRN~dfBI|&l;zB zs`)9SqBi}C&sd^#)*fFOnDF?AQ{1ln&UIOu=0@+#@0bnMi&B}@)YSQEyO=FEzoa#@ zbWvva?9*idvPXvgCMR_a>yA`5mUcF^Yfx*`+uXpwRQ{&IH19>$hitPY}UDR}yEA^+_b@%AmypdOXcYUXu=Fe)cXC@}iPTro>KW<}Ow}1Y{ z*GvCqD^p%%Z&FRM_Hp;@6y)pEVX|dqj?dq7`Kydh*wr)ZUTvQm{Igrs?c_6+TDohD z<{F0Uh0Ek+nmH><#_Jrn3^J&x@XZ*Pq)e!n9#}ESsGCi)(V)7;<=Z90&5IpxHjVK( zy_5_e%sY8f}Dc&M;3-8q{k#JdRO)Mw>a)`Ty9#|(hZvJO}^?|sr+lF>+NxD?7iOmuv<(MBL}(h ziYjGRzwF7yMy1#Dva@3ImKPjN-S~Y&q(y#l{ihvWx~6!hng6LsOg)e}Lu-P|U5_eL z)1td64ms8}k(#3n8=GmH&eGYY_*QYT{AQJpYKxYU_QaaN^n{-)qs}CJ%KcP1S7Iku zDQDMO%1q7WPG%n6JeIjla&BjnE4iCho21MfRpMIuE8iveMD~{Ct3S4X?U34EFT>ln z=Utzf&RZozl7_{etC;Dyzx9{K$5r8(wwY&&-`3`8elguwZ@Rfe>sEDx()bdK8f{|z z2L1l!Zn0xNYKHfU(=3hA=%i~Pol`lcy0^{(o3&0GJkneHcKFb2k8yZ`UgECQz~Xw` zVO*OE*r6saS8ftmU;P>!qrUvP}KzewrP% zGqk%K#2a?j-d$%_?ozh8dc6FvK^MaS<>P;G-#dMM7Qd$KiN*|#HGEeEgqOHDmj)o zAZ@K|zKdhaPYop1nb}TdLp84HZO~h0(9_6DN4NHA(VK!Xr3Y&-$Q2r$Yu0D%_}Mf( zBcj9K)uo1dwTA9>i!+C2Ptrc=VbaZ{+l98_O@l4w)m<%YRIy(pUVBMxdX9gxbL{J{ zChvPiUM%iw+p+E4w*Q=5^s`H@{BtczF#FS5(LTNYw9-q-B=9O6kG~Y6Khu*{?)%wU6J#=#L?(s)AMbEJILEDa35#V zu6SH(T;5Yzgn_TrDrdy+b03$!8b!m>I?YW@Z@0VQdBEJOd{kOc_F%0eu8rD{_Gn~K zRoFGVMdbv8UkwgB{I)XIEG~ZhFChJ3{*yXm{gVchYrZ6m|Ge$%nz$R;t1ERizv$%F zcFgNhJlv>t=R##i;M;KX1 z?Xn}Hl0OU!FO98Ns?h0fG(_?`e{_yUouAb=_hs#`ch&6}?--~Wkr!O*sO4wCF5Kb< z86NSW-~NxJvw)5&Yqs#UmbkmSyAeXr!5s#7cLsNNcV=)MY;cDVB*X{_A@1(((%skI z&i@vRQPO?yk*ZyFPJOj2CMhYsIn?goL3#s}RvI1u=D#UwRBgAf5Az9lqVu6ew{a$4 zq480-$Y8Fimtn40S!G&STAiSJFSAtdNAXS5GuOxbN|2OW63_Je8|{&2w=b<8)4EFg zsOR@SXZxgjmFgX6`%)TPyHp&l5l60V7+w&Z#iafCRh1pesd;S~-Wi^5RMF6$y|+lo zarUEwFFMt79z`+5{goMd<18z!S}mU$zm<*cu5Q&)IY}334p5uGE-jlJx8>ce&s6sQ z&a-MG<-Q$F#UZ6l>|L9Xu$1J0Jf5T>Og#Khh)UQ`*=f(Be^t<$?DoU1X+9g;jVVOM6G@~vyfATFd{b7sl1`TY%z^Kf^9Hq6?k&mfa zTe!5gNq*YBwcofQwf!x8Z47<8E$ZXCZ)*25sg)-;d1kHsp7S;)@<-_{vw%VK2VOQ` zSRb42R=7!c;c{@$n?9EM8s#OK>znWCIoeII9c9&Ge2RWnQ=cDF_g41Ca+vuVD!sHk zmVa;hd0M7k_n+Fo)#tPh%J(ihsXSvjy;s68%aLiJZpLbDj#V2J{}}jL)~H7`wx<_H zjr!pD#kydR*5R@rW&vFpytJ@S2G#Nb%xk{m8det~r@8=qBI^+Dat>&F1^VQ2ascM_;E zO<%k6buI1wGRaZx&sUEg_|ERr!L0uDYp=b1f4UzO7vv89?OJ(WTMW87XqksLA6{^& zcszI1zgz8{j*I%vuF3gFVy}FW{8&&pylaGHpXgs#l^;`G zu6EX|ZP1cY(L)#eCaRsPYp6}8$D4mL9>Q4^n0}YMKK+(W=}U(C$p`QD-9!5qP0ISW zK3CT(=)_?209G=mI494m{kK-7#WMSJhoPqDgk9CUDnE8l)QU3MVxXd`YQH3_NA`={ zlj7VMPWTJA8cGXGOGhXzO(zB(8j(Kn>K`i0XPs2TTjHv*j-fM`Qfl#={yy^a?WqJ(Ze{Yq;u2R8?W>2-QS%fhA`+!f80 z2BUQQO1(Omyp>UU5h*_nYuwr2UBAk7GaCxCR1Yj&LX3uH3=ixbV}4Nht}@p;Y-wd= z%snkr``zm+`EhQ7Y1>_!he0Z*bT%i$Cvii?KE2zavxf}zS-?!Hj0ceJKci>1QBE1o zqWMN5zuKgHQ|lZ0g4SxyX+(RiO-jtyz0v#f=5%kD8IltkmJ|-G2ow+7*7gn=c7Je* zPppPhqk8QqVWz<_Jtx)H;(JLGzi;^dI3rJ0=j7REuXng~VX-V-T76IZFz{a^oX7I_ zOF}DbL~qkByLfwl`v6NnO?PE+^NP;(OpyL|!%j(EZGGb0kGhdo=|h`$aLP8#lC!yV zt(LUFP9x}A|ENKOdl^|BBZ9k&C8XIr)8T|^>HeP&zmicOGtC4mXU2cInN{n_ENRZj z7Fy5Cvp%q|gQFN!7Fae&)unG|J;Uykz1(uKJhrW^;iKw}R+{l%{h7?==55)dV-H2A zr=P4ptIF)!UO6fEOW7pikX=NGw0} z!+om#O$`33p?{ZWyz30M(dc6oZecf28CiU%{0sX~FVDQz`i{c|8z=dy+S;Od?PUg= zos`zGvfMg0#VE!x@q6h5MWgto<5Kzi0>>H`%G*{y0{47oRZZ7Yn&6meAf7>UN?>@AuFnN(yTMJ znkH*5b>srG`YaB9ZYxvEqR!~Ou>WbZkhxOa99{o0De89qDSE04=lMW$e(|m!(V3%_ zp_YVCzDJtj<<98h!6o-Q{?+s9+2y-MzE+br&i{to+a>$5W7x}=oKX!V~q zr7smfIkURR^gStat2(7cc4GrJg{Sv6a#G2!6IzBF-B&m-le(0=iQN@(@awDGK*rWp z>EWQs6(_`nr5;guJA4gs^nRc>rhQb&{*u4jL$)i! zJZaLZB2`xAE4&AKxEl;>X-N4ex;gpZx>r=8WPj_<%$gq^Sw#03GrypOKjw$iR?(_m zofma)dVllVV7$6XKPf$ejv86~OWob`lV_vai@ZO-4N7|5{>6gyo$5&#OS%jSf^s#R z*J!S@b#Y~#ZWzl|GfVmvcc`}5bo<}(c(1p*%_qk>>3-&cmOg5c>dV_&GSU*83x9Hp z&7S&Z_e<=3(Q=Y1xXo3*0sCu)TE8mcXZ5!$i9c({>n-qF;vO%%SU4_mb7333%)!$8 zq_dGhvm&EhtxVoAKqJl~-=W;@o33By?=qvhlM+`O52qIKrv zLe0s{bve;ZbL5w-j{Cjpw>$K*)pc5j-ekPhzQT}ik4!g+{vA6!H(oK#OyX8z7T=zi z=AIJXuwKv6{gd}$J73wdx(fv}t8rdx^wVa%LzvYB`HaS#(wVI{bb32Yb$Vc6&WbyXGH+Mj$XMWfsK(e>YCdU5#uBf<@ zNVRbHWj@jRk1Km6WTc%`+Ss>+Yz=m`Rp$%}&SV~`bCpTVWscij|FwQf{#pLKu%gq% z#Mmv%{;1l6>db`H&({+d)R#({rN>&n=kCoJ*VLe~!*O=ds_>^lp;pJ3M}$Hz%Wj^z zDJy2^MVxqjHkz$+&`GTN6CD_fv0k z!zg~b*q}e&%1!H2U1Gw<_e(#lO7`y@Z286Gl*!gc_g_W7;u|~+qrKM!SUdhFZ)})Y z#8f;~jM6z_Q|B_sDOvwcS7yb~#bxeM=U;cIbUG8gD?3=nNhI`z-ESp**@ySN1NsRrj|TYcj!WL1?7!b)DNaC-OG6{$my&;Nkb# zIHYyd?`>a06INCTs(x&Bt!Ck<^6E}4nX|FVbw%izUaOsY8MNx}vfOJ1PFms2@54U) z5v^OUr?J%ji*ak?yx47#!wUR#qWsAq(dMM=LZ?psp4y-7Lu9us*16SqbXY%P*3_S@ zJ|u3mI~7pl{z%8DB`(|P_wl^%t-DE6_GyJG!?0j)yPk%ZRlMhipn+a3#>?b}x^wI- z9op3URH+iCfB%-E-yEoS$Em?Gw!8Y*+^@Bc-4Y}}vk@74BlboetxvWZ8{Fc)UFQJ1qg~Ow zq18`ZZxZbFI`D6g4TclDeX3@(zA<N!beUQGqp?~bl zHwWWgyUm^Z23gn}NKLw)w^pG$Ooaq6GPCFa+~ zYbM(IT4b`T)6Yl#N*LR@&CcJykJC2oi~Ne#ma1JWEeTFCD^bj;+1}Qq z73Y-WvPbV!^We1L7|Vpm1-DvD6_=amSLjvWRJdzJSzdDg(yK8n-u;E{DJD^4iT-_h zV9DsnxM$D4hcx|VcG7FHty~eEaP#%yAG5eI?hk_k?ZRY3R5soB+K0E+E3fKZ@#!4s z(`TJoTeC~itd<}niO+M7OWMn-4dOK-uEn;N-zBz4p0=#Yy`Ej$_(*G>dv(8A!w!TE zwR9JY6j9Pt-BhN!a!Oq5dr9=GvR$%tn{>M@&GmINey>l7X_lKt`XqRFSo>&LDK^vu zmI-x#lgq5FgZqR9JAWeWYF0GLH0C)g-5wi0YM+yN=zH_GkhIwPM&-D+^wRG|hnkaR zkF4DMFZ~fVtkU04S6`LNnX2DYvuXX1B)l&F=vFM#;XIRFw$ooTUqr;k#55UN{^c{u zL0$cbqOv`!{bSpq&K(jhhpxUe2fcDx$t@~LshThA=UV9RZl}-XrZ4}P_Aw^YhC8M= zSvtA;SlaBoK}siUN%)pA6NVdjo{}|pY-0bDM@f!0Yh@wSh z*I^6V`;L>69-a3y)-rdJ+V}vi-X^xCgn9ep_Uo;eYtpK}@naoR2A;;F=kV5*qwAdI z6I~w!nAtzz)w9-qtbgPFYk8Z!OrP(rIGEqR{(!unyqa`u0_8ZkUEq5hQ4MwbA`Yt;DcPtkYtc4{SuB!;UytYJunjbdu+ zx)Q_O(~bR1ox&{!%(atrZ7RB0yGql@t2*dUhh60JqWoC(Z$YX4&2h{GiLGK>b8CmG z#LuM4Wo)o|ShJ_SF43LPc(UnR{k774Sw5-LGv=3GSGJq59?Kk;Qf@_5MpS*1f#5UE z$JyLPx?X6&*_l(3YjK7$#%^FACZwOqz%E%sBj;@D<+Rmonvh+-EoFCfBL~iLS|c2&a;g|yQ&svodF`i?55>O?RbBQD0q(X-yZ%hy zoYL0P%XVP@+VC?r-QtRlh24ug4phb!ENdEN9Mfxh?{}u38<*t;Hinvn^-AtlZ0^+l zDn0D`#&3^*N7v33lbDS{v+{2-U2~O1v724+nqD$DW39KHV;e^_IW*Li^hvoEEs6VG z7|X15ogTQ=ZZLnY#G$xaxxqTg-_m`&UNzc})T-V!zAjW0O;SbK8}_XaeP+I2A!}rX zVOCSU%5A5LpYxKxo_ei(-}hH#{buP%{dnzXl6_>ntj#pc_xXUPem~saX$@EIuXoG0 zi2e7a15o%JhJ{?$7QyO8LYF}n6+5tB=Z~T zKiXl2j=$t4ZN%-ZHcDRl`AOud#L$`+%|ATM{7Ov@x0vNRmJgIzJ5Bca>=a1nms z8f99Ix{J(?y8avZ)9-|>pq(Mf;4W4_jWd3d^0+)V{_=)xv=n=dS1wtp?mxYHAQ`AeK&L3adt4{Bj|l>82xMM=hNR_ zrdn6(w!Y~24)E#(@qW+%k|ym3GMM2Dep4=YyRY4 zN$IgJBkaa8f0q>fU=x?u6&OwqD(~~!Ypd~Q%B1ak*`B-y<%vY9lYbwZAkt)u;&=no z)v3POO55SM*;I*51DT!{wes7fUs|P&o%wPLqhzDGI+wM>EuMJJ@Jn}O4fS=7=$w=H zZs#&zfBh6$oE+X%tfgzW(E2(PP^OpCnZJtNVe;PI(RQubY=igeD>$3Rmg?4y$9fUI zL;E)d53;Zjg;ufi3E?Bvr_ZzcZGV^VPaPZ^6)R7jUOs|dp&w=S&fL`Ko_V%=d(ddF z`9>S5M?{2VG=ID}|C7U$&7T)nUDxU3^wT+GnKjjx4;AfX2{nB=(&aFPbIZSCI zJFlZ53u)e+)t>M@=|_QYm$TkRM~#kr4FoGFSE6NYr#u>Tl~xE%D+2IH0-S}xey+^Jy*M2HJq;)TyeU3C$Yflq{kJ9 zZq2J*_i7%M_AXKs^eM6~yH$0h+Nn%8FFku(>8Y;sx)s>R_dNSKk97Iq6XieH<&mD8 zk88eLomTQapUMr&eDX^cXAobN^HH_c#xZb_?>XxlO>44^^%QjFWybfMZuqS6Nw?`m z-6#u9A5eT-_-&qGKf&~;Jcm2osw!*FZY${3c3QGTy0LpfWnRwVto_9YTMC)ECi5Jo zxfHr|xR3MHu@BK1MY~C!%HxE=^<^b%ssb9?OP?i~f6M+kw0^rj<#Vyu5#R5oyA+qo zo>jK7;|<*H^E~AKj$U(20=v%?Dsw+IQW`lne)bOy_H(lW(|7(Ce%*L%w+qFwpHKs5pYjR3{Qta=n^baYXi38HA z8a^55_R1SMWLUV5jiyK2;pSsxZ&Nd;RHwJL+suw@sJFe!%K!DWXcc$DsMUIeiL-Q3 zXL;?;vZw+sZ*-YqOTFS{=a%~S<>SiT>a&$`8V1%r-WH+u{o4B954+=8W#lZbYss(e zUlEi)Fnx38gRk;{^*7lm*8lOgAwy%+o_ZB}N zv#;%;nLiUh=b0%4!))hFmrW)H{Qa_jlS)2M`yBbpqcX6Y5|424?Qa{iTGsOMdUhUf z2mLYe^PgrT)&-ZD$Fon%u4cF7d?@&ypPlm~FSFFA`fAnk^2ZfloA)xd)|J7%h7KQW z?z`D&AZ^O7Rs^eT$&u=7^^coSMmJ?u?Y8B;3a^*FsJCs)?22al3F}l_nirRpXEJIJd$kJXzD9IG-x%PYxCxIGw*QcW|edgx3bBtYJW{x z^SQ1^sx8XzZO7`4l^-g)THsjdQL?D6hWkTjfT_C4zj}{!bc{~f6u8Cs)&;ymg!Rcy zYEdmc(iUCHW#?ylXSJl){4W1BHceJCxMQx|!SoONN6voEZT2B{51gEQE(eYBALVdL z{aZ`Fl1+JI^J7XHtGye;TltQJ_VIO(ist0ylq5BpEC1qyID6Gv+LouGyG!sT5p1ujfRWn2c4US)+QE)qqUYv?QzR>eHK3+7r6(@@pjeT3ZZs%}T6}*==^1XW!3CYWRoDRq5K~ zSesk(q&Bf8z4Ae+P0^&n&&A;ttLmn=k?ahbQy-@LKv&SHkmOPG83*}5^&x6EWFO_5 zHGgW4(<)LQqJBtygocgQdaW|`&+;L1P1$T_B2li4Yu9h9Zj-gE+D^AMwWPJo=(wsh z6|NKC$ZJfd+9$2&+AFkQYMs{%)UcF~r2iA=@vD_D+Z!95Yo?T&l!li6QE|6!c*~vE z?pCkP?W!z7LygwIXJ%tF$gbWx$&}D*QA?BzV?NWd^n4~<5+QYz=Sn|QrNU(1QE(;m zm`zf5=_APyW;J<3Xk&8}^Sg$1>}vIB{@!TQFu%d9^;x$%zlqFYOl5g$XEaZ11!+fW zvl{l&T?EC2D%?Ab+MYF4)RT2Vwe#z4H*9UZ*f_SOx$Cp|ul%)+iJ^nZck>u)Lpwja z`L++N35)B-v3iYa=fsQMnjIN!+q%c$myvP>yNJi#clwTe1J=qW`B&K!>1sMdC|12zJnLT5`A4g?v7$D&`gnC~ zO?RDn)6=#M-8a^seo@|ArXlN8`=S-Cy;f_z z<~ogZ`6x*Q`nyc0&6r5)7WpsLLj3Sf;I?w2c!HU{ zY#LejrS419n6?=m|8)JSWL2T;f4J-VMOY)ck!FmUG(Z~9oFYeaM%~H|_b#scq~e2O zw{pE|E4!TEEuO=DTvv&s`cj=!di{0h>(uG&)8VyMI-_*MwNupdrC#(?kab3rt3(@g zS{RIb(_guX$`IwhoE3SQo=X*?@|qGiqOb2A{sDK3T2m=+y80z z?ab?b-z|1Hcg*VAqBy7AqZ+KbrA$|y;cpQp%mL|q=}JkvL{k>39kLzcf>(t9D%Nr(8|`Ru(E9&0J=}rQ4;>5`o%EWZ(|{ zF3v^erp!__bQN^ucC>efcJ=9$cl7S0lw-NOd<`ey9&w>?gL+IIBqI1q)f;7+^19+~ zm!flgXK{y4x3x-(ozIOR`p|l`30)%Dpcbp4qcu$Py4nkQwb~~&J2i6+56uvHD&54i z%a5xk$Y)D^q+xPSo+8zv_X&^KCJs~$eh^=QioI>Pznw0Wq1LW|Kg#)Vc3@f7aSS_7 zIbLzPtDyZ#+s$^@u7ye?cB}Ggx4SZzL%l94NC)FKeFNri3iFkkMeG+M#KW|Wp&)7=#lUag__)oG`<*yE@r#9 zK>`?7{2t{`r9EFGtVX4861S4G7sF9!_mX@mGJ+nlnm*6u(*F=QxhtF=(I2MJrDQT7m8+lu8QNw6Cr#E z7c9<3Mc+^=MGR(-vT4L8iJdf_nn_NgEoggUF=`X9qNeU8e?ys}d?>n-o7g8^{kkJm zLr|GBmG8xCp|WkKAQ#l|bdHjTvQx}ss+!qIk!+%}Ui?g*CftSBoQaT6?Z#95DGa0! zNn9jXn9YPfSHfF>uzH?MrT3HB{1B0+%;~kLVD~`ZV=bnQnMZErl>{xTmP|p#&=~3| zYMl~Lb+0Wt@oU&?!e(j^F_do?)}R8Z9NmY12%q?N@H=*jMZ_0jnJP%NhWo(35O)!Q z{1;`G@*=xMAgI}tA!?eNXibTXK1%*YwbS2lGkh(<@?TZ4$^!O2zl*=Zg>cjPZ{mJ( zE2=-t=%dsd`lBRC`dqq}xl1Gnny8)lNTiWG|4?yE5uuWE$--gcGk=?#N!Zah=^xBH zT3clJsRYCHp&y8^gmdH~dN2B(OeGR|SK_C%Om>}eMFliT7Nhd$jBrCWk~KgT_f}z` zID|+PCU9@~lhg%fH8p@7kGkw`VgNOjZWm9nzN{Yt*T%J)k^ld;13G)3lPrr zh+*O?s!GDrwPG7Fl3}S9aR`}5Z58ixXT%ZIXxtsUz?~HC;?~qYB8p5GPVgRNIMbg_ z0Z+IAV{w8RElH!pXm`d^LP|`j&HOC? z+b}VOi(tX8W2(pwVI_Hz>87;6mAFn?(k=7>IskPtcgapMA02RFgg9|7Q6Q9ZA>w3u z1!X~uq&6^au)Q$t(m;u?^rP&A^a`_&(UyqRbfGUhl$CQ&xV3yPcbJu;qt6mmR99Tb zvhH?%2-(j6WX%Xa$xq21TAlb4T|1^x;ml^rlvsdTmJ|FMm8IgS!j|jls*=X-<1PxX z#nYgN)T2IZFr6WDmW`o*3ZFQ8a__2xsvCe~~W|Q>jlh2w!Z5>OD`1Yj`suf;>j8 z6~lN^K%Xd7qaGH|32(?!W+@fHon?9PC{-i6qvLjy@I$l&-{3atNB$xi;SIY;u%>b_ zqQ-m%w}N*?Et3=K@n)^_8Ppt-AY27azD*cF{zLo_^~j!H znQpX-&Zhe_A0(3`ze#YS$kX(9a-49QbLY>9M^UvKNmP@W#6JEn-h`~A_c6WbT&$J_ zY`7{_DdTv-3Uxl{X~<`DZTtfv0bNtjRZu7qdGZN$mWbrbxp$b?tL!{wwrT|7An7a3 zVH_xHakTKS7(@J|9!fjpPVywFt>gg35Z?T7)pIt1+$znG<}t@eN1>X_*hrs9*Gj7-qZw0DB3$6iId`ss zk0I2kox~G<4|`0tTvem`!d(OJ~{?Wlw+vu zqlgq<&b?EOR@y4AblWI;sVM$BYP3U8NtGasAcoS9+<5WL^1iEIzg|cBgoUJ%I*&$+XxU7 zOo+3v)_GClI_QfG1!s{@~-d4A}SG@Lz7I3>glhPdG;Q7nlP7fQPUiRD@{M1Rh7#T~D9X z8W3^*LItiZ?8qzB88(3u6oGd=N4~^J>%!Luzy|CCso@u4iCR$uFfyisg>{V>24dz} zRCE6zMuL#&M(jkbvym79&W{c%tgk}THS+eyhULFjw}M3Xc$;&0pK`&1Sj~j^!B_ufw)D=tg9bFH~ z+rN0WpP*%T@P~vC;(9!n9;ySAP@DPy^~qKE^QW-dT!~0jUS@zR(L;)TiE71Jn8R_f ziH5`$R7Fk!8)P`@<@51rXM{-TP2@39DVQmIL;e0c)ICa3FE~^DhnR>y40}+!Y64DU zHh8nEP?Nn8<9!#^lwSB=1#0|1p{DZ@2#^C%`AVaPvb_@m-|J1R_<;O}Pn3;cj>4;-H!UsYB35-1_eg%JUA)~!S$F8O4LF4oBgQA{)&0i1f@iZ*+?LU zfE?9GPD9Q1OjK~UgYYTh$sb`2&4UH=0%PJoP?atUTIgc%MKAz;0(C|IBZ*|AV)dxF zLts&9eNXU0jb<`t&Jerr4(J{RP?9}W{XNy&Jw)jWkf#bzUtEP=#pbAKJ&5)D5H-Uy z&`s|x2<5-(I_nm}wc?C>@FpNhr_SAgr^%+=`gTRhBj7s3iuoIoA znyp0jX(ImGf|^o4yvq?V4_VB+H(8Eq|0dY3H0-eu?4wy?KG+2lFsdqH44$$alYzr?B7F||;>gD`d$*f#{I0lMhdEMPT!5IG1*&&DcGzQ7ai@ctu>jl*g|HbFzAS2qPlMahjB4Y#VD=rsUh&2! zCW9ey1J%;AQLlU!?{EyCFdN@<3YE4l7^mA9?{cun8c_+q9W}*i7?noU&*q{Uf0r;1 zd@URN>G|+TuRt=Hffd=)8+#(?R(2TK$6yN_6eH2Uu^G{<3{~76SRHEEO>aTAY8Q5) zKg|n}Q0hSz+6KL8k2hX{?!9+GWmo`Pa|XnxR9KTE1Y$Wbkutzvn2)hrjFq|(^~ww? z(bqydS5e0F2Xx2y1fs)rkam5*KBG{{{}dI*tMR^`;J^$)t@L`-3unUCw_x5jqcVFh zcHmujHBImwTcH{aP_yg?=GY0a3Kk3Au+~{@5}U`yvqh{mw~kBaZeiaYAnM6%>I&_{ zbkffBNf0Hjg3M?DHcBFFq8nza4@QF{)L{iblOsXWH2|Bf7x^dHp*sj4Flr`|QFw1# zyk`b1)FhDmHSmsC#mmAmzJU9P-j<)avD_DS3N+FrHkHli0)+kIarE8n>8}$HUPvOoddehi;4~4=&0mysrbSQ>a?lU#@!SGv z_XXhcX_6l?Lh8hC?4L^P;xzstZwO8c30~ZEsEJVcyNag{M{V*U;tW zA-dQ-;=iEhUIcpUed2<-4O}l?8${F|en1tdduuWO$#_nMI1ZG&_uv(L1z~O<=#vxS zmGAHx=!g-8^=StFMlUe<`_NKmKhw>~B{!H@dKDE+?!fiY8 zXlSsPpv27w)A1<{neDB9u^=3?hOg?|}|`P>L!>kJ#Vg3y5- zHKO)XF;pYFBGa}#(aJZil#4K~Od)>s=+`ChQY?5H=;A!qT9i$GGi z1wKO)>h^njC2a@4$e1+1_}NnXVEwki-|qycA|1Nv5aQOqFrEt7F?~>P=7F8B0F|yz zEC#RRJ-RlYN5qkXSviNEjrCj|HxNA1Q1rwY3zq3dSpC}=tsD6JPFR~7)b=k0F9aF_ zW1tTW`VBT}GBg;J7;I_~teX_`QAs+3uxmv*pnJ}A>IynF-oT3IU`=j-^JjoLJ%nyU zVWJD{R1Zt#ENo;?Z<-!rv=hd95CPSL?vf|?7H$(apS#aZLBDl7Fds^Va8Sld#g(wA z*2HYs_jgc_p`z91jM_4Sc>F>c6K;+a&m;7O)Xg!FDefMuXwfM|>*m zL>Ld=nYa6nhTH*-dGL(EZzg3(;&IhH%m+Xdz z`5}HMhEspjXXy*nW@z-@7{l`*FkZm=iiPqiLOin(wzL_m+?Zl$eOj9uMnpk}^hNKb zk%S&%##v|@RVbjV1~kTE=vI=9M$T;ld6(EH?!mVX29*&>AE<>Pc2gUfaX zM3IgEW6t%5%1uIq;tDp(RS+gPL@Y~$f5g4;`ENnEU5(w|!@so}aZK##Z+sLq5j~KvzLDn;A@`!x2pTGoq#n{MY3y+1 z=N?Xr-}Y3jZhHSEwT-v=)7kSixtr_qlQ6XR?NxKr7G@#GhOTPMs-O zw<2PiSs=h=fJYLC_q>Am{{}DPRh){S42vdUS0zG2s)UhHA>W{q4~WP3EnE{fLueN} zv1UUEA7lzDg(NYbc!z$YBat~8^*>Hz9Qax>Ux#ji`~?J^FEZYdOY2001L zohR^-g&-fUgr?XlUcjC{M$8k9g=zc}X#3TmSa*W<9LNvhejqC{2cLA7d7os4*|>;4#o=94uEVahn{79EprN04h{Dd6@F0Ly+nF7Z&Oy z^sWo|Ro4-po`si-234eoJHrz_-S{REzlBTu0Uo3xeCAwniEx2mhnQ`OV2!bx2fsQL zzO))Ye*wKIlX`;+ zKL(1S4ywZt_FoNgg&Jr-)u5TALCv0qmGguedkSXn3w)O^B~sJqaQZpopvmxib+Evn zKy#9VrnMXVo2iJM4uGlHCCrB694*ER<3QgV2P#fARFw%aN;&BhA))G3^07Q;7LEgl2yQNFNX5n2QOR*on4HWqZiI9 z+(7r6FZy7AP61Og4Ex>;Jn|!i7c5Bv-f%JO>;$O66~bel;EOpQ^uoRh+RrO^X)9zx zy+Ff>2bEBZ%)`9ZV>eENGR=TCGXX8^BG{@FxI?jZ89 zg`GWv^?U(iDTgZR=6&GxED^bwVAf5+@r^=PJ0tQERKh{nfI4X1rQo6(QIDbJ{(KXCi0=dp#2y@@eBgNCky_G2KnkC*vg;qIa&B8EAk@zr&QDzB)lEBhc#fU zRdRL}@^EK3bAAyzgHiCfS;QaUBRvDRDIdD5r+ZBkEbb4?)&}r(df1&=!W<~OF2pbq z=!y0ky)KQAx9FiU-X{+uE0amS!aK?lCmw>mnF(Lz2JN^Ck(mSLu%3uVSImtd;A>M4 zU|&MPb_{?Y*CYCgn+0_t6F%b!)PO#^=}m`c;Ds>63?Fd@^dDApPY1f5erY`n(qvF4 z)e&8WBJvqVoQ2Z+6XRIV?}3gmLYBjxZ{RHXQg|pMVikFn+C^J1yO=`8Q6ezckt6&~ zo6@_%yR;fy_!h{~TVnlRL^y;?8p$@cdiRdtn)9WpfZo8$pk4N52gRkTlK7Ygp@{ zh^?Wf!KR&o*hC%g(}A~HiAebu@@mysE3>fj_LJAZs`Eu|s0q={Qv6#wM)wW;#Z6@F zHp3pogJ*XF9a{z?k2VBs^|8=@b77Mj5#6|A$2LMI(TJh-5p(wkm97wR!&k7*jiDyK zgQZmqACv*IcC{eK`$=Klt1(Yn#7#Vv7S?tTmoX1S$x2}&R<}7;*%pw@y0KGVfDBjz zPgVu18BT7;e*cA7urJj3Flf;$P_V`5W)X?lem&xrx&LEUKSMkcja}f6bDr^tD{mrx z84q7M2fW^W$muM{dKrpmD->E0?G1qjuEcXWLGjdzn?ab`jvQbpxe1i38{k*HLl$5U z{`@;+Ag=QRct_;>p7Dc)9C)+;?-B6>tByckp#ygKKb&OcpzlE)qR~#_B$#Vqc-9_@ z{x&E~8qakUdipf7)E~)E@1nV{mv8WPpNIg7c z2rQ2|qGb`vCkr0*5Pa|$@byiQzcGdCeuKSbPhN&)TZ=eT7xC?5a3F)h275?MBRj$Q z^@0Kz3U1muD3b~B;%>-q)q-z+1tiGF_?{As?^KMy1MrAHVV$i6?Jx&1|6%aB`$O%1 z0)M)j=g|#dI>vD>c3=>47L(yw7JUjJaYh)z~9Ilb9jTDAb9$U!@!oz!Mk3CrRfcY z8U|*b0k~>^!3*z3CMyIHPByH25VDtdF#8j*YF0q0421HuruySo6xPW=@YLI2;g7*% zA4Q(37gWT5WC-;Jy`eTEs??!!VZrBN-ZsDnUx62!2)%0tpIQdxU;}QNfb5JCpXx(K zAcL?Seq^!*?~3p4mpCp;PWoW*d4=2Jj0V4BHQp9 zs;dK;!+SUt(1-o;!rQrHk2YdlhvSW|VI6$KK6(Hx(+{zxB{5o@fJoN^`LkK*G^>lT z&VpU+M?OVvR}Kc?xuMDiriFsI!}( z-u2Lrd-i+|W;O_GCI@85so3Sc5qliKX+RdNmjO;FPC+v!AkX&>KeG!v`#0jRdXo5ca7R@^!b7@j8#Z`x?X<#drp1ycvu5 zLZ6T2PU0K?ghz~l_D{!djD^ko0tL|@yU7}zjE}%B_H=gY=_h**tLG->s01-=AYzd( zi2IJ>&3-_=TEN4Z5Fe4PJ%t!#7nGPg*3@Zu#zpW7gRtXz|F0M7CgftCVTaqHuRs`b zUp{0n+{icx`?L?)gJ7H|xxf}KgvFW06nEy=MpuJ^`eD8awJ3_EjgI;4XY*2A*OU zh}CyM?ca!JeTsiNjmTjDX67LL%m8FmGQm{j;Qa@{QoADN9R$mo0ycU&6mUJPX%Z-i zOOVrjjx)TF|9Qe=SV>V(^xcSA4&mfs05W--peHSmpPLO9<{g~LwZUV@!g4J{ywXD( zjv+RqxAb9j>j|PRkhz$@VW3&B$4qu&KZN6SYZ3naIAWO*$Vx4TB~T#-{SK9P4{tgI zbT;VevREP<6oc^nZs3ISSl5x56;nKa9`=tuv_mQS zd=rQfPU9Ar3K`w27_rreL|@{GcVp(f@iQXv8n%Fgf;U92Hx>%18QH!-%<~el3hy5V zFWDc=WL@L})sX?NBX3a#bT_=k5p+e##T$?R-%s|u?_qHuP7hAN#vTWAv!^Fyk6McY z>2fsur5(@U_uQSFf+mF*A9?EMHV#ImS zAWy`2=>6e*GiQyx>W;mtgILxH#tzfR+1eVM zxjo09`UTZ-5O)(JF($JSA68?}>Inn+MV!EDaodoyTEw%+B4-IhVUs*z_r~MAS`Yl( zUDQvk*wQW!SheV`Tsj;$RGG8Db}$A zw7^@eRxi;>n9G-PvD{m34L1rW5ry1AeuO~7pDaSOG8?w<73j%}p$e4fOZFYvn_kot zsQnYvL{Mp)a1!zlGWY7@CQyX`Eb}q2EY&%)b$-xl?~o|A9QdhdxjDrO#63c+wnr@F1N2Btow!gmONg>&Fe^ z{^RnwJKRD%?PzW@I=2e@D^)=_qng1l1edx3mVYH;FLUgXaOf;g?AjgJ>*<6up5_hm ziT?P6vAB=(i9W?#ghceiP2hTJBz=y)4`TW>~7pToJz>_XL|nbcH0<(GxWQtGAo}LJy}?K>eMJ9xkQOUHb?S%aN_Q z%%8v~jpoPkQ*esCnCCE01CUoA1I~Lctm0+N|7*eqIr1{}k$Ok8A}hTVaj*$2)^_Bh zwqvdB!L5hEG=-ax&XP*TpP5T1;ai?Tx%Tj#pFy!sL58C@pU&OpR&xY*jXlUdVT)NA z?h&PO93O_fu^BlS`>hVAes;u0tat)?e>AL}zIYJczz0$Md+sSt;VQUw(3Dr8!75&)T7879$vt#xSEG%X1V+K6FprrF%p4{k=WRXx zVKUd$jaKp`k$K`ijw6ZXkcjD;>q$Gkp9 zubno;k(%hgqX|C!8R!%jA-4_lXo@r z*V+#%zB(;Z#pqcpqeo%K)-hKlpCyAOD&`gA#$2E^>8(@-GDVhP5+~p+uUOay1+oL4 zcpPp+9i|4MBj^caZ*0KPHzTzO8FHhIn9qBh3#X17c&7Y#%hW>ZyjRB2?AvG`<#j1PXbs z1<>jbkl`Fk=0S<1V0C&y4{t?$Rwc|AzT!5951-GUf!az%*5QdL#jT2Ev?ep3*~1u1 zG^Hb@za+;bt0Z$U!Z)!diX^2{H`xN*%r0i`GYc4kxegY68}SooSlvk9KRoN;Rb~>xWcBq!%ZnYgh5a+NVLOdeG6n;5B6>-TK zVGwc)J3+1AhZQyk8viiviG88Q&`I4Tg8*a0qPesL7FHHkfqA3<^AM$<>S=$sr6Trt98f^$Y;v5r5dQFm`AUJ%9sI< zIhKmVeKj>iWsK;CRdo=%bRoZtO;Qd~%2m%)eyUx{M&%#uDtLv%TsGT^S?;gQRYWPq zDW|Enuo-MGjPq62pO@jBB!aC{HLFtDYVHRgEd*lqEuk(_-gGb{!Hvho^6BbN)nBPC zkXy(Cq{hkr_sXk^dCEHFTBV)xkkUalN_9hNqnOwIS;49{vG0^}MVP`^)y-bR9RLe> zh_n0+Ay+iQZBHvEL>8m|Leog|oZ5QnZsr=ZPqIwXOdo+=44^OLbby1NtEBEqv*qXH z!Ll7#Y0+|bwM$ZTwb8+T2nVv3>Qm574GIt4A zM9P8WM50LuA#^2|)f+U`G!kVirE6uz@@>+)%wdUz+6m2tTB9{c*+=p(?tVAZ>D8rB zrgGzXTb!H?<8oDX%2;KiVpo^g-nZjlMVzpkawn&-V*8<{$&DLZ_H@2iRT0+mYE2)F zmGm1`Vb^-4uegsklNd@5$qHpdCC@}sxuoNI$6JLuZoey;Q<|>~1{&ShouU3%rlgAFkTa>RYQ-b*K7Oy?yJE?iyZ(`=crB zk@lI5d_CDbqLUD&$V2sAO*a}lYmK7vxuLj^JOtGmByOUfCM=Yvo7Po6DhV$cU#?v@ zy2FBS(D-1m#7x)H$x<-iXAz33(0HFEezhL$wxI^@(xKeI&gf>gzJLAIhRBAZ+M3FN z6_2XOhPc)NU4JRRs_c{px)?>S=%<#V<*NNnC*AP0=^n%La*plntnNI}d7)L&P*qoXu*01#= z$nEWJjr9!`jZuw18iSfsn$OlxD^1J@N^FilktofyulUftMI+v1)S&ZkBwG;e9iO(Q~a|67;-czp@*s zo0``RkC+ay7-T)sYMFr=Ro*(ZzPo8(*Im{N{r#2*rmC9_w{wFM_rw<^zDpaPpIDaw)_Njlt&g z91LwpJ!?Aq|2R4eu&S~y4BvAv-QA56f`Wj7f!+DrjvZsi*gf{x?bzL2V|Sne3Q9MK zG)Onxd(Qt}A0B6%QMl*qz2aMIukYK9=5@ifAq}5o5A-%!%yVqktaCFDyJb3BbwWv( zUzQctbsj3Fd~}ssW=#W%o}?a#9v1QGQ)q-$a@(>dO*iYwuI`=(y#Mv6b$o02$l{BQ zwQY$>s>bT3$m%w~!n1azu1G(flT!RgRkajpR_VUlYpkQKURC|05+T1wZd1|U^;-Il z&Yk@)v^(h6#jc}VQF-o{Y1!l&L2RRYz{1To$Rxh;?#~_3^L@EmSksH>}ZuL`J}S2d|_soc`&j_DJf)^)4$ z2Ba>G&Iw)iBJ0hGxD^$;hR@vlwz2Fwq1&eRZ@h+E$7!9f-B7USXV?7dvbWX!YZt>~ z`d>r)^7!H%)wi{e*uV6&_i}LTroXR#O5x^A|J1Q*KDmP%tgRHSY=X|T80hS3Q(?G7 z*{HDMn-WNZA@zNJ|SK9gO`iVqa`+_O*(ksy4cPjjFWfsWgR?COaKY*sm}fr1M1e zu-qo6I=w0Lac+-a{p()p-F5lX_e_hK9^syIJic2`RxD|JAdS;cWe7gUyriL7Ch4Edz zAsU8y2KM7UX1mNVaZ?OvbS@v5ElZh@GBUfg?4i`c!ocf!>pp(#y+3;ByX-aGSf5(y zF9zxk)H>1lsr+ccx-^SO*Eb&?J3WeVpPSMF#8PCUrUCHpMuQnUh(zx5j ze#L##Lk9bOus&X2m2&0ls+hw+Ez3sM{7|;hPSA^$H*f4JTW7J<-N9L9lqu|N)T)fh zZXS2x>)9BMoX1Te79YLp+O+9l-gcHxnaw7#J~t^{D6DSyF7%MrHlC@iF71)|J)+Ai zueWc$_sI2a_+r?ynGkH*Ygn&NohSQEvaM=NNwbO6i&^#aRe4lHgW{0MTgwgxyTtv{ z2UA^lh1&tsNV%l^T)QJbHg3k3{V~eiXH7#)nm7N|)~w6TPK5!sZo_pCmM+WKm1$7C zvHC&H^2+t)8%s=nK8ia1dfcnsU!pTK%Y3ALmX&@hdph)A*fqM9XuC-kll?HN+t=x- z9m;mAvUNIGX*eIXzNIlpsiSA&l;?Wg++Gphw7-5*Nl41+$cHg&b7wVOH-7AXq3xpX zS9%QZWZ7z^_3I{OZepfKe$VpQN_mA#<=dLI6>~G^hWC7v_c1TNW8TMF7o(BBwLM1; z2X|FN<2?kJ@~hmCYshIkw-mx+|a8|6M91 zPyO6A;@^zwYJZ)zPAl5k_qFa99dgs}fPH{al{X;yTiVV1aizB_H0uvYBYL8ncw^W@9Tw>zFcElHyZWUs*2I-D5YHqMWbgG#m ztG83M(ryuCZKyq8*{>uoG5fP=SntH6CGOfE+`Kz3?yKE*dPuOp%AR{Tvp>d*DcOb1 zYW{2BJ|K;bvg*PSkw;$r`p_-$V8QU(xq5d!9)@`Il(#K*Q5sEB{gmZA~hRLP>=ABLm`n)LoZDt>_ukHDk%{qzQ?Ys5~ zI_~1Br6@{|SH!)}327Xw-C2K_{(4;vp|n^hTKoOpPfiJ|^A6M=*7xyP*=cBx*1@IC zz8b~XU&(6r-7|V*j(^?o2EX#cQrCu)(q+|Qd7MpYz?OC!oK~sIi+AQ-Obh%vC3IAb zS4BtT3GO-pW?hc;(h0fmb=T0pYI9mjbb8A3%Kf^1OhfgbXwA_qZu*gv_jUir&aqqa zS5zBGBg{N}#&rw|UgG)8bgFoz*d$GrEEIW5$F=%N`VAN1hFxj+q8e=au*Ic-SI&#& z4JB3CIw>Zz>hH+Cc`xd&Dh#dKwL05raoZyIDQ3~K^1{r7%mk03)1r;WOI2h2q()76 zI?NNBTKM#DyTfyW?y54^pCO4xANM}dfB)&{N6lr9hg<#`Vm9zrze_>6)^b&0o@?@} zl#RcB$!ksOEV9iv8kQ+DvOL3{yfOW9Dx!OHWDMN}cE4H}RbeP|D zdD|NAYmP&8vx`0BI>r2%y{%&IuV(2FlJav;Hw@AH+kR}|p?*@oDBmLa`0Rl(!#}z` zPkFgF!BQ3JFt^o!4r6=$(|c~4wbu3xcd{y0ky2Np?;rg;Or~*~I zGK`v#(Y5rW_8xDeZY#PfTE{p0>hMsnJH_Ci|-j6;Vy))}c^;k{8?pfQw zL9TrUxL>bdly*I8^ZWlEAAj*Eb)k+&3(XG8y4Ce=)AN;oN23J=tE1c_`Xn7K@sbx? z^!2cAy{kok?r@pC&SATk{+j)2hdd81G1V)}O8M_gjZCvp-B+i>2cDv2jo>Q|2Oias|cZL2eNZ0PW=&-LC5 zx?B(3>Fgz&lG-*jFMMXsK547j2G^LD8GZv@ehP{oV?Q-KH-Bj#dLX8$Sbru8aRM>s1w_qV7HK`}pI_ zqNtf=tF7C%_3mcZwRgywcH3M}t5&3L`EocWxL~;yYZ~Q}<2&8&t;-0Ft9d`7--a1S zRK^U-+)-ww^TK^iz(~J;yn1^scWI`Rmw!EBNs99iy~Nb8d0#%~Y}CHxemk%(cx3xz z-&hNs>V@&0-%o#)@%g{3A)0ocH#<(~dcD(^HfG)`GrgL|#LDov=%smyjm-_T96z)e z=3DMyAfK1lF}B^8!C#t3-%QUdPtl2Y$?#hf(9i#Q%SN|{I)4@1PWYPK=f|Ry`tSe5 zPb`knYH9E3QRutX|FO4?+5EB}(ODk?-`@|LlM-G3#J(Z0AlSEUU|^q?pY7X76SKUc z2PTdyUZ(1*V_|OVF7tcqS+1{H)IO%;*LSgpGiDWzX}DtAx`k6v_m+E`1-m}8s&2AP zcl;KeQ1hd6+WeU9Ni!>c7?j(0cV6a(){o~S^CuObq9?uU_|`i-J8h@(fs1d)Uft_E zD%zN}d}_B)xh!qpm-TVmN-t>UniyIC<1)$ny}P^qt>R5_ufMj4`IUA&zkBs&Ej|0L zo}E0-yWVx#W4lC=RB$DAcgC@-o=HZLqhd}MJeA+Gy5N@To!;`AcZv1CO;H&eBSyWw z`F3M;Ue#Q?lR-jAb?5mVZu*V4^;8yQ7Jd0Ie0Hi|O{T7|^+-1(-@jVKSXfqlN<0~* zj6a_Ju{68hPIs=eyzqIP`CJq1mkf3W^sDh%=(NQwQfEZtl)Uix_1~joD-t#( z+NMXAj?fwJu)}?Rvz?w}y@uNdN;5MPJ`a3#<4vomyZO&_M)>sW<2Zct0I_{jv%Q9o zOM6C-|JV?{tL&~(7q=ar+nVon-DQ)lB`a^9>h|3@es+FuWw3#f?ThAjTTO1+!>yTR zh@OksxpZ5`viL!9m*T%BEXr6@u|xZ*d0)#QYZvEacLUq!V&^Q!$n~NBd!O*BA@N7e z2-{x4KL=#=|1)^5i=eGh9+P%AdRhF9qAj{tT<3Z$w%=-Gp|wJFxy&Q8NBoDBw`B)( zMZ3wax0)^X?Cw6-I$iIe6kHWhpq;Ik9h}|xBRq3V?$ydS!cRRT!wp6s%-&nZnC{RB zE4!L9BhozL!Pl*^hB>wJU0%I=ju~LrrK9&H^Ag$XQsc~i$ z7`0M-sC@flWPEOFdbPIkA$xC^wO;#LPxtHRd`a(fhJJKo&^xu5_>V zNLlz#lUVIRy&( zf{goI?o}V~)uFS|CB@N-u1WL5TPHlP54ExNc;4(!r>mBOb+6ZV%UK#bIc|FKY@IvS zMK)!2weBI_tDLXtjcBN^99Yp*yf$Z4mQ8l++@tv$OBXh{$_q4?=o~RrSsFRNa49zZ zQEi&+^d&hwE3$k1^K2wR>^8Q$(CdAOowtU?9GyR8epLr@re!Y76RTb-W}C&>+%=ET z@26L!yIZDTx#d@Fje*Vsn{;Pghkq?|EJ`h2>iN}QFLEr*Ey*wIR9v2YIcs;`wvxe> zzO|7}a)q;=v&jZ?J5yinpLI=n(FtYY-9EO6oSvyulc`_j@x7bZpr|gs%`WO|G~Fn^ zl=3j@bo76@ONBqJ8(ojNk9T@+wo~!Cx~Onh!N8hldR2BcPD>n)+YPh*VUea^EemR} zs`IXUSv911OV-}mBu7@I%vTgMLzKmU<9w)m$s z($dz~vYXMs)jgU#^L2DJa?hc#=rUL=02|995!0M*1S`8KXXD> z&&q+C2TjM=ymCx+dFAljBtvmi>00krnx3BbebBd+@heh7(^K;oDq~C!+iTe+*~B;{ zHe2L$L8q}eG1}zKx~IL~k55jm{$w=E)1yo4A!i0|4{|Y`TrMVEjmQYy6+SP;thSe> ztM7<_y)BM7$;~t5TE9w@pQkvKb=5!Y@~inGr(i2Ri=pOW29C1c)z8aDR9IBj|MJQ1 zle{<9JRv9BzUi375wGQ~kN9-4c2aug`KDe2(HX3Efw`GxOdk7H&g%KD;L*=O@Z zs;A5Q>IP}&$y4MxIxEdC**>vLwYgw>#3{rr&wiC|*UI>eptuRKy2)`r?iG5}jM7+d z)y69#Ah*?A`wHPzxnpU&s*^SDRTbs&m4Wq5DlN_?`pU-1*J!rTaB13DQvG8?(#yD3 z38ORil=av3Y_=?@qIH?WS4pR6aL$w>x9XN+nf49iR5Lx(FoW~jqqqgv*6@>a|CXBG zo6NlGoNn<^%LJGOvzm)KD7AeqVL(+cZtsihX^V0N9echaRc+)HzWyzG+gzv zEgw3(HUC$7R3;W{l;{;Ha+9*$GBeZP=E&>kna}av+2LNN(`~{$S6k)@=2hcLyObX- zU6tD<-R|eR>N;&Jvo$tP-Sq;WhpY|R=eu4{H|I#$(bqTM?06sjaou;vqQ6Zh2Da$7 zvHc;B63gD2x66`~TSPxjlhuUl=~-x*yPAX;rx}jXsS@AT##I)VnHIgvdYW7o@07Z> zc$>o0eyMM0yE&aF2A}f^HS{R&nwSwf`PsQ=yTbS88yXk29Xf2(=)@is&JImwSy2h! zV!OniPr6tL+-(xu#%g~efr0396bVpR&e#PoYLyWZ864F& zJ-MQ-Mv?JJiy3B_I&+$qmk0goPTP(q{wpWO04Fm}Fm=nl?10G*e#ELHcCc%h|#Gr|kqS z-Ky4w6AL5CE;Sz4U2pH=`!&d?b#GToZQp#mh-1&{UbKzck$bY?g>Hy-mGl3cwwp%C z`!&69m{q^FCaA*c*Xn{X`6Kcd7oMxI61rQqYO$z8dB}yJYcBD6*)>}-?|rU%{QgVRasp@W3^O{ zddTEj?UMAe&f*T^i}pudYntzC@!or?!+XW>f(hRhZ}+{v8-22-pTmhD*LIh^Yb+Dx zw<}YA9*&KRvdXNMt#S`+Gs$nBb!NkeoI7c%^yr@>OBM)I9gEw)=$+kZxzn+R(BwYv zdp!B`&F-Wpb>Zd{Jrcd2JB-sbDW8=WlHa~~LCL(*s)}>-IPLpy!}ETcV$LqA;qqjm}H+J?1HfSM+-t$aLB(JC@HaEpE7FP~%YLcFJ)u z5$ILT&aAAc)t}?P=jMCKlgzTrbhTfIU9>#xs(lJt^>O0n`5#tM1HUYdy^jbxexhIbOnq;s_U_9a z&KjQ(N@}7@x)jxwv}rKcEY(faHc<5CUPqT&qw2%8tz{=o>fOfr-S*e=7-@33+C9xN za_i@3;fLb~lzcSE@;(qexQ)5fIhA|%p0t@I>veS;r`dngdjIQI+QPJ$?4gBY%WNe} zJEyjp-QC-4GVNM4BKlp_yR;|2>T6CYGqpX@+;wq(ZCqRXG%qFlQQ^_b9MvWLa*Jc8 zo8;XquI48eysKO&KWwJ5>uvo-?}_S7?SX3V@~8r<{C$;SI>R0NdUW*&b$euErtzex zDd9}ik8fiVzWrEU(MGp>vwj`!beqtothn-wL8`8c*o1O|CM(A`sB^OU&4N-)y~pcB#QwJeY3NYl^K)D z%`|2iZ8lh~c-QFAa8k9I8{>ZnQ}i{gPFVXGY*bFJovMuD#MDgnw&95Qhwgvovu*!p z``YxOJip?PTzPtQqLdVrGqfSttaGHZ=2YNn&G?L22{89dC48>w2`IK4Jam@sWRJuBe);_1*fgds?$l z+mo8Z%l)(NrAnD2ilZ9V=*%_!$7qRSSkrXnXN@(+)9tF=KQ|v{drW4YKRcysX4hi> zs>6+=^-7#1+?=A4b`_^8uQq<6MMehocQbvYeQd9_t!2IO~t zp4a)HE-i){o+>VkTNM+Vxu;wq9@X1qo9i1#x87im@DWX{G#EFtWV?h9P3uejvj5Jps2m|a;%4SK zLRfdBg?OtVFZzO69&!zDV6U(&o z`{rILep+XzvD84zvmFb@l-;TcSI*F}v+{7B?y|$-f7Tf$ z2HG_Z&r3HK&n_KT;aXkPpe5g-9jp_qeNQ*XaEyVLBCy`EvTsF7rC&|UhIq+BbAm=E zrX>qCn&}+t}K^T_NZSXDD>;i-dc^dY-KWC_m_s3W`*W8p>>0M z)#u8U)sEHwR-Ug~*)T^~ro{sS zH_k14RrnkW{kJJl2xHR6LSur~c&%mfQL1-Mn$i`fMCLMs_E2M;UVno|o$K>Neh&#nwBc}ii?G_ z8kX9dw3}&OkWGe@;ijH=6!qcTwnmBMlF(eUQ72U2)F4#XS}RZk;m`?smVsBr|{I6s%S2}76Vl4 znaR2#R&isuwqlRq$W(q3{E0Qp{9c1s){a}|YnVvX5SBAjl7s@9gYZmh&nbN$)i;=j zd!;^bb^@4}^kA-YgZQ;+PSbjo4ilzhWc#J}=oLl7N{CSTHhDCDX=)I?nUb6<)0K{( zRWn+;h0@76$zQIeVWlxtE|V=pDeyh&NHSroY!)-fFNH@64~?_(Zm1!qY(a+&5;6Cc}>O2>(WPgp+*PIwTkw_cs@HwSSXtzo>pE|P7&>x z+zJqrm=gS?NXT>x{A9OrYn66vT{A{^+Um669ze3i6Su0z(-Wpi*RKZwYEWDOEN!^%E+bcbm zRS9bpn>Bni;^ec0nX(XRo@!as@y6awFO}7*$zm7g!>7q+$UPK6@*>zfW6&PxCR~%; z#lKW1Ra^KB3)w-b06y3wX)m+5yWnIuqG$11nWfw>E@Q&eNoK`FY&{czfvVfe?W!{I zA*_LI;vpssA1RlqGQ>VGiMKFa{1G%3q}^wx z!-JTloWYd(|CpyuX0H9Av|dgm?gW6CR7lU z#0TN8?1V?)3+u<4f4`GW5uVE%727myG&gHjYwS_z%Xi40i^eJwCGnzZA?(Xs)jVmb zaE9lbAv2RMFk?Lj?rGbm0ZrqSH&lz6jIM{Fd=y5qF*D{F%qrhuD&GcH{yW%yCd~U; z$u=!Q|3e5uUmICg|PJClD zS{oB&nlNNf!Z8Yg>+lt3NlzGDEtuur3-jQqECHpvHz*k2m4}gEOoge$ipofp zHdDLd%%~lKH(U&_)=PShj*l&#KS(@-XFOr{t}p+mN<08dWh$%`{ofi2k6;({Wc|wV zoeXq9%a}K|LBp!O;L1GVEjU^Z@UBvr7rr6iD=!qn;0`~K+?do}3nxB+xzgLP09(PL z_Lb){Te^lRSXVd!#mtq>h6SxB-4Mf2#l6Z@=?|uS_2AELk#>pqR8wFm+=ffoAGH)Y z%A)zOL&q|m{FXPC(9X#~W9kW>d>N*eg2}nv=x+=Z+px!vVR$v7QM!PYzs}5PApDwG z^ph;nCDLbtKL=&UV=#{XVLpEd)A!?G;dsD7@`WQLkS%0n(k{##e}p+21T*EP%#umt z2JB`cjJE6O8#yw~`cgE6MKPY~Nn^3sZxtX9{zeFKH<{UW4^dZ@uDq&RD~=WmP>7k$ zw0Mzd%gU;mH9YCwsvHYx8*jY5O?KpfOV{r`Je=G4cd$$};r&?`5 z2aUwhu!roW|1rVs#=P=oST-l&s6OUT|ABQfn^{{FZ(ssPGM)PbZtq-dayt943T9Ri zab!Nxdb?06bb%`{n(5UepdIESk70th9h~%Wctac$ zu?jd&I#|j;xO5AJPjKz~v*Qm`ca+_jMf)il!9K}_H8&B)$qd;9$q8#%Azqf2GMjBH zAI9A7cX_-JPPX+RlXYVn_X_OaB}^TMzz@iT_j4W{lTXYqYQcu?^4kaXh)UmKN{--X z9!FCxPu5wgWtvx)Idx0ku3TEhyB{EO+M}P@j|t^O@i|(30q`HwP^w5lYhfas31`tl zH2@Wy>C$j~ZzA)wuH=v1%z{oQ9^EI8cY#geM7%xD3K^i=avO&01$ZeVU_EBz)8CkZ zJk6YM74z$J$OT1GXVFrnU{ZIjG#mTzL3632ybH=k7s%O}@X|&|h44vlz^WgQD(D=( zZ>vx$>x%ByB3K8-Fiw_;1)?)NgMRS%_o6nql8Nqp*kGRWo$|SAmQ*17B#e?@LL0~r z?TSEVa(K@w$ul6kiS?$R4og>t{D zyR=!Bj+M`aeREg71LcDKLK}E^&xr^1*w9KW`ZSygIXXZiVFum;!F7>~#0yJUT|0RT zdvrSdWLMyZAAzTO0sV~c@I@wr1kb=V@Fk**gtt6Y9ID!`j8tA0KjSZpVJzJv?#X3m z;8-714N;8{6>#n%Wq(LUFy0qQs|9blqY#6pND46x{Xx_rkHg0^mQRu&5K^VTM16ea zf3UHBp(oQC7GxJ;oP4b!mRZAK6mo{csJP42>R(vw6`2!Cbbp~X;VC`jZEz&&qL3lJKT~~xJRLqDR|q5$@Ku$ z8Kn+N9>ZmS32v~%r^;sv_ds_qglBO4{*+`)Zr>G^VmW-*lc;Ef!sy-uo4OFi5KSueBOS6bYN`xV9UPUw~_MTK@g+Ly`TfL7!im|ny!A6Ru~ zU{ZdEi{2Nea!azw7TJ8B(;r@%3lVY)%)VlA5pS~>UfC69=D+h)FJx`V3m3^4YSqR+ z;2``DTRkAT!ML;_hqi%dv=j#VK{$q*YV}Nh1q!`kd~AjjumooHLNe7BETb>^W*#;& zk|;f2S_un6SA4DNqB4RFWhSnHlkr~mgE??XJS^#eAPV3Cf91*M!G}#kYsi~-D5Bmd zK`XKa-!n-32cBgh9OAvOOz#NpYJLqG7Omk4e88GKe)~x$JmnG!bNz%6S##n=g7i%$ zg2~eP|NUe)h0`z%e!|uchjlieD#Qqe`aak}D$u`DW-1>bw-9DXlVL`;pyJvOZ+MH! ziTJ1`Rf@hS(aj}lPKQ-_8?}>J;$zijV%b7*J31RLQE=JyoF771Xmf0x6qx` z10zm>=lcYnU!a(Ve%E6xbv*2y#qf=0!An9BLCjL^MQ`et7y@2@N7f$0|6PyP%YE*Vv$^!tJRR)Z=`WRu~jFM;Woi(cns zv{_f87BZF?^aalBRbrG0Op8>a=s1{k_gPDK$p>Y#li~f5 zmb=S-sJxWTn-Uwxqq|b18bnQCF7K(xPz+a?$?wSgrH`lpE>+%9UQiVhzvjV%I*N{0 zs3@VgH&m5D)zMb9SuB>~iSvutK_C34C$*iQxCIu-6R^|2k|BCE3l;a^ppBQ0M5QR7 zyz>SPl?UhrjfOE2BGZu1Q24`BX+~`wM3vPAA4`%gAwHc(9WI!HI{2g3N3|<47LaL(feo|S`edpgDv_Ht)5fet%d7tNsV4k71bY&j11z@ zSt^B5Xn-69RcOh_P_dQpNgd%or%8IZ`L5$!F)}_O5;FeU=6q}5!~U?Ogt?$$!uAp zZSt+c1ld}Aa5?*?L=|`|mj4fXd{=mcI%H3I4`Dv>`YOKr4L<(`IO+*7Cg;Mq{7Syw zC|&0hFQI;rDJrF0p7K9gYdp9OY}{~hAUa@eQ2kg8QdvixU?A|Gpz>5A_h{l?DB8}; zh;VxF)~CTpGsTWh@*La6Aa&;goLeYsM_n|5=y?J3K9cBaMYZ0Siaeh8*rr;9Zt^K1 zRGu$)lluq<$t%5x?T4fbFjH-?f>w$X3M0hZ$zhr7d4Ss2sSr~6%&YLHR-iW&h?d14ti%hLv}zq47gn`D+BTKMpS`eV zZwe>r@mwUP$;rU?h`hV>mXf5wM32z#3`_T4(sO*4jRUHOd{jesdPZA27KQ^>dZA%vsKbe*!h_- z)fc1UrB*dnka<3$0Fnmps~%?NZIoR6RI^bn>?IwMT@{+6>2Vx2h@sS4r%|a{Dn_Wb zqq1frJ{FgQqVAv$;3aP$r^v~8MO1LD@q!a@XZ=A=JLHE@wwS~UOoUk z%7>5Lh<4;c(2Ph1Y8?`HRa?D|-d=_k@yJa1_+P;iZ4W>sG6fZX~AFtDdPMPyv_?{#=K) zj32DzH|ROU5RvYK#&&=$G-O6-i|%EI8p*R~s29eO#g5TKc+6*ABWewx8!S+fZln5n zEG;0zz`tf?lc+*d=|u+8j~k70h&IgD$<#vS@Tg zKDCoLGzuMuu~?}i^{73FtE;SzpEsH}{YtfNF8haSzB^j&-l{6J$Vb3Fodr@d0M)mF zJ$XR>1613Bw>%E6&4HPlEp7oLU7@;`u(#Rd-pOQZJ*wLp@^L&?kR?o`i}8r)n}I+7 zfr4BmN)@h>k1R>hPy{Mop{}+YEr~Hi(rVP|Zm9l38RC|BTPl=kf?h81OD@*~iS|Wl zVK%A|^H^z3s$FCHKl7=*AMk!M=_cwoBiLgrD(WcSbOb)4R`(7do-anlxF0q%2eqfZ zL3MFYC-Ri2_KK_`(Es#CXQDzF0lL27g9`K%7|e>!$PLig75;1wItY8n7sWhhA?tb`?W`i+_BvI{NMh|%Z2deQ^Dh|K zL%4-XkNbP$~Z4SEjiLGXL9@H`^oaByWhzyFMG(^0%~p@(y{Wdc#L)XhyL6GeDPmtHJ;HAzl^0r8cMI{9eF4i&5K>s$Zz=swc1|+dnAAe&r(Y} zqKEVc%DVT#K2c~+ou}86Lw}+@4Dtzh#caBe-l)MWB>vry1%ta63;op*klw3`3}b^T z(JXS}>fbfo3_5pp?4pAFXhLSWgMIX1&!&=jdV!CE(4uyhKA`>NFKSXpd={Tbr-`aV zg%B+FIJ#33YjK_Lnk=0o1HP8!Q)!!%sZ9AaEmUF5scI^CcLjZqkHmlttoBma=9M5C zOP+Ha=N`tt^U^o6+8N%vFJ9Gy_uNIiJp>v#g97m^qLwFr8cvzd%E zhmq@=)0Y-I zqi3q_^(p9@bSLi*=B}3EXxuCyFUAUsSjWG?$wR^8Nmv>Y6Gg9;?53vBhhE%z?6o6G zANz?z2GpJn(n!{QEcSW@R1gO$SU}fUkN)Ro@_Z}wI$n}N!c=`#!KkEYv&TC4RtMIr z5wwv2j$DPNq>SEn1ua! ziVlGWDiPXP(-xj(I!b*rKtKIugQY{L-ISoa(2~^~iF(5yR4)G5$sUwmU!#9g#kr3T zIBftmTYvJ&RIrF1p1(wj6b;a{?oA!C0PK`SzhMEWB_F+t3E0R#JbxYcoAhQMqWQUl z!GQhfD6XM~_(F&IUm~a${nzejfkmLmT0%V7NOyV$rzh9xr(7i8No3H;M6RRk{W*Tt zDQx;SRl-5)|DNb(&BcDN5VdC0fBg&Fyp9LnoM_3pl*r+;YJb3 z7J%GkyvLtdMLcWroyR}8!nPwLJ!VC2k)eXwwXfWN;EpAjf)Lga z`LANpfz)R8Ac73E-<4oo_3bBWO_f#DNP+bBorr8<__jIKpIVjg4bQuX>?GnhmpCC* ztC_pw5%-9Ep2W}x})O@T8JIj;C}K-Vr;t^9Ey4@VP^WbT2l& zfEs5SU65?C6+Mz1Rh7yJ?ax!hl%b$Awd#B^HK#wSTL(}>nnJ`HjVfg#zWafMK2~w>Ck(qrAjzQtf*r}7t+ZxCbpDQ_q-(= zyuuE5W0yAQd(_jNd=3KtpsK-+hJv`%lUav%9y9aUOExoRToaD_V)+T}H`tp6x==X== z7bSF)H&J;;vadFHfAe!Nh&<2_r_^xj zGuGzGN*hyOcI9h0xHOflvX2}sa%!Q?|G5t8kh3qDbaZcES?h_4E7{3?ypt(!{~o)| z_`L!P>ASxdKcF+@$O*@NFm!ut%8+jGHc6k_^)~7oYs7bC@@wGQUmyj2PK7400_szt zg<$Pe{(k~KV#w)fH8G`%zUXu8*o9}*Aj%xXl5X>*zK7=kClXJwUM;kZUU1e@LQRzM zTRE&fQR^J&;Xc+|MYlEpi{3!SLbHqSE2qjd1@|lIM@Q2QUyXL$ULyWXqCggTX9E3( zEu6*eBI~yx7A!(3X^ZR-f3k$A;7=?$g@vj$+Pvwco<|up1>HGq;U(7N!4nV zTd3rI&~^WW{fBa&LMN)h_3ZXNqUkAocE1PK@h>`9|KSfMbQku~cTg)!Z^CMCV3FlaYkVVK{s8Yz;LOD4cYS>jTUo)n z_M^M>2o$5lBhS)hDHP|@&u)j!jV3O{;Cqf_0WG5G6cn)TP}$8U`-Tx23yDtu(XY%y zM{~Y>DJKLZAlRsVK3#{r)Dr{|Zu4dAM9!*>}Cu%qm$M*27@7Pa0=@iopSNOF9 zJ1iGFgVSe{V`h?LBoIj%xk=(}r_Asxc3ew-Px`Y7Hd10Sn% zLONEyk3Umm$XCRLozxx#OZSa(ISE< z>Q1+hd0=WUGxX-lQ5x?`gm5NiZsK_tlhHSUT&H6*lR=V)@vZAb?4$ht6v)F2Tk)Vu zvt$+{Q8tE{*$s7B32bu-Y`g})A4>kM;wu(kG80zd^%i6bKl*61sD=)qBG(*CI!7Nr zlJmBu%&d%)_d>;SIPpM6ozk1$;XM4!k8Z{$Y<)8EbT99Bn!InwjyK@zH>t`xv!Wfb zmE&aP{UDhd^c-XHhS&W12V}4cOH3jg4&vUFX5w)1yXXflISB?)*T8+q3wuR#F_Uuw z4EyfqSovLI$$M7fJ#}9fVo4w29A97$Dv!ggn;X?Z zXRLM#XiY&s?-O}jsT!yHsVqiKD-Ye7OW?`*cvXSehHmgMR&)n8xrJxDg8FMV*xQaL z`b<7408viD&y?WrZP?c;{$0Yl&L&@NAk!Yj?gtWU-*RF%jD6N;`e#0N)SO8*B?w^# zeXO6vI3u$E0eV2)h{8jtDo+wKyou98u#r(L!5JU3+WW;P0&>*%lErEVKc_Bu}-nTfa5i|V_KVnuH{0}i}@Km58$ z<|?R9Ce*VF?9zg}(8?5I|2AfEx_7_Un!$(*{6R2S_ns0ZxXSfqF zS77BLu>)h8(!tFVZ=--Q~|M9n+$=u)Re&z7r8gvf^5j9b}MRPKipF9twzl(~f z6Mc!ksQ&&3`fM$~g38-E`n+qXp8n?jHeu7pc#=#`A+zXKUF3WJ6e>A++dz&pX4Mt+ zZ>@Ohqh!h$Dz;sqfC+fcCG37O?|2;xDP__jm;2D}(P)#~Ws^(4#WGBYq24AYUl zI)v5l;VkVu8kZfYEuG1RiS(=*!E60d>+MVAZ%1|W5^oCNXZB}jbLgDdVtXCQQ~uQD z)3Cu^tltwVVjXPMnlFE06}a*|wN#OMW)Y1-9mNe)35|uh)L>QEracp9O0g^5t~+?E z1(p9r&Uv-y%&x`8mF(nWB3n37tqoQ@1$(|gukSAXuRUZQ89o1S;=pBc$R6U^990|D zTveuO7`vm1XP(A$=CjYQ*!etAn!48#g3sJ!O$E^J5oQJ#3eKFgKg8S2h-0zb*BvN- zB;*qtl89FC@#V9+%b$*s4?buwOQc`)o%}orYU zo!o@Z-nJqd+{Vit=?+d{XM_0Mcv)-SV*wqxFYLm8o@EQ3y_Tn$Mns##o12pt)taO8 zQLGyee(OWlM}3G$n@&c#Mm_O{j$J8V+1SKo{62@y`~hOZZPvyM+;S4Vv~PUcZuYJ} z`Pdp9aFzbSKH|4MSbH};Ttl8{2VIuS{M2G%&Ob~@tIy1y(d+8Rr(|LK?!=+Lu+XPi zdUN`_XXz+B!7J>kMJ92AA0mIn+1OM0LMGb;YKZ>{&-k<&PURM0c>|>B;$77=w0Hlb z&Ne}b_a>jZh@YH>mAO;1O=V3Cc)FfM{#pD}0d`)*+uooK%)w`8fsy^FYwDOBio(*) z!hR?rp7?>y)g7^J#4vrVr!CR!f9yjY)-jOoW(`>MQj1F?-{o|yyX7I z)$&BSqrzKZhj#loc_~@B7gHTiL2%JBOR)5H6h75|a~-p(-`Uw;zw?AKJw^v|$T86F zJ)U6}b8xmGt^e_S->LG{TKF0CA|pY1PlyVBpbhn0U?g_yM3uW8)L=-w>cnJQKm6$_ zHs{J7s83S=Br6ZXr{>^cgXp`q=bzp2lBeXUQS8Nhyx|W#pq?6Ak4UnTi1H0w7)Iyi zJcw`#)xjW8hg`UXH9Ktuc}rvwRD2h-HT|op5o@* zj+}xjK=oOyU?%v@mikD2Pv&eYnG0CsBD$pKh_`B$>u3D#C~>Wf^Dt{V7HW;@>pZm< zXGSydgwI%LB3(#pCW{O>N9;iTltBbY;#}%5^}7=`GaDp(9`u<728;&X_v1bjHL5uY z7FZHl`}8OsxdB+0uEZ_+<_gYo zYFYig*u-S^#g6zh3yXLG0_;gl&>P+a}R3_2A5JFq2YhY{?Wj8Bj)N%!in1Og|%^^X9FB9(m>?eX>(bhb3|o>zSqc#F?i^pQpFjhqIZ^Ofw9kN4y2! z+eUxw7`F6DwC8(1v7bZevBohOe2lte6S&uzH9A9`y_z?e&z>n|b2tTBPn=M4QgjyV zkxTs?E_~oSMl&(w&fJ?szvT-^wo&?d{2P^G$)(}#cp%9!803MMaQ z3aJZ-{s^|Qo-^D2{MQhk`ZfqC2>)DxPxS=>ULZP7;lyD(xh{qHRmimVY*u|J{hJz| zI-J^~8{L9js*QU@^?5{y5@MOT)S45bo*?%7WQmPDXAO3dCCaHa2D9g3;EfI7oN#8$ zPT*bY`$Tpz19OXLCu!E#f$OM z7IYdqfy=ac+Ktp2)tsG=#-7#Za?6OneOT$%yw?Hh$5kNvo;-gh{=A<0wU=~`=&*%8 zrKie-6JuZ1U{$ zBGsBdovZV#*+)*#bg30GS;67pmj8Il%?;{VF z>nq-Ia`=#^Kg5aDAf~Uv!DUYJB5-je*06xeDV4t5IgoJ|?DiGjZ;b`5=e<^e>?2q; zIbD={Ai#Q2eK(5w7FTVuZWNJT;4DjhvqT-8=m_G`1?qrw%DoA%#3^`*`nKnj)OvU6T-+n>+-BYP6M^2+e{tsx zQn+ESo*Cd9#O)*Gk$0dBZLFjY``(3jULgML{2lYYV7t!X!zkkLM=W9uC!W8kh~B_o z^ia8jGR9C>*I?tf`Pu}A2_zoQ;w0@f`}K_qtPS>CBWnj9vY>Oh5+oD>#x20dcJp)} zIFZ*NQe2>8{Fv_eHge2u`s6{(E$-zhJ>;4EX+Ers@x<@mtfLkvt2H_EH7BbAxNRIZ z@)n%Cn7&UDUE!Pfz8s(KNQ_S51h-MOi*CyRB3~#q#{lf$t{4n5SVv#nmiXP4+~PrQ z4&^NS7&|_iK0`FQC5T*pk1ky`rwk@U-bugT$As)r!TIV$@}NJFI+Qi8r1L$R3j7sk zZT@l(V&4g&JssHxzj4wveyS2Qzn$FKk?(lLKB#XLzXS>>pcj*a?<8T5&R~>Zod0Oj zEnSYKoWipAbLZF?o+TVR8NyFvg7!=1k>&pVe%|*|Z&#oag9y zUj!x9kPrW&Z*iY@QxO3>fKK)JCNS6~&ZrlHneKxYVwu?Tf@Ri*tGy+L^f77hzh*{B=(3C zJ8kL;^~u&AP|*gWj27oXw$cOM#SQ+;H1_xewRubMYFAkv`@M?qvnS^c!gtl@mxJgM zs80x{@;obfdRHpRE?|9i=cF%jB36(y={|s)4L%be#?y)Yn~a=F6w&2xEg|kbAU4ME z&$)DHPZF>95g9k}2CkqBIXiy7w zR7P0$GqCVrBJnl$_&vR@Ih?6aCl7TX6Mdu$xE!Re!8CgrQQ$t&#TQ&~n*NkGD?0;> zV~rG5LHI8CS)ssXuQ3)#_t<;w{MxYq278D)50k_geO_J#S+SR{n$aSCHe+ zQPCJPqf<-;lEjI-F?T;pFb4Z^dq4#BT>%lekguoAk}qI3ek(UcH>f%jr?tV*%ZP&- z)aZ@utPeA$tH5OkiLuk<*X1$XqhbyZ=mu=Q^H};rx}OOksu5JvtvL-=aB6Eu1+Sh; zVCI;tD}k)15p{3V<5Ch`)YDVz$w1jyPBxvOW>}RE9fbWp5cl%THmqtG z{Gwy5Tr3{h_&cYo@8SFb;yg!Yxgw^q9@EJpL)fKD#F}JLU-D$n))4QNbTh+cy|By` zWVcOJ7X4tMsBeC}Kuwy!++_qEnI%j$4FaVV&@oif8IW@d7ze%^gcsfee^$~@oJbdF zI=O5c=g;4%=!#Vi)Hz$2WBmg!n?^QXLWavGj%}v9t*#`Nka<_(9n~P$73{Ej>TEZ^ zQ|J6)!qwx8`V8JQ;Q;YjxRMLzwdZ;J5mQ$3rbmCDHnpNJmC5SgB&rqA&wEeI)Fqyj(xLE!xj2y%M_b`B zp618uZY5g6dciIRaYFD6zli|9d?!-A=99035vK4)lgVV>SjS%0z9Zc=ANWs7l|5El z#IDxMLW_N2$b?bIGgAx?I8ne(8-1!09G5rYCF(F zmT_upPQEB&UQo^N{Xwp9V%O@3WW`v=QzC;kwkD%{a1u*ALnNNV*Z+k2-`yMwZgjjx z+!%x(s!uSFfR1Nyelmxs@{XU?1}yLZFFJ;Yu42VTks;Onm$P)cFR_vXm@!*I#1G;V zwfQ>_*o7!g$g=TgFFehP8bpuDS0AAejMtTJ&_CEpM|uxGn7BN~yG>zIWEx$p#i|>s zS9H85G09xa9Q;JqT!WZBm6a`Gf@Ce|uRkY>+xc~ZpKnSG`-2mLQ`A43K+Yk=2Tl4_ zt@)ja@PVgYz&;=QKTT%=7DfBD@tv7nmhKQlP*D*BySux)ySuyJ*Y57uPV8>%4lE2r z0YNFH*_fIA|Az1SE-n>`-I?b(=RWtj&w0-9^AlO=^|@V<|lN0&BC0 zh;9KP7GV)>h!%bDr;+SVKkR=A%ws6=pd4(}oBYHRoP0){@Fdgwf%p58|4oJ0e*rb$ zgB!QVQf$<$wI_`J!*6Tn*#@ADjNvy__^B5)%r3;xQ{d@xzB`q7Y74h_ChlFKX0iqL zTL~OcsB)!}3ywhfc?5clC{TW4QH!$RcV1)!!(jn?z;0L8)|-rcE3Z_G94Z|~k!P#H zKDnR)3?^s4OP<4hxpAVW1l+b8n(!`m+@F5Nj^vdcKukAQ@g1?|5KL23hc@F`wXl?bvG7b? z9W2}#4Q>ffnOlY){s+Bq8-ARCJvD=sIHA{QEN%iQvkOI{9KF6Fsz9ej6%>nD`Vn4( zwd=r*-DG?xVQ_be^H)$=7r;A4!;{Xz{}?gKj_CS#M7eCPYKsKTzXQSHG!&YCxB%N*Bcm~=;R?HRb_)T6Mtpm0!i+&yNT!<{mHg-sp$*^ zJ1b$2tI-+~u-wn^H!W)|jJ1mJT7P(FA=K^$;Ltm?m+yGne%@mqKDiNQvKs~wf!%CD zA#KXegk!t4@WbwWUYfe=XH=IiSn_lBc_KXubBHT$bgEfYd%o((RlFc7I+2_F12T^y zw|av&ejvW~;|1B|G}d|+w(Cb+bAfG6qc-A4o_q!# z8O|x}@l>7{p|g}D7jeTfj*wkcBTw>&Pik7)F!E=K-D`&Z^(NQp4aR1oJ{nM1tp(k* zF(5)i5bik9Uh}U&e!eKHG!>uy0Xutw>g|hNgo>Fc+vAAgk=)&UcHd9teIzQR zgEXu0=w-0HiTL(ltYii1(s1H$7^>?sy4zxvnposb6o4?kdy4$im%W&SFMKA3rJ+uj zqQat0D%4?_D|xq_WR4?HFIdr4Jr zDLTI^Ct{MxWm~W!#ZY_F=!UAv-qay0`N0*(64NwRR{{(!h5rs`t>zGy?h~a{n8RW` zcpcqfZt$`vJgrzmI2(9kMOpcRVwcD1gjC z<3Anw@Dg6aq;_DNO}XxR><2TU(D6S}TUvyMk;Q6-q5o-mV{@=H9;`V;j$5Boj_+Yt zaXitxs#u592aD)C*@$>luQ`-yEcS zV8Uy5?jCE|ju?85J6(Y9XqEO0uqK5QxheE59_LDzkT*neU8h*(1Mu;cL^JKr3Hlgz zu+mdtcHij?8At5sf%O(R8oH*rr(*XVP}p_0 zn{?s4Ag`^-H64YUP9-1x11dcRmmcBoyV&busHelp-&Pc4OBeC7G2|3R`f!S}-d0d9 z8NFr~8S7K-Yaz_IC)q?T5PTeb>K^{o1UnzX|AxVgYoH*M<9p0!A)i!F#j;RN$*K(%Qt`H2;!@h0mt94qNf z)VM=t+K5%k(zW7>2a;nnfyp-_ORfV$a1*p%mbG|d1h}hpS1cj2-6KcJ;*Q7B4N;vt z(USv~Bf96%IrW3x4&^NVQ8d2AWLP<5*IFEVt5zp7&OmQ00u#7FjJ?R~twPPM1a>9y z)1z63j^sqa^c@;(W#Ob{VHFl#H~eD_vFjjg{yOYE2YW5SJ7%MU{NjG>u?Gw4!Ax|j z6#9w#a1Vu8jf=c?IP6j-F18}KD+}@l!P6$PAJJIq4miIfJvawg?T!UigdtpSE)jP% zrv};+joX4TKY7|-HvKjyl=bvLDx8k52di&I9(53Pt0^4j3u@H>6uba-emvK?o-A%D zABRBId@AZQK)jDw;SNxs9=ZA;vZBiT-ZLWh57^5Q*k2sjbroM)2hYC9-4+%iIHA9r zJ>G#;tYTH1;5fyxmi=S}h49Hf#N8$ZoTL><{hHcgS@_%&5VRBd;Z&GfI93ycPTdNA zG>MqomNhNP*Xv`=HRx;E%v~-)DJqO@O~e+LvHlCWl7{Tc175EVxl()Z+Qh25P}QBl zeYM6WLQr0;x+*9aAyhfu!dS<^>l<-3T|ieeUObgtL#2B%7R&2E6x&Cy#1n8Jhu>;V zJ~0i<@4)Xa=N>$n3KL3&=?y(0GEAlz_FjbO?99KTu+m1@ZVxh)|M0>Dn>!egNR==h zt30Lqs_RVEsFnB+{O};^Nq@1fn1;?;jcDRRg|QZ$c#l~15Nd;8$PnkF!|Z0=wW(P{ zV7_mN)SW=Deb~%Az)1Y=4(i5Pw8|=EKt6P>EkSoTvfHCs!OgIZXRM(fm0&jS5ex^{aLyZV)9TZO zVIpTZQ(Bc+S(ttNObm?V&pUj163lNlYEEH%?>T%X4G+4>9>n4CK0+vncbpt?J6ZN2 zG#Jjzkjveo!Wdp~;;1BkoI?ch!>%iXE)K#M82(r=yAaV>Q+(Iqg?*{bo}_pD5gO!Y z;+)PFheH38uAK2i+u}s;C2+Cn;KfUR=P(hz7?JEgo~(6mG%CQ{=5&AT!8dpUD7NK8 zw7E?jnU4R2;M>cHiaqdv4%Ae#@VF*0&&S}^WMcMwB5f#LZcpKV>990EP^lHHZ65E~ z3GA?=v-mi_{~sQ>2t>{Y(T>7HCcq*V5tBdRNwHjYDKfPt=!#2;XYXJYj;v-cULl;T zkA>%I{U;NNMpL=})9|6L=wgjfuOfsZSVKB`uN7Pk#V_3G{CR}kzM@CwI#JUBtM%k6 zF5pX_v9$B-)@JT$Eo<=stelPA?dFxIp;ZKuv-^pCl>5E#L~aI6>DUNj#M`CmUcNk?i? z-SF>xasln6(^~pd2nLmc;0>3#a~r%agt*cZwwHkYMDml>h*+Wg<|tU~ zZY<`F&OrQWicL9#I|qrAxA=PlD^efioPxU84Hi8Fgh(KZ8%O<_$pb{nE+_+Gi^yARicuN@T3g%& z*ND_}*?AZCpgBE3nl1jvD+Uo=LTo=_o2S6S->UYE>nQRif6#Xd3@r*??+hk~&>>VC zyjTNg97UcQ3Q|ABLR(YCH~>CRz&pc0;Zn?0y-e;ipDQVb0(b(Zr*(+!rY`UqO-#?( z##ivZX+*1&tXy??+iHIQKR9lA@Uv<`o;njRDMVgjMBAB2o>7IUa}MSq;&;qIpc2~v zj<01mR($ngLC&gmW&8pIvaq18plmySrbfZaS0Jl2@be~e4V8P-p3gfGo45ng4J+{R zCdA*}u$xmv`vI`j$Ed-c@;3eEiPt8PA>OaFe6S1rB@KvoJI2n~Fke_w~i!)irn|w`&CjS~_2!(k(0gX*` zoew9w(9v`CRXNZ3`X`DVw($`?XawtOAj@e3qrV7xxS%6Op|*S@(PCl*>{XU^h%*0|H=u#>Q57lDkGpf*W)S~k_ zH`I-%HFra=a1rgqC)}wERy~BCvYU9nKp%MkS@K`S2eq|I0e9=bd8=`}YdrauE4Z+h zclJjwOCtgnXV-SIM~}Jl-7puegD)OrdjZ?}hm2z@zWvtbg57=q#a@Hl4cTjVvWu(W zNM-KMpK59ba|p`d9aq8VT0}TIux&V3UYn18cy2fqw+*O5y}|z~M3YhltTl!RbC`P3 zCY1Ux+Xt@EmnS$+$7l3J#pPnXZ6K06glS*=`D-je6mCGXovt!y!T`i0tu zxX=yU2_x>^q7Hk8)$2h7)^WmWmpFs9YA1H(^n$1Oj8$ICtg7FjLo;CyZ2cgS>?&Be z6}0rVMNr+kiNY|5r%10>F7Zz7=$Ly%6mZ6irVtN<>E8N+pPR|1TVdCYiA^D7V&!1h zapV(!3bN-9Xy9*%M1FKlzC^Fls2k=v^|J<2=qoMTi-A99|N#=K*EZatx z#yc{f|A^B=K%=ch_g(mnHsj(rURaxax&)fZZ!$W2w2n4J{S~MQMzEwIIm=Ym+eL^4 z4L@PSF2YT6q66e8ufg+Wm3dLZv=M^vK~oTbOzbb zW3tboWM%V+7q`i=f{EQe;Cwu4MlRO#2J83)Ptv|#jCy|y(6t-y(+~_R&pFE|EX{#y z?!}e11UpK@9<+X?(IAN@Rj3tM*a=uzJHFC|?`mC{4~dNytR;j@e;l=`?I?Z^>B8H@ z%(Ib9Feybx^f>I{x6%uwI166fhNaqw988&mvGwLEf>Ef7b4|_Asx-y9BJX(;#25h1 z)+YBXNnW%B?AS*4QbW+ABYh*gsG4u1(zF|1dKHFm6t=>iD#ObHxtCg?-!O9dr$p;G zc;6L1Zjz_GN8ftQ$78H*pnd@9sxjB5CeH=$ z&ODNhD43hbrcNt&IS*GzZ4L6>hdnO^bA4H>(yZEY5WY1r>@C`qi7BZi3qHy*&#o1J zd_^OZU#ieA6f8>OPjuQBpu{&a#0A8|I>g~;M9WZKsSB&@43E+{)Gd6wjm=DN%0V)` z2)ar+14GR_iSE(*#Jc5VE*|{+QJpV2TO`O6Al5^XaTK=^M_c1vEm)r?SXW07CG%{^YldO<+8K>q z)U&tJUGWC?JQ>dP7h66JN^XOhhQlWI!O`lYKxi3VZPxY_$ZFv1pt>KUbJd zHKsc2e~q8hdK9{%TW8TvQG#CYs;qrWD%DMyBw0ng57vc|bNay4PGDf4r zn~LRqYNuKrUIO;Cjo;M}A&V0x?NP*b@y=WDm3{Dw=ft;iLU9y97d~w4ZW}6z9f;!j z+(~!T*RS|(Jv4ud>c_v#P(}?7qRS-Pm&u4u{QCm6!j4!tg71caVqJ+RA*Zn3fNV0<2{@qIDl2X!;5#qIy2So z@HbD;ZyK7!F!1a?QPG35#xF!qskBr?3YPN4cj7*Aw%A^jsb|lp6XzBl)}M?r2Cb?G z_Y(_;ISUV~#wm_H_*Wff1-1pP(&=gxP=ktcI(7;_@rU!%;q=tyFcW(qymSM$nobRW z57~Wbe54xQQi6%0MX9gc24#EW*Y7!}*GPN_K1G76_2C`biR%qy=N7njCo1E9WWb54 zJ-+Y_EAK~~TLq7NjXj9u%_HeJ?+P|70NJCs-j-lOXY!#@M9XK~`!;g2b+E=g?6Di& zDRr4|){`^lMbIwZ$`SHaCYnB!pUI!(qOgjIbXnA;nzTTf2Oi7HRFLBb5x+5cl7Sqi z4c43t_ne0!^@GzWZsJ|4zZ1ze&XH%#;A&P;(|XStJgeX?b`+n9{!$~>*(4^ST@PXf z(%~e%>Fe)CG*YSOlmKa~No5f&6%~=5-PC)!b(K=JmQ&$6zct!59jShw;^o!l0 zuKSA_6_@EmpRe?1=0r861YM}1)O`2TX)16kuXI7b?_ISG7FZ3heS!B~z`u`!NwF~C z=VWA)!7?q2oJ%%5g7tf>D@k3iGr910tfeUV)EDY^=jhM6Om)tgsM4D`Koi6k%&~J4 z74CQ>D0h+=SCKvQ=1loNWEu1DswN+=k=v3G89z0&Ms;-m3;7XGx|bNdNxyulTE2? zPb6D#A{s<9#s0dkF?+L_YpV&5m*HAp$V3jJ12qEO?dZPPOVnj?W!>dlz`GFdC3+-q;t1<*U(I!BwAd(IS zS+;=8@2Eg%(~64F*E_yoJu9PFYD)eH*0(Bo-PBZ^N0=+MKL! zrw+to7NUEd1@*=k@b^MkS{SFpUct?`k~4neE{tf8`{-hcq0{`AkVej7V;0d~x&TJw zmDRul16^1Dp#-hrYA(WV%;ezXQJuFFZ(f1U?YM85*L()bo!|=F5X~dWkwU1~E~oqb z1X)fv41PGuNF0@d%UJeo^6M5TLRuexSNK2{Eb{MiCAtd=5T3V~usN z(K)==E^H-P=T09)9@(=t6?`(ba~+(KxJu2Uth%!7RTOh=qrmFru=_A#Om$-NU$VWE zaCM$KPh6cw9ViNn+z8joQno5Rltz5iQUa8AU|TF%Q#pF^_JVyT)tmV3O4R6q;!_PA z`34@lfKIc?=NDon7EXV!1Ys*6iE(xm{l5vKAa5})*w$7@e~hG{|9%Q z0MGH%T_d|+QV_wXgKI0ehiA{EqqXTXiLb3`%3+j3NL zK9jqNXk6pDqc3!HSK(E(iSRqH_6Fz#6UgAY!*3Q-qnt~J(;_mv`rKP95O^3o&<*}v z7A7%=`@9HVccPX(52a}y`#1q?n1n~2V(qol6(zXCh9F%EHuIdXC8H~}#SdD7g8_VW zArmbGGk--Ee3zbJCn|sY=wQ1-B;GC#r!HGw%p!*?$)u8tXics}t2@Npm8=0%JYZF0 zVJA1ZyIt(z0l3N)7}Z?X(vho+hmET2*(CgJH}CX}9H|y;)<@8oY)M}07Phzxh3q#T zWXE*Ai!k%6bU;_6zikgp&W0}U&#DE3Csr7cKk+4^Kudmv{c6#_IQ|~TJ>s0Y0Wpl{eB|nM^kJ z1*W2%(fCPhF9G-XLPlPg)dUX9S!;(Ys!4TA|DpQE}9#>k`>-!2UuD zw1mz?vCXXEQ}}5Nv0^J|WKW)X9;_D7gjz98X&>6j+JfGu>Vh__xilK=O^~)RDn=!^ zM-4KVio}UJ*wZduEh;)LZ-Dv*hLVCw;%4g0WVrj%&kfv&N=L64q3u!_~mf4^jXBZL@d;XwiwFm z)Ms6_=OTQfva1k5*Wk<9%(#mIA6vtd4%7ED5j+VKQn`;gtbR1FH-y?&Y3f}?u<^@u zp!`Gqpbr^NHumv}N(;|&WWSq%jas)xYuLx{DtI6ZKgxbcvwMr-l3J9LbXgpm}+>wkmSe_78f z}`(Ye3zM+cS$v-dSwp;86WOPjY>oS&IU z*V07vKr@vRCo-vIdUM0!JVvn+&#TNJU+z-y^CmQ=3&fHv5Woh{$wWD;!EB;b`HsAv z6U0N9QFKIpAji^OJPwV^fv%C>bOraerPv*20FMGs^@_ZBuZPNZobhqFOU~L9{IDZ}$HMrwp&j^8Sr>>R9`H#&xLrrQurI#zfvAy$ zWr<9jnFR~B=Z;RmHODgNWeeAT7jLT$hnUDUAH^!45@8k)`)6Q>8e1*}#*V_DE)&Ui zf{4BOS_#&D0hV_Qtb32WIC7OOu>WRoMNPBVK$PiC#on81-Ux?03I8cY6?!P_tuA?L z0{3u>9V$)q-o;6xzTy=0n?hnTyhNM%wyYr9jV6la!_(i8A+IIV+sIlUW(DVA;U8d+ zwO|<);PQTS@M~QY%?nT=nY|be%X>|a=>&48d1!Gf$ek{bpA=%JBFS6Jg5o>jM_Rwj zRTPS5T-yxJGm4@+b?M${*V$-Ff0?kbRs6sl_K)IHo>kR@DQU+zWwi@Fb(ktnKdx0z zMdUQ-mq^t#2E{&{{rrp;why~gsF7U<9j9R>e1(|Bk-ETI)jY!_5}?WEQTzW0$z-!1B{@9CK>2J*MYllGyE z=CcpKu&oHHH$PeTV1Dlhb18>n9a=~2QaT&nxT!$6yNJXv_ENK97Z5OyYlX!6i6{I$+KZz=HNupAJ?$H|y-UVO($|_!< zlX5$`PI=Hko1$stGhg(Do!GQC{do_(P^5dKCY)|0UgiWxbi~twi1f~A2Sxb)D*R|N z@82Gdb{HGe&U@YjrHWx`LqNc#?A%!a$%J-+9j*1)}TbrtB*-VX1{$o^`ww2?N-s-E?(izgX;1j% zEwtdB;AIx~*&N22LI(MVEGmoFXuI%_9Uy;0NR&~3Y-imk%q*N_oEU|sX%U$QfG#@@;X)Zt`h zAndjuk+?ipv7FtBL5DD-fs~{Na~#TKTi#*P_3&II@--COiauO_B$0R#UmeU&tVHp;f^yghtG!GvtL1khx!+{GTY*h# zC#`OPxLe@oC(ty$Q*{bf4#6znTlZO)S`S&nPGD^PXzCFAHt@5V-UF&ZtRK6g1Bp1X!@ZUUUr ziq>%h&Txc}yJ&1*K-H7%_du?^(>RM&Rw6!MqC%Tb9IL?o7p5Y64ldMz)!oV}7be4K2WluF$ijlm^cK62%X4jZ zQQg^s5|GZcl>lu113%wXu&38!2)#T9LG$Tgx|yz(S5#@!z>iSye+8M`e!Tw&jCUcm z$kyaZV^CL*5essuBvgcHtivNTwbGHQ@G^3hRm6}R)Hw{~%gmRBFZ@E=`hjA736$u^ z%2Z+X%fm;tRhojuEkI2i2-~p1T*E-^5Ul3}7FPxRZ3pWc0>e!QiLP=jt*EPB<7%1{ zwGxQ4PRetpOGe4@On_+wce{WV){NXJN$tp*U7}(i4U0I-eQe{(*6}eDlwXb~YrNwp z)r_K8LO6(ij&84?#Hmy4wjYe4BdqKg73N0NGxVGnEsQPKr3X42-~5GjH>6kKDg8e~ z`2D9uDs8UnJbDbYb1uDEyB{b%3z>W{i$2`?bX&y{4=Qr1=L(gLIe6j_totGB91cHf z4~uBT?;I?6(w94Dn${9suTU$L$)3HbQT^ZCoM1WzjuVxFh(A@~<7Ggt+f<>S!ayC^ z;rZA=F14<8aL_+wMaRI3iCp0*eli!F=}Uati;kpC=dXze+p%Xq=y$8YYZ=iw|D(RF zw;kq`!5b{`Av4j3vDZ!@>@%#dBYCxUPGcIc`xML$r@peE_nLrbFXA+bHkqNJ5XYMI zgH3K=zaQ~)>rp$s>G=0zjSqlw*YT&HFtfqrb@f@pqp-HJyykr@;08S69ZbTF+DLs6 zq8_@omAvU4b(7&-$FEkh8}-3rZTdwB$kdsv-Aq0;l6Q;e^$xImFJNyxYf7zwO`T#D(ui--M28A^ zU^%)P53stgU{l%?_?)=zo?PcWx;0dF1Z+E+Dpmx1Xf>Xcg*_f2(}?2)T@Jo=h40?Q z=V#)VQK&D~u(XTp;zQW&AXX`ovvpOer39h>uNSXz+Hxkx4?c4rA2(4oZbfwFDG$7ZKUwfw?qL>;?+!?IlnU=jy1ZlX%hPl@ z`k(-nh9jN>&+ntgX-`NP!5Zx#kJjqmU9iKkaM!``nZ3m8m0bOJKGt(Kay~X)mR;F_ z#@-V|tj5p3ffGis>MHBq3A9^{s<{m>uz=ZX$@;#r3y0CME5b!hAlo>yzHnkg5<1&8 zEc*f3=w0PG)uu`G2Wiu^2cpHUfXAn*?Rn(~*lPmH**n-?2d+q)*g1`V&%?THIy-P+ z7N_sMczVJ+e03S>NeIfC8#SgW*y}QIxh~PY6Lp*jREcORHd>!e6BzVK7<(!fFb}q0 z5$+QRJNrTGT8)mg4L-4(6*~^XO+#b1!EUno$X6P{GH#$HYtPv1O}_S?v(o**8m+I~ zlMMVC-anP>K6+Y1wp&P9?zFv-Z?#bsp$l2}}OqkHae-h|Os3hcoCI4dY z+UYSJnfwoGTIWFV+vw!4vA`>=fD5~&%@Vpu4&lmKKu0*g8w#P;YtVzKmVwMx&s2_} z{M1(}p>PkUZ(AhSUrk1uNlz8e|FR8Wx1&JS^PrcGwb=v5-a{;H2Mn^ zKC8JAb^8XHhjw=PGkZIRT3>{&FtMXOKd(*L&&DI>vB&A`(;+yHHlOeU9&{T|dI}Ct zVm*q}@mP(#*@XSy1oOPJjt*@kiuP8Fm9)-sJ~d5EuFM8~Md6-2U5#jxq?++Q3xyb=ZOg6J#N zE0|{OF4dNrNZ!(K^yL@gWS$1?$&&_m^8}8a=y8(xg^J!^A%~j(Tl86jFb?dFC*rvi zHO8T$UjS{UkXu^GeLj#|wBUacsKQ?Ol^6PDOAxOHd-9B&<09H|N%DgdRBlcD#Axt% zK2_6bdd#&sP_giaWO|7&lkFzxd{KbvlIv)F=MBl8+u&`x;WILl+ z_+gkv2XL_qIonO*$0xMSRv@KTN8lL<@SG3o0;Wj*CQENXyeJPBo{wg=6IE~#%-BV# z!e>W0PadUc6Ywe$Wm<7(LG0fEuJbr~d^NDd9!wagITIxp^R;84dP4Uyq>H=t1Ab5-_7L8iqErKMmfu9nbq0RuGFe zISzID0`<7>tYrk(9tE=RBRBsES9=b^>!{ORg)5h$zik@6C)iZh{03Ivk8AIRKmJ6+ zwi3zxVRP%ziq=pc(5k`9xSvt1iPoVzkbLO}HgBXGsBb}a+yMfMt zup+U?3{FgDu$E(~zH~wPd=LAmMb=*mWm9{i#J}9DRx5l!PS^{}c+TAy1tmMNgHBjP z4tH;a!&|6Ab!P{L5(!Np-xgS6d8Q_A;XL|w@{Ck^iOYh5TDL(FqU2*D#%VPB7uaqu zbhqXpR4i;vq*mA;-msSI8$&gvJbCVB@OCWuRdI6aZ{+3Uv7~>{gEpcf?m?rEBtC4w z(!Y~mD=?sj%-!5Tw$(!1#`78?@V@QnRes_Hknlb0wux7pgvR2*bk=%!Pdpz{MKKqpxg*DW4$% zKZc<+LZi@A!CcSpRitBbFYn;Ty}MCk8_ga6qBd3rO#TNiGwE88El!5FY1QT|odIuj zrA9VNC?;gV>_4&JDP)Huu%Pp*u$qQ(7UC=94C>Z?1uSQM9)7*R#1;A-eovP zdl@Zs6&ROVFpnmiT8TXs-l^cnKBjYNJx|TqUG4nBW*F5d?(7-}JB#j?O<-;`df@@~ zaT(UwA4X~WIgOu?J~U4Y@N04oj`tW+^7NRQA0 ze}e=@^x+ZM-hcR442)B&#+hNO+H>=YfSa3$Tc<%Z?J3A5QGEl^0y?3k7bivwoJ@Ys z_a?#FCXvN`!CM!w2W|PYoG5o1hGikf&E=X(QNf62WkWsbuL5r~?E@HKj^YFRF#@ zu!nq}uy>qH^CO%il#^krVfBU47gnMJ+mcZp)VAn3%fY^ za&0o_$J93#p>*%S(^jEMOvnFsz@Q?y`-5=J)>IYmah00B+Me2c8@Rz%n9Ll|Y6?}Q z8mxI`^wT$>>}P6khuG-=7{?YOf;L5Y1uW1FKKTr#rUR2gE=09FbfiKhpaoows_i%6bsLbUNDYSFjUD?Y6y2ji`JJjB1R1Cb) zvrKUHvveTTr_bOc_AQ~8Xw1GgtGyRqdJ@#Qi=I`5epe&iDJQXoqRg2bf+m{{6DW>i z8ci&?MYeYg|JlmEp8-?apjfu&fBX5f08X(QHn|6^T}l5;Ir8fRblIFB+unj&^@jUe z0k0eazD5x3dw?27SXw7md>MV0aXc?@GaX+>DF&bO5x-KW(7MBF!H;_qC1X*&dlJJ; zMBV^+(+k%51o*w5T>L%ndJ|UeNUW*MZg>@Ro4-U6DawlUhj%SuuMdG9d7wloEdL8y z!cJoFXHeucd0H5{Lk0NMacuJ{zMn<>c|?Zv8B7VsPp%P@JHyS(@~0lT$sts=TPRrp2`r&BhFRXjA|CQAy|;9%C33p>jgrZ> z?*bx!1kYo5BK{U7$;MM>qUph0U7)MRqC)KC#~IMKE%~M&)ekT1Kzo8+2T=PDR=1md)aHt|<Pw+qxy?!w+y(;w8l z;5=9jJZli>ae`}k#rwt5wJ?@kOJ=>jQ2)kJ&#}7}apimv)UC*#Xhro`W z@hlro}{yeZHfjjO`-jxrh=!w4slk23gR)xT`IBc^89B?Z3^%Dh;XP$%c zW-{y)^1{AkfR(rxBN<9Dw5kY@qY^kY9Ui!s2vLvJzA@l z=UvwYag}|@?!!Q?4_Isfoa`(SdOT~Ch6eVWOlkzt;2rtG9Q4T!Xj3cUfa8d|6WQBS z1-bb(B7mNCpM-CeBZ?emS4yJWY14ks!pSDssxSxQFUaQ#mbkzk788M1;c=y@{=Y?; zUqrTbftAh&H^Z^os=U88DdjFG=gO69=eFF4ayEEIYhuI6V7ti$ z9h;TtfsEujKH~R#(Nvn#@ADSBvVwe*u%S9wjdo&WCmH5N*yMS#%0uXHD~Jl(b68&y z?QSXl@P_Ne5_|HaKzLUdu%Rbf!*L?mJFYtvE0(dX@#GT$L|5kK!G@QylNaGa&sj@t zR{1#AB0*P}6Nx6i>OsEQ8)a=axxo(hXa$^XChE(5YU=R7NJ#fhe1-5gPUAs!{ zWh5w>LhVJs{;#m-yWli=LS3qH7kHk?TX8Y$EDh{kjWskAY(yVlGUFh4v6hoICL-IT z;w;84DhOtx!x!G?A=dE?ru_%DRGb)+$Th?j%!+*r8eD-BPiMs%6ZcA@+-lE|(@3(`aHcv3Ccl<-+&~5~ zTzn&zklIVlrDjq~$yfT1^BHDrArUrQ8b9y{zgFNQ4~W}~1%GiC+2(F^+QD#)qwxOS zXvEi9p&mrxujmY;SnDDn!4WbUZ6fSb(9xMw+$&i13GD7BdLTA48&j(?-lLoRjC_&G zR%=ePZsiGJm5Fj!*p)5BI)(aCXKE(#JQHpdo%kKaELQG1-Fg>5Bu6z!QRUX0I%|ts z_e9yK?zWxLofEo>vEp{ArhbP0jQ*^CnEt&qLQ17NgW^fHsRR6oEoC7f<%*dZ*Hb7R%G5-N*w2iKh*vJJJ^EDyLRT3Db1rY|+YVtFz^v z>3e>k{M5W@c?IsndfYZG;gz}D@BAK`a<@%9Z$MsyRY_I>ix*e&9j-i(Y3eZ zY(srrx+N)hb*7R&I<;d;YD(Yq-kI6Cr7aVbN4j!`=?-t45}jnnyAG25A;S@Irfrmb z(0n`JCI4Pt!@SSAfq7%{tD3i2PFl+y8C??S&_ zexZJXZw0R@uEXsA2m`F~IkW#prtVGt?{}}{1!)->g>s$E-xXOB9gn-Lb8YI{(zU2- zCFk+>FC|Xd%I=n*dC#-EX6iEJzeh6GWm>Y@!QyUs^|u*eXXPOBeUOSwEN?e7M;>GwRw8!j6K;EOqbLNcD-E6dzSE> z9*|qa7<{V8+kklA#vV%@1^o-9asIuG$kd_9=abV?m;RZYnU?$0x=t)_@8{gfP4evL zwcIPt)7j&?%L9j!b}z)Ys*`1RZcbKa=7!9L8O{D~|NC#|((KW>fu_mU2C9edyD(2* z%jo3r+2M?1Q|H|-g7tGf3fueRn`Q6?yneP2(x!|ig8-xSjOJV&LRct`dcD%CS(}XFC?!@TADcN*OZjE>CLkA=F`Fq zhn=oPy(;-91)VG=6nkFeaiQ@ZUyMi9E%~Q2V^Y5+CH*Y?>q%-_#=_hdmQZ1h!(q3n z9xvVNx`((oa=Ybx(!QZSK;X2v>Z2rBwwZGBP39WPa!#n;*G;BAG?AxKWH5CsU6>&agzG?j=)#<%4y!yhIsDmN7-0FK5X)Hb;F!`>oEM-F-Yy zc@Fh{Ql?+3i z)4Zn^jxACn$hGME;_k&K7T)TSXZ)s)%-xc@EAG^%BJa+>9scQQ{N(g&xp9hWzuWiU z;(4K8O63&qAM~NnOpkBI-}2?G?rB|9hoq42c*Y6WQgMXa<7WBP+{M?_1ld@A9 zXB^L&Y#uB0cdqX{DsV~BS|t~SxrI$FmgPOjc+0Z-@7$zC-`{?I@L|da>1#w{i_B1K zC%wSq*rt`R4^1iVQe?G%1;1w=wd~WBdwFg-VL30e6EnuAjY}?@BB!6t6tm?lV{WYV zw%r#G)xTv>=isTquZqSNy%zA^b&|dojBci_v8hyM&p)sJ1pNt0bx2;AJRxOx%8r!H zX)pdx$~uy}N@?uWAfR{2k7dVHoKmH0#SBEkw96ouzRtDng4O*d=e(EMgEAhZCMC5<2#=5Wxh!>WZYSHn zc3oT|eEtn8QgU!9$Kp|ervu&=8s+I?|5zPpDPnGxcP*n*dhLve{Ll0g*jsOzZsz<< z-LET0>_uKslH^Oz536L$Zd zVloKzoHqOH3iJrN86f(0@^0-HR9Fa@?dk6jBc4~M=5I``{r%R*L2oy|Y4^75mutU< z-R65x^nSJO57Ur0H?J9pTnM1 z>ry?i^heJ}f}80{M(vb{l$5-ij-88?2-B6{Q+iN5j~CVq zzwY6-x~H4WZO|tCu}_9BCg)!InxtkwuKrk>ye-GkazEFYQa|=@bV79Z*ovt$~a zgF``WtO;mc^^Xv$Rr$O6G-weqtRMVrb^BhA9mD78|ED-aazL`U+ z+a;HWwyl}v|J={~ma+f$j<`SZcao1}R4^YhHV9}Nb|5^pjIG#U?`L9APO*%Ax#i^n zw*69?(@6I~qnMcxz3t(mNbhHNzTL^)=+-&xW&QbW=C&Qxpk|3_LgTm#&niVq_fEaE z#Z*Y~%W0w9G$y&*yiD$^T`sx=xL@}C<-O78yGN$+KkJtqyZo=#tJW2!J?1#h;2p~? z^1JSj13yfOp??*1z4!gl%nAd_UI-H1zNtGh%cpnGnWby!u-&z?*B;Lf#!5M7f3$t; z`YQe7x#UW^H@9T#_NLvB$$ta$9%uDPYn{?Ly?xeW z^9bWlehmp`fgA3xZmGQHKj2Q{hfyEuOkqeV-mkQ#CjyPx0LXI zUae*0xLOItpBV>czD!!3o+J4AOfOuzP#dq&PGRQwZ;21qURx1q{kSH#gs-7$cJuu$ z0&CfqOm#0OZ%K;!xbuU1Lbu#CLV2-m-sbqAsH7LspX+3fcid7es!GecZnd74n-y?V znwPrhbDvKeQkLug^;zQM;9zfBn>gmZ?b+!Ut{-0~i1|UD6DzlFJ*d@`@KFwH(~R*$ zQuj#3 zvZB6|Gqc*q)p&8_R@*zh-roQFubXd~2^@y*7c$0uw%uZVW!-&KfaQjL?Lwpd1DtEf zcmMW_U-@qSi>B}X`SId+**`;-oI(>Sm#Vd<%vjHL%9M=U^s&~}Uj8As1AE$!%=7t>uF`i?&ly`4iK$?&xTRPJkI#-?4kyK0rUieO{Qmy^-KVlK+mq*I zyJz(K-9Ej9)G2@O+by$fv&DG?6&)0~((#gMK)T=0N}ogDe119eUDF>2 zvkN(W4*F8!M_^wsNAJBw9+pfm8C7JhYbA4Vg7o2jl=!~VhZi3%eX&n$n0Y}yZdbvj zwOdt>CH~_}2UHtfrDgC4scYuvjNX<{qN*RS#-z{xH1m1A*Joq;C6-T$O|D^1anqN0 zQSm`lYq_8PckD_@x4c}-?5y~(Sf0aeZfS;m^HZ4~fo8s%A+xHgdMOJolbZ^kUe+ zGW$#Di!}*}C|R+1;X>gK;dwLSO1$m#%I96+$2(C+p1pc@J^FoGU7?4&S3srU&Bbqr z9jX!7tY6cU6>Itw(yh#Ho9g$gdh*Wnuc@gCi@ptv+50W-M{G(P<+kU$kZ$1{t30Y4 zT&8uA%if#4R(ig%|DAv0*UgxPA18e%_w_)6HPP!w$Cy5eN6qhC#`y0DdKxk{Y(|;= zCGQ1aE!@QCp2Jq#c{$cPCCl&o(&uyUSAW*@v+ehm+^@35S|m3)%gr|4C$rS0GJ8ul zD!Q$(v(FIM2~Oi2ii)ixOY^`!onOWOed;zxsB zd~Q3W3Jv5k`R8(Cb4%qN$oP@;Hm>mRjGXOCjP0#-&iRDb2Cse|54@HZ8s(SdQc2QL zQIV`Ovflman4OY;Ht%@uNcpZY)#Zi5|n+7_9<=D)O#6GaDq z=d1QzY>7GgjD0zeb?z?i9$TFc8-wjPIQ4VdYWH4DMxRWy?#fNdJ#4LG8;+7!K}?eV zv1OYc>O>(5%(&yzyQiwEJsxDr!?Ncpe!eh{eCJRQx zbYnC7D)!O#n;ah4FE<{x@8kT@^}h3P;~ybL$*?|@4Z11%C}Ws?lp#{=Y&&HgZ#tGc zAZKrGl&Lq_z*y@jd5bzkC~c@=Ki=3w>ZltlEYx?^Z?|284HdGSuvVuobjsQ{e^K_y ztVTJGdCvJc`CrYs*7r(`uBc(M@wj1^@J9J;`D=KddXE#%uk^BP&QHrZl6mb9qvbb2-NVRT&u8SJ3c*)BwftI1{>n**%ooGDfaMQW0 z%LJ$A4(;qC$Qd?i{dcH0ztDnSpftW$i)xj8o)>6Va)cXp6CD>j`??0XJ$2dcu-MQ; zaulNFP5JGz+N1}i{7vcf*P8t$Z)SeKykog?{%|Ep@Rr=A-TF6n<&4$rY8fi(7mDR| zuN2kV$ucGXQ+BJYX*pL+Yvn!aP--9*#D)64b|dY*oPu5aT#MP}IJ@-9s@;S!WK&7dbpM-DJrR z&EKAPChvWInB|JHOqi`tGlbgpwVPo#+E7b+hdT9GxT?!ik8qm*mwa5FqLjD&hdQp> zt~2YQs_mH2P5;YK&hCn#w7!pUkclfrRi2h;eP(fx2UDj$Ew`6jDmQE^L}x>wah>s! zVX~AcO|ffkKh*x3@x7hV5G6(kqs7P4ZK`pUA!>}T#}-evw}?qwNb>1Ww&71W8k;bJNM1;aeM zJ$Cc$n%Z?XoRK`mS-MN=3HhdFl6i~iQU1yNQszq5Rq`vPrp`&aqhE>gGsfP{VTnVQ zL#+K-Lp^aE6|QZ}i`qy1qMPuSno=CkKJ=G%=|k+g+dVV%FU{^UGE zzRr}Ne>H!E>6y8i^{xC#?JD$>DxmSX8U(u=b{*_`>L*g6uOs#nW>bCn2bG|%^i?{l zuV%>7SJjV`N=eaDpka++h`xb1OqZ#SRZhz7l_0dp4)plND4W#^RH07kwDY+k!c*O5 zo(w$(uNz=kp|2oa5+ZHo)EIguHYl#jR_gdYmH$w)+o5oGM86(lyGDt>at(@qVI1wsIM$_<6O*ksj4(g&^om~Fz=!P&zi1BEz&6L zVFy?1rV69P*@B`TQ2te?(N#o`i`+xe<_c}3n_vy+$&MG= z7Ij;j=dg~Mh_%&xo1L&0dpak)kzB|khidg9sjn0*bZ3PlbytO<;yCd*^`53&YZ6mm zyNR#Fancj%oU}lyBW>V}_GB@eS+H|-ZPjtiSKNxVlqS+f3U#H{;xnp+wS{S%4f=+j ze^&4o8|aKY4|S;0)*5EHWzCb%Sj$_|EMdxEwZ1aQ+Di7*Ef-e`ZEbIP3e7roF1>TY&7#i7jT0NDm00~ES#Tb(u|WWM{cNFX7I2}5`1l()e$qLv-&zx zB=JQ@{V16F%{ALe)m2wpI7d}dSE<`{mDHz}TJk5`BF+Ka0q;uCgXBav zZ6ncSd!ekc*?1~ToYKJRZCxfWux-?hR+?C5SVL_NLUCJy#cXnyZ-XjRmBE(ta-8mr zFpTGm)KUj1Eo@A9ptk5pmF=f)ury4ZNbhA|ahZOb;i-NONL@yZ7FLUG408;n#I97J zwC8wN5r^s~DW2**D&+BMsBH^1?;Ls|+`01u>I=D+eAwnL6%!q8p=tx&5b2vx!SF2kNTRN$&s5alTm8SZ-U4Pe@Fa1Y< zrmwg{Dyx4i-n2DV+~vMX8)2aMKuI%OEkPL&%t} z+MZf}TQh9^q`~52rLSeU93fbxg<>9^3|(}Gg}35JVXWF-o*=ie?GOd&zOJgeN%qI? z@2i`wx#m9B?o?a;Qp>Banrxrxzx+fu$1Rw@9reTe;yKA**ePdNSK3wyH`GejBZsQ( zkp>tNrR!od@i_gkqv*A{WOJnxUQfN}k6^D$RVq=lN+9Rxs^(huTI53aF;GRf2LdX5tDUQY~AUVUS}&yr`H~}iZ#*FRvD}tB4!Hx z=+7A{7S=2JetK7_p+3j1m0fpn3O!u=Y&I%~Gq8f{@;Ujr(vr@hVx0S*End|xwHsl` z65hdzN(V@`tG9=*NpuzvGje>5#GLj=?FN#0ffWR?HmTcxk&~ zfPR{=5ysriHV&R+(`nD^qML#z!dIaSr;_xI2;Eka^rxhgVv22%JXS7a+dwzia&>{6 zZ~4!lMf`t{N}-4o@w+*7SA=IM{>KZ;d^|8aDd zVNq>;6hAr1Fm!iIDTsk$gD5KIHLzRk?(XjH?m)2-0|O8c0ZHlZnPK|m`}ckBmm6G} zIcJ}}_t|T$-};xLIBbMCva)8VE(_Y%ua#ES?F5ixWg)L**dOkK8AAweJ{nki)}7yP4AIzwf_R>-6$D9>g!lO&hPm1;hG$5f*i_ER@`Rmv z4@0&tnu#YLnaq=w2^`p$T3&ra-^`Zat%4ooB4h{kR)^_(&|8rtP@l6q68fa>rFPkpFDs+=N3?e zk)>YoBgyq5o*c%NXuVaVRSHdoaWm{z^Qkx5ld2Te6WuyCA6pFL(vrEa|EpcC_h;6j zeTbg8g1czEtec>pK#k$LVcm(d_+~T%x)_bvaRDkmBdL}iF!47jkOYZ`iONMQCF#-( zsfA>b@Hw#%8w;N7mynuxg;@|vA{rmeZ7>KyYyQqupv}ZjT+aQ_((NnT{8Wo|L#aM= zH^b(RCvDGKBa{;TJGKg(nnStUvJvH+7($#zj!Vlw!dcVjQfDWWlw3Q4KxC?3Jy zp>o(KI4vv^5rPgr-*8l2sA}#wt4Y!h&?&W9nr&)hN3+^im!>BSUIr_pCn#a3=xZ?M zjlLaf)h+cOU6Zkr z9!KXI*6JQ=pX#CvIff60IOA#RB~7q%AfYvq`D{>Xo^`~kV|AIvB}@w&2fT&xOdGX{ z)^lM*qx z2!3)#y`A>AzAJYXe@)y*?U}LK@rt`eV7l|qeR zuAoCOPcl=!&%B5Hwd5q(#$Ta-Fm7a)JjVKkMYE(FRT{&z+1dyun;0OL2&2$5w4-jM za!l)_)?|fT^GUy&&gT2#0r)`Pgc_i0(xhv*8y+zGkZN=WKg$@?VbXS?#jQPFEv9ZE z4g!U!O!yzshR(u96B`AG#j8wnty1iz4goewvv1Np0tbvlXA;HY`Ld0&ebNw7HDLi!v%G|!mT~8eTr(2Rz*Prhp<{|G)We_ z;~%I%^(2Lda*bvfg}_eEg6*%rt2)sBsJ%kvrT@sZqhkcSMLk7Bg?okf!3$9!dMi$q z(UwyCXh+Inq#bSvXPme{_a8eGT=qlYtSK6C=62B`)Fz6h+Km(S<22t@Q&mqi-t;5v zsVGx2STq@@xR-Q+VW3W;_0@l4%5T%E4_k8cv0%a@rYn9|a};$Gszk{DCka;AN}Q?65mW3hdXRlGEwf3Fd= z|7wnJ@^1Rnw4gbmc|=QTn_TT}SZmy%KdoJ-^Q9-?@v_A>u8uAC&n*v0J|gQ3-#QW$ zLly5--*tBE9W0$B1PFef4pxq++f<3yq&As!Jf?#L15L}#2FopFbERP-1e;BZi~-Cd z^fZ|&3N+a+|7;#^k!rrgVwaWBCeY@mO|<=F$3oj(CI##w)t1Ko)dwohR&A+&(WGe7 zx9rvM=xEbnRuYTe;w&!IXu@137n&Whaj>2%qp|76_>Spq0gZjDf0P|7>ssy5oTEO< zUd2!28~9iBGinOmhoRX9bcfJJ_TIeK3bQ$4B{i!O8IeNjgx*Y-uNki)470HrW{(}k z?iKETT$h6Knj$R_he@-sNguafLTpl(73lvYxHfnQ{SU@MrA>%Tgk1$n+3N@y3}=5k41V)ldUS8{5>vv z+;>siWm;@8IW8<9uL*Vwl-N0DkIuY?_CORY=Or<%hxdDV#(w&i4%PyK6nRtb$Ia>(S4^&6)S&qCj49&@cN zMCHge_MpK}IlFN}ZFEgx&6K*;4O^QUo3FS2Rmbe0oGx3w~El(&X&PvI!$ox zV?GOCtwS2u7J8?re7W&C>&uaEUot0`?r49{hy;sF-`E~;ed9I1lWk{7Xy3pj=Si}K zXr6I)homXH;(GDc!qdg0E6{p*3)6N-c|^AWtu-xi2=mxcMLtpd7iX}40;-T!YmF-vkL(p6w)Xe9891lw^X{j6*mmF4Mdg)Z>CAs? z8c;AdRsQMYhp8W1QtC1umHccwj!m%{>btvZOV61-kgmPD^bOwOx7zuF`6H=X8YxY} zcj%5crj`!LwM|?7`R2z{U&KE;GTTaCszfHQ-7P!Y^kDmZ8AL_7N5=Kt6smDvg>P)8 zih{Fi(_&KElKy+|m6DMAs_wq#9lIFsEsircbE@?=hGeZr9FsR6oq> z`265~`Rki6SHHRS^-hsMiQ-MB5!S8tWv(ZEngZ4Y_XzUq^ugQU`PFT=-Cgk`EmE1C zVe#Qc;>{P|UOjrRO1Yd9)^G#4Zl4?cqi?67JBIHZa<>1|9&-XeIr<9QwNiybd9|aY zeO8mE;bil)R^R3ob!}DmD+4M|R_|*=G2GtQe`444o=f{?4s03lp;v8Ci^ELJr}17+ zNXqMX^{+m?JpX1|%AJD!3K3aiF~)w5W4TkHtHDj__R~e+=x+DGw$!G##b%M#C~hh# z`jm0z>*z11zOG11{C%W+LPwSuaSskVJ>bYt>)~C8JnZ{BB+B!y#Zo@DEudyqjYH#w zrqzu}&2LoO^lxA_6E_X7HLw0wy{y@tjx?L)u|Mbqe6qBN*S%+S-Qs=IGLQYQ&gR#c z4?CaFc%1iW{`0q=1{63dvjpb0i`{9T?VZ8{?gy;#D|Hjw?vsbhewtt+8#cb(qvB=G zmDH^%x4xcCpONGBw^wrsUuu`rIjH}_p`S-Q9`QC>5@8jT>oi1qRj;kJ`fDgnthra8 zT=%WPQE^4vO*=)gqsg{@TkYaHpSD0Q#j@Qyxy$|T&Al)63+_`L8sHggW=n0V^2~7l z(EruQ#MVUWZMPrW|9)5Z6U*&adsg{9>lEjQ`SPBxo$gxXOTGwu3I?G?dh6B~6|??q z%%su>X8HelS(?x=QC}@>b$9M|bD%t?>u`1S*od`(^PS>N3{+6ls=xIGNB=&lzFq&O zadF!y?K1j4y-V+`o~jt#vZ3itdmpBg%*(OaYj@zdt}#8*!b$>6TqW|ClwZx^tmcoe z-rRk;`eo4jcWHym?`d-+j!whg?q0do-jm+%w`#cRB!b87+OQ9`@HMP5ui?no0oI(K{A|4x)LQs1XrmocsjwdqEuecqS+IG@>G|9Ot~=;GpUd&~U3*(9?lNfT?K%&M7Il#x}I zI`(HXvBYB&0`Z_vFa15mRFqMpHfe`@~wQh<>`%`eVhe1>qG1t@E`7hDzoS z7DQtFK6U@5qN=`sPZp?)2REttc~;5p3I5|l2le>c?M2WukFSP zH-J_gl*nf36;JncJoxQ8g8S8`AmS$zxa@E~Rb*@wTkZD?$o8TXZ_)R4bc-d{BKXm;Zc|6#vfc^Wn6c z*^`P-G_7MzN?qtba8ML*zGZIB)+L5t6OrH{+Ri(I2rk| zBu`OwO!ba<;*ii;)34{yL&F-Q?0T&A$TZDC#_7kmht`R!k(N31PGM(Bv2X`jgXS5| zv>d9kt>|CH)x>4b9nwQE9~~lTz!mGYc&% z-?yG;Jxs4Vymue%Y3JtRFx|$=zPIZ*j|$f~ha9U-vJ&KuVnO-Q-%a0zAET2Vefjp= zye3`qT=2?aM(0WWj}Dy@lM#8j=S6Qbv)x>O&8PNDO;hWN8p74i$SJZB+rtWtd)0Bx zRAociwdz^T^(rZ2W)kl*%l}yb?o;V9!PeZ=ntZ~~V+Lw_H4udpGi@@c-w8$AD_R;} zYEp2-{6B|s7YCQSc7MzZ<=?GlIUI9XY%P-)iWc$PRPU;@3Z7-DzQ6zcIpx3XE!Fi} zg;3>ir?YCn(&3Xv+>N&BLk6C;UWIg5SGPH|d~EQ8GM`doEaa>ovMz?ijvg)ZtNF4K z)k|7m>)s;KrUzY}gP(RC)J5w%)w#*co3!P6GkqwX%As~n!HQqke!coLsdR5mdP~0c zJ~CK3&}x?b5c_A=nHHf|ckI?Vu5t*mnJxDu?euRNo60^HOv;&=^&-odf2=M;zf1hn z;bOp@aQVQogEsXw>9*YGkA)K#+rFcIYpr+fmfB^FGLO`-Rcbbwoh#Mi!L*LhT8{?7KIJaeUn`cLrF%2>lNz7Jiv(ZC0NKw|5*Sf$U zA&X6<7XJ1XZU;RFyDqiuFRv%nRNoFpA?)a?oL>L3Xy~t#87H%E6pXFVG=*xfa92pV zY^qJ3bEWH87dw|HZeKlCyDxU`YNwP_sDrYo!uV(6uNmp>KPofwO9m+FG2H5z*O9Ob zeY^C#(Q|T_alUu$9|(qNJ~inZ3YuQDENfq{sfG9JZA`i$Kz~R3UfI9-P~%0#D*86@ zL_A48%Ffg6zWZ;de%9`?hxjn6Obh;Dwl6bTb+r0KVYffW3r3aBuREbU4Q}kwqA&}w zOP2Q)pF&TC`!lx?=N~p|`9bj(q@&|P&8Wf!zlUa3WIW5l3l7x|*N!B^t*g9;goz_& zNA&7xA1d!;>v%`J!C2A0qgmYCz2#Y(SH}*$7o1ECqwW}H=;o?sHh-!sY-m=jHEiT= z5aVS-Y}y>m9QxRHw{nxO5ZayI?cAVNMmfFj_OZ_JX z{tnpZ+s*lid>65h-^|)mBemr!S4DGEVzspVNBR1iYfZOQSD7iIdUGrL6jzb2Y2c)Q z7Vj}GxmF8A`>7L(dCiNPW;MNRKC5)3_Mp@83^a-VNSmr}G+eFNUOu7vX~Xb#ccWAo zY%$2Tr+u~48uvDLYiFVDa*MMj>DXh#2lZz4ZIz-qvbv^ZN&ckV+4+~Mc4`tt2OWYt z6?U}=x9xEuSn4UU^_L#wS7}SyyqaPfiW){V?`yMFQp(?oeQgul#;Xn)V$kjq#B!12 z4R?|EHJ^O%zHS*-7J}XSC(Uh@OG^)zzo;{`Cm6b+h+q@h4|QgS>u$F1uOD7*S-YnB zwz?0G${yJtbGzX7%{kR^g1wcMTJ}`pBJN3q(D@yM+kIPh)^DpGUahPdUwgMUt0A#{ zu;C%z#k|r5?<5I!4R-4^#+9*LB#FZHY&KO%Wiw}3F>}QDRQI4`THDWtwwm|Vook;r zP1GF0UYUJ$9Ok*mm-Qh$oE;skUE~JA0hZL6cCd*_1&@VCcUi^?Ytc-?O)jjSmw$c#G}X(AVw_0QXs8!oNr`!1KshebwT5k`W5xs zdU5kE<#q$~`ikPrQmljQ{OqIcci6tM6q`lKY$Zztdx=o;6S)P>!#%Mph@PINJ*gPe zf;P^qAKv(+ZHJ}@lSO z`c%1AZK{3KEbjQv*vQ`?%_VP4B4pR4uSGO@mG}bZ!V4w8O-sxf^C+_uGQDUOR!d9u zh=%M4Q(+yiG;<6m>0pjWq{JSW$Yg^gfJX){Q4_|jdd9>!bxA=-&*JM~aaf_9_+l@VwBxlDdFx*7jUE*EYQ zwvspT3+OEV5#tEi3#~pze^uwJUuzTrMbQir-+v&F*oQAiPU14bZlRaxnrNgrUHn&3|#Wo@`K7j*r5n_V1V=M4i_-CVKQEf0-=-743@g0*t(V z{46vDpD9Qb9gqx^&XRN!?IGJS0?mO`Xm6mgN+F-W7ATn0IX$>Hp3q0Ax5mN7$wpI3 zPi4{vnAPkpE(5MYK4jJ}qmLmGJ_k~XDj=|}0gZbCXU`_ktHJp*-B@RArYvj zzb+J*N!Ov@=P9(Zl`zS46_pNZ-6(hm^8|JMIQx-P@EyoU^f)#e?v*$G4pgl1Xc*$h zABS|I20o7|B!#;IweK|$=~qLZ{VEVWl0gNJhflE#C?i1OLH2|5pcM4bO3;fG*ed)c zz6U%Bm5?621u4B7+*|Oc80q!&3EH3WW_tp6=sRzPe!{GXi^Oo^CTQ@3u>(Li`o~@# z4SmJ`I#5hNSKR~I%2kjaE&@i^I_Soj1nKPf|1$_KLB{Y8e-K%S#)3j+i9f)Opwp2U zK7{jz)AKZX2;BnLV;ndeY{0Faf2ws?_<$uEq{f( z2b?c6wt{H{k6V9kHKYw6qgOCHyaV{U2jP=V1wWe^5bN$?orreAi=0NTC5^-joWvp! z;59I*l$dg(&QtT~3`P#@i3#8&_=4C$me3dSzscYusD!k6GNd%ifXL;{{sQODc{mmR z0V(-(&}9BKp)3O(ITRAjVUS)_0@Hap8je`-9^3)&v@8TVKE|&{zM(I$X}AWTNQ@$U ziQjk+d<@nLy#c(Cr@&;I2@EtlbSr$;ACMz;gv@*y5I{BnMfWz)BEet6PGK$BS|*hB z=HmE%KrL}X%=t5{C(}T^HhwkiGDI8qff_uQ-48^P7)Zu{=Z`=>H5+vC>-az-n+PWL zgcHn)6VXe2IUCJ*&jV+OpMh$0h-Nc;@yi;RS<{b0z*en7I&)4+FV z0tZAX&?y7>t8gVoLlW2*61>+TBWsC1f!z8%$o>8T{^@a`2`p#lLta%1>FE1h4cxs1 z@Xd|@*19J+ex4#XA!%!YZ2@l9zuti|;Nbj#6f|7UFf<3sgC4+H<=G$^v*rh$K(3_92r zV3@6j{;WALuT}#C>^^G_oP&Nqx;VqF1>$8Z5&?Jl9;B?5&`RGIuKOoQ*3Jii;2-c5 z97Q(sN1%yl6cAhkSr5(7vxUk&uETyTd>078}v_<-KPooR;amjsN6en9Fu0J_3ha5$|3TFq&28tg%TLWbQ3 zSYwO9MF%fJ(2{f;W~p1ifA|2O%oLKY2>u5@M&uKR2pb{|=E@=1G;{}$Gy6h1b_gV! z+knQ<0CUq!W&)i~ZKoE4qC0`^&kSID03$LSxB?=0DsDpR{T~Ox;-7~F65Bhut85$S z(78+)(4)Peq3t0z75EK>&`Wj^v4G5eFu1l@pbPwCV@Cl)AP;C7)4+e50Ia(rc;2T$ zt~?4TEVE%OFNXwr63_-)fRAqiWc+6E6}sRacqP^kI|EPFHb~&k;kLt5dz*O$Px=q` zDtCeJ4Q@~!at7@MUYhy%DSREQ2M6)Vcq))0k|4o94en(IWVSy7+u~o#g9G^Yp2O(s z%Uy(K)jjNPR>WRpPB1%|;Yobm8k`&<8vVqKOKBm6wGa@$RF@cp^zM}0RNRUXxMC6L{Yg*<-?I0Mc2S#V{%;F+mo@51U%K_2rt%!Ete zx6B1sV>NgqNG_b!Fav>M)5NX$hD2-+LXnt=L|>rIjAKx-2G!hg~C2_GP()+_)Y?Ocs0y7p1_pY0)(Yt_IW{q zR2bD1r08G3d_5Uaz;})XXXYPZ*i8dk#wfU+Z;(x}i*VHpQs`o$WvG(|Ad*ueC4KKmgFdbn%oP%teH#_J)BF!P74+b2a`0q zmxn%jR7#E!^dKZiD!5+LId5z{F`k%&&F9B6w#E%Qop!NdKeG(xsZW&7THw|G_ zH1n4WfWDhRWE2}ir_rN14H6BGpJ7NKcb#Er9Q++ixNYE7P5{Ea`WDd=!)5^hHfg?-c!V0F0x2MdM&nhhL_ z7clb`0&DDFyV^=%)_ee7Q6@a+bAb*&hP%Skhzx#m3Az*7b$HkTUjv@RW?&nHBR#-_ zdVx7f|Duzah2Z|)#(F^G=mhBADd09EJ>fStVhPALxI0aJCDxO?NJbE4s3l*?TxH5w zAnXBivH+6h=Zw+Rd?t=}#scwM=zcDg!I)z9333t7Cldsp$h-Ih^eH@l5kPd4q36LN zyBDZc3E=*-#|%gd_la3fZ=eg9HT)&aoAAfCfijQLSB#wTGK~QvD4l%(WKun2WL~oe zVF$bsYe1hN?)*ybDZd|BfHvTDKZuRQFXIgu32y`;XdhUY%8_xH6S$I=qR;sUtP|XU zA~qhqLV7|Xq>8wL?&W^Ld)Yf=6X7L1BAiIRLU(Z4%q`{)`+{fD4fs6pr9$TjGmS}Q zT|k|$K!<}nYZ?2DxeGhcCA24Z6CFvU6Wg$_+-mx?akcR-O(1e&8`*>S4}AeEgBtvo z>Fhve9F=7JO)ubAz&%j01vEkrrK^|){CeoSnGf^x5i}8b&c8rz;-%zDG6=I}BMi>E z3;Hc|CwL3mO{U_|Vb7kUb@XP=3vU+YiYeh+d=u}^<}x*`5_T>-V4pY$sAOCD6R<`f zf%|`xbKyTCm$9D2B60xP5BEh!0TCq`u>g1BVcdy$20o}kOqnr~8pxz@;oxZgw@Vns zO-5E@v+-Bphdl_SnY+kOa9E}QuL6g)dj zOy(SS0NDauiyPcT)`wX^FJZ5t#l#IVns|fUWWG}GXm`#MwIa?5`it(1<_VV){^((T zCE|ypg2%#*!ZD;hwuciygkzI&C=-Tk#TOA5usi&DCW#4~6)zJ@$1oGeDgLO~HK=9=kyj1Tga7$eFR9Ta@Sx^e5M zjmAuRF|w5$CF&uR64#LfY$)TyUgEy~vG5g)~M zW25P1#*fB3%p}ACzm9J}uW&S^6Lv5#u7MW&lbeIca4*6MpNKx@kFzV_tsBM@eSy=X zN??ziM#?yEro?!`c!rumpJAG~Dp&=g!2{&aTxT!x8_|LIW?~B-j+}=T{wC~7q3H~~ zky-e5@{?eUz>Tq@D&(W zZZO9lz?R~@h?!(h;dGHmIG3=6UDR2;AKo8};$!K}#zPd4n!xv|2Tz-vCFv-b0}@bA zd=z#P-GaR#u0i(5k(h;^g?-aN#23;zhxrfmDx;$@)p*S4uJ5BYH`wt9$vu#9SxRn0 z1+aIs0hVxQRLPm~%aPt_2fvcBFzzulQZu;{l!ATSUDOrcv#)aoW*aq4e@A1gp|pMm z3u9O6A@hh|gWV+j$xM73FmxTTyWkx>iJv6b38O`Y!b*Wa@Rq7#B_!VLezKcm)bBHCX!Z)n}xG1YjN zt3XR}kswFN36inLOr6fBW2It;;+JZh*4Mb5M%XW00@8-EK>N7@JGgD|cfavr!XA=p z$r;H_sfB5fe2h#knJk<`g!5s>RoZJuNb4KP!y}4>MXdq#2o=nrlS!s-e%Aih7hg2rd~ZqeM-Ggo2cxV5}%E#1Oc!u{f3U!}#{i)G>4iO;Q zA-IK1qSL6K+%J5c&_g=IY`OJ(+b>o_W#6#LMuR3%a~Ieo9j%v@Z>XW9yY!Frp6CYF zO#jijs}bdZ_Q&nll$bhC8*a$di!=+AV&$X`LYuBX&h*1Ki8E!mnXkFI*+@Q~XqfX%{jQVyH=zb&cywpGu!cF4?Az%!u}P&31~5>N53B z&2{FG_@?D6TT7c%Q!P;iYjP%Uz_ti)h+Ty*FpRsP%WN(ytS;vL!cAaioEey!{^qq4a=Gbb!!7xY;G-gwU}y$x{mX5@I|~P+W81*)!MSO z^rR&BxAT+d{}`C-QPZSZl9;VsXV zUFE~uy{mtf`BoTf=PLFvSH-Vw8axdFeSOm`0}a{;srFY1%fhEJ;hCl1?+FB-{1o zhfQltRc7ASQyiv&`(u1ZR_V#yclj?XpSNByk`l~`>QoRk*;it}gKSr7%5UZ5q$PX{ zN&jAmGy|E)V6Pua9VV}7h+>Z-l7JLPl3x0B}zhuJbIdnWi zUQ|!d56fJecIc-vdwTBS9OBQ_N+ja?M79Ya%l>U*vDS z3j73|V|4e;Lz2gHan<9;Mx$MRS!Aj`i?4mR{-Aqr^JU1dxT!?HwK zCK-7@hNkYz``dhsEOD*qwkvY)uq7jw#Y7Is?L5P_g<4Z}E@#e9yVNDAEm@&|XEe2F z{YcV2E9h3Q{XI+k4qCjV&o#Q0J};z8RMqR-bQCVlvpeW=*dfL;#r&xaxXGsHLG#Cr+Z&ztaR*?5eo-B2n%x?A-t@JsfaB(U)sNNPK|G4 za~rF&GDHctx;gdC>#yp*&@E8-LAkCnsJLIr`O1S0O{!^_qqUhwi~B3P4;Egw{;tDZ z-&%Dd%G7DKiTVC%Yd;hxK72OkRb$$`x}W%U*UjDaQG-Whj*v$m?)l9lTy(8{VyW97 zWA6QY>EBB=lJ<878R=zvKKRgp(F5-VUo&5(?^0J)e7~Sy*|sKk-Ftki)e7$~ftNft zTIj@m&AnW6JY{wbs9Vd)!u0RR>w6EY?-V{rd`ITDY4_O}LfQtp4B0n$^T6od--CMD zYtZ_(os}bt|NhbZHvF2Lt1gRG_7Wz#e~w6t-7~_X=MCFC`iP3=9KYNRWi748>9^t< z+XrrO&JX1p@cH}8n_Yr^Cb+$jI~zY#K1$#68hk18?@e z(S1+Ib>A2}nNXn{)A+n(aCS`kn4cqaE|j?`&q)sX`$okMFN!E~UoMPMeW;vLmejHb zdu^e%!EOAlH_JC7F3K5gHf)qtw&z8!6LxOojrO^Pqf+7%uRmV;RQ7)4@9pg-rh|P) zgq`npB-A4$F~lMCNAMv}m3)jbq;A2VgFkM5tp8k>xvtDinJ)_WtL~Qo$3ii}6UryG zS8IkVVo9|_oYyqhG|P`d0o~f(zm=zQZR)y==oK9-wf<#1UwJdV?(M|HV{c2o?$6Dt z%Vj#58yrs9Z?tW5F%5Q)UPB+E$aV|L`%HM!;Oyx5UI88lg|k#Is=|vR3zq-QsTy9p zw;ofy#=BbFG4n&(TZ9!66<)1((TDbhoo4wBu}vkrqm|@v(Nxhad6sKUuqt?gvlUU> z>QwS7uNKR@852$?2%_o>zYpF_9?zv9AEsUvaoH3!G|vu4z@A(?cXi0&#^w!LW5j)Nb}hY zU5t99@>c7chL*~if3wOawRB@$1o`|O)u4vty2Gtm^a_j9e$k=30!`eX+wZhCmsz5J zSXQ#iCDqGlEo4g@|0`Xeb3E1Q`-IG}g1FLkRjtiy^qb+WZ;>e7($`ztEu{aW0b6@{ z1U_{@q=Wbmx^~5&mP1WR4M|nvlFH)3I*~4yMU1KKvl`0 zOaI7dv%$B*r+L?yD~MdiLg%U4pcvQQ(HLIgQ`GCPMZ^1!&HACbu9{5sckMC8P7>nS z-%Gv?CnUi>8O(E^)N&bg-*sgz12feL}i~I(y5`5f2c8Ii;Ne&O1%@q0*H_KE;2_)9WkSmUMj7 zEY-a#o_Te1-|a|S^^|XsgphNXs`iZXMZYJcrKbuq%(D(< z336_gL^OWT-bDA9^s_B??-lSVRMay${6zPS!N)yM+80_(Gz}8>Mpx;+H`SJA=hkI) z`IVBhq~O`#t<|GjW@@MK6Gb6rCv0O}1APYv{ny1j#Jfvm&@SKYE{`pikts%8HK1up zWpu%n%&*^DQ#!tWO1+V_yP&Z8l=2JfEFobu?}A^Kf6p!mtl%5%I^wBYSfHdre$Mie%@~J=F4H|m zdZl}Qa+~FJ*7k+Dr{o=)X1u9Z!`-ZJ+uwG)^=Hef)*wZ9wXZ&hQgOTS>B3g=R%w(8 zVRAq+TXaD%QGkmWafR4U@RQ$be5lD*y;q)8ZcwgPj#jNx_t2H-9SpAx!|6M`Cq9qp zOcn^Inp`paVj;KaE7wThh~34<#W`Y3j0i6i$(Sp8kK01$0QDot=)p{Y9A+l(%fuQ? zf&S2{&CveR4%O#Vty~u%NIIf#_#SYowVj^|xl0qmfXs&!FhxC~9H=kGFr%|!zs_A- zqiNM1(?2$rF&~f>#2w)q@kmLY*i^hx6eog2jGz~B3x7dsMX#lAWXnwt%TlE6qU*#2 zI}+5dw7ZRQd>&aPDVHsj`^)1^t_gQy_WV`IW~DPOyMXYGIc#p)|q)4{J^sH>7$u(&pxRvuH7etZZ z#OjazMkn(}sWiX+qS^L27_xre-u zX{yOd>3#_+P7(~qdvePSr_>{qUJ9+^km`O1*Ab`Qskx@xVMN(C$Y*>A*+wkH%TY_D zjcuVPQR9u@4Dp6Wy-;7TP0?)E%+j9H73qH&-!hKK1AMWtPBKqcXIdw}WENnaX@0}P z*Xo6}mCa+TE9QB!AL7U4Z*&wlj^1r-Hy8|83?ub~ZlTsoYo!g-Uem_uV)X+JJB?!c zIx__lLqAa!R*69~3%q%)q(>PS>l?I2%|*>^&0WoKO}W}!Q=y%0{K$&2Es)-tCJiz* zm>soTV!hG&ilx%*n5o9(ic};SDOwAsJ)w9n^eyMiyfOM2O7u$oZ@qk_*l5$se1pmyI^DlfD!06eS941?{Amj3=ysKOx88pbwB|{C2JvYtNX_w$v)) z2xBi}y`h)kh`y74s$O82U~n^h)34Mo)t}U_*Ei|Bb@#Lnw0T;Qj@FqO^XWJ)5@|sn z;iJg4g5JVhVVuZJoFVQfnJeid=@8!(4-z+vG@|v8VEHcIBPtYhClBKZD1m&3#vD^< zklP3y%Z-p%pFzh1W#gjpsquu--I!=tZLl`{0*=fm!y>~lLnlL`K}M~i7l48m1-ylB zz|%bht%X;yzi^UeEvOa53Fiqr3A+kk33rQNMHIb)xAPeSn%ql%BRcR=R z2Xs}shx&O2wc(<1BXxq#VoX5a?+W^25j5Hy2ipHJ$VgAc-w~#QQo%~0m1vPDQuIu? zOW;ht!24hg(6!5hR%GOkgW{_N_Jck43A>9QAw;AnsU}VkHK6;4qu?1~Xb!uI zc}dTt&(Sf^#~R8F=9d8p*A*xl%LNyO{vr!ev~a562}uzIk%G-bLy-_T%^3h(f<#sf zDt|RM5?Vs~@eepDT#W^Ankj*6^OQe@3OVEvXP(0>6l#4ggR7*} zeF28)F5_cL&YWaT_#enctS_;SoFpKH(}e4VUEogOf-|5bc#*ZlWnwA({te&~xs46O zYC${h4E%=;xC=NEc%nbKkQ`4o5mCeuTnn961F+$!0Qn6*1`RWsIRrcvPwJ9!kdZc6 z8RN{ebE4c47*7gY*W5$uQv(VTB-z+)ez4Z-Vh^0s7B9P{(5VR?w{zVRVStufUp# zXL>R23`f7APeVSv2Q!Gd&J2aNfQ#@X&0sX(@90UNr9@PUkvG1fQsIR868n(DkQ8)2 zsJ@fPe9{hhDW?VZ1d|2tfQWOM;9z`KgFoj6Tn~R}L%j_y$(cru=gPis!m_2?O<{J=0JB(LPW4kep`az##Dw&(` zX&Y!8<{-4*+y$n?l^ zVF}}uCrrp_ayS`I29svw7s7*Bgr5n52lRk=c%9K}RwEFb2|~ zJE9!^@&R_f0w@d_@EM?E5Y8a4VO1Cn1cfG`=9m-TfQNzt>AN$Q4&!wh5UxAHx$zn7 z127XN;!kh|o`O5#E3mO}*B8J!rU01%YNuI;3gn4ivy$6)CBKjg|RTcCuW+pqG z8^ME;3CfOc{W<`WZegzN|I{T%QL%m-~c64cY-@JTwrF~fqEz8h5c2+##;aTeT5 z7qJnjAF=}+3^PFA{SHq}C1}rG*gMQwXk2oEWPfjTiaQuDLL}U%>iZg4g3k_%2)pr1&17 z_+14Lz-(ZwCqaXQ3%>`H%HiO6nF{WmEudrf1Kqy_I^(0*Q_MC7o_?4Qn}O|K!uT>7 zbQL^Pk<3EoD5jnvSMokU?q3W(t^c6=;slIG6ZkWSKvTwF z(ApMYtw0q!3ZIDvKha^rlXwfh1rz)jG%0j}7M3~CZ(sx8DC1xEE#C{2qX(exTR`_@ z0?+_X!CiO{45L2as!0P~rw^J5eD*WwK_J2RgJyz1(1-m48pFfjzgzN`VdR*?h#U>Q zM4Nyv^c6;07=X)iq3>rHYKkVn^O_5UqDFWY(xGqqF06vvnPU1Dy^9V4H&-zIoSw&Y zf%aBAehYE~6#LU~{W{>vb_XZj5cr)F;GFv;H;?NKdx{;<@0!By;Lh`#VdPh$pRsM= zMjVINz*qw!5~%z+p!=aPd*y>8WhHd$Fwm|Y2D8O=*bfAAui4AM>3IgeJR$TT1%S)P z6%=I#?nxhLaYz6z#T#(g{A(4D1meX9P>83)Siylv-vm#s9vY^q;0opN(5?b&iv+rX zL%;)Y3t9oTz)1hc7P<%=>xJ-7aacR>^Cv+I$6>@0{4NpLHS9UGxNU-`ZY^|Zhe1Qb z93+~@Ia_uflRyuq*V3)@CFU4=irWpo9~MU2cF?;A@Nc1K;RsNWPQpx*1nx3B@Hy<| zS?FSrK?B51So!BdKT038flmW39l{-gwN(#0j~ZxweE{qEYJL^sjP`=xxdyr$JHTmi z7uq|9z_l3;PPV(~YnVBvz&`2+tPh3YY>Gi2!4)tAQbz#Hy!+wrn&3D2!zX#ngBuOp zNKse}I3xw=J!orL3%-)k$QbZ49EZNgaj<_01HR4zehWVlp~0P$2K=lDxPvpGb>#v4 zl?roUH1`u`WmmoqdRO}Zv8XR}@O0;0Ab+psgy3y)Ms{uYvOQ3_-LVx0C-VIdQ(d;UIILvZqflIIkoC0Uin@9~b1U^9b!JKmw2oc|b8~Byq z3x9TZXhBQj_aZ*vq|4^xxhn86eFL)A1w@4o29ihqktF`08jr! ztO9$6e)?A zhr9wkxfOO0qnWqNAmDR}=$D2NpuY8D0$A{nf)_`CEPy%xCl`o~$AQ5KK8Y^eAn-*< z_{FFfCP4OsAE}*>0wW z&M$z5CNJPc9i_wR(cre64c&b{;4{_0{%jYt>h*>@co;l0kKrmV=1J5CR_V3SaI+p+ zj<&+AcMLy3e8Dx)29brF$0TGExsvFPjRYrTG1m)uh~*G#$isvRI|rV`6Z{J3P1S(D zdJ~?5ExZJJ5c9!_c%GdC+PWpvgZl{ge+u>mNPq@*2lJkuMBkv@nVmp~Hv&g#DeNtl z^8@)+;4?eHRlz7#!_1irs<$NuJ|J*dv@+xP)mSN!K_-Bs^e@hU7Cs-GV6li8yNwSZ zYVlQABF`~lFzV#U7hp_U!@hJpIvYrpk>IS;fWPi5yv>+`=ShnG;ODZgjD~s2TjL7i zB$16dBSYDIdL$#}+QB~*j68(9y&v9Up3|QgSB?iZA&GdhQ>hNa7^5HU#BBr$xRj{J z+|b>eHS-)?)~Vbb*v0eEmzECq>@?6ge(^KFUvL<_g3X*Wkoz{Fh1hF60@om++)?HL zg8*?X7kh>0Vo#7*aOj=ktU%3GKm(l|RM{@5H+Z^~@aMQfN@@%Jmf6lXV6#c!VPhw` zcKR{2BRJtxg}f+U)K72@yUjU)Py8s;lWzjAPA$yCOJMXr!&DfD%x32s59um(x2U81 zOI%Mnl3wT`=CCmx82ve%8#WIAi+1I@Q6Kbb-A(;7V;u7mIApOrXz}pO%*9W_$%VIQ znP3Hxi=QPIi##Rc#Y@ONe7;ejk2DlBdoY8bPNWpZ5y^ZpjT!qIUQsc848ED{Cx|0= z;{CwUB*XT@b+=N?B!;>?JMxi++2e@V*!0jjCEn(d%1E&`$ydp@$E8+VDvfu?Fw@Wfj_DSan zE6|;c5J(`I)D-R*Ivh90qtRk;4lHCAu)grVB?W(G7~Tp5&fVZQD&?L4_jHNzmQJgQ z)yfQ|bQHWdjss?!hhe++n`XE!&G-mr(eH>Uf0)@oFJ_}KJF%nugn5m8mvoR|Hmou? z$gWanGp+esIVIkS-K5@WI;j`welfRkS5clQO>hmri-i8`9YkY^e(>g-Av`YZE}Sp) z6ulI_Bc|}@3|%@lx4&qoRIjwp^#S@wO(*57R)^;O%`xrcHD;7GdyT;;qrSl~k$s8B zivLJE!x`)eelXA!Taa*JtZar^l4-H14f$(SY9HxZ=zh3PR3UK}+mUyWQ$YKhgnS}D zNR4tU^F(=ztktBuEW&iLDQR+BaE!leFsRpbDAdPvTMRD7Q3g`CwquN9M7xvnwtBM8 zSvOn#UAbL(Q5|c9o-{lk+}s7&2<$T6BB+;!nTxH*TK_RyE;4dM^{do!t&&=Ut|i?B zJBSnLBCapfj~UB%5TtaATyGv^nP+Kcwb^pNd9iFZP&Z}*vBhB6LvQBaVRC#hZ)GS} zENMDf|E^(Wi;d!iGE6y3aZqtpd9Y)vR&NMpB6tS-CG?YhHeY7tXnof5uzZ84f`4t8 zs=cjqq(hJkSRRr=hv|BCv?-r;oY(i_3x##27cEX&rdf`(s<4W;5?GSvF{WP9HsML~ z6yZZOVY86WOt`^AZQ9<^WZziR_@z0ko(f0iIZyhtJ#YAUQZ|erT=?)DJ*1EQZBfbzssKg)|2R6!=r*pd3lED~ zvSgWJ2sm+=9BRYNoHWeL%*+ilGgHIN%;3Z^GmClnJMZ@+U0qr2vaFf8_s-dSKf9bP z*vZP|A`(vOHV}V)Z6>OZWi`HhW5q8?JPPKvjho2YZ{H^J1VG|aI)@ByCOr_5Y zx)+Wso8v)+KC%(IXrou3r;XF5YCG%yH9Rr2)i2OQDTm0?CAj1ZxfF-?ayA-xJ~uq2 z?%y7-x5TsAxv%15siHJgw#re(iAe8MN&%sM>N5z z3rp!P{{P%|$7=fvyWF|WdBBdB$CV@$A1irMk?U?3n!qnczyU3-p&M!)78{rFEw)L- zIz1-ei>{!YfBrT*~p|MI`&l7)RM4*4fSHtMmmwW?5=uX?N9XB=rBWL6u8 zYc47d%ce-LP|3u9$S?Mm|Aq5OMPAvuvQ1@iWjQ7Li$3RPl3h@r_KF^K?<`yfOJvrNypPrUubf@ljn{ z6H=>n?@hGzTU5QM2UeZsfT^#ZRVBzG3A-?W=Dk&2Q4Xnnd&RV}Tg7PwJ@eM)RL+^3 zH>0GfE0UIqK{zG6!=Pivm=g28%JHhsxc=5fnzO`7cyGRsc9fJz8v-?8j^lgb?c68% ztsrMuh0VrW%hxDpD)fqzYSFmQ+Bm9t)PaaQ7PWDtY6=C-?)<6HRIlA3R1}vjE9p?! zH1B=Rm7L`{NjdLxPUkNwO>@Q3y#*_>A5EoXy1r3ost&FhR`YC?ff2XWA~78m@xNtd zN~z*Ey4E|SsB321^z`hVCAZxB+1L0SVErDF6iBnwRt0&)$UPewa=-|_!Fvua;Sjlwk$jASEH0RX|M9{+x%X8 za1nijj%McYA4p7}7uB@#;VQcL-H|O!=hXA%NwRLTUT}r>aXwGA@+}1qvI80YGsorV z^0V{a<($vCQz+PVp=aU_VuN&ydWg9&_D=O1wT32bNyrJGp!F;Et0MKJ@r-6Tambfj zh@~I@Jv_Z*zP;>~qs-mcFN7kvY2s}1gXVuO8f^`KwW;ym$j@P!x?!558l(1rauMD$ zxWR@Nt<9;GF)U4+aWCtB)~s}E>h08s>`$c%-$(8(mMfW~Zfy=$%CFWusc#|~+tGYn ztI;63L;CUBeCa`Mm}7FjI`dk_^qeMzlS)>UwX%Qr-eKm6)9|VC5>v;xj@9?nNUIti z=ZM%Fw#d-NP-0lCt08;Lj&o!deb4)py(eQMrd_SytG}*N5eI?;D=hhwvUX&-az7TnDEX&iw)AL=&ygRbXf2rb5 z!K|Fzoc#qWOSYH4bR_u;m^<85&V*PLC&G`!mnRffQbMQJcXL(4JdH)uNmEJQM=*Qp z+A=Dz@<9a~GP(4_nawlK{F?rKRZ6eyzsg#>zXz7EE5#;6s&c;dY_;6l>yj$R9kI+e znJqUXo=5x+D^y*={s{~ze~{NLr$>ILVs8mi7PQUrrUkc!E--b7Uxs?IT;=eD6|u7` zErl%fxv(x_QRZ5P+md=T>Kf$Sse&QaA zb8)MxPSmWV26e58lE{(9VWvQMT%;rXj3GhBGDmG^@}qJFf;d$EM_%dHwsiSaO z@y(Km;x7ed1;2{Bmv^!scYmbqWJ|-Js9y2a6VAptE8VJ;727PXdCYuEea&ZLCHpCm zAN0^~{VmHQvd8@?`qLnNMVdU#1O5g_$wnLDit#QAoZ#ll{E<~_KWWgfI$>R)FE>w) zbtU|&wBM4fS|(I?O(-2uI;*^MS&O1)`TYy~ln%7bc6ARBVlVky(~PK?n0Jvx#EZyp zl{|5VO4@L@HbyoORj~haY2FL^ZFml!x-b28c4=mDsy%gT_U*!*#cxV(+q!xOh7O8J zn!EAGYoAMu4L_m2qARne#RySdEK==WVsA+9ZsgQBf7((?yB19?m|c)jRIg&2N5iy4 zPs(Bq3D(mQufywF^)bHq7jbJNh8fefyHvF$CbS4rFO}${Wq)VZ%ea`owdiAZ-_(ph zdAWy*mKW|TTwLDVGcS~lDh;m_W+xhB+8P%C1>|VezZ1?x2dqns-K9^sW}!8~_1+V< zucd~v<)v7$y5zAVG4z-ZArX=`+CW%03vFI&EsXvYbIclLFly$gXDhbjLG~8y4F%lV zB57t?CZ2aWd+YDxKaQk^=X}oVpSQ7qFMZ?~7Qo1#me-Z9#mx%au4`xgS-H6Ct=PMf z@`!+GhrE{fhE5B1_PuxJ+85cm^1n)D70rF$_>TBhYJ%dR)@N7~_QLuq=6kF?dO-M3 z;}HEUjanW{DB!Jb9=qH%vhY^+?3{x+D>9y^o=*#8&&|7(`zOy(a@;1m=F{(FS=MI2 zsyV1KXf|2j#&3-86!kic)RBtKWKFa^_ru@CrF8hAQ*J@Ay;SDOWZR>k@lBFT%3s=} z#;4X1aqX)p<5x%AH&r+8GhEj^km_(ZvQGFXu)VBd?v5O)pnd-NOmkZQjPW@Q^U#9C z(yopw?s48cZnIhvT~KLU_&&peFf2+PQx`gx&kfB zvYqz-%kJWTqMR&F>(pv>Crs-j*T=*~ZZ^%-_EsNPx+Q0jdTb-+Fg@9OxwJ>#rMxGF z=L-hqglGTAYg2r>bXSGeJ5?`q=O@A>WOUEZ-|mwiNNo;U!rQU?@I)K}DmcAu#{;%d~d@EwLNYE;=uet~L^ zwukrr3`XH?SF%30Apc&8wd6ql#=KWW#_~QD`8KCp5u6wN5O^ZEwGS(qV*8t(K>Nmd zW1}#g=^s-EV|&#AydnRY!GoPV^*lbm!vDecv>3D94>iYrLDDo<(n#J$)mirha7{d|l0wx^mp(P_?A`Ti}!nx|U`jDZUd3e|pbu(fps2iQca3<2%!xtHn z1gE*4+nf0}qTOU(*$BygNXpz&IP@RQH_W$;NxGHF45~BCZ(pGzH!irtx6^aXKC|Ra z(XFx(_Hz|zNlp<_p5^%AYU6no$Yh_f?V(Fz3D!ZEWLaQ5sj`Bv!mXIA8)WWoS}(oI z%nHusOOOCN*uUE+4Zim;cYkq5G6K<2F-sAW&X!(QjyLwUF1F@`Ei?SkJe92{dXb-{ zy~$Q|Q|CBmxUZ3Sl)YC)v~!yKvwde->xwq+mHwZBvGft4GHT*vzU4j@rZxn^Hyd4w zmy(;3BH2PsO4t?i1m%C6FOVpFB%v#VUglpHd>(A+^}6x{XVD_*PU$@SiP#&%6&DTH zO%b{wimsBqxEY;?_mbA54$}K<)yq?yae93B_W6%S7gRep^ zlxC1iAWvCD4p4X2xzz8J2NWwLqhJDh5#K?4;-+}^IJ&rZd3$(fx>~!2y5>4pJC-{Z zIcIqKg?qtB z%Y0sa4t>Zhsze1OX#m9eqj!sMT<~`2O~CHgGIfz`tQ>ltvp`V^2SWZ0JXuj$ zuQyg`s>&vjZKQ`a6OGTb->AVbht0s>6LZjL$h7R|r}K}vBQVSVF6^PsD3T?gpl78L zeqY{NR)iklda%pcqcCs1Axxqhcp5k_xbyu?D3ZAvn&H3aT>{gTg5Y<5E&q@}T(D2D z18sp;mdBvXKSz@BHdMBJsP?mds-~8#8#P+iQH^UJ$eU12$&bJxF9KH*gS;iy5RJr@ z^bdL+>XW^eM-gd4KJt}pL#@Kl|8<0my+9k7CoE*2_(ywV{44z(y(7E@f$-2g-+cFb z@7JIu^wdAw|0bw~toUc)7fjJV!z2b&BBGZ3yXKcZT(41gm!Z{-x3$6qn8y$1w$pC{ z+XI!Eh5SKxO-L;Uq5+t;9cM08fX6dIzeL{F9p0yLB;Yhjcde zTxwGeR4tRP#CAdl_;}Fu{y+|<0kjv?5-5SD(?gYoID9=KXX?;lVr8NNKM%=k52V&l zLmuaE^fo_@o*XdxUVD;#@j+LhzsKsxbBy&m0-b}Jz%753U?$y-Ka0Mk2FlmSjN}yT z7`b2BML*Lx)v#34P#y-XUR>YRa9g#W3`07K*I>3f5{nW#u@3e-*O}eH$OIQ?{0|s! z=oG&Nze&C(M&sq^YIt|8j=#rGB7?YmaEmqcH}D?u4T4X=d-gdUPK7rza5(rVxHY&K z8k!)9j~gX(fE6L522rW9W9njESN$H%COJ-xBzsGb$;Zod2AyF_-_ChX8PaKtK<^_a`w|(57mJgaYIIXxi@gT^Lw_uUts+KK%O$U=2y!mCej6fhnD?PukQrOZ zg!$^ZQk^$lE;r*f_!GR(oei7|ytkNE=w-Y$D)M8+`{Xl4o~n;Zqa@^y!R_%#HXk~k zu8_s3A9}QhV+)91*mZtBbBIesHi$FX4YZt_4Xr|U=t6mk)g^8MfBqKn6hDVI2I|X7 zYym%<{lYcnbLjE@xnA1)(HHFx^B?uq^ErLH0@s6sLn4hrsmj{$(MG zdCbfM#i2eE$6V#YfI_fN{2N+r-t&4;!R^rVy-tV(kIrv&DrnE|!LiT}|3<8)46-YV zUP`BYo9u5{mh_ZlE|mn0M1SM2#Hm6uWFl4QUSTz~h!=z7#LV9TGRZ|y2&)Jid5f?M z^ovCP5VM)728vM)_CZJtJPag;XgYw~i4_?00qJ)cd6buN{~;oO#wE+A5fjf9Vw zNS&7E$-64gDtSekJW;+}-bE3qXenDnk;F4B9eV(cCd;rE$PpktoDt08KIo+h0GWF` z^O+|wKbC~-;tnxd_AOVRZ^oVp9SEKdMh0s`uxDgotDp6d?$Ms)z$ftUy$glGiXRlF zqQDm+nnCKTmSm9pfoh88iMl}fNO4ZFQSnZmFDsC?k!&XG5hx^y_1IUu0(5{^pnP@$ z9>-gxE%>V1;E%DZpxwq{I+Pb;IW;4PZm0L5-u@GwT=zV8gsY!pt{rjIc2;o>c1?E8 zb}N0$g2Ne#`@%ir?}`6nGswG=E;5&FsI0fNyYzw#QwZ|IvbS(=xXF9uA95tP*B(*b zsk>A&X;9Wx5m1yW_CTuYyfR+(P+6)lE6&JPN)AJg_CEF+IVH^Fq|Ec6KJd;r##`hb z;<7tX$0mEE{i)4hKjpaUvUsArU*I$JWOi`7g^S2MVC0X&%Rvv##(R)iqywn`tMNPn zp;nPTnB$k?Ur4JY8r*89rPJkKrCi8naxHptKr=C#;^1Lgf8;FzQMj?-+%tifi=Mnp&Fr=;AET`nj5MeniL9x8z>Yi z2^r{2dIY30!+}FWfJ0ykxB+-n33>D`l6q26T1S3Mp-`<-g{zh;2Pju5oyx_k6RNk$ z=kiI?osTn zT7r=u!A$}3&2FImH>9tHQ2G@O9pOxSP&nQE5y;uk0u8-8mV;*y2>F(HL#W6WBu5+~ zCJ^nR$Kg39!L|Zx0D<cq!t=8=&&H0oKw-(4z{0T+kf75AL5#$ie>& z+HE4V5w!yqCY;Y=Yq9g$THJds7HBk8!Ii^^Y0#IHh9skPvCrUhY6Q-lulN^ShVO^& zrbT!o@ZB6h-vQI02lx?e;3=3bd;m3c5>O}Z@V}t5svo49qeKJp71Wzq@Tra<3xR>~ zA9#v}p#8yrvlmphhsXuEhyMeo!WZ$5NCBbf1~^l;0?p?fFcciCk_Xf(-5GXTmzR)A8@uS2Jy2Z7b+AMfZMuBVRIyg`Q;2byx>Nx}YeKTOLq=3UB2^z-wp@-nR z-wDqITft}33g%d6xB~DJUF63L z&w$u5_5WQ+L*N@;0A!C8pzU~oXtElpMSJ0183#_ZkML7(LYK;JSVLB0U4a)71!?Ea z=puA5I0V}O1*A1{87LdK;hyOz#PQ3xBb=R6^4Z)m@WiIEBfx1jkBx$UrWx?l-*OW{ z*_$Se7uEEm0d>pK-7wsPHJDC*ja<69g6TKk*sxZ6@$K{scFK8^BRqANCMqV1o2s z=pyuU7l2ds30M?KkSN~EyTRADfSU*F+(`Z&JZnkNBQgmz%SiA8oB+@05b+=JCU`;i zpyRLtNYQtM=L<9r;wkZicuRzcF=RFwPoC7WZp7>2P2uYQ1+Fsza?{h%UBI>44K9g& z;E~x5PLluaK`W5P&;hjrt|9?stI42o{*4_(v%#@+9NZ~Cg+4+HASiui3C;~}rDV8f z82B8!^Yi)d@O(I62QC7~>;{!J>;bSz_QCh_9Na^%P&e`ss3B3{2J8v0hPh%l=vnL_HiUa< zE!=$v;OVQ6B*N7k1&+ft$Rp@A91i@Eec)H8F&;Psr{T{B@Iie;cLP6Z4?H=nC_ooo zG*F5f3LfC-JmNnC;iw9D7J3N3gjmrF3G-^=KzK7a1umnf&;}XF=X1&Y74WCDgQu~F zFdAH2ZTV>6jQRML(4=_}^79XXLNF0s2%b_Uu$pdSX86YELoeM=aN8UK@8$#`9Wn4p zH^7rNP|Oh9A_Q_sTm|<`RcL#=2cNq#&SOTb6?l?50jK6N@=W|s_`wf?#yf#42Tyh+ zH<>O7NuI!7%9N{EaOHXImOjCV1$O z8wGx&ePSE97Egd+bRQ@=pTK2^!*jV1RlsTF94^AQ{tN2`twrd0Kd!Z!p44gr3> zx8faeGS%mE_@BaXa4fF@debaqFIog=y)tAT(3s-TT4D*mNO&i%2l~z#$lT|EKSwY8 z0_R>+t}&>i`VT#akHmh$liU-$ELYJSWHG;yZ6kcZ1*#p{81nQQBmgeHo&0vj z%okzji7|)<{0Ab^6e|=CLr=#-WIWvYQ&0(32JE6lOaq@k8hp<-q(9%E-;0dE8O$XH zIW>OK&lZnCTcCu0Dt;l>NS08A@CHyu zEFnhVtFbEhAZVl7B79}Ov1%k9`%i4gy=C|D&ww2UU4GmEp%5{l_rdi$4xLUYDFaa( zDHgJj$B@Jy$5rFwP=dIDr3w$&G`c2DGg?6aZ{9vG#D(~C@JX(S2Y?`z1l>d(v8%v4 z8IHBXtKxsqnLu6Ihjs>M&~kAa`WQ~4WiGuP;6n+H-kKeRc)306SqK;f6WG6k!*C z0DMv-!5cLl?t1~eRy%|x;7INVD}$XK&Nx8vxyId~eSw5f7cK{O(3ae4_7~fgzl@X< z5t5xlw;pZ$D3!SCYp?$Q6 zNbpucjxK>F!(8wSz5{w-W!NwJfG4sOG%#ifBamx&8u^S!LwAVRgpSZobQiK37x@JC z20xIPB3l7`gV$UV+fbB99IB1#1CoA%jA_Orgid;zEae0KBF}gKMs_JUi{iLXp@`t1 z;0Ssi7Y^%cSKw#87H&gVRuxPtzJQZp3t>C7Jzn7a^tlj8FJ?E0*RchdAXuRPhsH_S zBv}qsLCk~eQ-kUUtum)64!rpbKrscE?B_B_6%0~Xzn2$ zP7h>evX@vJ*AksC*(r~bQsg7aI8AKWTgymG|FGBk2I`iIM#>ZF3MEI9;xw*=yUtBu zF!))=Y_}kV`xo0^-bDLawvhYnuIZW+7$HVbpQ$#;*I-+J0o@UafWBxKa+=xdZQ`h6 zZ{qG5Ok%o)2K)c@weVGPx3~Y}MCrwth8QJcY$V+&G?=N67iw!mhfY7uYq?t&6|1Ou zvF5Ub#}-l(DLqLP5~s*C)Itw&C%Ha(rn|e8%L*e4Pn4ba9>r^f^{@0UJWdi9T;to# zcaWuMFNR;C0|!b z(C}WjRq|S#$WeS6={D;Uk0o)jgG}#q?ajxdC&UA!IkvXtv$P={<@8sKvAJx~j-RfU z?y~Y>xgFBa=g8fHv~$e^?)`#7Q(;{jX)#@vFC`jFhnu#>cTc>Sur1=9 zF-9-dUDMRiT+w_{rI33<>E-qFc4i70@wq+9_XK8h6~PV;P3eSkHZVvvx>{oMn$5da z%hBXw&G6Q;GaANFN$-`MqF>s!=AX&vmFX)s`Zfo*rt5i>oPu>W>iyXy6^6ug3Nu!&-Y6O@Z%~hmXNbsrxKCUi`2(SFTEBa&? ze%tb)_4iGAeO&i_qNAkfcTQ$bV#z@NQRt~?2|v_g~JmrCB`#}!cy);HPfs#sUhKVx~y?Vk%X6Krng5_(OD3G{UYY$N?B zS;f%Eaua&CeoMa-h2Yezfow)!VJRpF4RnJ=4PlkUODwW}+Lxwzng_^{UyKZ&I8IowK(pJy9?>??BOe`%Z5| z?^)Zg{Ck<_^WM5TB0VJs$Pcejr2HD z5E|{*dk)xcK?pQUmTw%Oxr0;<1bnsGx034NFRDCDAap;1=S$Ru*NVTCPjhc&)**HI zBzIXse0Jl)quxKncg-KoD$*R>ZNKc$(sHVWx{)dmPYRLl=I%~`zqrxpKGIEH$L2F- z{yXe(*@3WLkxe3pS<}KMY8p}-uqToU>cNTwyv3!qr8-W)(_0X%M|IS{*L|Sm+{n-% zuBWtaggMDlDKGoFlI7Rvw$6vn zmZ2;7FjZIWSLrhPeZ`N`S?;HNBsrc;N9*z{LV-X7UZQwz*%rMqa-+p$nx;Xe>EwCk zeuGc7irrAQyP#cZ1E<_ygKr?Mty!#;5Ha8mcOnhtpRJ#2=<4*2Z6mqwDk@%8+SAGT zBj~+>2hNA3p9?L8ZHt{YI#f)qldr^9_|G_{J~!I|>nZ6YFQsO)dWWLaV80zaBL093 zWM5%OXq+qG@r&)LpB>vO`inM6mL|Wcyd$5cXr#;3jUkd<*5Yv$QvbeCF})bgQAXqe4=!774#Vh+2*G!kp{?11F$6~t`1@a$QDx;u(2)WYry4Qxcs(oQ2mRc``Mbe(9=m@Tx!yb= z=Crj$e?l9jpQ;=Ws1jng5sD$ea%TX2wd!hEcE+Bw3P7>G~LLe~m()XgsM2Ct^dR zJn`OL{=Wl*1Fm2tW+*#`FTmWgN6HV<0Ja?*z6Z3k^pjO4q7%K>73LV|u7Fp|Gq!1t zZ~hW`n7^kZ-?4~ZL9J5;CCPkGzXK>4^Q432{Um?ke}sYb2HzZCPi7wwwKpU8nc0Ct zU)$h#(WGo^{$za^)?e2`Yti4($<%KYpHvEsL!zXQ+ltFeTmu7FLwA_}V1iQu4u(^T zI(kNZo;rn{rT$Y@);5wa;kP;M#W#v8S4^}QmY*oivpowKg2{+hF&<;KWe{m>`ADl^Ya=*jctVzm-f>y;e7sPedOE zgYJo5E_9W(g{XjnZi-lmT}TzWtM8`&8h4dgAeoNUWf}$YLN|E=axagN8|Zl?latel zG{-+9w#h%Mx~XnUL)cxEkj~fVhBvXkG_BWd(F{_pm6G@;Bn8btnlL9_=JFq<{mRGM zN*&kSf_GlvDsxJlh@C)Zz*&Eh_!oAa948$l{ejoy4)|XJHKS3eFWr~v&eenru)wVh z&U79xcR4CC6)=0M%>N3V4y|DR0CiA_*C2~XoGJ$2@?lAZ{I>d@R?ws>!)5a&KV^g_ zQ=h00Q+HJqE1b&t@&vLU`UIw!llc$9XP)=2sUBHi68)TM#`x*CtV;+XDOvtPJq$-C;S6yR65>B4jipZ{t0d9V{!)>O1=XtrDE5g!3|#}$gHz~B z35)Fy2WEfSM>QC*K^p^FJ7s#qfZ@_BxNNmJsvrkz$q>?k~B|+X7SDfg&?JgomC4iJ&zwDX<_khrP*v z6XuIwkRog{F$%83IJg46aRYgUx=-a3`+y>N9P*j1Q4F~*RD(&M3erU^B&ucTXKV%W z05TH~u;bWw{4g1yT1#Y-T0kFIBqd~zWD`NNkjXLGaLFy`dnUvmJjoAWm2_lqk3Z2D z>$L(QFUwozjrZO0ef2H#P4W%#uMDePY`V&12Phe#}zn%Ss`DS4awmm;9)m{S-TDEN$!xCWhpY9 zybziawo5lci|a~aBvvHW+|G>A}chVQ;7yT`QD?*oO3FKXl^9W=a zk3jIl=5@dNRG4mq1MD z&zRo`;npw;|eVglKP z+D28S3dmwe!#^RvkY=hqRf)O|-(@5*9cIGKK_!TXZukmdJ*R>;2(>qm){MlTL2~CR zb`lb0t3Uzz3>?_eu&;E4H2!IJ9ovI-FvZLub}QSQjbviz$ssYw2KR=3)BV{F+Q}GU(+$qT2)`5RQJ36qsFQX)W1oBmV zASE3QiN!=9O&lkGQkx`4B?IA&W0~ZzbTp7^nn}J8Z7?ekmcIj4^eB6Q*+M@HO$$v3 z)d@*MXo!GbkM%)aFePw5@F4Im&@Xr>w3}(i&46j|ILPKcM8dG&pg`5Y&*Gbi_T+hT zH#EdoA=8Ln#58;gHVJhgDwrs~h5TnP$h6OZZ2T9v_iw_Kb_eADvfy4*!`ihCdxc+v z`9(`&FJ2Sq5)HA@kZ~1-PC!L{OFs{F4;_R?@~5Hu!6$*SfmMNTff1mo&!l@Wmzj5r zhq=Sf;SY<$ARU;1J%*pMA878YA#Fb&9R*p^WLTqX;_vW$93f^B81MkD5c`N4WFnP8 zQIZ1c88oZb2F`LD5+k<}<@hXo0%&WMh#>wQn9=o!FZeVdBiF>*K=StubYvI=5$1Gb zfmV4n_$L?>8Wq|dsvEi*{206dxs0Vu2bKh?f}GQ`@ys-uqCKHT^nbL0nav2ySJuk! z5C*_X-4{24#@&IeLd8k8NF0*gQngGaJ0?{?J4$1TpIS$ilTG0ntxpUB>i#(5Z^&Cq z2@CYzFC`LS_1g@;)i3M`W<%G&^zRSo518;Bw5}rHjnyX1DSSfu~>t`&VPh6Sy-T$`a*UU`^~QZzk_3 z_sUA8V}TEHn)(QDYF)_p#AndvOTiUXfRBV0kVe3Q=!IuNzPdj)3^KHdkW}WdWq2*T z5LTD^kjC!<+EznkA>{je@EEs?`J28DB-Oco#6Qz_-#f}X*PHL1?9=;y_%{Vs0S$aV zy`5PI`Ry){f;|AayAfz4+%;W+?ERTMK!%gqgr8_it|EVsUh*Q@m#j|KB-fBA)tt)w z-&ByS0~FSVkkvkqo&>(_U)XKPn&n`7;S+9xu8d@S1?bz?u|k+RC&Dy&4ro|=VG1h3 zq&6DJM`qZI=7ipa)O3G(7hMi6w7&}2?PtB4yCsR*|MXbJtj<3|T4-6g2NUbQ&|~m8xSy!TtnO^kHcq*kmw{L<)q$F%z=q|J+dBEOdSQX z?i*Q8xm3PE)d%r*d0Sb*`5G&02-P-IzuB1 z1uTCnhTzrU2^vUb;rp=!hk-1={POa3RfpKH#IVw*6->E57iSwVF^ zLGPwndIU3^8N^g&HIS-)!s+-5{wmx94M0`h0lMRHP=l9 zf_m5tG`|246;$9Y=m>6yDfny95gx*GoeVp`1bhN<5Bg8`;hDG}Xb=uqT_S-wa|!mG zsmKB`8K(D-(P;P$$D&)s8nCKl3->_*DS>R61BeDv@ie=Up2Fzl zpaX4S3fUK2klh2W2`85ex^;if$TbqOKrI;z9;#O8aeOb94$PR%n3SxHR|9g=a!f~c zCG^Nup#X`)-iqm*i|>NfB37bx1-Y;pp3r4H%UjVbY#id@^0_a-%TGkMfcs$)Xky** zsnD)-5j4OGATHDccgF`H_~=31zll8t&#RiV@+U<#wiUkyokpM0t6~+dC(Y4og@(i& z$l#^$k?c$M0cYiG%ujZzxDQ*6O8IBBf>ClbKOQ-Q*C#Jw1Na~GXqH4%VBKzm>7h%; zislQ;*>Yx#_=40)dlEZ^kIX0at5G|wLRH1)!avMYUyS>K2Vv@B z24XHR^Nz6@9QOm`#TfK&u76;qw;}YocjYbM>$m|s`b@C`x;MrNow&o|ORA58kxUd3 zx-Pv+m_z)Q%#u9CfAGyhmY{@Nf)A0_l1?O?;vQ~1`-NXfTvVbusTw2SvCZkt$WEog zI8`@P@{n)IOyr;8@zOq$b@&zV9>!1`34<8U&gX5!QF%uhg6*Z}`%IA4?TWGFPHYx^ z(mB4Ov8xKZk@!Lm5|;oCyS^XDYV1Jp3VtH(_z6Ky4+xloy_tK00vm|U76s;NuwiH( z%*0c{rLY9M4-FU}$##-vIx0q>5C@c;s{FxIZ>@R&bL!vS>*&;jS;$eLq+iT`svSd4%5*i~0USKSYIZ zAq~_Ce6RR~yUzt-9p2824D|sf_dwuz^yKP>=KJyBYJMBJN~WM9_!_RHrJ#{o1WNLd^?26B*L zY_V{N*d%Q$xhWUB$=a}Chv@o=PJX*0z;bviGoDqz!A|Dl+tp^LYY&7P=8BM zWee>dO;`B^GLw|a52&mvUb>8Eip|Acl3U83%5&r>zMnlGDAJ zwd`fM4ll$@SShthu2HZOC-H{-Am0hvM+?1CvsCGo|ArGkCX1CnRY+Cml#68p@uu8> z;ISahUBo3420zHo^0c%!w2ySoauv9~c^lBf_)6et)&$!4Ck3M=HI5pE+~rRSOVRz{SJ@)eqwo2@_=fp_IHZo2PP6A*U^oAS zxF*Y#ACkq$!W1ji_jMAZ#~3tJ*UeEsP_0(ys9&o(D1J&#;XA|*yp3-N&2&SM=3J*h zvU`>DxhvU|>{;PPJcYhvv_S|%&w?jqEBH!!0GodtfIU8vtr0ypnfZ&EOIHMrde6BL zcY>>?<6qk@TZui}dC*fg*pAP~8pGUUgS54rQGU@h(Z4W^HKrJv==W=vYPaY|nC_b9 z>lAVgz7gm@7YSbCmALUy{NX@9&lJyC|F@tsSS>gNp6~?p2L1#ZWtL+dfSp)J`k%a+ z!YVsLsKjMVi_qlYCx0tXl!K~xRkpOOYFX1#wzxy_)8dn5FP&^~lK2)U$sXia$}Cr^ z2k5pM_8C7K?->`F*s!_g3!qY-R*Fo; zS%PIt6O_2BgL0GnvUHL3seH4#icYC*t*AlXN7@Pn?9E_~d#+7Z_N(M->9z7G+kuKE zW#>yQ<+ogSg11>C&k3jT>GDpxY}4(qp~l9#zqA$lTjuo<<021-S2Hx1k3fflA2S0* zfLf5qU!hwBU-&k81XpKgyrZd07Zi|rvTv#z>TjwxN~7Ya;;OV#C#o&Mki)FOQ(KPNAc zTUCT^yQxO__wX`Pea$`DBS|?`8?ViVT$M_<=NISvl`|oyZO+#0M%i<7$O2!<9$SGk z&yyCMDUOo<(ats}L=;8Lh)9Smi{@iD$6t(l9$jt@*M5*UksDS0)YD}d!fWpnTWZzl))&c@YEXdXK* z0x{Lp9#SvUzS4`@%Ca=Rn=jf~-PWqKSAimTYi`q`>W->RESaoODMu)3s`}{#3l-BS zen3L6xUDh%=(jN|qK+7+QjTC#`-9^41();I=Eh_r=|_JT{l1v~Df>X~_FTw}7E4^f z7NK%g3A%y0wR)HNM@+rSbt>T;gqI<_JEA7|Z`5;u!^_MNRbV9+%tPg4Z z(;w$lDPJ7iij9<EJ!x;!{>z+^>&ly)>&pseMd$0vd-Id*45()86uC7%zw-RJdXY23KInD& zw#H%Rg0LuUZE`Jp&i~nUzN~$2??3lbYW=>Ed7~u4C*jXPFVbl0gYvxoU|7HK#u1Mq z{1M5~JK}aF+>O~|GzOy@J4D@DwNV~P zwiJ0bf*lz8>B=l(G75e-PVJX@pzw-a?f;9l;xAR>EvKS0V){lmjyz($Zyg_n#2$>@ z8W~|+qnskyfsJAj&)|}j%gGSs_?~tmV^Hq8Vs8cMYUn>L zq{t5$SBDRb_&0J*R9@8Ws0UF)BKw-XnhUZhYBHRS*M$&QVey*mf76Df&Cl$YL*x$5 z?NKnk{BLh-CIIOV6EX;GPs&y8%%)0j6T+*kt8%-_tjfdUmPB{4wl`)fcp#!gg}Qlj zD#jK}&zhJqCUaxXt-^NY3mi&M!_X*9uW}idgpD@`%{440%K}UP@X3}`!*`{Inu6?M zPJ4~E8-;jw9#G(osg={SGV$y&IX4RuD!zHX1Wz;3yaf4;-<5sT*N$>0+^O27>bNSg zmAA&(qqjyd=3V-ZipNApG)g?qwDg2ZSLE->X_<37Z+c04#|>|<&?IrH?3uo$Wr%f7 z#9xs^BWp&Uh`b)z%W5#)Q_qoACB5RzP*10<_Xr17|5+@imYVL8J;+pkFN+3eI3r7E7Szf6 zoLiQEr=-M|?KxOdYs4<=3(GlUminZuf~<`da_RmA$FAZ} zId9Wb|3suaGw0^4&TCS1yCTn%A8f^xux>sAIgag;%+p*lSB}~hv#HXCN-v@pM>Mf0 z!zLQ!>Sa_HWFY^T8R)-k-&C@*uy?_@f^o(5Y}4EozFl-SdO|TvKhY$Hm0HZ!hvDtQ zUxag(EaMt=hV&&d8i`?Ucy3k@MaQz=rq%j$J#9{AlbmDuYfD$VQi7GZVL}6#SboP_ zQ;!v+jISa$#!iUum7q&F7dtI#P5{&mx9Ix2yE1(%R@p)=lP(CaK|`>M!an zyeD=H8N7>ai%P~6^)8xOve@SEdoDRh#nj<(>&04Q?JsMDU+ySVkwgn+~{@LCzrJ^`KS0vhuGoNz87%ZC52!+h zedd&KV+0oA3lCY;mg%M9k}IMSw6M!NOmAifXw{tjE&jb@?I46u}$}p ztW~UqO(R=MBjg*D545z&7v3atU{rF{u!tTO&e&BSsoku6Pjx~TunR&V-*4yj^1_mW zVrj{xvVWZG{X@Ya7lzf5&(YywsTQv_BjT?J!g|{>DD0;$S~(C-up5wB>>po_eOC#c z*D{MqFHAq3aVoQY_N=@*CAFQu12ed#NGIa11j6#lVVX(C+2Kzj8%Cdqz8XbEj57B& zF3~$Qx$*6|^Z_P*T-y_Lc-a zTu)+^a)f@jDb^Bh9d2y_gBp9-Z{thtX9Z|A#BF3LyVL){IkkLo(Vje8&W7B&`E3i` z#mmYEIeWwEEl2L)AE@@SWJQ_Mu0Ex^Wn63S6230H#7vl)>aS_*YTfELas$zgUmeQ! z-ElRyy)FGyJhpgZ=|FoIuPs=eYlgLx#i$k9$6C2=uy(onzETajpXo9=m4Vemy7Etf zedTbsvnxw`7PQNa$a$UfD(`aP|8aEI;Z0=U8_#5B;?}gOySvdADDGO^VR2_!92R#L zcXwZWad!%(KwIkWO`A%R#xs+V-}(L?p8bR6SvJkwx%b?2-uLrP)0~DB^a+ml91SKA z4v~&fJajs!->UJVR?+gIDYR*D3*QiIUqTP!HVPIg@>OMS{_f3gn_Qne%bX_4mrEOk zJ8&(M!&Hzjtb@9=6uaX zsB%{wayjUns|;0^D2~Y1NRlMorInIhLIECyaOiNGu6<6MN3%)2v%#w=R{PwPMyz0C z_&a5x)J#Y_NHBQM<_{l0oX}sqMN$(}&Y-h|5jMLkbv|pQB8`~OA)d$t@sXx^4 zw6Q~Ls_{0F#EIa|mK;?kx$X2A=Naym<(1;4b0DHRG#Y8FipTO}tYhlO)_VVDon z>`+;E8g6Q9n#XD;wDi<EG(O&oH0*5`6 z+-Xg-oU#0CFo1mk#3uLRcBaIT8CT!=~z%T_u)aNg~rc3H1#bV+s!5HH6o zkDbB0(ZhT<5i1Il?2v^xO;YAM zc{xQp&3Ag_RHIzz@|VkFr_<6QqB=f_jX)9^XKE5@0GHlD`%UoVHN(V9Mfy`i>0(;X zEP)Aw9Q_X;E_g0T;^)Eqr2_4M^rM&B6HWbe1uZGf*ENBfxlKKqc4^ct-L-S{W&_7E z8r=6oIh(LU0!F-F)~s0Wd{$*uJ$G?+ZgR?0M9U9LXG(m;2Ekn3bgThX{WQ3-6WB7S z-UhHsVZ!Uq1kfE|lKP1HM)jcMSU2eNx#Gn}1Y{(WQ@J8hj!QR) zxB?oVfk9F;q%!6qo=7a@ge!qbyp>x9tmZ&u9ON1PguZ+-n*^!QIpBPC0t&1vP=Uqt zHR$TblNW5CEzL0LdT4m0@2MN5MYO0++3o=j-6NJvdpUKPBg6iJQ|YXDsbs%YA@8o} zt5_iSksXn26M-upk3cP;Yq$t%|7dW$6o9+7h*bdHx*u=^o^xlS|G# zn7oQE=A95c5nY%3lE%pf${1-c=_bhw@m0|R;RnGM!3@C|!Dzv5P?=8>-WROpJMn&D z^UznobpOqYA^ma#u*zStG`)a21ikGva*utN^^EzEF}MAHsX9xvU9{tL*V`wUysVe( z#pFcFLEC@|y9qhK*~FHEgK7}-H}HkevVVa(X#sj2*!t7()i};u&b!L<=2!Fk3X(wo zk}4b}Y7s?dqyN&Yon6!b`IxZ{yP@SyC5iG>d&$Bu$IOE>7`*23z= zZ67T+%?dNu9AfTmjyHEUSD4>h9$NneLPHbrkE5K%5INR?cZa`8ut|_ANE37wwD4|X zS={5ubx5xE<1B~%>T7HvZ<3%NsE5CZog{Z9>m(84ESQnTz?5_qZ!WF@Pv~-thh0W1 zVD4YUzNR05PC{khYP}4rAlRI5Lcsmn$+E-x(UxvMKr|6Nay1zaGe0BDS6(>u!08@H z4TPMBD)24N12-oIZlN)VjoXUu!e-*Pc~OFkpvXuPy%WwCdH~1pDLjQQ+$coLrUE&= z73Lg)z??nInmCo9sE7pS#2Ii-#emkV1$g0~=>+CF>w;_p#XvQ1fS8nizR~k!5frCfAKu|-ItH+cq{nd_^tdR{xQCtXMuTeI6f05uC9=Av63$nOoPwH@}>Mn(BbvOQcx8n zlNO*N>;xzQUP6k%b5sI}(Y28I{tbw?Z>Vk#9?a;@*-_gmOLxl>P>Ia3?6K^!_Oc%) z5=n1J1XxJd(GpNE6)|%;y4^Tb)%U0Y2Rn3?MGn!oFvOgGyGahP9-Akakfp?zE*c@Hsr4C zwbs}k5|xfhNS#dsB7GRrh`ix4XcIn@U&cSrAICSsv%Jd>7N`XE;A(n{E(aAG4}XqM zha8K8km6AQGv5kU2rS)r$kgZs{l^7Z8Yp0%;Dhl>NcQf5y~QfwN&BM8I=F^<0)e(a%pW^Z3Lx2^q1V#y=vrnB{8uti+PHEDqJLu*_!MB3%*F0u?;!2> zJxm*4fcH-dj!-oy4!Xil)C>6G8-ZPFyaIOavB*N?5i%U+k&n?n*fB_o7!C~X zsodwF&PO;Q>?HWEo)SNaQeqo%k?7zEqSrA0usb*b@LjIt zt_Htl0Qwnx-!KnE@;G^%`QV`b!9HaFgL9#n?ax6FE9CHsK+!Z6lEZI+Kdlm7iErXb z_}BUIf`;TM4!rnDw}JqFHOt~+-#eEuUG4yTZL4Xp0~I+*SaSspWCF1*Td$f2Zu z!TQUmXF;C(NzQn9yG1}0-UAGV3Dhvh3Nn`X)BedmlGs9QC*~5-M7zDn?y&y{PXKO+ zR0BN<{N%;RFwg~E$3_8lqK$Wox0FZW0$ha!qI0;{Ak}#k>jlLA^_*LrrJOkUBo{yl za0i&`6`X6x4eok$A(n-YfIj|IAteyPs=bd7gcOnjpo`Z)&d@jqOOW1U8s+zd+YV3-fzMXRtmu)kly10Y*u2X6_U1p0$2q!(vA^O3skh=XUK zB?HLGgcG5H8T}*juwxWVCPmXhMm9+rA>~f zK)DDa!^uhDL;phNkZ}&m!GT@%5|BvZIK$us_kqlci`XT6Hg7#|0lb&#;3d?8#wHw% z<(eQl<2QJOkAjbU03haTPOy33VO@| zdXe4edF~ddDZaDk!0k&hkAS!JjlK>}_5dJY6|omNQQ#1t3f{fT=oj=Y`o9c@Z=kzz z2fB44TS+I;1liA_21UUhsuxYsr(s@y3OxSL;AuYK zoLUqDmy4t8rfb`Z1+2AIu1gv28oGZ|{F1HcoAW2`g^zq3Gc?sNFbJ;9Z`78F&J zVNQPp5|dKUnV{VJhcg^9w!hGaXlMEiHHexCs+7(^A@BgQ$Tc|GceDE-Gu)lK8{Yd% zkXvw@yAmAknc(>!hFkz8LkDC4#~bRXhoIaL)BCBOR2OiTFM$;KQ&cQum862}`4gxu zCvkcsTBv=Np})~mbQfB}Rlshwlk*ic2nQe^Xbdxv@dF0JRJxoh0zJr0&`%_TPk1H* z(|U9|b_1)&O0oGsQSJoER`0-Nyaqn~7I0|iLiN@i{OpIoFZ_dgOP!^%zJo~w zQWj9*bOfJvCKJs$j6CD|fe#Z$vmuAX8=RRxp!T^2T=|W#W;*|W8WKrw1}>9OaX(%*Zz_K)e+IviN8oPwY&d&_pvw3YSlF{TsgQT>0o2(MkSLK0?(R9D z`YD7|i8!VacC!c6PWV)R(#x1j>@pxxOaX<{3(!!!hJ=xq3IA4S1Lf*=jbQm2n2c34W0c18=(wXbN{Aji3lf zFOwi^=CvaWbV<{wdqA?tqqi~pAy+J2~ zcH#%8KfFakHj#M*esLDmkH^^Ga1WcrxeV&m3y?^1igOP<)m%``&f-jf9zj8EnuD}}`r{@j z-NbPA2Xn)bR`|^8neXrh{-&OQj%NWCLj49ksl@RObU(?CIEo9o4$tZJ;23RSA95~% zU%v@Xp&*#*-2r{fB*^?o;P&Ts;N~G>@QOWygqN<6R4|1-1mF2#P@K7OvSHHv3t0}& zu@5L?W`Hh*hnip)VY&IB@!AIG^;#$PCEb8N;MP2G1qX>X$N4K=GB#u4f0bW~g%>!`uHC zvjuiRGt`fBAjiEsoVDAKOvC^>%LVZLyo7Iv0)KCh|4(JP3v1R6XT1zK7dwD@zZkND zO5n3%kQlR(3ug#d3~usfxWf!Yp1|Fq8)R%4Aot}GYuav}crO^HGE+nadv0WG0KrWO;}jW~eiPmr@DYJa4!&!5f;4m2)Q{!y!ee5mZonA*JOdxXY!;N66Wk z58u`}PBqj%XOQ)vODc!#pKYKdT+5xu?F`TBG#3R9#Z5Rf{{f$N1#^mi0#5yGsy}Fx zIH34af)n5#`H19Dd2|3&Aip@@LG$edljf1&!H9%vWE7;*nBniv;I?z`aeE+o=r!cA zF7PJag_EWORP43PTObZN12?22tomh~L*M|HLo(NH(0JMLdAtDLEzmwJz}vuqFb$mw zRHt#kh4>76&sT6+-==Ml*3kreKbM{fN|#Td;9JAqft4*|JYZ+%f*S58lg%ig%8Q4J z#s@jW4hHvlBG7Q^U@||G?a3};N+DN+3#+6GcJkqDMi1m@!8< zuesZ?6xc%-V#iRR^a8c!ICm~6PXm#m92K1OdpN-AU=Zdb@GnL~)pj1TYK)*<%cm-- zRrEnd!~6pY4Sg9qy`7Q6PxK1vu2b|`*m>VmYHA!^$ZUguJ00{f8OT?tXy*VeM+Uhx zUeJTs&zZsX#u3=bk3+V^dvqmtEu<+$!K%7|q(H({2CT7SW)*XsZ2_g=9jHoYLv{2F z6ryS1G4BgH(#fDOA41=U|MNgZ#?`^THw4~6jNM67j(*_4Uqh!sy}?6bIAx3gs*u@q zXNn@z$W|aISx6|@83vxr09YTXoOzHhI1qXxS@4YdLQc>qU`e>Z+uF*V40$&w*9#H@ zqnUErgGIT)xI5p#FXsQiUvsy>ni&FX=m5J4GV5l7zaxq}54EBVpi3vHPEh}qlh;T; z$0I776>}eB*Fa5?&O3ruFpJ45TdHla?T&2*@s&Ew*@~w9PnD0)=6-~H$`|ZjY#3Ch z5BW>b^|a8QYF$bID+D{j8;S4dwy`r9AE5Qzf?8!ZZC$1e6XwpTbq_CQ(eJWIwyuiF+ImKh#d+8pnY zqu6(@2eXrWN(>>Fk)w$Y_OAbPR8Yf_3;Y?7FFOrg4&?tD`#+9!_BD1(z!i~#Z2nb2 zq39f>84ST1m=%s$j;ZVs-booSTUBqAyQL@ik=#G&T>CEbZ^JahO+!{YqZ_2d^j-B; z+9}#I?RnPjv;f^LT&{>x?QnhXy3_5hYk=Z4%2vxn?#>t&6%W?E+wIrL#e0pZoa{4xk?qKYa#O|ATrc^I^_DvS!7FgY+O85Hd>408esH=b9)r%JlHr^f z%mhFx%|J-`T8TiH#I{yHscC%8&9au_)ny-QXE(3ay6cj34fK~Qqc6kxDPs?cwxlb^Yt@~5AA<(T(NA zTwC4Tq3NO~TQ|%y-CEf`w)sv2S--F`qqU#8KYfGS1#<@u^$sQOw!^hh`9|(4>mvCg z9L;YPM0pq4EcCD`UhP>uzOmiDORDk=^jt5$%2{feY69ZD=z-f{ zUpL=}9udww$#UKR>>s><-&HtF)Ir=ybQ&k=G;670vmxIkw#_4@Q2jq~RNF_}dfPH= zmB89KWgTvLWW;n!HH+2%Htp42uy&=xxr=c%FIZp~4^bX>YjsO-Zjs)X805Jw``p*L zhd6!X{BG-A6HpIaSv*jFUbKxo*;rN*Q#zq(Bbm$JBWl8SQ#)-Z2@mv=+{b;8yGYp& z@=audbfL54lXRSPzQ~E!fxD4?2i5gs$l$DkWY0H*$-3C;PyC?8&=H`K!SqwxGUFy4 zSNlWPW;kq8f#UI->67Jx)nt80ykMjGU!-E^!LF}dfS8H?V0ApD^KmbKZ=1^?{!lBU zIp6fgbOw7NyD!mlG7Y!X1$A@VvS@+igiOvGOdd1l8Zzv9{Ij#hbBTMF{4AeA+psx; z-V&i4mxqb(V=oy`dJac~*Yo;dgP57NtH$TR>y1Tr3arBa(ARc}zP4pSTXXwS%TRl| zHKsjCbG+f2CebjfU` z7iV8(frvyRX%nNu9ip$2pMqwVu@LPm%mbN!`74B}$TCxb2GLwEu~Y_=1e2W*l3py@BOnQX_d%X3}RTq)UIfl5rMTm$w5ckz4fQY{Dr2igSDM%75S zW0JAd`F5F3WQugWf!PmYAJ(qW@eC@9&2|!8kwYMJE{ZwFxq?#oZ-H7eP7y2D3lg}K zfxaY=)XTq1TX`dxSX+)c!(PW($@_sWB!=non`da<%sXrs%-yxK8yoA-HI}v|n*yx& zOeH#87ib; zJh1j&L*iL?+J|lD$rO{7M%V)eaZX^vB?ZoV-4oqT$dp(R=LDW3U7&a`PJq)WmgYf% zHw6{-OZqn1&;F;i*!;`9#?}G)Kzzp@o1f*Ld4hE(Ie;?|`@tPRrPvk`(a3843PC46 z#%}}i?-!`ko**aDT;_^RY7T()lVeJ>MA-xEmBv4{3v}l!gD4R*ANtw8EKUyx|E?K* zAS@D+{9N$3380&HRRn3_uKx0)*m_Ps+$tU9^1;PZ9?Lreg#T~6?~?hFUOXrEFEWal zNO}R?@iM!S`p@PAtm)ad-qb9P4T0oON1FAVCB~6}{^aSouN{=_Z(;y=M7qOGdm`09 zOtS^pdJ$XUuHDrU;21;gqlS>>HVJW)PJoouhsa9wGu9C(z4LL0xR2Z<87iF1zkt1D z{g{E+Xz6FUw=jg02kCXEkSY9iKzY4@qSRbRCU=s!LMjm5#)6QaPzB#ZwsSFHb9s>C z?dO43I>(U?uAe`tu8`l@4$hi(<|9;!70@}Y1P^vU)CUc)n!1G+g2@c!h=Giv^7$jp)6g1pAxwivb=b z{C+BrV&BjtTg{b$hwmJhfvLh_I+BT@-5ife7wDcR0UP@`vB$9vZs|UB1nmY{=8qi& z?ZVj%sno4>fAHKyflo;W6N?_uRggP)P>nsd3y1^u{r1PiByt;Jw%;HZ(qEWfFo~Om z-RHUSy#>R?w`CjT{bW0(U8TFkR|KB?a{g_>MgD&LHl&~RVEpJRIPw3+x^lVznJSI^ zN!=fA~l2JQ#$C~9fp40MxZ~P1DckD^mP!_8P)-;zJ1Il>H_@v zE9wqsG5l;rjzff*SPuNHY`Bw{s8%AG=mvk510EKd?eM?84QCwayY~PQbqfY=CSiB+ zCSfbzOCS*p>sdmAL)bBF`v3CB~&3cN*6fPR}3yPCsA263(d+j9fwZ=`^0gbCOdw#~7e z?B-BWPaG3SS7NdKu051I2u!I|NWC*sIQ^B;AnEvZfrmhkokm$+yrf0?O1we1UYH?t z5yawt;C1YV#^Xu+p1cCiDYC-uOWgz4@Ofqc6-yo>wm9Oz`xx$6MKq8}aO*uv-)4L` zE$mSSg$lnAIvIS(iu8nz{#vR6I%sNg3NeznZl7XP+9x>vrJp;T?UQU;Vlkx!n&viY zBQWn|EQ8RHXFUOHN5e2Z9tqX%H3=!I5Zo4w5g(Pc$c~EF^FQFlko>&~J%{WAy5cva z0D4NE$PKEWL&4;OlKLQb7RQB|24u8+NGmq87h!^dL3d_6+(IK60=k^xRA(TBmH?@9 zEZnwTsTtsn9B999n*nV6lSIq^Qs_V}*~PZrGSS*#-$!PUt>hwbC|{r=pex4VctTdw zLU?mK@p(dbVVK|`e-wWS|D1ppT?R}lM|4HtElA|=#l5ioXm3;p-p6|A^<}fiXf3l4 zk}WGZUE%HA&)nngh6HmZl1$&DHn9$*9a+g4%64PAPzNC0{v3FHYRG?y3-$^27W)_C z05Qvc+P2p=&i33IZp#Bb;U7#rmFB2(=z(Co58T@;AivzgZs*R%&R|w>hdu)LO*0MG8ZO<-Fl|DQMI50w2*zVG1t;`r}9OWpGAe*a4tX z&W0{|1Y|o#z+`TZ1Euv2U!n)-BIeur!aqv8zdhEr&HAskqbCsx{STUB-; z`3W59m5x5tSMs2Jo83Tegd6=0`WC!r{owRCz{!BFSqk%nCfN1pdVC_j2qw29Py(IH z+bgUT%@wYIPHnkBB>bB{nD>kKlb^-c@b=9VvC8ew>^n~Kl9cJTZC631M(2(6gw6?WpANZ zbd0e=r}hn`YOaAdr3dxX9%%ElpCw|*9Ab<8h;^OijdeC*CJRUf`Q2``=2_Bgb4Yi} zLhiGVwe7WMJN|&qvW(sA_(Y7R_91KVr}!##FVJ|o+-`Uyuw2~44ZLgEQJe!lstJMv zqJPC7gf@HtnuK1!(}Xj{XMjGl1M%lB!v_oA3e-F+x&`RTx45bJVqP2$Bm%YO-nA#1gtqZ^SL-O#0OLQ#N)uz9LT)5eAob&h#e*0@ zEn-~Q6?A9vnZ2_km;KF^pci3hR6_SA5uYJ?BewCIxeuXo-Gu)uTqSjq`HSi>Pn6G_ zCHg2CBIzdN<9~4du^{0elAWR&d^(E4%!l*U<8xKWY+xh)!njy1B=g>JBv5s% z2?(Iz6t<6mypSeqjw6S?&8)VsH;y#yGPl~}sbp%sO=VcFn`;PjQ>aAZy*bMeYLr^9lfN87;w^Y_K3dLNH`~S%QB*YaenX-99S%EH zCKb$83olDG!VcV?u;UisD`i2-80kQCKYa^9B>kMFN`J8l>xF*B7mJR{rpvd8Pvhs1 z>qs$X5{we>6_%o7n6>n8jtG44E~t$2pW}ypkweXWB{1;+KpMbzB(hItM!~!!i_>6_ zFw&4^a>xFFs&Wjsy6OX4J~sE!eYG$^BfD&MZaQ!ud(6&9$KfX#zSU-GA#S1~$uap7$vaHVeB%TQ ztxkWr{;5(brV8VDD}^Bn1bPeCBmn=y#aId6TR1?Z=FQ;7A=PLq|F>X};3yEn?f`*d z06Ge2oGTFr^yqzA3!L}hB(>kRqPC0n7sMUnmMzYxZJE%N+4|7ZOfjUo{gS%8W~_Qt zdouhqR@)-&+-9HlNU9%xo<9RS%*e^(j(@P;@-pZ7ig}{1{E@;?={u)Qs&y(4r*4v~ zqLJbS;#s0!!Wdy5pW-2cBH;z$Q2sJ}81JNDrtmx8fGyy9KsRweo+nttAI|A*e`A?L zUPMNMKJynbTOX}SY943Sac2vb(APC+>6?<+Mu&AU=Pos0msNGAv~RTou}OAd_|Ef9xtfp_ZPkq`AKr5Bjx=RCdE&Mm;A28 zSyCh&FZYq}kxIn3`Ei&G`pZt(8dS-4C;x-|jVbJ92Vxmy$Tm_o8FLkx&OA4^HN3C3 zHYHi>=t^R~KCr2$I=lI@(Zz9>SwYF|m(7PweJv&;ij#_!pq=4+uVb!K10WGbjMfNq zMSi@Q><1#&-b7y!?RGom{oBn`mdWc2L`*-ADBp|T$*#Yoc|0DTE*z>bI~|kq1;cR+ zT}DHyt8p06nc(ivdx35yX0<-9y;EPHzYk=me&!X;>Gk8)xoszGZ`p-xm|bhwZMbcY zvJ0p_>}ZyC93)yu9{tXdY5zrRVrOClup^uY)HqNQy+Eu|spkeCscVSn0lJa5MV6^L z?2+ox;LH()00(V5zf874@m%UJ%E0$9)2%nnar84$jdP}Qs^F>pTl3NS9<7V0wZaR0 z4w58bQh4th`Q17){)E^r!YNuGAGkwtuoE$rC@NaiDp0GS5<%lQ#67^^P zh5N=W@)5d79^BhyFrCI-_9^V~K^Yrg)rDbP0A(H|(`R~W zL0Qo==sF_5bzc3whC#Z~)Jg$QtmFJ{$D8U~yD{!A2?1?>RnB@|2(lRKAoKUQ>ng$(gUN+#8GY8VjxI&Uqpqx{eWdBGIfZT&43f(Qx#sOP z!s3jI<86Z+(4R1lt=V62yF}Bnll2zPMi*N%wd>l|^lJH6uWnxL^3y=@xT?$u?j9Ex zjpQb zH}dK~Ru|RUnijMIbFgVw+kN{+{!$g|JKt}V>um94;R~1HVWX1gCch88qznh;heL7M z+r_6ucGGTA@2{$_8KRDE@@|^al&N{$`n$b@H5+m%UN{cn-&90Md@Lt&o>#tTKeCf6 z6Kzl&k|*GlX>6UYXidTJVy7}?*^!byrQ0gc)ca{VYV_)^kkUBaF;SN0=M%cl|AK0% zVvVaRSe_tGDUV+g^4>GUb%*B-KZVaYS$}(=I={Sg#f@6LDNDnu@6|r8{h|pnhcd%a ze|(VOkzDJU6lRRw88biVqw9RxHOXMvMVXUG&)m{uwTFw`bFXHf%qq>={##yjs$yu3 zs)nx0t@+$E)Z!4t`aX!-5sCQi1OMeT|5cIMu}`B!L28cz)oS-j?{%I6NsMJ>&EldN z#e%A(>fx==wPV`)w3M}uGG#H}MU>0mK1j&%D07@Lz9iBmu)yQE%N?gW*<(>Cwu5MG z=~}Tfx8%q0Z%OIQSLD~#g8Yibwb?cMD!G+R-NE*r=zG<*z?ETm=(nJ};H}|4QCOr; zNU?8>XC(AjGu>_~TG+FiWBH3R6MqiRPpK%WH)`^l6`Fj_;P&bCH8JBB7Wg$vmVBg( zu-moHRN}&@*pNejdAhE8ATe>Cnz&6Z70rcney9Dc%NUX2_2WfOTcN$|d6l5v-aOoV z39-lny{87g3d|2!7{m+ni5L+6I5atw4EZC->=mMThFA?<>dq9t&x!cml$TZ*U6NSw zU-iVgX^jEeMC&*$ZZIbDm7RrIWMs_0zdTJ53Ur57?h@S2_W>gY#>o=zCrIluFPB=6W!5zj*PA&H>@ zL1MSfh)H8A)c#oeHSvowed71=S<7?#6?sc!_b z4e8n0WrZtCv5HqUuFb2gkpkSy7LlEhnKZJaFcs@OE%AFqO7N9HGB7S^NWcq^j>1Ai z@AAKYjs72_pO^1e7QQoieV4XW zkl#deLP~V?~lcuYd1IRq4&N@zsvNB8YC9^ zh9q3-?%d~IkIkJr$1e%n<(KIpR|Uya`J0)=R+BciEt=HU+iP4I%4PjZ~bHX|XC|$m=)0<0+cVqc58n(NgZeXsME9^ZO8x;La==|D$Z^k3xuLB0W(Q}-;C z{+F666nq=>cE)Su-ONvhjI+N#mh7r>Z3x!xB((yK%W^+$RCMQiJs)%r?DQ*XRm#s! zpE`a|Y>jC0x+xfM4sD=H0)Lle-2ePn`to1n3hm|cx?38DHWDb4MQE1$_n5I=e)n|m zo!m>`B|ITKxVuNbLM{MRfOUoOi`J+9W?s+FEid*xJ@xF^tBIe6|5{kQx~5Un%lw4v zq^R_`80ZmGlbqGDOOh?&uOv~YD=CX&^8-oOpF#=g*^*zmp>S9B%kL=}Lw}tvyj4Xs zyl=MZewyQ`FahGZHKx3aOP@>qy7zPHwV>0w=rX_aE>}gMtFwJD#A_$3@e<;D{=4HZ zPrtCes`}{uYe#YK>huP#)9G`!Vc!TzTT{gf$7#$+J5z>g1X*F!Y;8FVQbs zzeb$pX3zo zndA(XOPw;4%`Yn~+1Ae=UyXb^?CHYTo~}ZPyf!lqYAxF3CCM+s`r$R&z<^9 z{iEpDq}+dtzLtHc@Tl5V`&e_@+=O*;?-KPswO`+5{o8x_cW#fN0#e=F<@rJ@eiAwD z@P~xb%O#_Jcz(G3;_TD4FD`xLXI(Ds-1x=R84*i5DQi@7J*WGR3>_ccD``x3w%^u% zfn8%`$NBb_Y_@lATvO_r-y@fsx2)iPaaGy4ireK&%f6S_)&;fqLb^JS2>y|{q+3d# zExi|aNsBKH(z(5nZGhgy0^SX-n}gEtt!pbdm|6XC{p*J>?!897?8-h=zOH$^%?15a zJj-dk+g6{{zyl$xBe!(Wc5~_bt@nj44RQba&JvUwuGG9NT%Ysh*RU*UuCeGzMPkji z+EsNi>Zz@RtWS9(J$pr0cDmDZbl-?Re|KG(APOn;IIS2Vpf~|kXX3e8*7mDrRMGtG z9~q}U&3vEsXGb4!@d9Mf4R?w&YL2O zJpH9Bk*PLX|GBND^?UQs2DajU;hC(X>F?hD@#@{%1>b(>_pbkDw)5|KybHM$^&)0W zj4+on9pMj~)^5+j%SZm~K*e%rDND{U77g7iP^Yd)s(kH^nf*kZDM; zPGo>6$gG# zdOz~b?GI-&$wGbY+Sa><1hdAJZ}PHlL^r#rLw}}VeO!hNN(&e`qU+u00K70kQ@a=&^{n`W8 zMf@A@+rcM(VZ>O!d_^`bYF=7YoKgMG_qF*pd8@g@xIIBcf_wnJ2 zQmT6;40|@{bXJA%DNd9VO6@?qB>#i_NvcivkE+am8RE!V!wR;vAl?G zdP*lc=LI#y{7SSZX2leRWCeT*c^*3=Y zMWxde@N zG|k&8Eu_L*Bg^O?3qAzBE`7^E^nHH`W@}R9YTe^sHcOVS4e-@~|pZ<)G5w!hU%ja-Za-l#H)GVVb}r-N!^s zOFow>?vxfUj1)y~js2D|C!UFP4f645lQ~!9^j}C-s9-i>g!DhLnGMX6x`LnHG7P+IhnFGK2Ktby9Et=Jm7h^ zUGYOgjgb9b;T`E!>9$tU7jv^tZ(dV%K3|b}=(bDn?iu+pgOG2>&;#qNvQ9q~CJ*Ue1|IY_3#4IN9a z{Z9DBes9l6`uRQYX8Gm1E=^?XFQb*n28I|dxTh3&pA6)L7sUFd{F6GZGrz;H2!DUd z^%zj1V);AqBIaLX$HutI$3^nrrp$tjj2~&aMCoDmPjheHBUe0dOxT==eUa9Px1kFH zDc_skh^LEdjniw{ez6AINGxc5S$RD-Afxg9=+}S0`TcoZ_T=(bO`dfOY7~!9yj6Zs zZS=_SzT|g0@K|U-^s2_2aCLhC=T&fv4hF6X0Nu@b;8o+zauh- zq@VbllHMWnNAB&)^{qRIMLd-g-(!d`7O*++eDKAvvWPE{>!P|uyF_=6ED22t6nf># z#~?|jAUT;U&rq3u(U%;yfA8D zNPj=ZEkia2pUI>-a)C&fY?bIcsr#3ybC`_hU;g=Q`?Bu)(cC4~bJ{DB{!TWZ&tbyY z>bS62Y4pQLX+&8_PJrC+h_BqQ#K*&MbRGiUUhKmHCwYS3a#q+9+!I z(Dqe7-qc_{=Ez396{zo^2-i4O{O4GgXgqAU-+tGBB=3PZzIrK?NdlpZRbQ_ip5uKBGyXgq0NVtoR6JI&nN5|#VSfM21-VQg5J z@aoX1fit|s&RXG6#D_#IYYo}j!E<%lwa_(MC2>MT+c+N9+BT!QvSv=ji<0@po~1J@ zQ|l)-OZ2_Wn~1l}RV+rLQg!xW1B*f@L~tWJgt?bvh(5PS&gdtA;9;(2r5rbj^Vtz#`L;ZaDs+ICCiiIu< zTrWB^Qa3>sXS%hq#jifSI;e6^DPC+Ud0myQPHZz7=Ghie1)OepAMsr0gI-$yAweBO zio#qXeuNGVU_E9zmGKca)85x|+(5NFsXJYvFFgRONnYqyus;8C0l(}}!*CZ)^Hrkd?EPGaX9xgW^?^yAc~%3~!7g*gSk;kNm- zwqMh5?QGLvqMq4+2J($!R{6`*C*Vp*O}HRZ9G({B?(<5OFZsqzBlt$QwsGonm6wa< zg;NX8=l{-|kbkmpb?L_{LQU%fs3rUd@_DYczKbKeCe|j?N!En+=pMmg9@X;CqD=mK zw1%M^uN`ZFO~chaYPM(wXpX3Z>z~(uZdA2=)Gjv#J0@`x`5nby6=&W4^YIMe2dV>D z|4TlU>tFKm!V>(Fqa z(b}RiE+Ka#%Xp;ln)JMKi2F|O9=;=eZ~1)nn&9r@GDTi56rdtUN0YHFM6;rPY}Kr? z%O&;2vf?|%M47Q#qBb{sx4*J~MEUYOw++5igJ(rtic&{bh5Lk_39xub6&v{lko)i( z+&LRKl`xaaBuAJd+e>xJ;9Yaqk1-rDMO#+e{+F{X1x-JKuH{XZ{C4WAy5c(8HO^&` z;+NQoKaN{YU9qMZI_pkrv$fT2Jz9#J;+h`8uLVt$H5*#Sw_VmAZl7(JqNUldgK_DSY(?SHl1Z9duTXlZJB-2AZRqi%@luyqv?N`FMI@WzW@%Evo*Qsubp zQKrl5CCh}TusEi`)@(Xz>}+V!Ry1F2Y_1Qhy-~flW?h}4VO-<9)|00G^iN(F`9ar8 z??2(xnG*FXW`9gx%Xf>e;}M)(GQ*Z@3nzkr-Hw|lwKuoEZ(60Es%}z0 zQ9oDD(U^4$YyoT}ZV~R1xjAEQUp>xxA|CTqX-;Y>CT96N&;is^Q$NV4k~ICN-qA3k zeobw8^^%(E`hPXUv^fTaErp(jDWxM^tv;Uvn?ph({G!WaEYZA(zXI=hC>0O+l}H9X zpBQWYsqd)k-JW7Hm^vG+`W4!|7NliB+b%uVu+{M1G>%xp3FO6#lBIn48aX3ZI&E;8 zs8}O?ERdlRb`E{X@y4bwu4tR7dDGapX+SgC8lg>V^Kbh@-^Y^VaOQ9^0spcvMfz0v zmq)&@ETGl@mH)Ybse#=CetGA)^cG*?##0AuYEz%~)V2c6ON|0{hf*6xOtz=k>MdO@ z;nr@TW7$H45Uvh2dj$U~q(oPQE&PxCRKYNQFMKms!ECXQv~;p&+B#WnhHzaE?M>YT zAoBG!Uoamr78%kZ=_iA81nq*4;_3KL#bHiATzh-<_qpf2!0V^iWS`DH91nq0gWxE4 zEIrrmX2~$!F}%~RY`vlrT3e|ToMp&dP9EKroM2mE&9HX1a?J;f<>p0XKh7*{H*W(! zP;gu@RZzxv7d+$h@SEVQ`-Xf)p0IZ*1u3-~EKf`yjhjpdO-~IM+QUum_DY8@oeC+h z9HbKaD(EUbuC%+paMuAHBGu=W?D)M~&p>;;sB=Lb>?4SSh(B36Twx-{m2YBO6$Y2WC#>j&!I=_Te=`ydCO@j=A+a$%a3>qM%wULpRk0s;bW2i^_5 z>|g8E#dV=mqQr{H=|Q#;rV8E0=56YK8Vc3-o9;AkX)9^pVQ~cxjdQ(hObW4oxxIR(8 zx1DDhL(X7EAosC6$Xf3yv&$zsk99xo-OG2TugTZw7wPBi#Z{SP$-`<3attKC+usuJ2nMt%J*bUr6!$8&A2K2KLMHcM(L|9& zlp#7I*o;j_PC>456z#D4T05Gr7|!bL?V~Lx>}%{M+eD>yN6Gdnx43zEiG2R@75MiK@C&H(-Qww{ zYL>m`-(ZFIIfg4Ob@j)p-j=T@kF2y-FRxz>$x62@D4`>kktvQz4j;#PM=agMtYrHE zO`#q1p}l1bWrt<&W&g?ENPme2@{+i%%rb`wm=HSi0#pC?bZrOyb(7KBWCQLLEl0Jy ze}x+H1gSwfL`KODDhTB&m5bX~w{7lu9(O%MJsMng%AG~`Q7#p1zMws)@lhw&=hi){ zx2StJpKbfIJ;*Ae2ZBSoh3P^kP_IdUP^}f(v+Y;x`^lbcf6SLZP0(NHDH;#Dfg14z zK?nQ|_c~kc@FZGoO^^f9-F(TiiWp1xX5Be!kaxg6PQw=BLSAoP2C%vN@=FC%#KWZ* zW!)9NO0}}l>4jV=og(VUUxel{8;Pmr5=e>~qpfVc(|V)rt+rC9G?KP5I+kMs1)dZ2 z7b&;LS12?<-B5q^pa>c|0JYSj-WYYKWnRL zsM%)eXB}jjWD(iM5ORvke&8s89Ug-%<9P@&g~#C&b(8;aYH_*fcGkVntwJSoj*w3l z9mb;QWXp7YbL%~gvpT=-pE_avt$IfN1Xj@{!z#lV*p2@(OVAnfc$%vro!o_s+cs-}%nD z=k(NlbI$Vg^lKlmKTs;rt>BD;JA*3u&-I??e#hyq&R6VXE0H%Kt3`UNw2f&a)30W{ z%knUm&pTn>Y+J-F$yvf;%>=^~r=>12ZqvM$_%#k}6C@Ou!<`?T>!-cj>Q zTLCd$Tf%V7VYySN%L>;!u7_QlyQR4g^IYM%&m-Rbp<73nIS%8r_k>%v!Fjhc=cc|+ z`kk;LzG(b`_{@Z~q=l*5sjm(*U9mQniz=y1PWG0|T6@@UGh3EhK3iWad!@1ZicTSJ zmpwDRd;0wGKJK0A_0eOwYjLNF294HRuvr7lEAxuxM&zu?S!Ar7J2m%pUL#8}?$bV@ zv;Q^qf_Q-`>VI_s4vn4vx(;^_@hs{6+53ZMaW}2=T!(F1qcYpv!Pq2IOg)qs4>H;k z-#Vdj;`^kHsb4b!v!imh=gsC`WlggBUoFpUBbn@)BVE#eaVp|I)cdbrfxuZojs!ixKLha z;-)8TPrjYjGSfGwfN7QOiCT>+y7Jtx|EQ~LSWI`Bl5Q?Lqq)&CY;hgTe+da|4X6zo!RPD-1Cv!UnfsPn6|C-MEPiGYpRvE$v87>U%EAQeu^d0KfX+C=)ax+rp6wN z+n>-WB|LLco`)=Iw2mKLdwJIOl>;M!w-y>3T(RKup!fc{UNQ7C?y4&*ex@GkKWmfx z*)gu%9Jf-d7j8*2&C1(se4Vu=iDr>dTmEiYU@l@hmV3?E$e5k;C8v zHqlVm`Kjw-_X8dkJR?0yx@%p-oE93+Yn+8z@_WlNrhl1oE@t1!+MJb;6`8d#D?Dp_ zws%f?&Jb*7n5irkqrI7zbV2^6&X>06bdG5*uAXT=4gp?4FM^H*od`VUzrbg!#}b!L z4!<;8)JSV*Q+iIHtWOzo`oi>Y>8&yi*++Al=9V*MnHyQ-tY&Tx{AYc`)F_?2NFJql z3!@|t-B&{ur~Y(XZ|LIg+Q;>R%T8wpr|Sk$w^i~LZreVaMjFp&XCk4i6=UMf8# z!*VkB z+CkB$YO|%@+_QC3ugSx0)vcqs6%kNXin8 zOxF3pjTI{F)j;l3zty(TUpMq{Om|x5e8Bmjvybz8M=u9geK?b_2g&6u9rOO?BxN1W z+?9DCYi!Qd+$*MLmW$N=PL!>(eHyn>o+@u)2b`#ux6yH;23-J}!f^yhr!>!X6&zYQ zZFer^GT3Fg%PyBbE|Z;4JDxP0(4EB+Skx@pXl-IyX>!aQ>^Q7m;FxR4j=VHse)~)iIZM1p<|3xm@Xs#iJ{_H(Mzl@xTp#8Ra<52RI`Wa zK&}r{f7PtCtPk1o#+jyH-0Qd?l+sFu&W`P!V_hz}E_7Y#66zf6bj=}GUq^RPql$Zk zpY)<@LN|(6LV{oxlIU@;Rd~mZ@fqAMDQfDF`#WcMwtv>1jDzVP(m!V8WH!n6HLl7l zVX@c*!6NO@T{l#5baPtgwA#tfX`f@7!)HTP{dR3%jZyp{loif%BmJ0KLkOqe!$NTy zGyWclR$}mXhB1)3`Kmp?R}4OMWJt)pXEj zJ5+YQ>vEMn?&HdR0O!vRJM|s3cf{7}Fy?r>S!-C%nP*WW8f>{_X=DwzR<%vCy|8)E zzhi*yxwWSCGFb1F#lgD8+S^uMu0_wIY+;tvMq7dTjJ+IQIanN0=mlpoR5Lu$DVku( zfW3{imA6^A6XMI{9g`Zy^uL;c zB8+9y%46Fi>s|DvpE=dE%2dtN!IWk?U=FZ+uspGj<$2QNaC#QpR5hH@aAva&k=8O1 zY9uRbplhk`XE^2X-f^2#6X#pbf1Hmxr#kg@Tw=Jd6SQ=j6%H!*w4TR&@mizAbJ zidsf6!6(U5#5&q~n=WPsdMhN@j?2}#X)=|2T4_wa(bLK0vh;v17Xz5^lq_x%JBd+3 zWhP*~QbLrTbckqgdrG8u(-Ofu>8!(f-c7aw_Ksp|H({(;P5L2i)U?sQ(-zj@#&sb~ zCL5)_%5<8M^q4xpteN^seYq(eCU%o!h%~2|mos^>yUkm6RLZIih34WSX%by-{OHlu zM1MzL(=deE`+kPHhP`xran^m*^p);mYaYw9Y$nSub6N9C(>YU=Da1VA{FZwNyDS0L zW7ZDL&iNzXPzum5;JR9qc|#-Uf7nJ!lg?_!X`OWUb=&kkxZ%{r!RWBk@uuT+`gQhq zxNrENkI-$^4yBKiD0nNmR)b}OX%3S%eR5ATgKSuC!Mqsy-fcJUxBRkJm&Ym1)F8T& zRiUHNcg+rM3Ec$UD&1PaatrP3LpADyK-*sfdZnoF4uPpWM}H$cgWRb zQFf#cf?2+)Oj48Sd3cxJDb29)N7TF6;t{Hqo+&4lqsj(4Mdi{5XqHX2rdac=T3aET zmo3Hm87*^^-Iz^yN;og>mOf}I={BKHMIDMed^3zNtfdQ8AzcUUU`-z>RNNx`V-8b@ zQci9Q1GA9ZU`f`2wmjQ3Is-1E-dhkdge}b1d&f<~cH#@6xG<6a6pv(gxi5DJXETR$ zfO$Hzt@@!0#lfdftRc3mw#jm9WsDjwl;t+bB;9@eSVN+r31`>e;j!VB{<3ZnoxIvh zL+Jwchi99wT$f$sQMPB+5!U9+LG!Rpu-R<4Q0}cE24+=UaTj2&|zu`^RZrVbE+7fQ|73v>6PXo znAN3pf!Rf;nLf%Gdhe`L3Mq4B3q4iJ+a6kvS`(Q#!c}P{kNZWcKxacqk*a9QFrR6F z^i7;7M$>nri+VuuQijU+>7#LqeqndzN%YQItg7@KyTr`FZ}bRRN4JtgbgsyvpVUPq zLiwpUs3p{K>PNMXKz|^iCOi6s-ZtNvjT9%&67SGEV?VRd=Bek@By}v4GOlvNr>oRc z>LCr2I!YFvsiCl(E=VqPSv;fkS5)~DeY;$UoOi0#gcrgdu|A#dhS4eNvRGEU&;C%3 zO%J1@e3fGUr>gc+&+~J=@x^VKu2x%V&+qlh`!EagqR^NwEDzYrmGt{KuRdmHYjYY8>3Or5jypfZSkBDA ztiJwK$1h?&mqfpi?cy3bs%+(KLWL}(d4k%732CCX536rnr zKIw%Gi_neJUDp1i=gJ?Z-1!LZ-1wYG_ou4d`wB42rjm60Y{NY@vw4O^=9Z$t)|=aX z2jq@e=>~LGi%?yJ?SdkVXY$u$y4fk3Z`u^yH>NH>H7qf_(d+evKo17;Bgcd>YE$MG z4zW$PhFPj{+jXe9lX-~wh}n^zYLmG$GejQEbH7l#2m;-VZc0@(3pB6bI2X{D#;mPH zr>kbV0=j?NMcOpYNbcYbl~#*=g%{igy<&a9Ow>Q-L+1PDnwAwzRfa z#i^|ADRUlsOIER^xCu$w%lyemZl-ouRw%JbwjwZfY!N5Cm99=@m}j<|ETqZumQk;Mr+>i9>gfrCA2dUqa@RqpnvsOoY6eeUN2!6l+*RtS&DUSiFr7uQJJd)oqeg>plsTchAf52hm0 zM!NSDmX?bulLSakQ8qoTsNzE*7B@xbG5ZelPaIiIb?v3Z~IV??!${LyORe zX?7R6`?8hZl+!c~u}Vhf%H`4H$wueLt7=hhMILAEKb7C~8p@%2<3BY|)uIg#&~9(^ zVK&u5iVGfZP%EuQ2a)p2$)kDhr$#PZ@_km48N zhOh~1x>@MOX|-Thq8{wBkIq-cm2=p?&gwR%;eO}ydI-;iI!xVLB0d)-sV0`&-j^$m zURJSUoKT0}gDcR^NAx9%z=OSJLSbd@O7^uau-&qmY@@NhS6I&-wS;g87PcQ#B_pv$ zTZu=mV{z&sCp(pq=#O;G>XokD)A)OC9YGutZ zdieE}UWh(oYx*fSQWKHEgY~*hb^Ob-B5Ld zVy3U^IQkY%qF3Gn`7xbGgOy42E8L-u1AX?E>T3#XPikdt8>WuFWUgW*eULtyTb8e| zYi%{9)BCFrQ#O0y=MS^ftHifrHvQ1PVrRUV zNb4kBVuExY+LuRnxYcxiJ4f%sbh>Q~lzV|z9>_YS96sc@QifhvrG#TbCFFUd_=l;$ z#TW+mgHDn=#YN(J@wZr9N@Q|wjD26|oaL#klncwJZQbdx-Gj4tw>fiDc@JI3{n(=b zG_DY5qNPvWbKxQ$-dn6sm#UTG7I8M+RXgI>{l(@;<{aL;wOAK_m&T_r5KiF-`wK_t zIJQ~oOsBaJMF3x|;_mohdY%=?JIO4(UI0F? zu`~l~qm?$&RlABPBfH<|gcpOXZd6(*S?HUivXbsROte=g5?}vEU*$ylSFR=^b^__? znTno-9@fBG^~5s&Vh(*DR=!m@Cwyj9b#JV|9jt9#Y{xPFZz_5_l-_Ng!VfI?Q`#k2Z%6&n@W9HwaX+l1b&g>5KVW zo-Oy|9OuYag zeO|+-*JCx66+h*rJOm3dQNGR8@sG?MHEL9TPh-bG4KZ$&}bB>MT|< z3ppPJ(h}90YI!<7-vQ&zMc1||?o8{};Awhdk2|q{&&1ozbGJupGo*I-1~FJVQgwAyu;R4vEnd+{FV{4vaBlSGrOa63}9WSo@N55)j)6>N=$(m|4S~Ky_FR*Gdq59e2?Oxx4T~7=Tw!#n&X@J4#8D=#b~mB-sqSe>;i0%HX_kdTX{&X3EKQ zDA>aaKHD;xz8XZYgQChjy4HDOF=w%ViaG`<3>6Ba$5oKY0ifJR`F%S}s2Y&NEHL#g zB?JGng6QTCvr&!mTe2}$xfN)uA$`URgDey2Boc~`IfJdJ$DW39^RhOPPCw4>E%G)3 zTfCJ%gqH-9&=9>ZO!vMpB>F6JJ(rG*jRZfwyEVO73t*F`sFUg7ryw^oK^HSX8X<}c zdUg+MTn<0ej`;F8{qyTGC%T-_9yHsWCpbr^<{9YG7W69x&vp$S;1ycZk3NyUVB2^# zm&ptbh%*-Q*-t^XJJ7Rb!c5|9UyxE?A%Z@;C9zAD#Vl;e6X7VBe}oV$+)>wapRzSN zT?{!41<^0SKkcHIsa1`^tDR9#BNcl3FZQPQE&cP*!DOW(7NRtF`Fp4{)OG45kobOe zAn&qCZ7rw*b#8QvJd!Vc(V(yprYGM-Hz%o;*n`Sy5jB`Td85EG?Ll18%1z$UQQZmN z(y~7y>+gjndk4dFmcBiGHDq_SZrZb&K^lL}J7$^JmTqB3-=Z6y!ex3Deq$Ho=#v>` z+hQAMYfev-UbfY?EZaT#0F#y5^M0l2MZTQrrc1HM^|?=f4Lyv(3mesPLU&;hJC{ow z6T+U?qO*M?b&Vop4YuJqeC20!Y`teI4hJ}qzMs|bm|?;)I%c1u4?{40Zs+oz|1o*^ zfN&FJc98u^P}1}9XeqU;x|vTAL7?$MTOx`mERqJByF@b5Z#swH&Ef>sbAU5$#7X_+ zCr;64StjdQm;J7%e5PkiQ!r+(+*cV#ztI=$R)#X2SbH8`!GH(*PPfd)XxeoqL;A8m zo22eiBjz7}#2UC^jn5(_;o!9K^dbFC$LF8&RwhEpObr!g@gz`eJM|a*;a(OJ>3Z(;G zGzVj)2dGD}2bV#*A?kBw2N7HoCbIXy*5=3!_}TMxaQ_3I2%u}^32?Cty537i-Q%F= zb?9en;>Px%8hdBulF|g}l9UJ^(o?fT^ODzp8b8f$sU*`~M}x2LA;+DC63l`q0fP6V z-*G9T-5mKM-7SmA-Mb~=k9-~ed8Aqp&wPUpFFjx+?_jN7fjy^+3i?+G z|9Jqt7zutUNGIS>e4Hnkt{Ch5E?ynqRpJh9CgDG1}uHulj3{#9h%5RiU>L)Toi={8z#BZvp#NN1SZb+@c zFME-!q9E7@;NacD9{g!lp*~+K*5ZY_7Syo@yHgXC@PT;Zi+Wz@FFGTk)ARSCg#iqg|=(r&Tpm zG`pnxc*L(nTz&D1`@rx|6nEtc&v%8Wd?)_>51m}6%BAIa+dBHGcEQ@*vPIJiJ4W6> zEYKP(Qx>n>NAwfj@mOz!^~l*4bu`v>Ke90!%UPPg{Z&`dHUB0^!yUP9uidPDru|MI z*okB!OK7^lcr_F%sY8`x@+VtO=AxVE*~M^z@luWGg5Kz^$+15Ua=``O*(j{4R||_so_D`hYxs}FM>{t zhyPCzqQP2KK|3vpz$(*~dMbMT2Xs>%U3x1YCz|Vl%`VGY3ewZRJQ!>*JDe<+C8A7$ z&1;QcsUjQ{d|3NUEO%d!3;NVIlC}{auIDvb`YCos-|yr5YY5BK>qO#bu!SGszq`nTgkGpaN3GRtalwcuhU@a2y0;PF}c&U)aDjkM->MKgb*_rU=_t5;Jc=RyP_Bc8W z%gR?e4aZ^ysuG7d5zj=*Cy>G8pz`6$K84k$ z6ST%cw#2j57RK=uiFl%6*z+Is&F!xq0l!w~IlC(Zu+cR^dR|zEMVw+E@hJTEZ5YMo zU^q!@(ww5d_Bhz*Em*w@*n=(LhbKf@M_|Oa5VP-qce%||&K66?is zvDd4>NHV#@?{Lb+VPB@pE$EG3TCOfvL5iBm|Cngd6)t)htfmK@^eY z(4RnkkyxbX`G0zbbnM4!>zPNi79X+}>t2ls5s7da3XydgK~KlU3E1~BXuv)-npnLz z(|xAHWNrni4x#Jv7_e6+GO`B5-;mzlok3@=?D1NBdvU3TB$BP$!I_o7Cv6j&A@?z$ zmFuh^7t~z`t8Qnsn!@)^A%-ge0#)F3{e%wceV$`GXSy1k9ZD>>8J%m#G=kr@r{uN* zk<%C83P(6mCv4Prc&1pPo_Ly=X^Z5gX+@6Z3Ejp^)6u;$U!rtO3=|g%CiPO!<*;ytN`rnhFY=AlN9{}`@qt1Ycf(k#*>@+?=xUhqGY1b3pp zEug`J^nrRNACwosIh>QD<=Vvf+rdx4_`}=a;F3r|C^Fm+ez+Tqa8>1(?5T871}RmP zc=-l10RoiC$`<0oW1L!FJnC=0Dk|@=F+Sky7fKOq<7#5BSkRtHO~Be+Vy_N?FC|b! zXK6V)Jsq#Kk{Jw3@Fqpz7bn3ArX$~#Kx9`ry{2j{u*GBE{{d`o0y>^+s|Kf_V**1k zzH_v28-(7UXY0nP8O2t3;A-@suSeYTkeK`wSmPzM6L{%5>avm$_1kN}}T<#@$gT~9lJ-iirN#F6o8;PmfN-A80eLl-9Jd>)HMY{XI zZ$@KD&7kqOVDY6OgSy1E8Jvm+Ol6eM$i11r@Pz(mp5WTIaI8Cs``3$Ar3fiS3dCnc z5v9dR>C$sJ^cmt_FxeAO-DOVl9M;TBP0jaM%Rz<<)HwB^;38JUvVXxA%djv$Smv){ z41WC-{{206@*TQ66HBumezqgnLx&$%ZD(ywZGXuk9kI2=XPiUlw<;~r(5FHnH2x^^ zJ4j4`BN_z{wM(^eYKfr1QXr^*#EB*w`5Ua~Id-rI{O$>&&mDN0N6f}xh}M)+)K}>?<4#&?_hTYPU z8F)nmRsh5{<=R*$ysn} zG@oyu{8tF?8!Ai`{$qc8z#EnUBSjK1?g8_skVzPcEy~806cqP>-b1B2;E!A}9{Gy` zxm6QmiCiOKwT~b@3(@XJ{Nx+ef!N%iyw7;}<)36%AL0r3f@Zvh6s%%<<}-ML#Om}J|h?*riUpq2#JWW%(zA~)0q+qjmvsirzt?F%>a9NTNx z_!&e`gVo~X+BzW<&vmt1IX*ooBO77pN4k13$!9rDm6%2=IY>8#PjDL#B=Pvf}lx=uTK^|L!AuaUCd=BH& z5{a1!tJ$8Iqljb^Ux45)!|x9uChH`&K*BqKOgf3Ju+UjVY%}qGHHB8}T6Mu$h{7kE zu<#DT39^}=v9(2*KeSUGFE@~5Kz9FZ&P zb19h!N3iQ6ut7_#cP6;4D1N*M@xXDAa%&>J4S0|*Vj!O55!Dmdqn5@WGMeVJh7iCtX{!}L$FDsIHcE@)p6%v&!|Vi$g00H!O? z*=W(>14N;->Bc+}i&CHGI--`r1{5aK)eT*E2dc_a+NuZfZq=~hl?4S|ibp>R;&Flm z7iMp51)pStii5d_Pz#S1h%EL;w=RMa{s>WmJ8|MaaRmA5c(}H=;L*;K3!c7_s1Xl> z-#-v5)@6;ilz#BZA>^F8U=ya1^~pr~OJE7Zh-5sO#qkHs^H04(e)X@Kk?+Io{96PJ zL?;-abKsl4@SOfwxi^&!hvX@;hFMMhZT_|o)~U=qTg42*-_}Azc){=- zDwWzv${MvENNE)L!z#oR1IS`mAkY6!{7I}4hCkfS*F-#SZ!l{;7&kxBN&Jqy`wCuU z59cEF9gwKsLJ(~COfiC|X-pl{NaVgVv!vzzC01yc;s#+_`f_gHs`QHk!V{UvDk97eS*XV|HFSSVL4YEiiJQ&_Rhpx7fFcNOhSPepd z*WnBHfC$^MLpKCZJVa}r;Wyg#h%;=;?lvRJFG7xDsnmqXd?hGLCl00-sfw9XM@{lcPA-3orLfW>scyR=3V7h-9Az#=Y4(iLR%D4B=}L^B_;d1v5s=i|pG zq6L*fDxtAGS>rgKzddoQeR`CNf6L?( z6Nu>3sQ4O-H`#;6)+H{mW5IpAOI4oa5i|9Y*~8DAWe4=IB&@0@D7A=cPz&Yz@s0SD zaafdQ_>neX;Bc&RZM^OkEWe%cRI%-`;M+Oqw@hrdnVqrmJ#OsEU9>TmcvNDt>REE5 zKH^pQ^K!(DMl^XKh`|g7{R!@QO@`iu&-Eo*J&QJXB*PMj_p*Xa3J8wa1wWp05bI9C zzwRbucOgHPtIW<9WM5-o{mR2e70+j%>k$)F<#|SKhUOH*yNKSjCFj;VlMdud*|MDV4iF2>;+aVW3in0B!%@lBAZ&! zS18%)B6zw0?BxLREnd_Kd}5^{mVX%>+6Z(i0b98Z>|IS*57*pPNoKCt0N6!WvVw88 zZD?hE<`+z2I@(F{=$+sV9w`4Imm38mtF`Z+O>`l8N(9Z008wlaw_zJ};x2YzGZFFH z{2Wk0&S)kPz)((Y3oP?VbR?Q;u*ulyJ}`_8;AYnmja7q<-40J#hkTpeHyuEy`?1IG zd9NDk_k84j98`OP+>=h_E_Z%jehJx(C-{P9Xr&6iA4l}GjQDS-?15)GP5g9=vy{21 z^$~pVg7030#N5J)7hv*TBoXiiaD}f>5(HcpPt+Do=qoJ7zK=z(u8>J@0T<$et^0$# z-r~uFSzljH+Evse`!0M%V1EiwwNanig~wp$i?9M~(V2Pq2>LX3p+6Wh7yEn=l-D0L zQ-W%Ty=d47=F>!g+J}&$+9M%8c!U#DQ_Wh_Bm>^LKWnKQVT9uwXFzxtn}Jko=f@!AG0LR*YWiHL%@B zWG^a18WR0qK%UEEMReHbMP!psA{G6mDbg|`&zVTaS}KlKBQK@l3?sp#>p0hz?AazP z*%QvWCU|TuS(M4h%u%9$MJzXkpqfwr7x?>>XiccJ^WknYo<)Sv861rTr(Y*ihs z^=W=W3 zHI#?*io~ML;3;0Pm*4o5ogjmUeBK3WwHD>uR}{) zC+oDTwXmzh*sn06lDcSdNi0rX;#qH49S^w5%I^Vpx3Si}nW!edBB1cjcCqOOeM0b#R)azZ!W~^UGVSYiAxrfYHB06&$%{%wKbi)4c0Vtm{qyxbM=`X9L)Reu5aiS5Mnukkt} zk(dQL@Qk^%5uD{?Ud*^7b61~VFO#v45CpVf5tw2nx}FSc^c39CkbSC+PpiaEmEq-0 zz0x*5*_BCf9_+^|{lg4u8)P6MziOg6vTq=g6~x#4TaYjT=6wjd z#VjLoR%4i*=>qb6j64*^Mihp)WwP+~3-Kj;&^!~CbttpY-CAgk42SPd zr541K3f@5Six2QxQ^2-;u=UMB2u0C?ConNdXiZ5_?ow$X$a+5&Tq~r8QaUvW~v_yOHxuTMHyiAaWf`K6DAuc{2FI6Hhx)_)C?uz3S?9 zzF(U!t(Nw{O;y%Z;HJnb@N_huyCR;u0};$fFlBpmt}ane6D;m}a(H>@{8(b^Vqnx5 ztYI%u<}&=q1m-l@UPm2<38D}p48G>z#}zacXxtD;>g$fVwGAD z8+K>?rMW|JQ~E5uC(5fvPU|60;zgeB1lV3>cXRp4XZfh61=VZq@V!hGWbYE?X-Go^ z+A<8RFcqIujr>PBPUt!>XEu z5n^Mq2ot5|R5{O+?np1WQL~gGeRAbA?R z>>TP+PZN`bP$Afk&ua@Gx(f@i6I`RD?EJzok=?rZ0Id=LRcF7e#@RH{k2tzQ4uOh+?KDQ_p zoAmBRQudJfIIY&lGatix42FIB4zD{5#;_ODJ*!YV+KE$aiN1P?4?#r7k?u7-=WJm< zl2aB;=L|CufG!%5fVJ&Oe;$;xqWd7|?B3D)=i<=U13m z&x;D6WgwCraF~C%4`n~=ASARDa{nD$VqxC*XtZ)1nXPa%Bb7`veO;$e~lj4zZ|C@48|%0M^*?FHUq@u4QrHwZ0!Xloh3gr zFu#_?l?>@LQ1UA|OD+wg*%K{KRO%xIWjIZlIOjS3++Oj#8X5KxGCBFDc=P7?@*S*s z8TQT{d-N5Vzm$&x{%}U0dA4{g=>RefAHb-2VC*B=F5+DX)LQC&AifUb zPQnQomn`DE4rFls@e_qvc{#j$FXXu*c}#l_tN^tSj&MkM?D=n5mWyFqmy!(}L(cmG z6N!6*8VumIUf86MWQ=wY{pzufQ;2ig!vaTgDi-wYEt0;5h;|xsISMYM9Qv-u(_CQZ z&fdDPcbp86G;qCHg0PA1FYiF|tVVyqz&;Gz^o zVp}39v#INiLSLfbLdvt+9q4~`H5qHMm!CWZ&J~HXB0(9EXy+@kT6^K3LW!_z!%6nx z8D5Z^ZjR)>6h*4c8dJ^Y1q!l>AHbZk!~;#y{=Y$4LAZ%6~tJ#PRn@1+H$XCdKu9tCodG0F@q zU;rn*1gU>bC6EMqYfJn+4jg!mn&DNP%0TS&eDG2dmTfSeV;A3V=I5N@E87z%MRVp$ zIq_R$?|Sem4~y^u?l77-JMFoazBzj#HF7WG4c<3caPi-u9D}3MvYD-2?NpTGx z%gJ`$y4iZh`revrEn+Kd3$)d;ZM1zQcQTD?7A8qkn{ilZMpV&OdM$ZUovSjfJCe-7 zLFpv-J*E>MOaKj)BQmQmHbJ)<@f=$593)i-4b8vYtdvU7w_IE%|*)$w?Vro;z+Y8vQ4 z!5{V|P8vftd<9zH4TM|@JW>&hvVth|06*u8mso;L8-qXV#9oV7-)Efg0QSEDe*PH# z{S4m75e(tY%8F6JJ|W*jzTh-AV$rvAd&gesx|?@OT7!+5hAh++_pG%VlA7qb0dkb9}szbAj*pX|0m-K*OLiv#S>{k zYj@GRE}V8na=QXqpUGJJb)3#Lc4#R0^cj9?HVk|W409?q2f?h_o;zJnoNJH3Yr$1z z5Z4z#&!=Ez|Kq*v@ntal}r&i^^`Qz1kr&?wrza zbln5~%AI(#F}f6owf)EQWnn``Vr_@P6xWB_3I%i6QE^l5ZO%rwHe(^z5aUh8I!wX_ zwqW0b;FmY!KjYDxwrF)7*YlBkV52VXQ7#1=t3Sqtu^EgGpR+mRK$ z;D&df%?fm^BpC!hjemIrCYXYj&O!Q)kbfx-BC3f0uLNfjgwKD2b*Kpo*9mSdQ|v+f zxgIXWUMcw)-eM8VavUr6=Kjwv-ft9p{Tk0Y6hxVYXZ?mRYt0!iL9;5uV;VSl6)P1_ zork^Vzdce@fe70Q8h!{W+e>Dz4T#QzNsey#a5Gg-r{x*sCU+3|RfPdl6gx|^1$+O7 z8iP`x#b6kD?-|I9|LVdZWOxhN#Dh@K+O=-6JyFgD?I>&L^Ch{}ozkz-ojMFHIpb z34?11#LjwgBEe*X>ht?!SeV=Vu%7uDRh1am3IaHcrE7=oNyCt&rev)2z+9-e2m%-Z+;t1udbG5^)InxTR7ymHz3bbiA$SO8*+pgCy~f) z2G7?SockP{b^tUHfQS5{_^@Luu{O(iO#!R@BwN;u9oa&i!Vs{3D9B z4MtiA!h#1$&x!7i@V}noH~hpU{7oJ>R6$cKu&STrz`U_=J>lUllQntB>oI?tO}xFE zJJU-!gZ-e5L7=@Oc;15G@9I>c%wlhfs$Z1Lc!ie49h1Qn8C2j0kSiM@pF)n$68{N! zNuxZU{L>6F+5Y&C{ZwTC<(UQ(H8urjjwNG#oND3^$g2zMY024l!{a`Hk31k%)AZ0Z z;7;irXr~+67i9$h0fg5pG>tx11T0eIeNB;EMq+SwH)qf9yTp0zjml7QJxkK*5$yb6`UbRDbCKaIN)e>`Hc?_#Jo7EiWGIrn5-p9O zPW?0to(s>{oTu7|oQ#nl$}^~UK1YVS5H_P18XO45EP`DgLnKulT(OBfP9~PnAi0B% z_feB`g!tbm4nf9Sl0EA|BpHV_dcjF1z)7dT$`wM}17Vl#x$>&;RW@pJBrJ4GEYL}8 z)OupD=6Ik*=t5EPJzn!LnCKT4@ElTpAGx@Mh1-d?j)24b0jnDWcX^jT6=mjM+=KN_$L@va*K-NnqF4a-?0~QNipFIUcYG$NbB}vNE^@X_wTW0G2;UctB(LFQxphmlzYkd+#^+@TJ;C?sR8GgSqpyinW`ool6Cbt2 zlk6aFUW;Eo4NLKl>dngJrmsoAq#SC9KEvf#laAx<&w(w{KuewQPb+SeWklkXx}8VLZmcoZjH% zvha~#h_ufjCD&Qu1MI~vFyL<@xK-pUcA!%(uq{^nOeN$c6zTX)R(dgvU5I!AP4k0| zDUG((Lt^YaZy7vVL+sya^s74f^P6hH?sep|{MEbo@KG>whw#S3(K7=v>qxx!JW$&c zs!@&P7OqiueF}7zBhJFwP9|$`73;5+QmDRr3wr8-+UkUYegpY()L!QMB+1QP�`&S>P+J7v&d>|qH0)X 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
ERVJxl3%jf> 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 z z16SKY@f=XRv+fmVC3fCL=5XVEqaO0wny?uD22%M4K&NbZZ6q`?`AAR+EKohEn^(Y} zx;KQsfGSGjI&Tsf&aYUZQxi#o`N*dp3sXG zXseHLHvDC2eCfO4SaY9)taiDU)+X>g7zwP_K9=`DCH|xI5dQYjBK5xKZ@T{n&83j9 literal 0 HcmV?d00001 diff --git a/example/ios/.gitignore b/example/ios/.gitignore new file mode 100644 index 0000000..f1d3e18 --- /dev/null +++ b/example/ios/.gitignore @@ -0,0 +1,35 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +Podfile.lock +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..7c56964 --- /dev/null +++ b/example/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 12.0 + + diff --git a/example/ios/Flutter/Debug.xcconfig b/example/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..ec97fc6 --- /dev/null +++ b/example/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/example/ios/Flutter/Release.xcconfig b/example/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..c4855bf --- /dev/null +++ b/example/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/example/ios/Podfile b/example/ios/Podfile new file mode 100644 index 0000000..7f35b81 --- /dev/null +++ b/example/ios/Podfile @@ -0,0 +1,44 @@ +# Uncomment this line to define a global platform for your project +platform :ios, '12.1' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..95e0378 --- /dev/null +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,742 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 0DF0F99754E6B5840910B316 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0A295890188B7A6E44BB761 /* Pods_RunnerTests.framework */; }; + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 3D7B673641E812EA570E57C8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED34CD969D38B3B4038FC4AD /* Pods_Runner.framework */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 1627DE32285CCC079B4089BD /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 390A72AF4252F2A9E20F94E3 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 5E5EE475362E8947D1FDA2E7 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 74D2226625535E949EB5BA9F /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 83ED6370C5E68E1A82400DD1 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3E492E9AD3CFC54333BA50E /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + ED34CD969D38B3B4038FC4AD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F0A295890188B7A6E44BB761 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3B8708BB4167C1C5DEA43C63 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0DF0F99754E6B5840910B316 /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3D7B673641E812EA570E57C8 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + AFA535A5FDB866ED43FB10ED /* Pods */, + C1F1C988ACF89757BEAFE795 /* Frameworks */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; + AFA535A5FDB866ED43FB10ED /* Pods */ = { + isa = PBXGroup; + children = ( + 83ED6370C5E68E1A82400DD1 /* Pods-Runner.debug.xcconfig */, + 390A72AF4252F2A9E20F94E3 /* Pods-Runner.release.xcconfig */, + 1627DE32285CCC079B4089BD /* Pods-Runner.profile.xcconfig */, + 74D2226625535E949EB5BA9F /* Pods-RunnerTests.debug.xcconfig */, + B3E492E9AD3CFC54333BA50E /* Pods-RunnerTests.release.xcconfig */, + 5E5EE475362E8947D1FDA2E7 /* Pods-RunnerTests.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + C1F1C988ACF89757BEAFE795 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ED34CD969D38B3B4038FC4AD /* Pods_Runner.framework */, + F0A295890188B7A6E44BB761 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + FC660F83742C28F4B3DD6F0B /* [CP] Check Pods Manifest.lock */, + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + 3B8708BB4167C1C5DEA43C63 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 356559380E35C44A4735FF71 /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + DD02F04F31D35CDE86C9A9F2 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 356559380E35C44A4735FF71 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; + DD02F04F31D35CDE86C9A9F2 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + FC660F83742C28F4B3DD6F0B /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = LMSU2CNFA5; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = ink.xcl.testWhisper; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 74D2226625535E949EB5BA9F /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.testWhisper.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3E492E9AD3CFC54333BA50E /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.testWhisper.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5E5EE475362E8947D1FDA2E7 /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.testWhisper.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = LMSU2CNFA5; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = ink.xcl.testWhisper; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = LMSU2CNFA5; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = ink.xcl.testWhisper; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..8e3ca5d --- /dev/null +++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/example/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21a3cc1 --- /dev/null +++ b/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/example/ios/Runner/AppDelegate.swift b/example/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..70693e4 --- /dev/null +++ b/example/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 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 literal 0 HcmV?d00001 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..797d452e458972bab9d994556c8305db4c827017 GIT binary patch literal 406 zcmV;H0crk;P))>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed2d933e1120817fe9182483a228007b18ab6ae GIT binary patch literal 450 zcmV;z0X_bSP)iGWQ_5NJQ_~rNh*z)}eT%KUb z`7gNk0#AwF^#0T0?hIa^`~Ck;!}#m+_uT050aTR(J!bU#|IzRL%^UsMS#KsYnTF*!YeDOytlP4VhV?b} z%rz_<=#CPc)tU1MZTq~*2=8~iZ!lSa<{9b@2Jl;?IEV8)=fG217*|@)CCYgFze-x? zIFODUIA>nWKpE+bn~n7;-89sa>#DR>TSlqWk*!2hSN6D~Qb#VqbP~4Fk&m`@1$JGr zXPIdeRE&b2Thd#{MtDK$px*d3-Wx``>!oimf%|A-&-q*6KAH)e$3|6JV%HX{Hig)k suLT-RhftRq8b9;(V=235Wa|I=027H2wCDra;{X5v07*qoM6N<$f;9x^2LJ#7 literal 0 HcmV?d00001 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd7b0099ca80c806f8fe495613e8d6c69460d76 GIT binary patch literal 282 zcmV+#0p(^bcu7P-R4C8Q z&e;xxFbF_Vrezo%_kH*OKhshZ6BFpG-Y1e10`QXJKbND7AMQ&cMj60B5TNObaZxYybcN07*qoM6N<$g3m;S%K!iX literal 0 HcmV?d00001 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fe730945a01f64a61e2235dbe3f45b08f7729182 GIT binary patch literal 462 zcmV;<0WtoGP)-}iV`2<;=$?g5M=KQbZ{F&YRNy7Nn@%_*5{gvDM0aKI4?ESmw z{NnZg)A0R`+4?NF_RZexyVB&^^ZvN!{I28tr{Vje;QNTz`dG&Jz0~Ek&f2;*Z7>B|cg}xYpxEFY+0YrKLF;^Q+-HreN0P{&i zK~zY`?b7ECf-n?@;d<&orQ*Q7KoR%4|C>{W^h6@&01>0SKS`dn{Q}GT%Qj_{PLZ_& zs`MFI#j-(>?bvdZ!8^xTwlY{qA)T4QLbY@j(!YJ7aXJervHy6HaG_2SB`6CC{He}f zHVw(fJWApwPq!6VY7r1w-Fs)@ox~N+q|w~e;JI~C4Vf^@d>Wvj=fl`^u9x9wd9 zR%3*Q+)t%S!MU_`id^@&Y{y7-r98lZX0?YrHlfmwb?#}^1b{8g&KzmkE(L>Z&)179 zp<)v6Y}pRl100G2FL_t(o!|l{-Q-VMg#&MKg7c{O0 z2wJImOS3Gy*Z2Qifdv~JYOp;v+U)a|nLoc7hNH;I$;lzDt$}rkaFw1mYK5_0Q(Sut zvbEloxON7$+HSOgC9Z8ltuC&0OSF!-mXv5caV>#bc3@hBPX@I$58-z}(ZZE!t-aOG zpjNkbau@>yEzH(5Yj4kZiMH32XI!4~gVXNnjAvRx;Sdg^`>2DpUEwoMhTs_st8pKG z(%SHyHdU&v%f36~uERh!bd`!T2dw;z6PrOTQ7Vt*#9F2uHlUVnb#ev_o^fh}Dzmq} zWtlk35}k=?xj28uO|5>>$yXadTUE@@IPpgH`gJ~Ro4>jd1IF|(+IX>8M4Ps{PNvmI zNj4D+XgN83gPt_Gm}`Ybv{;+&yu-C(Grdiahmo~BjG-l&mWM+{e5M1sm&=xduwgM9 z`8OEh`=F3r`^E{n_;%9weN{cf2%7=VzC@cYj+lg>+3|D|_1C@{hcU(DyQG_BvBWe? zvTv``=%b1zrol#=R`JB)>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..502f463a9bc882b461c96aadf492d1729e49e725 GIT binary patch literal 586 zcmV-Q0=4~#P)+}#`wDE{8-2Mebf5<{{PqV{TgVcv*r8?UZ3{-|G?_}T*&y;@cqf{ z{Q*~+qr%%p!1pS*_Uicl#q9lc(D`!D`LN62sNwq{oYw(Wmhk)k<@f$!$@ng~_5)Ru z0Z)trIA5^j{DIW^c+vT2%lW+2<(RtE2wR;4O@)Tm`Xr*?A(qYoM}7i5Yxw>D(&6ou zxz!_Xr~yNF+waPe00049Nkl*;a!v6h%{rlvIH#gW3s8p;bFr=l}mRqpW2h zw=OA%hdyL~z+UHOzl0eKhEr$YYOL-c-%Y<)=j?(bzDweB7{b+%_ypvm_cG{SvM=DK zhv{K@m>#Bw>2W$eUI#iU)Wdgs8Y3U+A$Gd&{+j)d)BmGKx+43U_!tik_YlN)>$7G! zhkE!s;%oku3;IwG3U^2kw?z+HM)jB{@zFhK8P#KMSytSthr+4!c(5c%+^UBn`0X*2 zy3(k600_CSZj?O$Qu%&$;|TGUJrptR(HzyIx>5E(2r{eA(<6t3e3I0B)7d6s7?Z5J zZ!rtKvA{MiEBm&KFtoifx>5P^Z=vl)95XJn()aS5%ad(s?4-=Tkis9IGu{`Fy8r+H07*qoM6N<$f20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec303439225b78712f49115768196d8d76f6790 GIT binary patch literal 862 zcmV-k1EKthP)20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e9f5fea27c705180eb716271f41b582e76dcbd90 GIT binary patch literal 1674 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 literal 0 HcmV?d00001 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0467bf12aa4d28f374bb26596605a46dcbb3e7c8 GIT binary patch literal 1418 zcmV;51$Fv~P)q zKfU)WzW*n(@|xWGCA9ScMt*e9`2kdxPQ&&>|-UCa7_51w+ zLUsW@ZzZSW0y$)Hp~e9%PvP|a03ks1`~K?q{u;6NC8*{AOqIUq{CL&;p56Lf$oQGq z^={4hPQv)y=I|4n+?>7Fim=dxt1 z2H+Dm+1+fh+IF>G0SjJMkQQre1x4|G*Z==(Ot&kCnUrL4I(rf(ucITwmuHf^hXiJT zkdTm&kdTm&kdTm&kdP`esgWG0BcWCVkVZ&2dUwN`cgM8QJb`Z7Z~e<&Yj2(}>Tmf` zm1{eLgw!b{bXkjWbF%dTkTZEJWyWOb##Lfw4EK2}<0d6%>AGS{po>WCOy&f$Tay_> z?NBlkpo@s-O;0V%Y_Xa-G#_O08q5LR*~F%&)}{}r&L%Sbs8AS4t7Y0NEx*{soY=0MZExqA5XHQkqi#4gW3 zqODM^iyZl;dvf)-bOXtOru(s)Uc7~BFx{w-FK;2{`VA?(g&@3z&bfLFyctOH!cVsF z7IL=fo-qBndRUm;kAdXR4e6>k-z|21AaN%ubeVrHl*<|s&Ax@W-t?LR(P-24A5=>a z*R9#QvjzF8n%@1Nw@?CG@6(%>+-0ASK~jEmCV|&a*7-GKT72W<(TbSjf)&Eme6nGE z>Gkj4Sq&2e+-G%|+NM8OOm5zVl9{Z8Dd8A5z3y8mZ=4Bv4%>as_{9cN#bm~;h>62( zdqY93Zy}v&c4n($Vv!UybR8ocs7#zbfX1IY-*w~)p}XyZ-SFC~4w>BvMVr`dFbelV{lLL0bx7@*ZZdebr3`sP;? zVImji)kG)(6Juv0lz@q`F!k1FE;CQ(D0iG$wchPbKZQELlsZ#~rt8#90Y_Xh&3U-< z{s<&cCV_1`^TD^ia9!*mQDq& zn2{r`j};V|uV%_wsP!zB?m%;FeaRe+X47K0e+KE!8C{gAWF8)lCd1u1%~|M!XNRvw zvtqy3iz0WSpWdhn6$hP8PaRBmp)q`#PCA`Vd#Tc$@f1tAcM>f_I@bC)hkI9|o(Iqv zo}Piadq!j76}004RBio<`)70k^`K1NK)q>w?p^C6J2ZC!+UppiK6&y3Kmbv&O!oYF z34$0Z;QO!JOY#!`qyGH<3Pd}Pt@q*A0V=3SVtWKRR8d8Z&@)3qLPA19LPA19LPEUC YUoZo%k(ykuW&i*H07*qoM6N<$f+CH{y8r+H literal 0 HcmV?d00001 diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000..0bedcf2 --- /dev/null +++ b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/example/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/example/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/ios/Runner/Base.lproj/Main.storyboard b/example/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/example/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/ios/Runner/Info.plist b/example/ios/Runner/Info.plist new file mode 100644 index 0000000..792a985 --- /dev/null +++ b/example/ios/Runner/Info.plist @@ -0,0 +1,51 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Whisper Test + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + test_whisper + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + NSMicrophoneUsageDescription + Pour enregister des sons + UIApplicationSupportsIndirectInputEvents + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/example/ios/Runner/Runner-Bridging-Header.h b/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..308a2a5 --- /dev/null +++ b/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/example/ios/RunnerTests/RunnerTests.swift b/example/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..86a7c3b --- /dev/null +++ b/example/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/example/lib/main.dart b/example/lib/main.dart new file mode 100644 index 0000000..f78008d --- /dev/null +++ b/example/lib/main.dart @@ -0,0 +1,273 @@ +/* + * Copyright (c) 田梓萱[小草林] 2021-2024. + * All Rights Reserved. + * All codes are protected by China's regulations on the protection of computer software, and infringement must be investigated. + * 版权所有 (c) 田梓萱[小草林] 2021-2024. + * 所有代码均受中国《计算机软件保护条例》保护,侵权必究. + */ + +import "dart:io"; + +import "package:flutter/material.dart"; +import "package:flutter/services.dart"; +import "package:flutter_riverpod/flutter_riverpod.dart"; +import "package:path_provider/path_provider.dart"; +import "package:test_whisper/providers.dart"; +import "package:test_whisper/record_page.dart"; +import "package:test_whisper/whisper_controller.dart"; +import "package:test_whisper/whisper_result.dart"; +import "package:whisper_flutter_new/whisper_flutter_new.dart"; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + return ProviderScope( + child: MaterialApp( + title: "Whisper for Flutter", + theme: ThemeData( + colorScheme: ColorScheme.fromSeed( + seedColor: Theme.of(context).colorScheme.primary), + useMaterial3: true, + ), + home: const MyHomePage(), + ), + ); + } +} + +class MyHomePage extends ConsumerWidget { + const MyHomePage({ + super.key, + }); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final WhisperModel model = ref.watch(modelProvider); + final String lang = ref.watch(langProvider); + final bool translate = ref.watch(translateProvider); + final bool withSegments = ref.watch(withSegmentsProvider); + final bool splitWords = ref.watch(splitWordsProvider); + + final WhisperController controller = ref.watch( + whisperControllerProvider.notifier, + ); + return Scaffold( + appBar: AppBar( + backgroundColor: Theme.of(context).colorScheme.inversePrimary, + title: const Text( + "Whisper flutter demo", + ), + ), + body: SafeArea( + minimum: const EdgeInsets.all(20), + child: SingleChildScrollView(child: Consumer( + builder: (context, ref, _) { + final AsyncValue transcriptionAsync = ref.watch( + whisperControllerProvider, + ); + + return transcriptionAsync.maybeWhen( + skipLoadingOnRefresh: true, + skipLoadingOnReload: true, + data: (TranscribeResult? transcriptionResult) { + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + const Text("Model :"), + DropdownButton( + isExpanded: true, + value: model, + items: WhisperModel.values + .map( + (WhisperModel model) => DropdownMenuItem( + value: model, + child: Text(model.modelName), + ), + ) + .toList(), + onChanged: (WhisperModel? model) { + if (model != null) { + ref.read(modelProvider.notifier).state = model; + } + }, + ), + const SizedBox(height: 20), + const Text("Lang :"), + DropdownButton( + isExpanded: true, + value: lang, + items: ["auto", "zh", "en"] + .map( + (String lang) => DropdownMenuItem( + value: lang, + child: Text(lang), + ), + ) + .toList(), + onChanged: (String? lang) { + if (lang != null) { + ref.read(langProvider.notifier).state = lang; + } + }, + ), + const SizedBox(height: 20), + const Text("Translate result :"), + DropdownButton( + isExpanded: true, + value: translate, + items: const [ + DropdownMenuItem( + value: false, + child: Text("No"), + ), + DropdownMenuItem( + value: true, + child: Text("Yes"), + ), + ], + onChanged: (bool? translate) { + if (translate != null) { + ref.read(translateProvider.notifier).state = + translate; + } + }, + ), + const Text("With segments :"), + DropdownButton( + isExpanded: true, + value: withSegments, + items: const [ + DropdownMenuItem( + value: false, + child: Text("No"), + ), + DropdownMenuItem( + value: true, + child: Text("Yes"), + ), + ], + onChanged: (bool? withSegments) { + if (withSegments != null) { + ref.read(withSegmentsProvider.notifier).state = + withSegments; + } + }, + ), + const Text("Split word :"), + DropdownButton( + isExpanded: true, + value: splitWords, + items: const [ + DropdownMenuItem( + value: false, + child: Text("No"), + ), + DropdownMenuItem( + value: true, + child: Text("Yes"), + ), + ], + onChanged: (bool? splitWords) { + if (splitWords != null) { + ref.read(splitWordsProvider.notifier).state = + splitWords; + } + }, + ), + const SizedBox(height: 20), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + ElevatedButton( + onPressed: () async { + final Directory documentDirectory = + await getApplicationDocumentsDirectory(); + final ByteData documentBytes = + await rootBundle.load( + "assets/jfk.wav", + ); + + final String jfkPath = + "${documentDirectory.path}/jfk.wav"; + + await File(jfkPath).writeAsBytes( + documentBytes.buffer.asUint8List(), + ); + + await controller.transcribe(jfkPath); + }, + child: const Text("jfk.wav"), + ), + const SizedBox(width: 20), + ElevatedButton( + onPressed: () async { + final String? recordFilePath = + await RecordPage.openRecordPage( + context, + ); + + if (recordFilePath != null) { + await controller.transcribe(recordFilePath); + } + }, + child: const Text("record"), + ), + ], + ), + if (transcriptionResult != null) ...[ + const SizedBox(height: 20), + Text( + transcriptionResult.transcription.text, + ), + const SizedBox(height: 20), + Text( + transcriptionResult.time.toString(), + ), + if (transcriptionResult.transcription.segments != + null) ...[ + const SizedBox(height: 25), + Expanded( + child: ListView.separated( + itemCount: transcriptionResult + .transcription.segments!.length, + itemBuilder: (context, index) { + final WhisperTranscribeSegment segment = + transcriptionResult + .transcription.segments![index]; + + final Duration fromTs = segment.fromTs; + final Duration toTs = segment.toTs; + final String text = segment.text; + return Text( + "[$fromTs - $toTs] $text", + ); + }, + separatorBuilder: (context, index) { + return const Divider(); + }, + ), + ), + const SizedBox(height: 30), + ], + ], + ], + ); + }, + orElse: () { + return const Center( + child: CircularProgressIndicator(), + ); + }, + ); + }, + )), + ), + ); + } +} diff --git a/example/lib/providers.dart b/example/lib/providers.dart new file mode 100644 index 0000000..33b89b9 --- /dev/null +++ b/example/lib/providers.dart @@ -0,0 +1,12 @@ +import "package:flutter_riverpod/flutter_riverpod.dart"; +import "package:whisper_flutter_new/whisper_flutter_new.dart"; + +final modelProvider = StateProvider.autoDispose((ref) => WhisperModel.base); + +final langProvider = StateProvider.autoDispose((ref) => "auto"); + +final translateProvider = StateProvider((ref) => false); + +final withSegmentsProvider = StateProvider((ref) => false); + +final splitWordsProvider = StateProvider((ref) => false); diff --git a/example/lib/record_page.dart b/example/lib/record_page.dart new file mode 100644 index 0000000..b680974 --- /dev/null +++ b/example/lib/record_page.dart @@ -0,0 +1,89 @@ +import "dart:io"; + +import "package:flutter/material.dart"; +import "package:flutter_riverpod/flutter_riverpod.dart"; +import "package:path_provider/path_provider.dart"; +import "package:record/record.dart"; + +class RecordController extends StateNotifier { + RecordController() : super(false); + + final AudioRecorder _record = AudioRecorder(); + + Future startRecord() async { + if (!await _record.hasPermission()) { + return; + } + state = true; + final Directory appDirectory = await getApplicationDocumentsDirectory(); + await _record.start( + const RecordConfig(), + // encoder: AudioEncoder.pcm16bit, + // samplingRate: 16000, + path: "${appDirectory.path}/test.m4a", + ); + } + + Future stopRecord() async { + final String? path = await _record.stop(); + state = false; + return path; + } +} + +final recordControllerProvider = + StateNotifierProvider.autoDispose( + (ref) => RecordController(), +); + +class RecordPage extends ConsumerWidget { + const RecordPage({super.key}); + + static Future openRecordPage(BuildContext context) { + return Navigator.of(context).push( + MaterialPageRoute( + builder: (context) => const RecordPage(), + ), + ); + } + + @override + Widget build(BuildContext context, WidgetRef ref) { + final RecordController controller = ref.watch( + recordControllerProvider.notifier, + ); + final bool isRecording = ref.watch(recordControllerProvider); + return Scaffold( + appBar: AppBar( + title: const Text("Record"), + ), + body: SafeArea( + child: Center( + child: isRecording + ? ElevatedButton( + onPressed: () async { + final String? outputPath = await controller.stopRecord(); + + if (outputPath != null) { + final File outputFile = File(outputPath); + + print(outputFile.path); + + Navigator.of(context).pop(outputFile.path); + } else { + Navigator.of(context).pop(); + } + }, + child: const Text("stop"), + ) + : ElevatedButton( + onPressed: () async { + await controller.startRecord(); + }, + child: const Text("start"), + ), + ), + ), + ); + } +} diff --git a/example/lib/whisper_audio_convert.dart b/example/lib/whisper_audio_convert.dart new file mode 100644 index 0000000..804cfac --- /dev/null +++ b/example/lib/whisper_audio_convert.dart @@ -0,0 +1,57 @@ +import "dart:async"; +import "dart:io"; + +import "package:ffmpeg_kit_flutter_full_gpl/ffmpeg_kit.dart"; +import "package:ffmpeg_kit_flutter_full_gpl/ffmpeg_session.dart"; +import "package:ffmpeg_kit_flutter_full_gpl/return_code.dart"; +import "package:flutter/foundation.dart"; + +/// Class used to convert any audio file to wav +class WhisperAudioconvert { + const WhisperAudioconvert({ + required this.audioInput, + required this.audioOutput, + }); + + /// Input audio file + final File audioInput; + + /// Output audio file + final File audioOutput; + + /// convert [audioInput] to wav file + Future convert() async { + final FFmpegSession session = await FFmpegKit.execute( + [ + "-y", + "-i", + audioInput.path, + "-ar", + "16000", + "-ac", + "1", + "-c:a", + "pcm_s16le", + audioOutput.path, + ].join(" "), + ); + + final ReturnCode? returnCode = await session.getReturnCode(); + + if (ReturnCode.isSuccess(returnCode)) { + return audioOutput; + } else if (ReturnCode.isCancel(returnCode)) { + if (kDebugMode) { + debugPrint("[Whisper]File convertion canceled"); + } + } else { + if (kDebugMode) { + debugPrint( + "[Whisper]File convertion error with returnCode ${returnCode?.getValue()}", + ); + } + } + + return null; + } +} diff --git a/example/lib/whisper_controller.dart b/example/lib/whisper_controller.dart new file mode 100644 index 0000000..db64981 --- /dev/null +++ b/example/lib/whisper_controller.dart @@ -0,0 +1,96 @@ +import "dart:io"; + +import "package:flutter/foundation.dart"; +import "package:flutter_riverpod/flutter_riverpod.dart"; +import "package:path_provider/path_provider.dart"; +import "package:system_info2/system_info2.dart"; +import "package:test_whisper/providers.dart"; +import "package:test_whisper/whisper_audio_convert.dart"; +import "package:test_whisper/whisper_result.dart"; +import "package:whisper_flutter_new/whisper_flutter_new.dart"; + +class WhisperController extends StateNotifier> { + WhisperController(this.ref) : super(const AsyncData(null)); + + final Ref ref; + + Future transcribe(String filePath) async { + final WhisperModel model = ref.read(modelProvider); + + state = const AsyncLoading(); + + /// China: https://hf-mirror.com/ggerganov/whisper.cpp/resolve/main + /// Other: https://huggingface.co/ggerganov/whisper.cpp/resolve/main + final Whisper whisper = Whisper( + model: model, + downloadHost: + "https://huggingface.co/ggerganov/whisper.cpp/resolve/main"); + + final DateTime start = DateTime.now(); + + final String lang = ref.read(langProvider); + + final bool translate = ref.read(translateProvider); + + final bool withSegments = ref.read(withSegmentsProvider); + + final bool splitWords = ref.read(splitWordsProvider); + + try { + if (kDebugMode) { + debugPrint("[Whisper]Start"); + } + final String? whisperVersion = await whisper.getVersion(); + var cores = 2; + try { + cores = SysInfo.cores.length; + } catch (_) { + cores = 8; + } + if (kDebugMode) { + debugPrint("[Whisper]Number of core = ${cores}"); + debugPrint("[Whisper]Whisper version = $whisperVersion"); + } + final Directory documentDirectory = + await getApplicationDocumentsDirectory(); + final WhisperAudioconvert converter = WhisperAudioconvert( + audioInput: File(filePath), + audioOutput: File("${documentDirectory.path}/convert.wav"), + ); + + final File? convertedFile = await converter.convert(); + final WhisperTranscribeResponse transcription = await whisper.transcribe( + transcribeRequest: TranscribeRequest( + audio: convertedFile?.path ?? filePath, + language: lang, + nProcessors: (cores * 1.2).toInt(), + threads: (cores * 1.2).toInt(), + isTranslate: translate, + isNoTimestamps: !withSegments, + splitOnWord: splitWords, + ), + ); + + final Duration transcriptionDuration = DateTime.now().difference(start); + if (kDebugMode) { + debugPrint("[Whisper]End = $transcriptionDuration"); + } + state = AsyncData( + TranscribeResult( + time: transcriptionDuration, + transcription: transcription, + ), + ); + } catch (e) { + if (kDebugMode) { + debugPrint("[Whisper]Error = $e"); + } + state = const AsyncData(null); + } + } +} + +final whisperControllerProvider = StateNotifierProvider.autoDispose< + WhisperController, AsyncValue>( + (ref) => WhisperController(ref), +); diff --git a/example/lib/whisper_result.dart b/example/lib/whisper_result.dart new file mode 100644 index 0000000..d96fc61 --- /dev/null +++ b/example/lib/whisper_result.dart @@ -0,0 +1,11 @@ +import "package:whisper_flutter_new/whisper_flutter_new.dart"; + +class TranscribeResult { + const TranscribeResult({ + required this.transcription, + required this.time, + }); + + final WhisperTranscribeResponse transcription; + final Duration time; +} diff --git a/example/macos/.gitignore b/example/macos/.gitignore new file mode 100644 index 0000000..746adbb --- /dev/null +++ b/example/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/example/macos/Flutter/Flutter-Debug.xcconfig b/example/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 0000000..4b81f9b --- /dev/null +++ b/example/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/example/macos/Flutter/Flutter-Release.xcconfig b/example/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 0000000..5caa9d1 --- /dev/null +++ b/example/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/example/macos/Flutter/GeneratedPluginRegistrant.swift b/example/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 0000000..c04f3b4 --- /dev/null +++ b/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,16 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import ffmpeg_kit_flutter_full_gpl +import path_provider_foundation +import record_darwin + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + FFmpegKitFlutterPlugin.register(with: registry.registrar(forPlugin: "FFmpegKitFlutterPlugin")) + PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + RecordPlugin.register(with: registry.registrar(forPlugin: "RecordPlugin")) +} diff --git a/example/macos/Podfile b/example/macos/Podfile new file mode 100644 index 0000000..b52666a --- /dev/null +++ b/example/macos/Podfile @@ -0,0 +1,43 @@ +platform :osx, '10.15' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end diff --git a/example/macos/Podfile.lock b/example/macos/Podfile.lock new file mode 100644 index 0000000..d472fc7 --- /dev/null +++ b/example/macos/Podfile.lock @@ -0,0 +1,52 @@ +PODS: + - ffmpeg-kit-macos-full-gpl (6.0) + - ffmpeg_kit_flutter_full_gpl (6.0.3): + - ffmpeg_kit_flutter_full_gpl/full-gpl (= 6.0.3) + - FlutterMacOS + - ffmpeg_kit_flutter_full_gpl/full-gpl (6.0.3): + - ffmpeg-kit-macos-full-gpl (= 6.0) + - FlutterMacOS + - FlutterMacOS (1.0.0) + - path_provider_foundation (0.0.1): + - Flutter + - FlutterMacOS + - record_darwin (1.0.0): + - Flutter + - FlutterMacOS + - whisper_flutter_new (0.0.1): + - FlutterMacOS + +DEPENDENCIES: + - ffmpeg_kit_flutter_full_gpl (from `Flutter/ephemeral/.symlinks/plugins/ffmpeg_kit_flutter_full_gpl/macos`) + - FlutterMacOS (from `Flutter/ephemeral`) + - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) + - record_darwin (from `Flutter/ephemeral/.symlinks/plugins/record_darwin/macos`) + - whisper_flutter_new (from `Flutter/ephemeral/.symlinks/plugins/whisper_flutter_new/macos`) + +SPEC REPOS: + trunk: + - ffmpeg-kit-macos-full-gpl + +EXTERNAL SOURCES: + ffmpeg_kit_flutter_full_gpl: + :path: Flutter/ephemeral/.symlinks/plugins/ffmpeg_kit_flutter_full_gpl/macos + FlutterMacOS: + :path: Flutter/ephemeral + path_provider_foundation: + :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin + record_darwin: + :path: Flutter/ephemeral/.symlinks/plugins/record_darwin/macos + whisper_flutter_new: + :path: Flutter/ephemeral/.symlinks/plugins/whisper_flutter_new/macos + +SPEC CHECKSUMS: + ffmpeg-kit-macos-full-gpl: c9bd04ddd4dc777db0ecda4e342bb4f5ad972157 + ffmpeg_kit_flutter_full_gpl: 29a39b7a0cef8199794e41bcef72cadff167c2a5 + FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 + path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 + record_darwin: 1f6619f2abac4d1ca91d3eeab038c980d76f1517 + whisper_flutter_new: 6a658049000ed4a0dbe2231482921b7ac22ae36a + +PODFILE CHECKSUM: 9ebaf0ce3d369aaa26a9ea0e159195ed94724cf3 + +COCOAPODS: 1.15.2 diff --git a/example/macos/Runner.xcodeproj/project.pbxproj b/example/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ce85ed7 --- /dev/null +++ b/example/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,829 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; + D6A3943484A29FBAEB3C5369 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 635EC7D79A3E67196BC9D9D7 /* Pods_Runner.framework */; }; + DDEBB8CE32D42120E29C4D5D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF52B75BCDFE6C6E9F25A591 /* Pods_RunnerTests.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC10EC2044A3C60003C045; + remoteInfo = Runner; + }; + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 635EC7D79A3E67196BC9D9D7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 7F92583B2805389100A4A2A7 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + 9F54C8FC7E72819734781E4B /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + BF52B75BCDFE6C6E9F25A591 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C90BB9C24CA49A629BE3F1DE /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + D4612AD4FBBCEC614923CA30 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + F2C1A5FE310E4CF42A12D13F /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + FA9B4849E7AC2DDB4F19DCF2 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 331C80D2294CF70F00263BE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DDEBB8CE32D42120E29C4D5D /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D6A3943484A29FBAEB3C5369 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C80D6294CF71000263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C80D7294CF71000263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 331C80D6294CF71000263BE5 /* RunnerTests */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + 7633246646957CE4A0190F50 /* Pods */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* example.app */, + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + 7633246646957CE4A0190F50 /* Pods */ = { + isa = PBXGroup; + children = ( + 9F54C8FC7E72819734781E4B /* Pods-Runner.debug.xcconfig */, + 7F92583B2805389100A4A2A7 /* Pods-Runner.release.xcconfig */, + F2C1A5FE310E4CF42A12D13F /* Pods-Runner.profile.xcconfig */, + D4612AD4FBBCEC614923CA30 /* Pods-RunnerTests.debug.xcconfig */, + FA9B4849E7AC2DDB4F19DCF2 /* Pods-RunnerTests.release.xcconfig */, + C90BB9C24CA49A629BE3F1DE /* Pods-RunnerTests.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 635EC7D79A3E67196BC9D9D7 /* Pods_Runner.framework */, + BF52B75BCDFE6C6E9F25A591 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C80D4294CF70F00263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 341E8CB2CD4DD9AB5E159D78 /* [CP] Check Pods Manifest.lock */, + 331C80D1294CF70F00263BE5 /* Sources */, + 331C80D2294CF70F00263BE5 /* Frameworks */, + 331C80D3294CF70F00263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C80DA294CF71000263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 915B531DAAFA803AE6E51995 /* [CP] Check Pods Manifest.lock */, + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + 61A45CF6321702B0A8204EEB /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* example.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C80D4294CF70F00263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 33CC10EC2044A3C60003C045; + }; + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 331C80D4294CF70F00263BE5 /* RunnerTests */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C80D3294CF70F00263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; + 341E8CB2CD4DD9AB5E159D78 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 61A45CF6321702B0A8204EEB /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 915B531DAAFA803AE6E51995 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C80D1294CF70F00263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC10EC2044A3C60003C045 /* Runner */; + targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; + }; + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 331C80DB294CF71000263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D4612AD4FBBCEC614923CA30 /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = ink.xcl.example.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/example"; + }; + name = Debug; + }; + 331C80DC294CF71000263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FA9B4849E7AC2DDB4F19DCF2 /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = ink.xcl.example.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/example"; + }; + name = Release; + }; + 331C80DD294CF71000263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C90BB9C24CA49A629BE3F1DE /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = ink.xcl.example.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/example"; + }; + name = Profile; + }; + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + EXCLUDED_ARCHS = x86_64; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + STRIP_INSTALLED_PRODUCT = NO; + STRIP_STYLE = "non-global"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = LMSU2CNFA5; + INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = ink.xcl.testWhisper; + PROVISIONING_PROFILE_SPECIFIER = ""; + STRIP_INSTALLED_PRODUCT = NO; + STRIP_STYLE = "non-global"; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + EXCLUDED_ARCHS = x86_64; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + STRIP_INSTALLED_PRODUCT = NO; + STRIP_STYLE = "non-global"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + EXCLUDED_ARCHS = x86_64; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + STRIP_INSTALLED_PRODUCT = NO; + STRIP_STYLE = "non-global"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = LMSU2CNFA5; + INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = ink.xcl.testWhisper; + PROVISIONING_PROFILE_SPECIFIER = ""; + STRIP_INSTALLED_PRODUCT = NO; + STRIP_STYLE = "non-global"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = LMSU2CNFA5; + INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = ink.xcl.testWhisper; + PROVISIONING_PROFILE_SPECIFIER = ""; + STRIP_INSTALLED_PRODUCT = NO; + STRIP_STYLE = "non-global"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C80DB294CF71000263BE5 /* Debug */, + 331C80DC294CF71000263BE5 /* Release */, + 331C80DD294CF71000263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..15368ec --- /dev/null +++ b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/macos/Runner.xcworkspace/contents.xcworkspacedata b/example/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21a3cc1 --- /dev/null +++ b/example/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/example/macos/Runner/AppDelegate.swift b/example/macos/Runner/AppDelegate.swift new file mode 100644 index 0000000..d53ef64 --- /dev/null +++ b/example/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..a2ec33f --- /dev/null +++ b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..82b6f9d9a33e198f5747104729e1fcef999772a5 GIT binary patch literal 102994 zcmeEugo5nb1G~3xi~y`}h6XHx5j$(L*3|5S2UfkG$|UCNI>}4f?MfqZ+HW-sRW5RKHEm z^unW*Xx{AH_X3Xdvb%C(Bh6POqg==@d9j=5*}oEny_IS;M3==J`P0R!eD6s~N<36C z*%-OGYqd0AdWClO!Z!}Y1@@RkfeiQ$Ib_ z&fk%T;K9h`{`cX3Hu#?({4WgtmkR!u3ICS~|NqH^fdNz>51-9)OF{|bRLy*RBv#&1 z3Oi_gk=Y5;>`KbHf~w!`u}!&O%ou*Jzf|Sf?J&*f*K8cftMOKswn6|nb1*|!;qSrlw= zr-@X;zGRKs&T$y8ENnFU@_Z~puu(4~Ir)>rbYp{zxcF*!EPS6{(&J}qYpWeqrPWW< zfaApz%<-=KqxrqLLFeV3w0-a0rEaz9&vv^0ZfU%gt9xJ8?=byvNSb%3hF^X_n7`(fMA;C&~( zM$cQvQ|g9X)1AqFvbp^B{JEX$o;4iPi?+v(!wYrN{L}l%e#5y{j+1NMiT-8=2VrCP zmFX9=IZyAYA5c2!QO96Ea-6;v6*$#ZKM-`%JCJtrA3d~6h{u+5oaTaGE)q2b+HvdZ zvHlY&9H&QJ5|uG@wDt1h99>DdHy5hsx)bN`&G@BpxAHh$17yWDyw_jQhhjSqZ=e_k z_|r3=_|`q~uA47y;hv=6-o6z~)gO}ZM9AqDJsR$KCHKH;QIULT)(d;oKTSPDJ}Jx~G#w-(^r<{GcBC*~4bNjfwHBumoPbU}M)O za6Hc2ik)2w37Yyg!YiMq<>Aov?F2l}wTe+>h^YXcK=aesey^i)QC_p~S zp%-lS5%)I29WfywP(r4@UZ@XmTkqo51zV$|U|~Lcap##PBJ}w2b4*kt7x6`agP34^ z5fzu_8rrH+)2u*CPcr6I`gL^cI`R2WUkLDE5*PX)eJU@H3HL$~o_y8oMRoQ0WF9w| z6^HZDKKRDG2g;r8Z4bn+iJNFV(CG;K-j2>aj229gl_C6n12Jh$$h!}KVhn>*f>KcH z;^8s3t(ccVZ5<{>ZJK@Z`hn_jL{bP8Yn(XkwfRm?GlEHy=T($8Z1Mq**IM`zxN9>-yXTjfB18m_$E^JEaYn>pj`V?n#Xu;Z}#$- zw0Vw;T*&9TK$tKI7nBk9NkHzL++dZ^;<|F6KBYh2+XP-b;u`Wy{~79b%IBZa3h*3^ zF&BKfQ@Ej{7ku_#W#mNJEYYp=)bRMUXhLy2+SPMfGn;oBsiG_6KNL8{p1DjuB$UZB zA)a~BkL)7?LJXlCc}bB~j9>4s7tlnRHC5|wnycQPF_jLl!Avs2C3^lWOlHH&v`nGd zf&U!fn!JcZWha`Pl-B3XEe;(ks^`=Z5R zWyQR0u|do2`K3ec=YmWGt5Bwbu|uBW;6D8}J3{Uep7_>L6b4%(d=V4m#(I=gkn4HT zYni3cnn>@F@Wr<hFAY3Y~dW+3bte;70;G?kTn4Aw5nZ^s5|47 z4$rCHCW%9qa4)4vE%^QPMGf!ET!^LutY$G zqdT(ub5T5b+wi+OrV}z3msoy<4)`IPdHsHJggmog0K*pFYMhH!oZcgc5a)WmL?;TPSrerTVPp<#s+imF3v#!FuBNNa`#6 z!GdTCF|IIpz#(eV^mrYKThA4Bnv&vQet@%v9kuRu3EHx1-2-it@E`%9#u`)HRN#M? z7aJ{wzKczn#w^`OZ>Jb898^Xxq)0zd{3Tu7+{-sge-rQ z&0PME&wIo6W&@F|%Z8@@N3)@a_ntJ#+g{pUP7i?~3FirqU`rdf8joMG^ld?(9b7Iv z>TJgBg#)(FcW)h!_if#cWBh}f+V08GKyg|$P#KTS&%=!+0a%}O${0$i)kn9@G!}En zv)_>s?glPiLbbx)xk(lD-QbY(OP3;MSXM5E*P&_`Zks2@46n|-h$Y2L7B)iH{GAAq19h5-y0q>d^oy^y+soJu9lXxAe%jcm?=pDLFEG2kla40e!5a}mpe zdL=WlZ=@U6{>g%5a+y-lx)01V-x;wh%F{=qy#XFEAqcd+m}_!lQ)-9iiOL%&G??t| z?&NSdaLqdPdbQs%y0?uIIHY7rw1EDxtQ=DU!i{)Dkn~c$LG5{rAUYM1j5*G@oVn9~ zizz{XH(nbw%f|wI=4rw^6mNIahQpB)OQy10^}ACdLPFc2@ldVi|v@1nWLND?)53O5|fg`RZW&XpF&s3@c-R?aad!$WoH6u0B|}zt)L($E^@U- zO#^fxu9}Zw7Xl~nG1FVM6DZSR0*t!4IyUeTrnp@?)Z)*!fhd3)&s(O+3D^#m#bAem zpf#*aiG_0S^ofpm@9O7j`VfLU0+{$x!u^}3!zp=XST0N@DZTp!7LEVJgqB1g{psNr za0uVmh3_9qah14@M_pi~vAZ#jc*&aSm$hCNDsuQ-zPe&*Ii#2=2gP+DP4=DY z_Y0lUsyE6yaV9)K)!oI6+*4|spx2at*30CAx~6-5kfJzQ`fN8$!lz%hz^J6GY?mVH zbYR^JZ(Pmj6@vy-&!`$5soyy-NqB^8cCT40&R@|6s@m+ZxPs=Bu77-+Os7+bsz4nA3DrJ8#{f98ZMaj-+BD;M+Jk?pgFcZIb}m9N z{ct9T)Kye&2>l^39O4Q2@b%sY?u#&O9PO4@t0c$NUXG}(DZJ<;_oe2~e==3Z1+`Zo zFrS3ns-c}ZognVBHbg#e+1JhC(Yq7==rSJQ8J~}%94(O#_-zJKwnBXihl#hUd9B_>+T& z7eHHPRC?5ONaUiCF7w|{J`bCWS7Q&xw-Sa={j-f)n5+I=9s;E#fBQB$`DDh<^mGiF zu-m_k+)dkBvBO(VMe2O4r^sf3;sk9K!xgXJU>|t9Vm8Ty;fl5pZzw z9j|}ZD}6}t;20^qrS?YVPuPRS<39d^y0#O1o_1P{tN0?OX!lc-ICcHI@2#$cY}_CY zev|xdFcRTQ_H)1fJ7S0*SpPs8e{d+9lR~IZ^~dKx!oxz?=Dp!fD`H=LH{EeC8C&z-zK$e=!5z8NL=4zx2{hl<5z*hEmO=b-7(k5H`bA~5gT30Sjy`@-_C zKM}^so9Ti1B;DovHByJkTK87cfbF16sk-G>`Q4-txyMkyQS$d}??|Aytz^;0GxvOs zPgH>h>K+`!HABVT{sYgzy3CF5ftv6hI-NRfgu613d|d1cg^jh+SK7WHWaDX~hlIJ3 z>%WxKT0|Db1N-a4r1oPKtF--^YbP=8Nw5CNt_ZnR{N(PXI>Cm$eqi@_IRmJ9#)~ZHK_UQ8mi}w^`+4$OihUGVz!kW^qxnCFo)-RIDbA&k-Y=+*xYv5y4^VQ9S)4W5Pe?_RjAX6lS6Nz#!Hry=+PKx2|o_H_3M`}Dq{Bl_PbP(qel~P@=m}VGW*pK96 zI@fVag{DZHi}>3}<(Hv<7cVfWiaVLWr@WWxk5}GDEbB<+Aj;(c>;p1qmyAIj+R!`@#jf$ zy4`q23L-72Zs4j?W+9lQD;CYIULt%;O3jPWg2a%Zs!5OW>5h1y{Qof!p&QxNt5=T( zd5fy&7=hyq;J8%86YBOdc$BbIFxJx>dUyTh`L z-oKa=OhRK9UPVRWS`o2x53bAv+py)o)kNL6 z9W1Dlk-g6Ht@-Z^#6%`9S9`909^EMj?9R^4IxssCY-hYzei^TLq7Cj>z$AJyaU5=z zl!xiWvz0U8kY$etrcp8mL;sYqGZD!Hs-U2N{A|^oEKA482v1T%cs%G@X9M?%lX)p$ zZoC7iYTPe8yxY0Jne|s)fCRe1mU=Vb1J_&WcIyP|x4$;VSVNC`M+e#oOA`#h>pyU6 z?7FeVpk`Hsu`~T3i<_4<5fu?RkhM;@LjKo6nX>pa%8dSdgPO9~Jze;5r>Tb1Xqh5q z&SEdTXevV@PT~!O6z|oypTk7Qq+BNF5IQ(8s18c=^0@sc8Gi|3e>VKCsaZ?6=rrck zl@oF5Bd0zH?@15PxSJIRroK4Wa?1o;An;p0#%ZJ^tI=(>AJ2OY0GP$E_3(+Zz4$AQ zW)QWl<4toIJ5TeF&gNXs>_rl}glkeG#GYbHHOv-G!%dJNoIKxn)FK$5&2Zv*AFic! z@2?sY&I*PSfZ8bU#c9fdIJQa_cQijnj39-+hS@+~e*5W3bj%A}%p9N@>*tCGOk+cF zlcSzI6j%Q|2e>QG3A<86w?cx6sBtLNWF6_YR?~C)IC6_10SNoZUHrCpp6f^*+*b8` zlx4ToZZuI0XW1W)24)92S)y0QZa);^NRTX6@gh8@P?^=#2dV9s4)Q@K+gnc{6|C}& zDLHr7nDOLrsH)L@Zy{C_2UrYdZ4V{|{c8&dRG;wY`u>w%$*p>PO_}3`Y21pk?8Wtq zGwIXTulf7AO2FkPyyh2TZXM1DJv>hI`}x`OzQI*MBc#=}jaua&czSkI2!s^rOci|V zFkp*Vbiz5vWa9HPFXMi=BV&n3?1?%8#1jq?p^3wAL`jgcF)7F4l<(H^!i=l-(OTDE zxf2p71^WRIExLf?ig0FRO$h~aA23s#L zuZPLkm>mDwBeIu*C7@n@_$oSDmdWY7*wI%aL73t~`Yu7YwE-hxAATmOi0dmB9|D5a zLsR7OQcA0`vN9m0L|5?qZ|jU+cx3_-K2!K$zDbJ$UinQy<9nd5ImWW5n^&=Gg>Gsh zY0u?m1e^c~Ug39M{{5q2L~ROq#c{eG8Oy#5h_q=#AJj2Yops|1C^nv0D1=fBOdfAG z%>=vl*+_w`&M7{qE#$xJJp_t>bSh7Mpc(RAvli9kk3{KgG5K@a-Ue{IbU{`umXrR3ra5Y7xiX42+Q%N&-0#`ae_ z#$Y6Wa++OPEDw@96Zz##PFo9sADepQe|hUy!Zzc2C(L`k9&=a8XFr+!hIS>D2{pdGP1SzwyaGLiH3j--P>U#TWw90t8{8Bt%m7Upspl#=*hS zhy|(XL6HOqBW}Og^tLX7 z+`b^L{O&oqjwbxDDTg2B;Yh2(fW>%S5Pg8^u1p*EFb z`(fbUM0`afawYt%VBfD&b3MNJ39~Ldc@SAuzsMiN%E}5{uUUBc7hc1IUE~t-Y9h@e7PC|sv$xGx=hZiMXNJxz5V(np%6u{n24iWX#!8t#>Ob$in<>dw96H)oGdTHnU zSM+BPss*5)Wz@+FkooMxxXZP1{2Nz7a6BB~-A_(c&OiM)UUNoa@J8FGxtr$)`9;|O z(Q?lq1Q+!E`}d?KemgC!{nB1JJ!B>6J@XGQp9NeQvtbM2n7F%v|IS=XWPVZY(>oq$ zf=}8O_x`KOxZoGnp=y24x}k6?gl_0dTF!M!T`={`Ii{GnT1jrG9gPh)R=RZG8lIR| z{ZJ6`x8n|y+lZuy${fuEDTAf`OP!tGySLXD}ATJO5UoZv|Xo3%7O~L63+kw}v)Ci=&tWx3bQJfL@5O18CbPlkR^IcKA zy1=^Vl-K-QBP?9^R`@;czcUw;Enbbyk@vJQB>BZ4?;DM%BUf^eZE+sOy>a){qCY6Y znYy;KGpch-zf=5|p#SoAV+ie8M5(Xg-{FoLx-wZC9IutT!(9rJ8}=!$!h%!J+vE2e z(sURwqCC35v?1>C1L)swfA^sr16{yj7-zbT6Rf26-JoEt%U?+|rQ zeBuGohE?@*!zR9)1P|3>KmJSgK*fOt>N>j}LJB`>o(G#Dduvx7@DY7};W7K;Yj|8O zGF<+gTuoIKe7Rf+LQG3-V1L^|E;F*}bQ-{kuHq}| ze_NwA7~US19sAZ)@a`g*zkl*ykv2v3tPrb4Og2#?k6Lc7@1I~+ew48N&03hW^1Cx+ zfk5Lr4-n=#HYg<7ka5i>2A@ZeJ60gl)IDX!!p zzfXZQ?GrT>JEKl7$SH!otzK6=0dIlqN)c23YLB&Krf9v-{@V8p+-e2`ujFR!^M%*; ze_7(Jh$QgoqwB!HbX=S+^wqO15O_TQ0-qX8f-|&SOuo3ZE{{9Jw5{}>MhY}|GBhO& zv48s_B=9aYQfa;d>~1Z$y^oUUaDer>7ve5+Gf?rIG4GZ!hRKERlRNgg_C{W_!3tsI2TWbX8f~MY)1Q`6Wj&JJ~*;ay_0@e zzx+mE-pu8{cEcVfBqsnm=jFU?H}xj@%CAx#NO>3 z_re3Rq%d1Y7VkKy{=S73&p;4^Praw6Y59VCP6M?!Kt7{v#DG#tz?E)`K95gH_mEvb z%$<~_mQ$ad?~&T=O0i0?`YSp?E3Dj?V>n+uTRHAXn`l!pH9Mr}^D1d@mkf+;(tV45 zH_yfs^kOGLXlN*0GU;O&{=awxd?&`{JPRr$z<1HcAO2K`K}92$wC}ky&>;L?#!(`w z68avZGvb728!vgw>;8Z8I@mLtI`?^u6R>sK4E7%=y)jpmE$fH!Dj*~(dy~-2A5Cm{ zl{1AZw`jaDmfvaB?jvKwz!GC}@-Dz|bFm1OaPw(ia#?>vF7Y5oh{NVbyD~cHB1KFn z9C@f~X*Wk3>sQH9#D~rLPslAd26@AzMh=_NkH_yTNXx6-AdbAb z{Ul89YPHslD?xAGzOlQ*aMYUl6#efCT~WI zOvyiewT=~l1W(_2cEd(8rDywOwjM-7P9!8GCL-1<9KXXO=6%!9=W++*l1L~gRSxLVd8K=A7&t52ql=J&BMQu{fa6y zXO_e>d?4X)xp2V8e3xIQGbq@+vo#&n>-_WreTTW0Yr?|YRPP43cDYACMQ(3t6(?_k zfgDOAU^-pew_f5U#WxRXB30wcfDS3;k~t@b@w^GG&<5n$Ku?tT(%bQH(@UHQGN)N|nfC~7?(etU`}XB)$>KY;s=bYGY#kD%i9fz= z2nN9l?UPMKYwn9bX*^xX8Y@%LNPFU>s#Ea1DaP%bSioqRWi9JS28suTdJycYQ+tW7 zrQ@@=13`HS*dVKaVgcem-45+buD{B;mUbY$YYULhxK)T{S?EB<8^YTP$}DA{(&)@S zS#<8S96y9K2!lG^VW-+CkfXJIH;Vo6wh)N}!08bM$I7KEW{F6tqEQ?H@(U zAqfi%KCe}2NUXALo;UN&k$rU0BLNC$24T_mcNY(a@lxR`kqNQ0z%8m>`&1ro40HX} z{{3YQ;2F9JnVTvDY<4)x+88i@MtXE6TBd7POk&QfKU-F&*C`isS(T_Q@}K)=zW#K@ zbXpcAkTT-T5k}Wj$dMZl7=GvlcCMt}U`#Oon1QdPq%>9J$rKTY8#OmlnNWBYwafhx zqFnym@okL#Xw>4SeRFejBnZzY$jbO)e^&&sHBgMP%Ygfi!9_3hp17=AwLBNFTimf0 zw6BHNXw19Jg_Ud6`5n#gMpqe%9!QB^_7wAYv8nrW94A{*t8XZu0UT&`ZHfkd(F{Px zD&NbRJP#RX<=+sEeGs2`9_*J2OlECpR;4uJie-d__m*(aaGE}HIo+3P{my@;a~9Y$ zHBXVJ83#&@o6{M+pE9^lI<4meLLFN_3rwgR4IRyp)~OF0n+#ORrcJ2_On9-78bWbG zuCO0esc*n1X3@p1?lN{qWS?l7J$^jbpeel{w~51*0CM+q9@9X=>%MF(ce~om(}?td zjkUmdUR@LOn-~6LX#=@a%rvj&>DFEoQscOvvC@&ZB5jVZ-;XzAshwx$;Qf@U41W=q zOSSjQGQV8Qi3*4DngNMIM&Cxm7z*-K`~Bl(TcEUxjQ1c=?)?wF8W1g;bAR%sM#LK( z_Op?=P%)Z+J!>vpN`By0$?B~Out%P}kCriDq@}In&fa_ZyKV+nLM0E?hfxuu%ciUz z>yAk}OydbWNl7{)#112j&qmw;*Uj&B;>|;Qwfc?5wIYIHH}s6Mve@5c5r+y)jK9i( z_}@uC(98g)==AGkVN?4>o@w=7x9qhW^ zB(b5%%4cHSV?3M?k&^py)j*LK16T^Ef4tb05-h-tyrjt$5!oo4spEfXFK7r_Gfv7#x$bsR7T zs;dqxzUg9v&GjsQGKTP*=B(;)be2aN+6>IUz+Hhw-n>^|`^xu*xvjGPaDoFh2W4-n z@Wji{5Y$m>@Vt7TE_QVQN4*vcfWv5VY-dT0SV=l=8LAEq1go*f zkjukaDV=3kMAX6GAf0QOQHwP^{Z^=#Lc)sh`QB)Ftl&31jABvq?8!3bt7#8vxB z53M{4{GR4Hl~;W3r}PgXSNOt477cO62Yj(HcK&30zsmWpvAplCtpp&mC{`2Ue*Bwu zF&UX1;w%`Bs1u%RtGPFl=&sHu@Q1nT`z={;5^c^^S~^?2-?<|F9RT*KQmfgF!7=wD@hytxbD;=9L6PZrK*1<4HMObNWehA62DtTy)q5H|57 z9dePuC!1;0MMRRl!S@VJ8qG=v^~aEU+}2Qx``h1LII!y{crP2ky*R;Cb;g|r<#ryo zju#s4dE?5CTIZKc*O4^3qWflsQ(voX>(*_JP7>Q&$%zCAIBTtKC^JUi@&l6u&t0hXMXjz_y!;r@?k|OU9aD%938^TZ>V? zqJmom_6dz4DBb4Cgs_Ef@}F%+cRCR%UMa9pi<-KHN;t#O@cA%(LO1Rb=h?5jiTs93 zPLR78p+3t>z4|j=<>2i4b`ketv}9Ax#B0)hn7@bFl;rDfP8p7u9XcEb!5*PLKB(s7wQC2kzI^@ae)|DhNDmSy1bOLid%iIap@24A(q2XI!z_hkl-$1T10 z+KKugG4-}@u8(P^S3PW4x>an;XWEF-R^gB{`t8EiP{ZtAzoZ!JRuMRS__-Gg#Qa3{<;l__CgsF+nfmFNi}p z>rV!Y6B@cC>1up)KvaEQiAvQF!D>GCb+WZsGHjDeWFz?WVAHP65aIA8u6j6H35XNYlyy8>;cWe3ekr};b;$9)0G`zsc9LNsQ&D?hvuHRpBxH)r-1t9|Stc*u<}Ol&2N+wPMom}d15_TA=Aprp zjN-X3*Af$7cDWMWp##kOH|t;c2Pa9Ml4-)o~+7P;&q8teF-l}(Jt zTGKOQqJTeT!L4d}Qw~O0aanA$Vn9Rocp-MO4l*HK)t%hcp@3k0%&_*wwpKD6ThM)R z8k}&7?)YS1ZYKMiy?mn>VXiuzX7$Ixf7EW8+C4K^)m&eLYl%#T=MC;YPvD&w#$MMf zQ=>`@rh&&r!@X&v%ZlLF42L_c=5dSU^uymKVB>5O?AouR3vGv@ei%Z|GX5v1GK2R* zi!!}?+-8>J$JH^fPu@)E6(}9$d&9-j51T^n-e0Ze%Q^)lxuex$IL^XJ&K2oi`wG}QVGk2a7vC4X?+o^z zsCK*7`EUfSuQA*K@Plsi;)2GrayQOG9OYF82Hc@6aNN5ulqs1Of-(iZQdBI^U5of^ zZg2g=Xtad7$hfYu6l~KDQ}EU;oIj(3nO#u9PDz=eO3(iax7OCmgT2p_7&^3q zg7aQ;Vpng*)kb6=sd5?%j5Dm|HczSChMo8HHq_L8R;BR5<~DVyU$8*Tk5}g0eW5x7 z%d)JFZ{(Y<#OTKLBA1fwLM*fH7Q~7Sc2Ne;mVWqt-*o<;| z^1@vo_KTYaMnO$7fbLL+qh#R$9bvnpJ$RAqG+z8h|} z3F5iwG*(sCn9Qbyg@t0&G}3fE0jGq3J!JmG2K&$urx^$z95) z7h?;4vE4W=v)uZ*Eg3M^6f~|0&T)2D;f+L_?M*21-I1pnK(pT$5l#QNlT`SidYw~o z{`)G)Asv#cue)Ax1RNWiRUQ(tQ(bzd-f2U4xlJK+)ZWBxdq#fp=A>+Qc%-tl(c)`t z$e2Ng;Rjvnbu7((;v4LF9Y1?0el9hi!g>G{^37{ z`^s-03Z5jlnD%#Mix19zkU_OS|86^_x4<0(*YbPN}mi-$L?Z4K(M|2&VV*n*ZYN_UqI?eKZi3!b)i z%n3dzUPMc-dc|q}TzvPy!VqsEWCZL(-eURDRG4+;Eu!LugSSI4Fq$Ji$Dp08`pfP_C5Yx~`YKcywlMG;$F z)R5!kVml_Wv6MSpeXjG#g?kJ0t_MEgbXlUN3k|JJ%N>|2xn8yN>>4qxh!?dGI}s|Y zDTKd^JCrRSN+%w%D_uf=Tj6wIV$c*g8D96jb^Kc#>5Fe-XxKC@!pIJw0^zu;`_yeb zhUEm-G*C=F+jW%cP(**b61fTmPn2WllBr4SWNdKe*P8VabZsh0-R|?DO=0x`4_QY) zR7sthW^*BofW7{Sak&S1JdiG?e=SfL24Y#w_)xrBVhGB-13q$>mFU|wd9Xqe-o3{6 zSn@@1@&^)M$rxb>UmFuC+pkio#T;mSnroMVZJ%nZ!uImi?%KsIX#@JU2VY(`kGb1A z7+1MEG)wd@)m^R|a2rXeviv$!emwcY(O|M*xV!9%tBzarBOG<4%gI9SW;Um_gth4=gznYzOFd)y8e+3APCkL)i-OI`;@7-mCJgE`js(M} z;~ZcW{{FMVVO)W>VZ}ILouF#lWGb%Couu}TI4kubUUclW@jEn6B_^v!Ym*(T*4HF9 zWhNKi8%sS~viSdBtnrq!-Dc5(G^XmR>DFx8jhWvR%*8!m*b*R8e1+`7{%FACAK`7 zzdy8TmBh?FVZ0vtw6npnWwM~XjF2fNvV#ZlGG z?FxHkXHN>JqrBYoPo$)zNC7|XrQfcqmEXWud~{j?La6@kbHG@W{xsa~l1=%eLly8B z4gCIH05&Y;6O2uFSopNqP|<$ml$N40^ikxw0`o<~ywS1(qKqQN!@?Ykl|bE4M?P+e zo$^Vs_+x)iuw?^>>`$&lOQOUkZ5>+OLnRA)FqgpDjW&q*WAe(_mAT6IKS9;iZBl8M z<@=Y%zcQUaSBdrs27bVK`c$)h6A1GYPS$y(FLRD5Yl8E3j0KyH08#8qLrsc_qlws; znMV%Zq8k+&T2kf%6ZO^2=AE9>?a587g%-={X}IS~P*I(NeCF9_9&`)|ok0iiIun zo+^odT0&Z4k;rn7I1v87=z!zKU(%gfB$(1mrRYeO$sbqM22Kq68z9wgdg8HBxp>_< zn9o%`f?sVO=IN#5jSX&CGODWlZfQ9A)njK2O{JutYwRZ?n0G_p&*uwpE`Md$iQxrd zoQfF^b8Ou)+3BO_3_K5y*~?<(BF@1l+@?Z6;^;U>qlB)cdro;rxOS1M{Az$s^9o5sXDCg8yD<=(pKI*0e zLk>@lo#&s0)^*Q+G)g}C0IErqfa9VbL*Qe=OT@&+N8m|GJF7jd83vY#SsuEv2s{Q> z>IpoubNs>D_5?|kXGAPgF@mb_9<%hjU;S0C8idI)a=F#lPLuQJ^7OnjJlH_Sks9JD zMl1td%YsWq3YWhc;E$H1<0P$YbSTqs`JKY%(}svsifz|h8BHguL82dBl+z0^YvWk8 zGy;7Z0v5_FJ2A$P0wIr)lD?cPR%cz>kde!=W%Ta^ih+Dh4UKdf7ip?rBz@%y2&>`6 zM#q{JXvW9ZlaSk1oD!n}kSmcDa2v6T^Y-dy+#fW^y>eS8_%<7tWXUp8U@s$^{JFfKMjDAvR z$YmVB;n3ofl!ro9RNT!TpQpcycXCR}$9k5>IPWDXEenQ58os?_weccrT+Bh5sLoiH zZ_7~%t(vT)ZTEO= zb0}@KaD{&IyK_sd8b$`Qz3%UA`nSo zn``!BdCeN!#^G;lK@G2ron*0jQhbdw)%m$2;}le@z~PSLnU-z@tL)^(p%P>OO^*Ff zNRR9oQ`W+x^+EU+3BpluwK77|B3=8QyT|$V;02bn_LF&3LhLA<#}{{)jE)}CiW%VEU~9)SW+=F%7U-iYlQ&q!#N zwI2{(h|Pi&<8_fqvT*}FLN^0CxN}#|3I9G_xmVg$gbn2ZdhbmGk7Q5Q2Tm*ox8NMo zv`iaZW|ZEOMyQga5fts?&T-eCCC9pS0mj7v0SDkD=*^MxurP@89v&Z#3q{FM!a_nr zb?KzMv`BBFOew>4!ft@A&(v-kWXny-j#egKef|#!+3>26Qq0 zv!~8ev4G`7Qk>V1TaMT-&ziqoY3IJp8_S*%^1j73D|=9&;tDZH^!LYFMmME4*Wj(S zRt~Q{aLb_O;wi4u&=}OYuj}Lw*j$@z*3>4&W{)O-oi@9NqdoU!=U%d|se&h?^$Ip# z)BY+(1+cwJz!yy4%l(aLC;T!~Ci>yAtXJb~b*yr&v7f{YCU8P|N1v~H`xmGsG)g)y z4%mv=cPd`s7a*#OR7f0lpD$ueP>w8qXj0J&*7xX+U!uat5QNk>zwU$0acn5p=$88L=jn_QCSYkTV;1~(yUem#0gB`FeqY98sf=>^@ z_MCdvylv~WL%y_%y_FE1)j;{Szj1+K7Lr_y=V+U zk6Tr;>XEqlEom~QGL!a+wOf(@ZWoxE<$^qHYl*H1a~kk^BLPn785%nQb$o;Cuz0h& za9LMx^bKEbPS%e8NM33Jr|1T|ELC(iE!FUci38xW_Y7kdHid#2ie+XZhP;2!Z;ZAM zB_cXKm)VrPK!SK|PY00Phwrpd+x0_Aa;}cDQvWKrwnQrqz##_gvHX2ja?#_{f#;bz`i>C^^ zTLDy;6@HZ~XQi7rph!mz9k!m;KchA)uMd`RK4WLK7)5Rl48m#l>b(#`WPsl<0j z-sFkSF6>Nk|LKnHtZ`W_NnxZP62&w)S(aBmmjMDKzF%G;3Y?FUbo?>b5;0j8Lhtc4 zr*8d5Y9>g@FFZaViw7c16VsHcy0u7M%6>cG1=s=Dtx?xMJSKIu9b6GU8$uSzf43Y3 zYq|U+IWfH;SM~*N1v`KJo!|yfLxTFS?oHsr3qvzeVndVV^%BWmW6re_S!2;g<|Oao z+N`m#*i!)R%i1~NO-xo{qpwL0ZrL7hli;S z3L0lQ_z}z`fdK39Mg~Zd*%mBdD;&5EXa~@H(!###L`ycr7gW`f)KRuqyHL3|uyy3h zSS^td#E&Knc$?dXs*{EnPYOp^-vjAc-h4z#XkbG&REC7;0>z^^Z}i8MxGKerEY z>l?(wReOlXEsNE5!DO&ZWyxY)gG#FSZs%fXuzA~XIAPVp-%yb2XLSV{1nH6{)5opg z(dZKckn}Q4Li-e=eUDs1Psg~5zdn1>ql(*(nn6)iD*OcVkwmKL(A{fix(JhcVB&}V zVt*Xb!{gzvV}dc446>(D=SzfCu7KB`oMjv6kPzSv&B>>HLSJP|wN`H;>oRw*tl#N) z*zZ-xwM7D*AIsBfgqOjY1Mp9aq$kRa^dZU_xw~KxP;|q(m+@e+YSn~`wEJzM|Ippb zzb@%;hB7iH4op9SqmX?j!KP2chsb79(mFossBO-Zj8~L}9L%R%Bw<`^X>hjkCY5SG z7lY!8I2mB#z)1o;*3U$G)3o0A&{0}#B;(zPd2`OF`Gt~8;0Re8nIseU z_yzlf$l+*-wT~_-cYk$^wTJ@~7i@u(CZs9FVkJCru<*yK8&>g+t*!JqCN6RH%8S-P zxH8+Cy#W?!;r?cLMC(^BtAt#xPNnwboI*xWw#T|IW^@3|q&QYY6Ehxoh@^URylR|T zne-Y6ugE^7p5bkRDWIh)?JH5V^ub82l-LuVjDr7UT^g`q4dB&mBFRWGL_C?hoeL(% zo}ocH5t7|1Mda}T!^{Qt9vmA2ep4)dQSZO>?Eq8}qRp&ZJ?-`Tnw+MG(eDswP(L*X3ahC2Ad0_wD^ff9hfzb%Jd`IXx5 zae@NMzBXJDwJS?7_%!TB^E$N8pvhOHDK$7YiOelTY`6KX8hK6YyT$tk*adwN>s^Kp zwM3wGVPhwKU*Yq-*BCs}l`l#Tej(NQ>jg*S0TN%D+GcF<14Ms6J`*yMY;W<-mMN&-K>((+P}+t+#0KPGrzjP zJ~)=Bcz%-K!L5ozIWqO(LM)l_9lVOc4*S65&DKM#TqsiWNG{(EZQw!bc>qLW`=>p-gVJ;T~aN2D_- z{>SZC=_F+%hNmH6ub%Ykih0&YWB!%sd%W5 zHC2%QMP~xJgt4>%bU>%6&uaDtSD?;Usm}ari0^fcMhi_)JZgb1g5j zFl4`FQ*%ROfYI}e7RIq^&^a>jZF23{WB`T>+VIxj%~A-|m=J7Va9FxXV^%UwccSZd zuWINc-g|d6G5;95*%{e;9S(=%yngpfy+7ao|M7S|Jb0-4+^_q-uIqVS&ufU880UDH*>(c)#lt2j zzvIEN>>$Y(PeALC-D?5JfH_j+O-KWGR)TKunsRYKLgk7eu4C{iF^hqSz-bx5^{z0h ze2+u>Iq0J4?)jIo)}V!!m)%)B;a;UfoJ>VRQ*22+ncpe9f4L``?v9PH&;5j{WF?S_C>Lq>nkChZB zjF8(*v0c(lU^ZI-)_uGZnnVRosrO4`YinzI-RSS-YwjYh3M`ch#(QMNw*)~Et7Qpy z{d<3$4FUAKILq9cCZpjvKG#yD%-juhMj>7xIO&;c>_7qJ%Ae8Z^m)g!taK#YOW3B0 zKKSMOd?~G4h}lrZbtPk)n*iOC1~mDhASGZ@N{G|dF|Q^@1ljhe=>;wusA&NvY*w%~ zl+R6B^1yZiF)YN>0ms%}qz-^U-HVyiN3R9k1q4)XgDj#qY4CE0)52%evvrrOc898^ z*^)XFR?W%g0@?|6Mxo1ZBp%(XNv_RD-<#b^?-Fs+NL^EUW=iV|+Vy*F%;rBz~pN7%-698U-VMfGEVnmEz7fL1p)-5sLT zL;Iz>FCLM$p$c}g^tbkGK1G$IALq1Gd|We@&TtW!?4C7x4l*=4oF&&sr0Hu`x<5!m zhX&&Iyjr?AkNXU_5P_b^Q3U9sy#f6ZF@2C96$>1k*E-E%DjwvA{VL0PdU~suN~DZo zm{T!>sRdp`Ldpp9olrH@(J$QyGq!?#o1bUo=XP2OEuT3`XzI>s^0P{manUaE4pI%! zclQq;lbT;nx7v3tR9U)G39h?ryrxzd0xq4KX7nO?piJZbzT_CU&O=T(Vt;>jm?MgC z2vUL#*`UcMsx%w#vvjdamHhmN!(y-hr~byCA-*iCD};#l+bq;gkwQ0oN=AyOf@8ow>Pj<*A~2*dyjK}eYdN);%!t1 z6Y=|cuEv-|5BhA?n2Db@4s%y~(%Wse4&JXw=HiO48%c6LB~Z0SL1(k^9y?ax%oj~l zf7(`iAYLdPRq*ztFC z7VtAb@s{as%&Y;&WnyYl+6Wm$ru*u!MKIg_@01od-iQft0rMjIj8e7P9eKvFnx_X5 zd%pDg-|8<>T2Jdqw>AII+fe?CgP+fL(m0&U??QL8YzSjV{SFi^vW~;wN@or_(q<0Y zRt~L}#JRcHOvm$CB)T1;;7U>m%)QYBLTR)KTARw%zoDxgssu5#v{UEVIa<>{8dtkm zXgbCGp$tfue+}#SD-PgiNT{Zu^YA9;4BnM(wZ9-biRo_7pN}=aaimjYgC=;9@g%6< zxol5sT_$<8{LiJ6{l1+sV)Z_QdbsfEAEMw!5*zz6)Yop?T0DMtR_~wfta)E6_G@k# zZRP11D}$ir<`IQ`<(kGfAS?O-DzCyuzBq6dxGTNNTK?r^?zT30mLY!kQ=o~Hv*k^w zvq!LBjW=zzIi%UF@?!g9vt1CqdwV(-2LYy2=E@Z?B}JDyVkluHtzGsWuI1W5svX~K z&?UJ45$R7g>&}SFnLnmw09R2tUgmr_w6mM9C}8GvQX>nL&5R#xBqnp~Se(I>R42`T zqZe9p6G(VzNB3QD><8+y%{e%6)sZDRXTR|MI zM#eZmao-~_`N|>Yf;a;7yvd_auTG#B?Vz5D1AHx=zpVUFe7*hME z+>KH5h1In8hsVhrstc>y0Q!FHR)hzgl+*Q&5hU9BVJlNGRkXiS&06eOBV^dz3;4d5 zeYX%$62dNOprZV$px~#h1RH?_E%oD6y;J;pF%~y8M)8pQ0olYKj6 zE+hd|7oY3ot=j9ZZ))^CCPADL6Jw%)F@A{*coMApcA$7fZ{T@3;WOQ352F~q6`Mgi z$RI6$8)a`Aaxy<8Bc;{wlDA%*%(msBh*xy$L-cBJvQ8hj#FCyT^%+Phw1~PaqyDou^JR0rxDkSrmAdjeYDFDZ`E z)G3>XtpaSPDlydd$RGHg;#4|4{aP5c_Om z2u5xgnhnA)K%8iU==}AxPxZCYC)lyOlj9as#`5hZ=<6<&DB%i_XCnt5=pjh?iusH$ z>)E`@HNZcAG&RW3Ys@`Ci{;8PNzE-ZsPw$~Wa!cP$ye+X6;9ceE}ah+3VY7Mx}#0x zbqYa}eO*FceiY2jNS&2cH9Y}(;U<^^cWC5Ob&)dZedvZA9HewU3R;gRQ)}hUdf+~Q zS_^4ds*W1T#bxS?%RH&<739q*n<6o|mV;*|1s>ly-Biu<2*{!!0#{_234&9byvn0* z5=>{95Zfb{(?h_Jk#ocR$FZ78O*UTOxld~0UF!kyGM|nH%B*qf)Jy}N!uT9NGeM19 z-@=&Y0yGGo_dw!FD>juk%P$6$qJkj}TwLBoefi;N-$9LAeV|)|-ET&culW9Sb_pc_ zp{cXI0>I0Jm_i$nSvGnYeLSSj{ccVS2wyL&0x~&5v;3Itc82 z5lIAkfn~wcY-bQB$G!ufWt%qO;P%&2B_R5UKwYxMemIaFm)qF1rA zc>gEihb=jBtsXCi0T%J37s&kt*3$s7|6)L(%UiY)6axuk{6RWIS8^+u;)6!R?Sgap z9|6<0bx~AgVi|*;zL@2x>Pbt2Bz*uv4x-`{F)XatTs`S>unZ#P^ZiyjpfL_q2z^fqgR-fbOcG=Y$q>ozkw1T6dH8-)&ww+z?E0 zR|rV(9bi6zpX3Ub>PrPK!{X>e$C66qCXAeFm)Y+lX8n2Olt7PNs*1^si)j!QmFV#t z0P2fyf$N^!dyTot&`Ew5{i5u<8D`8U`qs(KqaWq5iOF3x2!-z65-|HsyYz(MAKZ?< zCpQR;E)wn%s|&q(LVm0Ab>gdmCFJeKwVTnv@Js%!At;I=A>h=l=p^&<4;Boc{$@h< z38v`3&2wJtka@M}GS%9!+SpJ}sdtoYzMevVbnH+d_eMxN@~~ zZq@k)7V5f8u!yAX2qF3qjS7g%n$JuGrMhQF!&S^7(%Y{rP*w2FWj(v_J{+Hg*}wdWOd~pHQ19&n3RWeljK9W%sz&Y3Tm3 zR`>6YR54%qBHGa)2xbs`9cs_EsNHxsfraEgZ)?vrtooeA0sPKJK7an){ngtV@{SBa zkO6ORr1_Xqp+`a0e}sC*_y(|RKS13ikmHp3C^XkE@&wjbGWrt^INg^9lDz#B;bHiW zkK4{|cg08b!yHFSgPca5)vF&gqCgeu+c82%&FeM^Bb}GUxLy-zo)}N;#U?sJ2?G2BNe*9u_7kE5JeY!it=f`A_4gV3} z`M!HXZy#gN-wS!HvHRqpCHUmjiM;rVvpkC!voImG%OFVN3k(QG@X%e``VJSJ@Z7tb z*Onlf>z^D+&$0!4`IE$;2-NSO9HQWd+UFW(r;4hh;(j^p4H-~6OE!HQp^96v?{9Zt z;@!ZcccV%C2s6FMP#qvo4kG6C04A>XILt>JW}%0oE&HM5f6 zYLD!;My>CW+j<~=Wzev{aYtx2ZNw|ptTFV(4;9`6Tmbz6K1)fv4qPXa2mtoPt&c?P zhmO+*o8uP3ykL6E$il00@TDf6tOW7fmo?Oz_6GU^+5J=c22bWyuH#aNj!tT-^IHrJ zu{aqTYw@q;&$xDE*_kl50Jb*dp`(-^p={z}`rqECTi~3 z>0~A7L6X)=L5p#~$V}gxazgGT7$3`?a)zen>?TvAuQ+KAIAJ-s_v}O6@`h9n-sZk> z`3{IJeb2qu9w=P*@q>iC`5wea`KxCxrx{>(4{5P+!cPg|pn~;n@DiZ0Y>;k5mnKeS z!LIfT4{Lgd=MeysR5YiQKCeNhUQ;Os1kAymg6R!u?j%LF z4orCszIq_n52ulpes{(QN|zirdtBsc{9^Z72Ycb2ht?G^opkT_#|4$wa9`)8k3ilU z%ntAi`nakS1r10;#k^{-ZGOD&Z2|k=p40hRh5D7(&JG#Cty|ECOvwsSHkkSa)36$4 z?;v#%@D(=Raw(HP5s>#4Bm?f~n1@ebH}2tv#7-0l-i^H#H{PC|F@xeNS+Yw{F-&wH z07)bj8MaE6`|6NoqKM~`4%X> zKFl&7g1$Z3HB>lxn$J`P`6GSb6CE6_^NA1V%=*`5O!zP$a7Vq)IwJAki~XBLf=4TF zPYSL}>4nOGZ`fyHChq)jy-f{PKFp6$plHB2=;|>%Z^%)ecVue(*mf>EH_uO^+_zm? zJATFa9SF~tFwR#&0xO{LLf~@}s_xvCPU8TwIJgBs%FFzjm`u?1699RTui;O$rrR{# z1^MqMl5&6)G%@_k*$U5Kxq84!AdtbZ!@8FslBML}<`(Jr zenXrC6bFJP=R^FMBg7P?Pww-!a%G@kJH_zezKvuWU0>m1uyy}#Vf<$>u?Vzo3}@O% z1JR`B?~Tx2)Oa|{DQ_)y9=oY%haj!80GNHw3~qazgU-{|q+Bl~H94J!a%8UR?XsZ@ z0*ZyQugyru`V9b(0OrJOKISfi89bSVR zQy<+i_1XY}4>|D%X_`IKZUPz6=TDb)t1mC9eg(Z=tv zq@|r37AQM6A%H%GaH3szv1L^ku~H%5_V*fv$UvHl*yN4iaqWa69T2G8J2f3kxc7UE zOia@p0YNu_q-IbT%RwOi*|V|&)e5B-u>4=&n@`|WzH}BK4?33IPpXJg%`b=dr_`hU z8JibW_3&#uIN_#D&hX<)x(__jUT&lIH$!txEC@cXv$7yB&Rgu){M`9a`*PH} zRcU)pMWI2O?x;?hzR{WdzKt^;_pVGJAKKd)F$h;q=Vw$MP1XSd<;Mu;EU5ffyKIg+ z&n-Nb?h-ERN7(fix`htopPIba?0Gd^y(4EHvfF_KU<4RpN0PgVxt%7Yo99X*Pe|zR z?ytK&5qaZ$0KSS$3ZNS$$k}y(2(rCl=cuYZg{9L?KVgs~{?5adxS))Upm?LDo||`H zV)$`FF3icFmxcQshXX*1k*w3O+NjBR-AuE70=UYM*7>t|I-oix=bzDwp2*RoIwBp@r&vZukG; zyi-2zdyWJ3+E?{%?>e2Ivk`fAn&Ho(KhGSVE4C-zxM-!j01b~mTr>J|5={PrZHOgO zw@ND3=z(J7D>&C7aw{zT>GHhL2BmUX0GLt^=31RRPSnjoUO9LYzh_yegyPoAKhAQE z>#~O27dR4&LdQiak6={9_{LN}Z>;kyVYKH^d^*!`JVSXJlx#&r4>VnP$zb{XoTb=> zZsLvh>keP3fkLTIDdpf-@(ADfq4=@X=&n>dyU0%dwD{zsjCWc;r`-e~X$Q3NTz_TJ zOXG|LMQQIjGXY3o5tBm9>k6y<6XNO<=9H@IXF;63rzsC=-VuS*$E{|L_i;lZmHOD< zY92;>4spdeRn4L6pY4oUKZG<~+8U-q7ZvNOtW0i*6Q?H`9#U3M*k#4J;ek(MwF02x zUo1wgq9o6XG#W^mxl>pAD)Ll-V5BNsdVQ&+QS0+K+?H-gIBJ-ccB1=M_hxB6qcf`C zJ?!q!J4`kLhAMry4&a_0}up{CFevcjBl|N(uDM^N5#@&-nQt2>z*U}eJGi}m5f}l|IRVj-Q;a>wcLpK5RRWJ> zysdd$)Nv0tS?b~bw1=gvz3L_ZAIdDDPj)y|bp1;LE`!av!rODs-tlc}J#?erTgXRX z$@ph%*~_wr^bQYHM7<7=Q=45v|Hk7T=mDpW@OwRy3A_v`ou@JX5h!VI*e((v*5Aq3 zVYfB4<&^Dq5%^?~)NcojqK`(VXP$`#w+&VhQOn%;4pCkz;NEH6-FPHTQ+7I&JE1+Ozq-g43AEZV>ceQ^9PCx zZG@OlEF~!Lq@5dttlr%+gNjRyMwJdJU(6W_KpuVnd{3Yle(-p#6erIRc${l&qx$HA z89&sp=rT7MJ=DuTL1<5{)wtUfpPA|Gr6Q2T*=%2RFm@jyo@`@^*{5{lFPgv>84|pv z%y{|cVNz&`9C*cUely>-PRL)lHVErAKPO!NQ3<&l5(>Vp(MuJnrOf^4qpIa!o3D7( z1bjn#Vv$#or|s7Hct5D@%;@48mM%ISY7>7@ft8f?q~{s)@BqGiupoK1BAg?PyaDQ1 z`YT8{0Vz{zBwJ={I4)#ny{RP{K1dqzAaQN_aaFC%Z>OZ|^VhhautjDavGtsQwx@WH zr|1UKk^+X~S*RjCY_HN!=Jx>b6J8`Q(l4y|mc<6jnkHVng^Wk(A13-;AhawATsmmE#H%|8h}f1frs2x@Fwa_|ea+$tdG2Pz{7 z!ox^w^>^Cv4e{Xo7EQ7bxCe8U+LZG<_e$RnR?p3t?s^1Mb!ieB z#@45r*PTc_yjh#P=O8Zogo+>1#|a2nJvhOjIqKK1U&6P)O%5s~M;99O<|Y9zomWTL z666lK^QW`)cXV_^Y05yQZH3IRCW%25BHAM$c0>w`x!jh^15Zp6xYb!LoQ zr+RukTw0X2mxN%K0%=8|JHiaA3pg5+GMfze%9o5^#upx0M?G9$+P^DTx7~qq9$Qoi zV$o)yy zuUq>3c{_q+HA5OhdN*@*RkxRuD>Bi{Ttv_hyaaB;XhB%mJ2Cb{yL;{Zu@l{N?!GKE7es6_9J{9 zO(tmc0ra2;@oC%SS-8|D=omQ$-Dj>S)Utkthh{ovD3I%k}HoranSepC_yco2Q8 zY{tAuPIhD{X`KbhQIr%!t+GeH%L%q&p z3P%<-S0YY2Emjc~Gb?!su85}h_qdu5XN2XJUM}X1k^!GbwuUPT(b$Ez#LkG6KEWQB z7R&IF4srHe$g2R-SB;inW9T{@+W+~wi7VQd?}7||zi!&V^~o0kM^aby7YE_-B63^d zf_uo8#&C77HBautt_YH%v6!Q>H?}(0@4pv>cM6_7dHJ)5JdyV0Phi!)vz}dv{*n;t zf(+#Hdr=f8DbJqbMez)(n>@QT+amJ7g&w6vZ-vG^H1v~aZqG~u!1D(O+jVAG0EQ*aIsr*bsBdbD`)i^FNJ z&B@yxqPFCRGT#}@dmu-{0vp47xk(`xNM6E=7QZ5{tg6}#zFrd8Pb_bFg7XP{FsYP8 zbvWqG6#jfg*4gvY9!gJxJ3l2UjP}+#QMB(*(?Y&Q4PO`EknE&Cb~Yb@lCbk;-KY)n zzbjS~W5KZ3FV%y>S#$9Sqi$FIBCw`GfPDP|G=|y32VV-g@a1D&@%_oAbB@cAUx#aZ zlAPTJ{iz#Qda8(aNZE&0q+8r3&z_Ln)b=5a%U|OEcc3h1f&8?{b8ErEbilrun}mh3 z$1o^$-XzIiH|iGoJA`w`o|?w3m*NX|sd$`Mt+f*!hyJvQ2fS*&!SYn^On-M|pHGlu z4SC5bM7f6BAkUhGuN*w`97LLkbCx=p@K5RL2p>YpDtf{WTD|d3ucb6iVZ-*DRtoEA zCC5(x)&e=giR_id>5bE^l%Mxx>0@FskpCD4oq@%-Fg$8IcdRwkfn;DsjoX(v;mt3d z_4Mnf#Ft4x!bY!7Hz?RRMq9;5FzugD(sbt4up~6j?-or+ch~y_PqrM2hhTToJjR_~ z)E1idgt7EW>G*9%Q^K;o_#uFjX!V2pwfpgi>}J&p_^QlZki!@#dkvR`p?bckC`J*g z=%3PkFT3HAX2Q+dShHUbb1?ZcK8U7oaufLTCB#1W{=~k0Jabgv>q|H+GU=f-y|{p4 zwN|AE+YbCgx=7vlXE?@gkXW9PaqbO#GB=4$o0FkNT#EI?aLVd2(qnPK$Yh%YD%v(mdwn}bgsxyIBI^)tY?&G zi^2JfClZ@4b{xFjyTY?D61w@*ez2@5rWLpG#34id?>>oPg{`4F-l`7Lg@D@Hc}On} zx%BO4MsLYosLGACJ-d?ifZ35r^t*}wde>AAWO*J-X%jvD+gL9`u`r=kP zyeJ%FqqKfz8e_3K(M1RmB?gIYi{W7Z<THP2ihue0mbpu5n(x_l|e1tw(q!#m5lmef6ktqIb${ zV+ee#XRU}_dDDUiV@opHZ@EbQ<9qIZJMDsZDkW0^t3#j`S)G#>N^ZBs8k+FJhAfu< z%u!$%dyP3*_+jUvCf-%{x#MyDAK?#iPfE<(@Q0H7;a125eD%I(+!x1f;Sy`e<9>nm zQH4czZDQmW7^n>jL)@P@aAuAF$;I7JZE5a8~AJI5CNDqyf$gjloKR7C?OPt9yeH}n5 zNF8Vhmd%1O>T4EZD&0%Dt7YWNImmEV{7QF(dy!>q5k>Kh&Xy8hcBMUvVV~Xn8O&%{ z&q=JCYw#KlwM8%cu-rNadu(P~i3bM<_a{3!J*;vZhR6dln6#eW0^0kN)Vv3!bqM`w z{@j*eyzz=743dgFPY`Cx3|>ata;;_hQ3RJd+kU}~p~aphRx`03B>g4*~f%hUV+#D9rYRbsGD?jkB^$3XcgB|3N1L& zrmk9&Dg450mAd=Q_p?gIy5Zx7vRL?*rpNq76_rysFo)z)tp0B;7lSb9G5wX1vC9Lc z5Q8tb-alolVNWFsxO_=12o}X(>@Mwz1mkYh1##(qQwN=7VKz?61kay8A9(94Ky(4V zq6qd2+4a20Z0QRrmp6C?4;%U?@MatfXnkj&U6bP_&2Ny}BF%4{QhNx*Tabik9Y-~Z z@0WV6XD}aI(%pN}oW$X~Qo_R#+1$@J8(31?zM`#e`#(0f<-AZ^={^NgH#lc?oi(Mu zMk|#KR^Q;V@?&(sh5)D;-fu)rx%gXZ1&5)MR+Mhssy+W>V%S|PRNyTAd}74<(#J>H zR(1BfM%eIv0+ngHH6(i`?-%_4!6PpK*0X)79SX0X$`lv_q>9(E2kkkP;?c@rW2E^Q zs<;`9dg|lDMNECFrD3jTM^Mn-C$44}9d9Kc z#>*k&e#25;D^%82^1d@Yt{Y91MbEu0C}-;HR4+IaCeZ`l?)Q8M2~&E^FvJ?EBJJ(% zz1>tCW-E~FB}DI}z#+fUo+=kQME^=eH>^%V8w)dh*ugPFdhMUi3R2Cg}Zak4!k_8YW(JcR-)hY8C zXja}R7@%Q0&IzQTk@M|)2ViZDNCDRLNI)*lH%SDa^2TG4;%jE4n`8`aQAA$0SPH2@ z)2eWZuP26+uGq+m8F0fZn)X^|bNe z#f{qYZS!(CdBdM$N2(JH_a^b#R2=>yVf%JI_ieRFB{w&|o9txwMrVxv+n78*aXFGb z>Rkj2yq-ED<)A46T9CL^$iPynv`FoEhUM10@J+UZ@+*@_gyboQ>HY9CiwTUo7OM=w zd~$N)1@6U8H#Zu(wGLa_(Esx%h@*pmm5Y9OX@CY`3kPYPQx@z8yAgtm(+agDU%4?c zy8pR4SYbu8vY?JX6HgVq7|f=?w(%`m-C+a@E{euXo>XrGmkmFGzktI*rj*8D z)O|CHKXEzH{~iS+6)%ybRD|JRQ6j<+u_+=SgnJP%K+4$st+~XCVcAjI9e5`RYq$n{ zzy!X9Nv7>T4}}BZpSj9G9|(4ei-}Du<_IZw+CB`?fd$w^;=j8?vlp(#JOWiHaXJjB0Q00RHJ@sG6N#y^H7t^&V} z;VrDI4?75G$q5W9mV=J2iP24NHJy&d|HWHva>FaS#3AO?+ohh1__FMx;?`f{HG3v0 ztiO^Wanb>U4m9eLhoc_2B(ca@YdnHMB*~aYO+AE(&qh@?WukLbf_y z>*3?Xt-lxr?#}y%kTv+l8;!q?Hq8XSU+1E8x~o@9$)zO2z9K#(t`vPDri`mKhv|sh z{KREcy`#pnV>cTT7dm7M9B@9qJRt3lfo(C`CNkIq@>|2<(yn!AmVN?ST zbX_`JjtWa3&N*U{K7FYX8})*D#2@KBae` zhKS~s!r%SrXdhCsv~sF}7?ocyS?afya6%rDBu6g^b2j#TOGp^1zrMR}|70Z>CeYq- z1o|-=FBKlu{@;pm@QQJ_^!&hzi;0Z_Ho){x3O1KQ#TYk=rAt9`YKC0Y^}8GWIN{QW znYJyVTrmNvl!L=YS1G8BAxGmMUPi+Q7yb0XfG`l+L1NQVSbe^BICYrD;^(rke{jWCEZOtVv3xFze!=Z&(7}!)EcN;v0Dbit?RJ6bOr;N$ z=nk8}H<kCEE+IK3z<+3mkn4q!O7TMWpKShWWWM)X*)m6k%3luF6c>zOsFccvfLWf zH+mNkh!H@vR#~oe=ek}W3!71z$Dlj0c(%S|sJr>rvw!x;oCek+8f8s!U{DmfHcNpO z9>(IKOMfJwv?ey`V2ysSx2Npeh_x#bMh)Ngdj$al;5~R7Ac5R2?*f{hI|?{*$0qU- zY$6}ME%OGh^zA^z9zJUs-?a4ni8cw_{cYED*8x{bWg!Fn9)n;E9@B+t;#k}-2_j@# zg#b%R(5_SJAOtfgFCBZc`n<&z6)%nOIu@*yo!a% zpLg#36KBN$01W{b;qWN`Tp(T#jh%;Zp_zpS64lvBVY2B#UK)p`B4Oo)IO3Z&D6<3S zfF?ZdeNEnzE{}#gyuv)>;z6V{!#bx)` zY;hL*f(WVD*D9A4$WbRKF2vf;MoZVdhfWbWhr{+Db5@M^A4wrFReuWWimA4qp`GgoL2`W4WPUL5A=y3Y3P z%G?8lLUhqo@wJW8VDT`j&%YY7xh51NpVYlsrk_i4J|pLO(}(b8_>%U2M`$iVRDc-n zQiOdJbroQ%*vhN{!{pL~N|cfGooK_jTJCA3g_qs4c#6a&_{&$OoSQr_+-O^mKP=Fu zGObEx`7Qyu{nHTGNj(XSX*NPtAILL(0%8Jh)dQh+rtra({;{W2=f4W?Qr3qHi*G6B zOEj7%nw^sPy^@05$lOCjAI)?%B%&#cZ~nC|=g1r!9W@C8T0iUc%T*ne z)&u$n>Ue3FN|hv+VtA+WW)odO-sdtDcHfJ7s&|YCPfWaVHpTGN46V7Lx@feE#Od%0XwiZy40plD%{xl+K04*se zw@X4&*si2Z_0+FU&1AstR)7!Th(fdaOlsWh`d!y=+3m!QC$Zlkg8gnz!}_B7`+wSz z&kD?6{zPnE3uo~Tv8mLP%RaNt2hcCJBq=0T>%MW~Q@Tpt2pPP1?KcywH>in5@ zx+5;xu-ltFfo5vLU;2>r$-KCHjwGR&1XZ0YNyrXXAUK!FLM_7mV&^;;X^*YH(FLRr z`0Jjg7wiq2bisa`CG%o9i)o1`uG?oFjU_Zrv1S^ipz$G-lc^X@~6*)#%nn+RbgksJfl{w=k31(q>7a!PCMp5YY{+Neh~mo zG-3dd!0cy`F!nWR?=9f_KP$X?Lz&cLGm_ohy-|u!VhS1HG~e7~xKpYOh=GmiiU;nu zrZ5tWfan3kp-q_vO)}vY6a$19Q6UL0r znJ+iSHN-&w@vDEZ0V%~?(XBr|jz&vrBNLOngULxtH(Rp&U*rMY42n;05F11xh?k;n_DX2$4|vWIkXnbwfC z=ReH=(O~a;VEgVO?>qsP*#eOC9Y<_9Yt<6X}X{PyF7UXIA$f)>NR5P&4G_Ygq(9TwwQH*P>Rq>3T4I+t2X(b5ogXBAfNf!xiF#Gilm zp2h{&D4k!SkKz-SBa%F-ZoVN$7GX2o=(>vkE^j)BDSGXw?^%RS9F)d_4}PN+6MlI8*Uk7a28CZ)Gp*EK)`n5i z){aq=0SFSO-;sw$nAvJU-$S-cW?RSc7kjEBvWDr1zxb1J7i;!i+3PQwb=)www?7TZ zE~~u)vO>#55eLZW;)F(f0KFf8@$p)~llV{nO7K_Nq-+S^h%QV_CnXLi)p*Pq&`s!d zK2msiR;Hk_rO8`kqe_jfTmmv|$MMo0ll}mI)PO4!ikVd(ZThhi&4ZwK?tD-}noj}v zBJ?jH-%VS|=t)HuTk?J1XaDUjd_5p1kPZi6y#F6$lLeRQbj4hsr=hX z4tXkX2d5DeLMcAYTeYm|u(XvG5JpW}hcOs4#s8g#ihK%@hVz|kL=nfiBqJ{*E*WhC zht3mi$P3a(O5JiDq$Syu9p^HY&9~<#H89D8 zJm84@%TaL_BZ+qy8+T3_pG7Q%z80hnjN;j>S=&WZWF48PDD%55lVuC0%#r5(+S;WH zS7!HEzmn~)Ih`gE`faPRjPe^t%g=F ztpGVW=Cj5ZkpghCf~`ar0+j@A=?3(j@7*pq?|9)n*B4EQTA1xj<+|(Y72?m7F%&&& zdO44owDBPT(8~RO=dT-K4#Ja@^4_0v$O3kn73p6$s?mCmVDUZ+Xl@QcpR6R3B$=am z%>`r9r2Z79Q#RNK?>~lwk^nQlR=Hr-ji$Ss3ltbmB)x@0{VzHL-rxVO(++@Yr@Iu2 zTEX)_9sVM>cX$|xuqz~Y8F-(n;KLAfi*63M7mh&gsPR>N0pd9h!0bm%nA?Lr zS#iEmG|wQd^BSDMk0k?G>S-uE$vtKEF8Dq}%vLD07zK4RLoS?%F1^oZZI$0W->7Z# z?v&|a`u#UD=_>i~`kzBGaPj!mYX5g?3RC4$5EV*j0sV)>H#+$G6!ci=6`)85LWR=FCp-NUff`;2zG9nU6F~ z;3ZyE*>*LvUgae+uMf}aV}V*?DCM>{o31+Sx~6+sz;TI(VmIpDrN3z+BUj`oGGgLP z>h9~MP}Pw#YwzfGP8wSkz`V#}--6}7S9yZvb{;SX?6PM_KuYpbi~*=teZr-ga2QqIz{QrEyZ@>eN*qmy;N@FCBbRNEeeoTmQyrX;+ zCkaJ&vOIbc^2BD6_H+Mrcl?Nt7O{xz9R_L0ZPV_u!sz+TKbXmhK)0QWoe-_HwtKJ@@7=L+ z+K8hhf=4vbdg3GqGN<;v-SMIzvX=Z`WUa_91Yf89^#`G(f-Eq>odB^p-Eqx}ENk#&MxJ+%~Ad2-*`1LNT>2INPw?*V3&kE;tt?rQyBw? zI+xJD04GTz1$7~KMnfpkPRW>f%n|0YCML@ODe`10;^DXX-|Hb*IE%_Vi#Pn9@#ufA z_8NY*1U%VseqYrSm?%>F@`laz+f?+2cIE4Jg6 z_VTcx|DSEA`g!R%RS$2dSRM|9VQClsW-G<~=j5T`pTbu-x6O`R z98b;}`rPM(2={YiytrqX+uh65f?%XiPp`;4CcMT*E*dQJ+if9^D>c_Dk8A(cE<#r=&!& z_`Z01=&MEE+2@yr!|#El=yM}v>i=?w^2E_FLPy(*4A9XmCNy>cBWdx3U>1RylsItO z4V8T$z3W-qqq*H`@}lYpfh=>C!tieKhoMGUi)EpWDr;yIL&fy};Y&l|)f^QE*k~4C zH>y`Iu%#S)z)YUqWO%el*Z)ME#p{1_8-^~6UF;kBTW zMQ!eXQuzkR#}j{qb(y9^Y!X7&T}}-4$%4w@w=;w+>Z%uifR9OoQ>P?0d9xpcwa>7kTv2U zT-F?3`Q`7xOR!gS@j>7In>_h){j#@@(ynYh;nB~}+N6qO(JO1xA z@59Pxc#&I~I64slNR?#hB-4XE>EFU@lUB*D)tu%uEa))B#eJ@ZOX0hIulfnDQz-y8 z`CX@(O%_VC{Ogh&ot``jlDL%R!f>-8yq~oLGxBO?+tQb5%k@a9zTs!+=NOwSVH-cR zqFo^jHeXDA_!rx$NzdP;>{-j5w3QUrR<;}=u2|FBJ;D#v{SK@Z6mjeV7_kFmWt95$ zeGaF{IU?U>?W`jzrG_9=9}yN*LKyzz))PLE+)_jc#4Rd$yFGol;NIk(qO1$5VXR)+ zxF7%f4=Q!NzR>DVXUB&nUT&>Nyf+5QRF+Z`X-bB*7=`|Go5D1&h~ zflKLw??kpiRm0h3|1GvySC2^#kcFz^5{79KKlq@`(leBa=_4CgV9sSHr{RIJ^KwR_ zY??M}-x^=MD+9`v@I3jue=OCn0kxno#6i>b(XKk_XTp_LpI}X*UA<#* zsgvq@yKTe_dTh>q1aeae@8yur08S(Q^8kXkP_ty48V$pX#y9)FQa~E7P7}GP_CbCm zc2dQxTeW(-~Y6}im24*XOC8ySfH*HMEnW3 z4CXp8iK(Nk<^D$g0kUW`8PXn2kdcDk-H@P0?G8?|YVlIFb?a>QunCx%B9TzsqQQ~HD!UO7zq^V!v9jho_FUob&Hxi ztU1nNOK)a!gkb-K4V^QVX05*>-^i|{b`hhvQLyj`E1vAnj0fbqqO%r z6Q;X1x0dL~GqMv%8QindZ4CZ%7pYQW~ z9)I*#Gjref-q(4Z*E#1c&rE0-_(4;_M(V7rgH_7H;ps1s%GBmU z{4a|X##j#XUF2n({v?ZUUAP5k>+)^F)7n-npbV3jAlY8V3*W=fwroDS$c&r$>8aH` zH+irV{RG3^F3oW2&E%5hXgMH9>$WlqX76Cm+iFmFC-DToTa`AcuN9S!SB+BT-IA#3P)JW1m~Cuwjs`Ep(wDXE4oYmt*aU z!Naz^lM}B)JFp7ejro7MU9#cI>wUoi{lylR2~s)3M!6a=_W~ITXCPd@U9W)qA5(mdOf zd3PntGPJyRX<9cgX?(9~TZB5FdEHW~gkJXY51}?s4ZT_VEdwOwD{T2E-B>oC8|_ZwsPNj=-q(-kwy%xX2K0~H z{*+W`-)V`7@c#Iuaef=?RR2O&x>W0A^xSwh5MsjTz(DVG-EoD@asu<>72A_h<39_# zawWVU<9t{r*e^u-5Q#SUI6dV#p$NYEGyiowT>>d*or=Ps!H$-3={bB|An$GPkP5F1 zTnu=ktmF|6E*>ZQvk^~DX(k!N`tiLut*?3FZhs$NUEa4ccDw66-~P;x+0b|<!ZN7Z%A`>2tN#CdoG>((QR~IV_Gj^Yh%!HdA~4C3jOXaqb6Ou z21T~Wmi9F6(_K0@KR@JDTh3-4mv2=T7&ML<+$4;b9SAtv*Uu`0>;VVZHB{4?aIl3J zL(rMfk?1V@l)fy{J5DhVlj&cWKJCcrpOAad(7mC6#%|Sn$VwMjtx6RDx1zbQ|Ngg8N&B56DGhu;dYg$Z{=YmCNn+?ceDclp65c_RnKs4*vefnhudSlrCy6-96vSB4_sFAj# zftzECwmNEOtED^NUt{ZDjT7^g>k1w<=af>+0)%NA;IPq6qx&ya7+QAu=pk8t>KTm` zEBj9J*2t|-(h)xc>Us*jHs)w9qmA>8@u21UqzKk*Ei#0kCeW6o z-2Q+Tvt25IUkb}-_LgD1_FUJ!U8@8OC^9(~Kd*0#zr*8IQkD)6Keb(XFai5*DYf~` z@U?-{)9X&BTf!^&@^rjmvea#9OE~m(D>qfM?CFT9Q4RxqhO0sA7S)=--^*Q=kNh7Y zq%2mu_d_#23d`+v`Ol263CZ<;D%D8Njj6L4T`S*^{!lPL@pXSm>2;~Da- zBX97TS{}exvSva@J5FJVCM$j4WDQuME`vTw>PWS0!;J7R+Kq zVUy6%#n5f7EV(}J#FhDpts;>=d6ow!yhJj8j>MJ@Wr_?x30buuutIG97L1A*QFT$c ziC5rBS;#qj=~yP-yWm-p(?llTwDuhS^f&<(9vA9@UhMH2-Fe_YAG$NvK6X{!mvPK~ zuEA&PA}meylmaIbbJXDOzuIn8cJNCV{tUA<$Vb?57JyAM`*GpEfMmFq>)6$E(9e1@W`l|R%-&}38#bl~levA#fx2wiBk^)mPj?<=S&|gv zQO)4*91$n08@W%2b|QxEiO0KxABAZC{^4BX^6r>Jm?{!`ZId9jjz<%pl(G5l));*`UU3KfnuXSDj2aP>{ zRIB$9pm7lj3*Xg)c1eG!cb+XGt&#?7yJ@C)(Ik)^OZ5><4u$VLCqZ#q2NMCt5 z6$|VN(RWM;5!JV?-h<JkEZ(SZF zC(6J+>A6Am9H7OlOFq6S62-2&z^Np=#xXsOq0WUKr zY_+Ob|CQd1*!Hirj5rn*=_bM5_zKmq6lG zn*&_=x%?ATxZ8ZTzd%biKY_qyNC#ZQ1vX+vc48N>aJXEjs{Y*3Op`Q7-oz8jyAh>d zNt_qvn`>q9aO~7xm{z`ree%lJ3YHCyC`q`-jUVCn*&NIml!uuMNm|~u3#AV?6kC+B z?qrT?xu2^mobSlzb&m(8jttB^je0mx;TT8}`_w(F11IKz83NLj@OmYDpCU^u?fD{) z&=$ptwVw#uohPb2_PrFX;X^I=MVXPDpqTuYhRa>f-=wy$y3)40-;#EUDYB1~V9t%$ z^^<7Zbs0{eB93Pcy)96%XsAi2^k`Gmnypd-&x4v9rAq<>a(pG|J#+Q>E$FvMLmy7T z5_06W=*ASUyPRfgCeiPIe{b47Hjqpb`9Xyl@$6*ntH@SV^bgH&Fk3L9L=6VQb)Uqa z33u#>ecDo&bK(h1WqSH)b_Th#Tvk&%$NXC@_pg5f-Ma#7q;&0QgtsFO~`V&{1b zbSP*X)jgLtd@9XdZ#2_BX4{X~pS8okF7c1xUhEV9>PZco>W-qz7YMD`+kCGULdK|^ zE7VwQ-at{%&fv`a+b&h`TjzxsyQX05UB~a0cuU-}{*%jR48J+yGWyl3Kdz5}U>;lE zgkba*yI5>xqIPz*Y!-P$#_mhHB!0Fpnv{$k-$xxjLAc`XdmHd1k$V@2QlblfJPrly z*~-4HVCq+?9vha>&I6aRGyq2VUon^L1a)g`-Xm*@bl2|hi2b|UmVYW|b+Gy?!aS-p z86a}Jep6Mf>>}n^*Oca@Xz}kxh)Y&pX$^CFAmi#$YVf57X^}uQD!IQSN&int=D> zJ>_|au3Be?hmPKK)1^JQ(O29eTf`>-x^jF2xYK6j_9d_qFkWHIan5=7EmDvZoQWz5 zZGb<{szHc9Nf@om)K_<=FuLR<&?5RKo3LONFQZ@?dyjemAe4$yDrnD zglU#XYo6|~L+YpF#?deK6S{8A*Ou;9G`cdC4S0U74EW18bc5~4>)<*}?Z!1Y)j;Ot zosEP!pc$O^wud(={WG%hY07IE^SwS-fGbvpP?;l8>H$;}urY2JF$u#$q}E*ZG%fR# z`p{xslcvG)kBS~B*^z6zVT@e}imYcz_8PRzM4GS52#ms5Jg9z~ME+uke`(Tq1w3_6 zxUa{HerS7!Wq&y(<9yyN@P^PrQT+6ij_qW3^Q)I53iIFCJE?MVyGLID!f?QHUi1tq z0)RNIMGO$2>S%3MlBc09l!6_(ECxXTU>$KjWdZX^3R~@3!SB zah5Za2$63;#y!Y}(wg1#shMePQTzfQfXyJ-Tf`R05KYcyvo8UW9-IWGWnzxR6Vj8_la;*-z5vWuwUe7@sKr#Tr51d z2PWn5h@|?QU3>k=s{pZ9+(}oye zc*95N_iLmtmu}H-t$smi49Y&ovX}@mKYt2*?C-i3Lh4*#q5YDg1Mh`j9ovRDf9&& zp_UMQh`|pC!|=}1uWoMK5RAjdTg3pXPCsYmRkWW}^m&)u-*c_st~gcss(`haA)xVw zAf=;s>$`Gq_`A}^MjY_BnCjktBNHY1*gzh(i0BFZ{Vg^F?Pbf`8_clvdZ)5(J4EWzAP}Ba5zX=S(2{gDugTQ3`%!q`h7kYSnwC`zEWeuFlODKiityMaM9u{Z%E@@y1jmZA#ⅅ8MglG&ER{i5lN315cO?EdHNLrg? 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 z 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 Pe7HEdAEg|=c=LY&YVNkY literal 0 HcmV?d00001 diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..13b35eba55c6dabc3aac36f33d859266c18fa0d0 GIT binary patch literal 5680 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 literal 0 HcmV?d00001 diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3f5fa40fb3d1e0710331a48de5d256da3f275d GIT binary patch literal 520 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 literal 0 HcmV?d00001 diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1632cfddf3d9dade342351e627a0a75609fb46 GIT binary patch literal 2218 zcmV;b2vzrqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuE6iGxuRCodHTWf3-RTMruyW6Fu zQYeUM04eX6D5c0FCjKKPrco1(K`<0SL=crI{PC3-^hZU0kQie$gh-5!7z6SH6Q0J% zqot*`H1q{R5fHFYS}dje@;kG=v$L0(yY0?wY2%*c?A&{2?!D*x?m71{of2gv!$5|C z3>qG_BW}7K_yUcT3A5C6QD<+{aq?x;MAUyAiJn#Jv8_zZtQ{P zTRzbL3U9!qVuZzS$xKU10KiW~Bgdcv1-!uAhQxf3a7q+dU6lj?yoO4Lq4TUN4}h{N z*fIM=SS8|C2$(T>w$`t@3Tka!(r!7W`x z-isCVgQD^mG-MJ;XtJuK3V{Vy72GQ83KRWsHU?e*wrhKk=ApIYeDqLi;JI1e zuvv}5^Dc=k7F7?nm3nIw$NVmU-+R>> zyqOR$-2SDpJ}Pt;^RkJytDVXNTsu|mI1`~G7yw`EJR?VkGfNdqK9^^8P`JdtTV&tX4CNcV4 z&N06nZa??Fw1AgQOUSE2AmPE@WO(Fvo`%m`cDgiv(fAeRA%3AGXUbsGw{7Q`cY;1BI#ac3iN$$Hw z0LT0;xc%=q)me?Y*$xI@GRAw?+}>=9D+KTk??-HJ4=A>`V&vKFS75@MKdSF1JTq{S zc1!^8?YA|t+uKigaq!sT;Z!&0F2=k7F0PIU;F$leJLaw2UI6FL^w}OG&!;+b%ya1c z1n+6-inU<0VM-Y_s5iTElq)ThyF?StVcebpGI znw#+zLx2@ah{$_2jn+@}(zJZ{+}_N9BM;z)0yr|gF-4=Iyu@hI*Lk=-A8f#bAzc9f z`Kd6K--x@t04swJVC3JK1cHY-Hq+=|PN-VO;?^_C#;coU6TDP7Bt`;{JTG;!+jj(` zw5cLQ-(Cz-Tlb`A^w7|R56Ce;Wmr0)$KWOUZ6ai0PhzPeHwdl0H(etP zUV`va_i0s-4#DkNM8lUlqI7>YQLf)(lz9Q3Uw`)nc(z3{m5ZE77Ul$V%m)E}3&8L0 z-XaU|eB~Is08eORPk;=<>!1w)Kf}FOVS2l&9~A+@R#koFJ$Czd%Y(ENTV&A~U(IPI z;UY+gf+&6ioZ=roly<0Yst8ck>(M=S?B-ys3mLdM&)ex!hbt+ol|T6CTS+Sc0jv(& z7ijdvFwBq;0a{%3GGwkDKTeG`b+lyj0jjS1OMkYnepCdoosNY`*zmBIo*981BU%%U z@~$z0V`OVtIbEx5pa|Tct|Lg#ZQf5OYMUMRD>Wdxm5SAqV2}3!ceE-M2 z@O~lQ0OiKQp}o9I;?uxCgYVV?FH|?Riri*U$Zi_`V2eiA>l zdSm6;SEm6#T+SpcE8Ro_f2AwxzI z44hfe^WE3!h@W3RDyA_H440cpmYkv*)6m1XazTqw%=E5Xv7^@^^T7Q2wxr+Z2kVYr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/macos/Runner/Configs/AppInfo.xcconfig b/example/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 0000000..2aa3c7b --- /dev/null +++ b/example/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = example + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = ink.xcl.example + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2024 ink.xcl. All rights reserved. diff --git a/example/macos/Runner/Configs/Debug.xcconfig b/example/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 0000000..36b0fd9 --- /dev/null +++ b/example/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/example/macos/Runner/Configs/Release.xcconfig b/example/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 0000000..dff4f49 --- /dev/null +++ b/example/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/example/macos/Runner/Configs/Warnings.xcconfig b/example/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 0000000..42bcbf4 --- /dev/null +++ b/example/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/example/macos/Runner/DebugProfile.entitlements b/example/macos/Runner/DebugProfile.entitlements new file mode 100644 index 0000000..e518f65 --- /dev/null +++ b/example/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,22 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.assets.music.read-write + + com.apple.security.cs.allow-jit + + com.apple.security.device.audio-input + + com.apple.security.files.downloads.read-write + + com.apple.security.network.client + + com.apple.security.network.server + + com.apple.security.personal-information.addressbook + + + diff --git a/example/macos/Runner/Info.plist b/example/macos/Runner/Info.plist new file mode 100644 index 0000000..4789daa --- /dev/null +++ b/example/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/example/macos/Runner/MainFlutterWindow.swift b/example/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 0000000..3cc05eb --- /dev/null +++ b/example/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/example/macos/Runner/Release.entitlements b/example/macos/Runner/Release.entitlements new file mode 100644 index 0000000..811dcd5 --- /dev/null +++ b/example/macos/Runner/Release.entitlements @@ -0,0 +1,20 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.assets.music.read-write + + com.apple.security.device.audio-input + + com.apple.security.files.downloads.read-write + + com.apple.security.network.client + + com.apple.security.network.server + + com.apple.security.personal-information.addressbook + + + diff --git a/example/macos/RunnerTests/RunnerTests.swift b/example/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..61f3bd1 --- /dev/null +++ b/example/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Cocoa +import FlutterMacOS +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/example/pubspec.lock b/example/pubspec.lock new file mode 100644 index 0000000..3c675a7 --- /dev/null +++ b/example/pubspec.lock @@ -0,0 +1,489 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" + source: hosted + version: "1.18.0" + crypto: + dependency: transitive + description: + name: crypto + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.dev" + source: hosted + version: "3.0.3" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" + source: hosted + version: "1.0.8" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + ffmpeg_kit_flutter_full_gpl: + dependency: "direct main" + description: + name: ffmpeg_kit_flutter_full_gpl + sha256: "4f269bcb636bfcb544e5b4d65c706a3d311839970cb42638e72406410c1b5b7b" + url: "https://pub.dev" + source: hosted + version: "6.0.3" + ffmpeg_kit_flutter_platform_interface: + dependency: transitive + description: + name: ffmpeg_kit_flutter_platform_interface + sha256: addf046ae44e190ad0101b2fde2ad909a3cd08a2a109f6106d2f7048b7abedee + url: "https://pub.dev" + source: hosted + version: "0.2.1" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + flutter_riverpod: + dependency: "direct main" + description: + name: flutter_riverpod + sha256: "0f1974eff5bbe774bf1d870e406fc6f29e3d6f1c46bd9c58e7172ff68a785d7d" + url: "https://pub.dev" + source: hosted + version: "2.5.1" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + freezed_annotation: + dependency: transitive + description: + name: freezed_annotation + sha256: c3fd9336eb55a38cc1bbd79ab17573113a8deccd0ecbbf926cca3c62803b5c2d + url: "https://pub.dev" + source: hosted + version: "2.4.1" + globbing: + dependency: transitive + description: + name: globbing + sha256: "4f89cfaf6fa74c9c1740a96259da06bd45411ede56744e28017cc534a12b6e2d" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + url: "https://pub.dev" + source: hosted + version: "4.9.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + url: "https://pub.dev" + source: hosted + version: "10.0.4" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + url: "https://pub.dev" + source: hosted + version: "3.0.3" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + lints: + dependency: transitive + description: + name: lints + sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + url: "https://pub.dev" + source: hosted + version: "0.12.16+1" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + url: "https://pub.dev" + source: hosted + version: "0.8.0" + meta: + dependency: transitive + description: + name: meta + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" + url: "https://pub.dev" + source: hosted + version: "1.12.0" + path: + dependency: transitive + description: + name: path + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.dev" + source: hosted + version: "1.9.0" + path_provider: + dependency: "direct main" + description: + name: path_provider + sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 + url: "https://pub.dev" + source: hosted + version: "2.1.3" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: "9c96da072b421e98183f9ea7464898428e764bc0ce5567f27ec8693442e72514" + url: "https://pub.dev" + source: hosted + version: "2.2.5" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 + url: "https://pub.dev" + source: hosted + version: "2.4.0" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + url: "https://pub.dev" + source: hosted + version: "2.2.1" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" + url: "https://pub.dev" + source: hosted + version: "2.2.1" + platform: + dependency: transitive + description: + name: platform + sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" + url: "https://pub.dev" + source: hosted + version: "3.1.5" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + record: + dependency: "direct main" + description: + name: record + sha256: "78353d3d55fa145ffe1db1f63232ad0a0cd4c773e9f7d161210ce796ba1c94f9" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + record_android: + dependency: transitive + description: + name: record_android + sha256: fe83beefc8ac81b9dd02ca9365e8685755e3f12be1d442964082f1d5b618183d + url: "https://pub.dev" + source: hosted + version: "1.2.2" + record_darwin: + dependency: transitive + description: + name: record_darwin + sha256: "2210da0fde7c86b4048cccfe2cd19b25fc7adf1ada7d50ec4a5ab4af2a863739" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + record_linux: + dependency: transitive + description: + name: record_linux + sha256: "7d0e70cd51635128fe9d37d89bafd6011d7cbba9af8dc323079ae60f23546aef" + url: "https://pub.dev" + source: hosted + version: "0.7.1" + record_platform_interface: + dependency: transitive + description: + name: record_platform_interface + sha256: "11f8b03ea8a0e279b0e306571dbe0db0202c0b8e866495c9fa1ad2281d5e4c15" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + record_web: + dependency: transitive + description: + name: record_web + sha256: "703adb626d31e2dd86a8f6b34e306e03cd323e0c5e16e11bbc0385b07a8df97e" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + record_windows: + dependency: transitive + description: + name: record_windows + sha256: e653555aa3fda168aded7c34e11bd82baf0c6ac84e7624553def3c77ffefd36f + url: "https://pub.dev" + source: hosted + version: "1.0.3" + riverpod: + dependency: transitive + description: + name: riverpod + sha256: f21b32ffd26a36555e501b04f4a5dca43ed59e16343f1a30c13632b2351dfa4d + url: "https://pub.dev" + source: hosted + version: "2.5.1" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" + source: hosted + version: "1.11.1" + state_notifier: + dependency: transitive + description: + name: state_notifier + sha256: b8677376aa54f2d7c58280d5a007f9e8774f1968d1fb1c096adcb4792fba29bb + url: "https://pub.dev" + source: hosted + version: "1.0.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + system_info2: + dependency: "direct main" + description: + name: system_info2 + sha256: "65206bbef475217008b5827374767550a5420ce70a04d2d7e94d1d2253f3efc9" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" + url: "https://pub.dev" + source: hosted + version: "0.7.0" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" + source: hosted + version: "1.3.2" + uuid: + dependency: transitive + description: + name: uuid + sha256: "814e9e88f21a176ae1359149021870e87f7cddaf633ab678a5d2b0bff7fd1ba8" + url: "https://pub.dev" + source: hosted + version: "4.4.0" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" + url: "https://pub.dev" + source: hosted + version: "14.2.1" + web: + dependency: transitive + description: + name: web + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + url: "https://pub.dev" + source: hosted + version: "0.5.1" + whisper_flutter_new: + dependency: "direct main" + description: + path: ".." + relative: true + source: path + version: "1.0.1" + win32: + dependency: transitive + description: + name: win32 + sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4 + url: "https://pub.dev" + source: hosted + version: "5.5.1" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d + url: "https://pub.dev" + source: hosted + version: "1.0.4" +sdks: + dart: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" diff --git a/example/pubspec.yaml b/example/pubspec.yaml new file mode 100644 index 0000000..496ebe5 --- /dev/null +++ b/example/pubspec.yaml @@ -0,0 +1,57 @@ +name: test_whisper +description: "A new Flutter project." +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +# In Windows, build-name is used as the major, minor, and patch parts +# of the product and file versions while build-number is used as the build suffix. +version: 1.0.0+1 + +platforms: + android: + ios: + macos: + +environment: + sdk: ">=3.3.0 <4.0.0" + flutter: ">=3.22.0" + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + + flutter_riverpod: any + path_provider: ^2.1.3 + system_info2: ^4.0.0 + ffmpeg_kit_flutter_full_gpl: 6.0.3 + record: ^5.1.1 + cupertino_icons: ^1.0.8 + whisper_flutter_new: + path: ../ + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^4.0.0 + +flutter: + uses-material-design: true + assets: + - assets/ \ No newline at end of file diff --git a/ffigen.yaml b/ffigen.yaml new file mode 100644 index 0000000..cdaa898 --- /dev/null +++ b/ffigen.yaml @@ -0,0 +1,15 @@ +# Run with `flutter pub run ffigen --config ffigen.yaml`. +name: WhisperFlutterBindings +description: | + Bindings for `src/main.h`. + + Regenerate bindings with `flutter pub run ffigen --config ffigen.yaml`. +output: 'lib/whisper_bindings_generated.dart' +headers: + entry-points: + - 'src/main.h' + include-directives: + - 'src/main.h' +comments: + style: any + length: full diff --git a/ios/Classes/json/json.hpp b/ios/Classes/json/json.hpp new file mode 100644 index 0000000..4ad9d62 --- /dev/null +++ b/ios/Classes/json/json.hpp @@ -0,0 +1,24602 @@ +/*** + * @Author: 田梓萱 + * @Date: 2024-06-09 11:10:25 + * @LastEditTime: 2024-06-09 20:34:11 + * @LastEditors: 田梓萱 + */ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + +/****************************************************************************\ + * Note on documentation: The source files contain links to the online * + * documentation of the public API at https://json.nlohmann.me. This URL * + * contains the most recent documentation and should also be applicable to * + * previous versions; documentation for deprecated functions is not * + * removed, but marked deprecated. See "Generate documentation" section in * + * file docs/README.md. * +\****************************************************************************/ + +#ifndef INCLUDE_NLOHMANN_JSON_HPP_ +#define INCLUDE_NLOHMANN_JSON_HPP_ + +#include // all_of, find, for_each +#include // nullptr_t, ptrdiff_t, size_t +#include // hash, less +#include // initializer_list +#ifndef JSON_NO_IO + #include // istream, ostream +#endif // JSON_NO_IO +#include // random_access_iterator_tag +#include // unique_ptr +#include // accumulate +#include // string, stoi, to_string +#include // declval, forward, move, pair, swap +#include // vector + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// This file contains all macro definitions affecting or depending on the ABI + +#ifndef JSON_SKIP_LIBRARY_VERSION_CHECK + #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH) + #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 11 || NLOHMANN_JSON_VERSION_PATCH != 2 + #warning "Already included a different version of the library!" + #endif + #endif +#endif + +#define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_MINOR 11 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_PATCH 2 // NOLINT(modernize-macro-to-enum) + +#ifndef JSON_DIAGNOSTICS + #define JSON_DIAGNOSTICS 0 +#endif + +#ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0 +#endif + +#if JSON_DIAGNOSTICS + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag +#else + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS +#endif + +#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp +#else + #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION + #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0 +#endif + +// Construct the namespace ABI tags component +#define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) json_abi ## a ## b +#define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b) \ + NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) + +#define NLOHMANN_JSON_ABI_TAGS \ + NLOHMANN_JSON_ABI_TAGS_CONCAT( \ + NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \ + NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON) + +// Construct the namespace version component +#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \ + _v ## major ## _ ## minor ## _ ## patch +#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \ + NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) + +#if NLOHMANN_JSON_NAMESPACE_NO_VERSION +#define NLOHMANN_JSON_NAMESPACE_VERSION +#else +#define NLOHMANN_JSON_NAMESPACE_VERSION \ + NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \ + NLOHMANN_JSON_VERSION_MINOR, \ + NLOHMANN_JSON_VERSION_PATCH) +#endif + +// Combine namespace components +#define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b +#define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \ + NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) + +#ifndef NLOHMANN_JSON_NAMESPACE +#define NLOHMANN_JSON_NAMESPACE \ + nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \ + NLOHMANN_JSON_ABI_TAGS, \ + NLOHMANN_JSON_NAMESPACE_VERSION) +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_BEGIN +#define NLOHMANN_JSON_NAMESPACE_BEGIN \ + namespace nlohmann \ + { \ + inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \ + NLOHMANN_JSON_ABI_TAGS, \ + NLOHMANN_JSON_NAMESPACE_VERSION) \ + { +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_END +#define NLOHMANN_JSON_NAMESPACE_END \ + } /* namespace (inline namespace) NOLINT(readability/namespace) */ \ + } // namespace nlohmann +#endif + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // transform +#include // array +#include // forward_list +#include // inserter, front_inserter, end +#include // map +#include // string +#include // tuple, make_tuple +#include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible +#include // unordered_map +#include // pair, declval +#include // valarray + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // nullptr_t +#include // exception +#include // runtime_error +#include // to_string +#include // vector + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // array +#include // size_t +#include // uint8_t +#include // string + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // declval, pair +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template struct make_void +{ + using type = void; +}; +template using void_t = typename make_void::type; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +// https://en.cppreference.com/w/cpp/experimental/is_detected +struct nonesuch +{ + nonesuch() = delete; + ~nonesuch() = delete; + nonesuch(nonesuch const&) = delete; + nonesuch(nonesuch const&&) = delete; + void operator=(nonesuch const&) = delete; + void operator=(nonesuch&&) = delete; +}; + +template class Op, + class... Args> +struct detector +{ + using value_t = std::false_type; + using type = Default; +}; + +template class Op, class... Args> +struct detector>, Op, Args...> +{ + using value_t = std::true_type; + using type = Op; +}; + +template class Op, class... Args> +using is_detected = typename detector::value_t; + +template class Op, class... Args> +struct is_detected_lazy : is_detected { }; + +template class Op, class... Args> +using detected_t = typename detector::type; + +template class Op, class... Args> +using detected_or = detector; + +template class Op, class... Args> +using detected_or_t = typename detected_or::type; + +template class Op, class... Args> +using is_detected_exact = std::is_same>; + +template class Op, class... Args> +using is_detected_convertible = + std::is_convertible, To>; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + + +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-FileCopyrightText: 2016-2021 Evan Nemerson +// SPDX-License-Identifier: MIT + +/* Hedley - https://nemequ.github.io/hedley + * Created by Evan Nemerson + */ + +#if !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < 15) +#if defined(JSON_HEDLEY_VERSION) + #undef JSON_HEDLEY_VERSION +#endif +#define JSON_HEDLEY_VERSION 15 + +#if defined(JSON_HEDLEY_STRINGIFY_EX) + #undef JSON_HEDLEY_STRINGIFY_EX +#endif +#define JSON_HEDLEY_STRINGIFY_EX(x) #x + +#if defined(JSON_HEDLEY_STRINGIFY) + #undef JSON_HEDLEY_STRINGIFY +#endif +#define JSON_HEDLEY_STRINGIFY(x) JSON_HEDLEY_STRINGIFY_EX(x) + +#if defined(JSON_HEDLEY_CONCAT_EX) + #undef JSON_HEDLEY_CONCAT_EX +#endif +#define JSON_HEDLEY_CONCAT_EX(a,b) a##b + +#if defined(JSON_HEDLEY_CONCAT) + #undef JSON_HEDLEY_CONCAT +#endif +#define JSON_HEDLEY_CONCAT(a,b) JSON_HEDLEY_CONCAT_EX(a,b) + +#if defined(JSON_HEDLEY_CONCAT3_EX) + #undef JSON_HEDLEY_CONCAT3_EX +#endif +#define JSON_HEDLEY_CONCAT3_EX(a,b,c) a##b##c + +#if defined(JSON_HEDLEY_CONCAT3) + #undef JSON_HEDLEY_CONCAT3 +#endif +#define JSON_HEDLEY_CONCAT3(a,b,c) JSON_HEDLEY_CONCAT3_EX(a,b,c) + +#if defined(JSON_HEDLEY_VERSION_ENCODE) + #undef JSON_HEDLEY_VERSION_ENCODE +#endif +#define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision)) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MAJOR) + #undef JSON_HEDLEY_VERSION_DECODE_MAJOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MINOR) + #undef JSON_HEDLEY_VERSION_DECODE_MINOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_REVISION) + #undef JSON_HEDLEY_VERSION_DECODE_REVISION +#endif +#define JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000) + +#if defined(JSON_HEDLEY_GNUC_VERSION) + #undef JSON_HEDLEY_GNUC_VERSION +#endif +#if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__) + #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) +#elif defined(__GNUC__) + #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0) +#endif + +#if defined(JSON_HEDLEY_GNUC_VERSION_CHECK) + #undef JSON_HEDLEY_GNUC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GNUC_VERSION) + #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION) + #undef JSON_HEDLEY_MSVC_VERSION +#endif +#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100) +#elif defined(_MSC_FULL_VER) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10) +#elif defined(_MSC_VER) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION_CHECK) + #undef JSON_HEDLEY_MSVC_VERSION_CHECK +#endif +#if !defined(JSON_HEDLEY_MSVC_VERSION) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0) +#elif defined(_MSC_VER) && (_MSC_VER >= 1400) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch))) +#elif defined(_MSC_VER) && (_MSC_VER >= 1200) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch))) +#else + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor))) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION) + #undef JSON_HEDLEY_INTEL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && !defined(__ICL) + #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE) +#elif defined(__INTEL_COMPILER) && !defined(__ICL) + #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION_CHECK) + #undef JSON_HEDLEY_INTEL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_VERSION) + #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) + #undef JSON_HEDLEY_INTEL_CL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && defined(__ICL) + #define JSON_HEDLEY_INTEL_CL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER, __INTEL_COMPILER_UPDATE, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION_CHECK) + #undef JSON_HEDLEY_INTEL_CL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) + #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_CL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION) + #undef JSON_HEDLEY_PGI_VERSION +#endif +#if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__) + #define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION_CHECK) + #undef JSON_HEDLEY_PGI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PGI_VERSION) + #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION) + #undef JSON_HEDLEY_SUNPRO_VERSION +#endif +#if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10) +#elif defined(__SUNPRO_C) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf) +#elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10) +#elif defined(__SUNPRO_CC) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION_CHECK) + #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_SUNPRO_VERSION) + #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) + #undef JSON_HEDLEY_EMSCRIPTEN_VERSION +#endif +#if defined(__EMSCRIPTEN__) + #define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK) + #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) + #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION) + #undef JSON_HEDLEY_ARM_VERSION +#endif +#if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION) + #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100) +#elif defined(__CC_ARM) && defined(__ARMCC_VERSION) + #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION_CHECK) + #undef JSON_HEDLEY_ARM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_ARM_VERSION) + #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION) + #undef JSON_HEDLEY_IBM_VERSION +#endif +#if defined(__ibmxl__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__) +#elif defined(__xlC__) && defined(__xlC_ver__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff) +#elif defined(__xlC__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION_CHECK) + #undef JSON_HEDLEY_IBM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IBM_VERSION) + #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_VERSION) + #undef JSON_HEDLEY_TI_VERSION +#endif +#if \ + defined(__TI_COMPILER_VERSION__) && \ + ( \ + defined(__TMS470__) || defined(__TI_ARM__) || \ + defined(__MSP430__) || \ + defined(__TMS320C2000__) \ + ) +#if (__TI_COMPILER_VERSION__ >= 16000000) + #define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif +#endif + +#if defined(JSON_HEDLEY_TI_VERSION_CHECK) + #undef JSON_HEDLEY_TI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_VERSION) + #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) + #undef JSON_HEDLEY_TI_CL2000_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C2000__) + #define JSON_HEDLEY_TI_CL2000_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) + #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL2000_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION) + #undef JSON_HEDLEY_TI_CL430_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__MSP430__) + #define JSON_HEDLEY_TI_CL430_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL430_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL430_VERSION) + #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL430_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) + #undef JSON_HEDLEY_TI_ARMCL_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && (defined(__TMS470__) || defined(__TI_ARM__)) + #define JSON_HEDLEY_TI_ARMCL_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION_CHECK) + #undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) + #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_ARMCL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) + #undef JSON_HEDLEY_TI_CL6X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C6X__) + #define JSON_HEDLEY_TI_CL6X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) + #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL6X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) + #undef JSON_HEDLEY_TI_CL7X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__C7000__) + #define JSON_HEDLEY_TI_CL7X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) + #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL7X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) + #undef JSON_HEDLEY_TI_CLPRU_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__PRU__) + #define JSON_HEDLEY_TI_CLPRU_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) + #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CLPRU_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION) + #undef JSON_HEDLEY_CRAY_VERSION +#endif +#if defined(_CRAYC) + #if defined(_RELEASE_PATCHLEVEL) + #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL) + #else + #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0) + #endif +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION_CHECK) + #undef JSON_HEDLEY_CRAY_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_CRAY_VERSION) + #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION) + #undef JSON_HEDLEY_IAR_VERSION +#endif +#if defined(__IAR_SYSTEMS_ICC__) + #if __VER__ > 1000 + #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000)) + #else + #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE(__VER__ / 100, __VER__ % 100, 0) + #endif +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION_CHECK) + #undef JSON_HEDLEY_IAR_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IAR_VERSION) + #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION) + #undef JSON_HEDLEY_TINYC_VERSION +#endif +#if defined(__TINYC__) + #define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION_CHECK) + #undef JSON_HEDLEY_TINYC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TINYC_VERSION) + #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION) + #undef JSON_HEDLEY_DMC_VERSION +#endif +#if defined(__DMC__) + #define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION_CHECK) + #undef JSON_HEDLEY_DMC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_DMC_VERSION) + #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION) + #undef JSON_HEDLEY_COMPCERT_VERSION +#endif +#if defined(__COMPCERT_VERSION__) + #define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION_CHECK) + #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_COMPCERT_VERSION) + #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION) + #undef JSON_HEDLEY_PELLES_VERSION +#endif +#if defined(__POCC__) + #define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION_CHECK) + #undef JSON_HEDLEY_PELLES_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PELLES_VERSION) + #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) + #undef JSON_HEDLEY_MCST_LCC_VERSION +#endif +#if defined(__LCC__) && defined(__LCC_MINOR__) + #define JSON_HEDLEY_MCST_LCC_VERSION JSON_HEDLEY_VERSION_ENCODE(__LCC__ / 100, __LCC__ % 100, __LCC_MINOR__) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION_CHECK) + #undef JSON_HEDLEY_MCST_LCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) + #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_MCST_LCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION) + #undef JSON_HEDLEY_GCC_VERSION +#endif +#if \ + defined(JSON_HEDLEY_GNUC_VERSION) && \ + !defined(__clang__) && \ + !defined(JSON_HEDLEY_INTEL_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_ARM_VERSION) && \ + !defined(JSON_HEDLEY_CRAY_VERSION) && \ + !defined(JSON_HEDLEY_TI_VERSION) && \ + !defined(JSON_HEDLEY_TI_ARMCL_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL430_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL2000_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL6X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL7X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CLPRU_VERSION) && \ + !defined(__COMPCERT__) && \ + !defined(JSON_HEDLEY_MCST_LCC_VERSION) + #define JSON_HEDLEY_GCC_VERSION JSON_HEDLEY_GNUC_VERSION +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION_CHECK) + #undef JSON_HEDLEY_GCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GCC_VERSION) + #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_ATTRIBUTE +#endif +#if \ + defined(__has_attribute) && \ + ( \ + (!defined(JSON_HEDLEY_IAR_VERSION) || JSON_HEDLEY_IAR_VERSION_CHECK(8,5,9)) \ + ) +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute) +#else +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) + #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) + #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE +#endif +#if \ + defined(__has_cpp_attribute) && \ + defined(__cplusplus) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS) + #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS +#endif +#if !defined(__cplusplus) || !defined(__has_cpp_attribute) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#elif \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \ + (!defined(JSON_HEDLEY_MSVC_VERSION) || JSON_HEDLEY_MSVC_VERSION_CHECK(19,20,0)) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute) +#else + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) + #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) + #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_BUILTIN) + #undef JSON_HEDLEY_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin) +#else + #define JSON_HEDLEY_HAS_BUILTIN(builtin) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_BUILTIN) + #undef JSON_HEDLEY_GNUC_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else + #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_BUILTIN) + #undef JSON_HEDLEY_GCC_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else + #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_FEATURE) + #undef JSON_HEDLEY_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature) +#else + #define JSON_HEDLEY_HAS_FEATURE(feature) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_FEATURE) + #undef JSON_HEDLEY_GNUC_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else + #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_FEATURE) + #undef JSON_HEDLEY_GCC_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else + #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_EXTENSION) + #undef JSON_HEDLEY_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension) +#else + #define JSON_HEDLEY_HAS_EXTENSION(extension) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_EXTENSION) + #undef JSON_HEDLEY_GNUC_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else + #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_EXTENSION) + #undef JSON_HEDLEY_GCC_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else + #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_WARNING) + #undef JSON_HEDLEY_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning) +#else + #define JSON_HEDLEY_HAS_WARNING(warning) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_WARNING) + #undef JSON_HEDLEY_GNUC_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else + #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_WARNING) + #undef JSON_HEDLEY_GCC_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else + #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + defined(__clang__) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \ + (JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) && defined(__C99_PRAGMA_OPERATOR)) + #define JSON_HEDLEY_PRAGMA(value) _Pragma(#value) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_PRAGMA(value) __pragma(value) +#else + #define JSON_HEDLEY_PRAGMA(value) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_PUSH) + #undef JSON_HEDLEY_DIAGNOSTIC_PUSH +#endif +#if defined(JSON_HEDLEY_DIAGNOSTIC_POP) + #undef JSON_HEDLEY_DIAGNOSTIC_POP +#endif +#if defined(__clang__) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push)) + #define JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop)) +#elif JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("pop") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#else + #define JSON_HEDLEY_DIAGNOSTIC_PUSH + #define JSON_HEDLEY_DIAGNOSTIC_POP +#endif + +/* JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat") +# if JSON_HEDLEY_HAS_WARNING("-Wc++17-extensions") +# if JSON_HEDLEY_HAS_WARNING("-Wc++1z-extensions") +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + _Pragma("clang diagnostic ignored \"-Wc++1z-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# endif +#endif +#if !defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x +#endif + +#if defined(JSON_HEDLEY_CONST_CAST) + #undef JSON_HEDLEY_CONST_CAST +#endif +#if defined(__cplusplus) +# define JSON_HEDLEY_CONST_CAST(T, expr) (const_cast(expr)) +#elif \ + JSON_HEDLEY_HAS_WARNING("-Wcast-qual") || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_CONST_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_REINTERPRET_CAST) + #undef JSON_HEDLEY_REINTERPRET_CAST +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast(expr)) +#else + #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_STATIC_CAST) + #undef JSON_HEDLEY_STATIC_CAST +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast(expr)) +#else + #define JSON_HEDLEY_STATIC_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_CPP_CAST) + #undef JSON_HEDLEY_CPP_CAST +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wold-style-cast") +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wold-style-cast\"") \ + ((T) (expr)) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# elif JSON_HEDLEY_IAR_VERSION_CHECK(8,3,0) +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("diag_suppress=Pe137") \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_CPP_CAST(T, expr) ((T) (expr)) +# endif +#else +# define JSON_HEDLEY_CPP_CAST(T, expr) (expr) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wdeprecated-declarations") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:1478 1786)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1216,1444,1445") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && !defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:161)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068)) +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(16,9,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 161") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-attributes") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:1292)) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097,1098") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress=Pe1097") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wcast-qual") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunused-function") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("clang diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("GCC diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(1,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION __pragma(warning(disable:4505)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("diag_suppress 3142") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif + +#if defined(JSON_HEDLEY_DEPRECATED) + #undef JSON_HEDLEY_DEPRECATED +#endif +#if defined(JSON_HEDLEY_DEPRECATED_FOR) + #undef JSON_HEDLEY_DEPRECATED_FOR +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " # since)) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement)) +#elif \ + (JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since))) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement))) +#elif defined(__cplusplus) && (__cplusplus >= 201402L) + #define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]]) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__)) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_PELLES_VERSION_CHECK(6,50,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DEPRECATED(since) _Pragma("deprecated") + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated") +#else + #define JSON_HEDLEY_DEPRECATED(since) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) +#endif + +#if defined(JSON_HEDLEY_UNAVAILABLE) + #undef JSON_HEDLEY_UNAVAILABLE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warning) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since))) +#else + #define JSON_HEDLEY_UNAVAILABLE(available_since) +#endif + +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT) + #undef JSON_HEDLEY_WARN_UNUSED_RESULT +#endif +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT_MSG) + #undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) __attribute__((__warn_unused_result__)) +#elif (JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) >= 201907L) + #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard(msg)]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) + #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) +#elif defined(_Check_return_) /* SAL */ + #define JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_ + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) _Check_return_ +#else + #define JSON_HEDLEY_WARN_UNUSED_RESULT + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) +#endif + +#if defined(JSON_HEDLEY_SENTINEL) + #undef JSON_HEDLEY_SENTINEL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position))) +#else + #define JSON_HEDLEY_SENTINEL(position) +#endif + +#if defined(JSON_HEDLEY_NO_RETURN) + #undef JSON_HEDLEY_NO_RETURN +#endif +#if JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_NO_RETURN __noreturn +#elif \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L + #define JSON_HEDLEY_NO_RETURN _Noreturn +#elif defined(__cplusplus) && (__cplusplus >= 201103L) + #define JSON_HEDLEY_NO_RETURN JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,2,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_NO_RETURN _Pragma("does_not_return") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) + #define JSON_HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) + #define JSON_HEDLEY_NO_RETURN __attribute((noreturn)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) + #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#else + #define JSON_HEDLEY_NO_RETURN +#endif + +#if defined(JSON_HEDLEY_NO_ESCAPE) + #undef JSON_HEDLEY_NO_ESCAPE +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(noescape) + #define JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__)) +#else + #define JSON_HEDLEY_NO_ESCAPE +#endif + +#if defined(JSON_HEDLEY_UNREACHABLE) + #undef JSON_HEDLEY_UNREACHABLE +#endif +#if defined(JSON_HEDLEY_UNREACHABLE_RETURN) + #undef JSON_HEDLEY_UNREACHABLE_RETURN +#endif +#if defined(JSON_HEDLEY_ASSUME) + #undef JSON_HEDLEY_ASSUME +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_ASSUME(expr) __assume(expr) +#elif JSON_HEDLEY_HAS_BUILTIN(__builtin_assume) + #define JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr) +#elif \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) + #if defined(__cplusplus) + #define JSON_HEDLEY_ASSUME(expr) std::_nassert(expr) + #else + #define JSON_HEDLEY_ASSUME(expr) _nassert(expr) + #endif +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(JSON_HEDLEY_ARM_VERSION))) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(10,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_UNREACHABLE() __builtin_unreachable() +#elif defined(JSON_HEDLEY_ASSUME) + #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif +#if !defined(JSON_HEDLEY_ASSUME) + #if defined(JSON_HEDLEY_UNREACHABLE) + #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, ((expr) ? 1 : (JSON_HEDLEY_UNREACHABLE(), 1))) + #else + #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, expr) + #endif +#endif +#if defined(JSON_HEDLEY_UNREACHABLE) + #if \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (JSON_HEDLEY_STATIC_CAST(void, JSON_HEDLEY_ASSUME(0)), (value)) + #else + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) JSON_HEDLEY_UNREACHABLE() + #endif +#else + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (value) +#endif +#if !defined(JSON_HEDLEY_UNREACHABLE) + #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif + +JSON_HEDLEY_DIAGNOSTIC_PUSH +#if JSON_HEDLEY_HAS_WARNING("-Wpedantic") + #pragma clang diagnostic ignored "-Wpedantic" +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus) + #pragma clang diagnostic ignored "-Wc++98-compat-pedantic" +#endif +#if JSON_HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros",4,0,0) + #if defined(__clang__) + #pragma clang diagnostic ignored "-Wvariadic-macros" + #elif defined(JSON_HEDLEY_GCC_VERSION) + #pragma GCC diagnostic ignored "-Wvariadic-macros" + #endif +#endif +#if defined(JSON_HEDLEY_NON_NULL) + #undef JSON_HEDLEY_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) + #define JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__))) +#else + #define JSON_HEDLEY_NON_NULL(...) +#endif +JSON_HEDLEY_DIAGNOSTIC_POP + +#if defined(JSON_HEDLEY_PRINTF_FORMAT) + #undef JSON_HEDLEY_PRINTF_FORMAT +#endif +#if defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check))) +#elif defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check))) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(format) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check))) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(6,0,0) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check)) +#else + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) +#endif + +#if defined(JSON_HEDLEY_CONSTEXPR) + #undef JSON_HEDLEY_CONSTEXPR +#endif +#if defined(__cplusplus) + #if __cplusplus >= 201103L + #define JSON_HEDLEY_CONSTEXPR JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr) + #endif +#endif +#if !defined(JSON_HEDLEY_CONSTEXPR) + #define JSON_HEDLEY_CONSTEXPR +#endif + +#if defined(JSON_HEDLEY_PREDICT) + #undef JSON_HEDLEY_PREDICT +#endif +#if defined(JSON_HEDLEY_LIKELY) + #undef JSON_HEDLEY_LIKELY +#endif +#if defined(JSON_HEDLEY_UNLIKELY) + #undef JSON_HEDLEY_UNLIKELY +#endif +#if defined(JSON_HEDLEY_UNPREDICTABLE) + #undef JSON_HEDLEY_UNPREDICTABLE +#endif +#if JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable) + #define JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable((expr)) +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) && !defined(JSON_HEDLEY_PGI_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(9,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability( (expr), (value), (probability)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1 , (probability)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0 , (probability)) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect (!!(expr), 1 ) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect (!!(expr), 0 ) +#elif \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,27) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, expected, probability) \ + (((probability) >= 0.9) ? __builtin_expect((expr), (expected)) : (JSON_HEDLEY_STATIC_CAST(void, expected), (expr))) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \ + })) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \ + })) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0) +#else +# define JSON_HEDLEY_PREDICT(expr, expected, probability) (JSON_HEDLEY_STATIC_CAST(void, expected), (expr)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_LIKELY(expr) (!!(expr)) +# define JSON_HEDLEY_UNLIKELY(expr) (!!(expr)) +#endif +#if !defined(JSON_HEDLEY_UNPREDICTABLE) + #define JSON_HEDLEY_UNPREDICTABLE(expr) JSON_HEDLEY_PREDICT(expr, 1, 0.5) +#endif + +#if defined(JSON_HEDLEY_MALLOC) + #undef JSON_HEDLEY_MALLOC +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_MALLOC __attribute__((__malloc__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_MALLOC _Pragma("returns_new_memory") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_MALLOC __declspec(restrict) +#else + #define JSON_HEDLEY_MALLOC +#endif + +#if defined(JSON_HEDLEY_PURE) + #undef JSON_HEDLEY_PURE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(pure) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,96,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PURE __attribute__((__pure__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) +# define JSON_HEDLEY_PURE _Pragma("does_not_write_global_data") +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) \ + ) +# define JSON_HEDLEY_PURE _Pragma("FUNC_IS_PURE;") +#else +# define JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_CONST) + #undef JSON_HEDLEY_CONST +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(const) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_CONST __attribute__((__const__)) +#elif \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_CONST _Pragma("no_side_effect") +#else + #define JSON_HEDLEY_CONST JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_RESTRICT) + #undef JSON_HEDLEY_RESTRICT +#endif +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus) + #define JSON_HEDLEY_RESTRICT restrict +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,4) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + defined(__clang__) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_RESTRICT __restrict +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) && !defined(__cplusplus) + #define JSON_HEDLEY_RESTRICT _Restrict +#else + #define JSON_HEDLEY_RESTRICT +#endif + +#if defined(JSON_HEDLEY_INLINE) + #undef JSON_HEDLEY_INLINE +#endif +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + (defined(__cplusplus) && (__cplusplus >= 199711L)) + #define JSON_HEDLEY_INLINE inline +#elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(6,2,0) + #define JSON_HEDLEY_INLINE __inline__ +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,1,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_INLINE __inline +#else + #define JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_ALWAYS_INLINE) + #undef JSON_HEDLEY_ALWAYS_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) +# define JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) JSON_HEDLEY_INLINE +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_ALWAYS_INLINE __forceinline +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) \ + ) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("inline=forced") +#else +# define JSON_HEDLEY_ALWAYS_INLINE JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_NEVER_INLINE) + #undef JSON_HEDLEY_NEVER_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(10,2,0) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("noinline") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("inline=never") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) + #define JSON_HEDLEY_NEVER_INLINE __attribute((noinline)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) + #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#else + #define JSON_HEDLEY_NEVER_INLINE +#endif + +#if defined(JSON_HEDLEY_PRIVATE) + #undef JSON_HEDLEY_PRIVATE +#endif +#if defined(JSON_HEDLEY_PUBLIC) + #undef JSON_HEDLEY_PUBLIC +#endif +#if defined(JSON_HEDLEY_IMPORT) + #undef JSON_HEDLEY_IMPORT +#endif +#if defined(_WIN32) || defined(__CYGWIN__) +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC __declspec(dllexport) +# define JSON_HEDLEY_IMPORT __declspec(dllimport) +#else +# if \ + JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + ( \ + defined(__TI_EABI__) && \ + ( \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) \ + ) \ + ) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PRIVATE __attribute__((__visibility__("hidden"))) +# define JSON_HEDLEY_PUBLIC __attribute__((__visibility__("default"))) +# else +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC +# endif +# define JSON_HEDLEY_IMPORT extern +#endif + +#if defined(JSON_HEDLEY_NO_THROW) + #undef JSON_HEDLEY_NO_THROW +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_NO_THROW __attribute__((__nothrow__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) + #define JSON_HEDLEY_NO_THROW __declspec(nothrow) +#else + #define JSON_HEDLEY_NO_THROW +#endif + +#if defined(JSON_HEDLEY_FALL_THROUGH) + #undef JSON_HEDLEY_FALL_THROUGH +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(fallthrough) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__)) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough) + #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough) + #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]]) +#elif defined(__fallthrough) /* SAL */ + #define JSON_HEDLEY_FALL_THROUGH __fallthrough +#else + #define JSON_HEDLEY_FALL_THROUGH +#endif + +#if defined(JSON_HEDLEY_RETURNS_NON_NULL) + #undef JSON_HEDLEY_RETURNS_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__)) +#elif defined(_Ret_notnull_) /* SAL */ + #define JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_ +#else + #define JSON_HEDLEY_RETURNS_NON_NULL +#endif + +#if defined(JSON_HEDLEY_ARRAY_PARAM) + #undef JSON_HEDLEY_ARRAY_PARAM +#endif +#if \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ + !defined(__STDC_NO_VLA__) && \ + !defined(__cplusplus) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_TINYC_VERSION) + #define JSON_HEDLEY_ARRAY_PARAM(name) (name) +#else + #define JSON_HEDLEY_ARRAY_PARAM(name) +#endif + +#if defined(JSON_HEDLEY_IS_CONSTANT) + #undef JSON_HEDLEY_IS_CONSTANT +#endif +#if defined(JSON_HEDLEY_REQUIRE_CONSTEXPR) + #undef JSON_HEDLEY_REQUIRE_CONSTEXPR +#endif +/* JSON_HEDLEY_IS_CONSTEXPR_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) + #undef JSON_HEDLEY_IS_CONSTEXPR_ +#endif +#if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) && !defined(__cplusplus)) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr) +#endif +#if !defined(__cplusplus) +# if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,24) +#if defined(__INTPTR_TYPE__) + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*) +#else + #include + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*) +#endif +# elif \ + ( \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && \ + !defined(JSON_HEDLEY_SUNPRO_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION)) || \ + (JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,3,0) +#if defined(__INTPTR_TYPE__) + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0) +#else + #include + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0) +#endif +# elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + defined(JSON_HEDLEY_INTEL_VERSION) || \ + defined(JSON_HEDLEY_TINYC_VERSION) || \ + defined(JSON_HEDLEY_TI_ARMCL_VERSION) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(18,12,0) || \ + defined(JSON_HEDLEY_TI_CL2000_VERSION) || \ + defined(JSON_HEDLEY_TI_CL6X_VERSION) || \ + defined(JSON_HEDLEY_TI_CL7X_VERSION) || \ + defined(JSON_HEDLEY_TI_CLPRU_VERSION) || \ + defined(__clang__) +# define JSON_HEDLEY_IS_CONSTEXPR_(expr) ( \ + sizeof(void) != \ + sizeof(*( \ + 1 ? \ + ((void*) ((expr) * 0L) ) : \ +((struct { char v[sizeof(void) * 2]; } *) 1) \ + ) \ + ) \ + ) +# endif +#endif +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) + #if !defined(JSON_HEDLEY_IS_CONSTANT) + #define JSON_HEDLEY_IS_CONSTANT(expr) JSON_HEDLEY_IS_CONSTEXPR_(expr) + #endif + #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1)) +#else + #if !defined(JSON_HEDLEY_IS_CONSTANT) + #define JSON_HEDLEY_IS_CONSTANT(expr) (0) + #endif + #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr) +#endif + +#if defined(JSON_HEDLEY_BEGIN_C_DECLS) + #undef JSON_HEDLEY_BEGIN_C_DECLS +#endif +#if defined(JSON_HEDLEY_END_C_DECLS) + #undef JSON_HEDLEY_END_C_DECLS +#endif +#if defined(JSON_HEDLEY_C_DECL) + #undef JSON_HEDLEY_C_DECL +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_BEGIN_C_DECLS extern "C" { + #define JSON_HEDLEY_END_C_DECLS } + #define JSON_HEDLEY_C_DECL extern "C" +#else + #define JSON_HEDLEY_BEGIN_C_DECLS + #define JSON_HEDLEY_END_C_DECLS + #define JSON_HEDLEY_C_DECL +#endif + +#if defined(JSON_HEDLEY_STATIC_ASSERT) + #undef JSON_HEDLEY_STATIC_ASSERT +#endif +#if \ + !defined(__cplusplus) && ( \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \ + (JSON_HEDLEY_HAS_FEATURE(c_static_assert) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(6,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + defined(_Static_assert) \ + ) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message) +#elif \ + (defined(__cplusplus) && (__cplusplus >= 201103L)) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(16,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message)) +#else +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) +#endif + +#if defined(JSON_HEDLEY_NULL) + #undef JSON_HEDLEY_NULL +#endif +#if defined(__cplusplus) + #if __cplusplus >= 201103L + #define JSON_HEDLEY_NULL JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr) + #elif defined(NULL) + #define JSON_HEDLEY_NULL NULL + #else + #define JSON_HEDLEY_NULL JSON_HEDLEY_STATIC_CAST(void*, 0) + #endif +#elif defined(NULL) + #define JSON_HEDLEY_NULL NULL +#else + #define JSON_HEDLEY_NULL ((void*) 0) +#endif + +#if defined(JSON_HEDLEY_MESSAGE) + #undef JSON_HEDLEY_MESSAGE +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_MESSAGE(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(message msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message msg) +#elif JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(_CRI message msg) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_WARNING) + #undef JSON_HEDLEY_WARNING +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_WARNING(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(clang warning msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,8,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(GCC warning msg) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_REQUIRE) + #undef JSON_HEDLEY_REQUIRE +#endif +#if defined(JSON_HEDLEY_REQUIRE_MSG) + #undef JSON_HEDLEY_REQUIRE_MSG +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if) +# if JSON_HEDLEY_HAS_WARNING("-Wgcc-compat") +# define JSON_HEDLEY_REQUIRE(expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), #expr, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), msg, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error"))) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, "error"))) +# endif +#else +# define JSON_HEDLEY_REQUIRE(expr) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) +#endif + +#if defined(JSON_HEDLEY_FLAGS) + #undef JSON_HEDLEY_FLAGS +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum) && (!defined(__cplusplus) || JSON_HEDLEY_HAS_WARNING("-Wbitfield-enum-conversion")) + #define JSON_HEDLEY_FLAGS __attribute__((__flag_enum__)) +#else + #define JSON_HEDLEY_FLAGS +#endif + +#if defined(JSON_HEDLEY_FLAGS_CAST) + #undef JSON_HEDLEY_FLAGS_CAST +#endif +#if JSON_HEDLEY_INTEL_VERSION_CHECK(19,0,0) +# define JSON_HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("warning(disable:188)") \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_FLAGS_CAST(T, expr) JSON_HEDLEY_STATIC_CAST(T, expr) +#endif + +#if defined(JSON_HEDLEY_EMPTY_BASES) + #undef JSON_HEDLEY_EMPTY_BASES +#endif +#if \ + (JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,23918) && !JSON_HEDLEY_MSVC_VERSION_CHECK(20,0,0)) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases) +#else + #define JSON_HEDLEY_EMPTY_BASES +#endif + +/* Remaining macros are deprecated. */ + +#if defined(JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK) + #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK +#endif +#if defined(__clang__) + #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0) +#else + #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_CLANG_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_BUILTIN) + #undef JSON_HEDLEY_CLANG_HAS_BUILTIN +#endif +#define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) JSON_HEDLEY_HAS_BUILTIN(builtin) + +#if defined(JSON_HEDLEY_CLANG_HAS_FEATURE) + #undef JSON_HEDLEY_CLANG_HAS_FEATURE +#endif +#define JSON_HEDLEY_CLANG_HAS_FEATURE(feature) JSON_HEDLEY_HAS_FEATURE(feature) + +#if defined(JSON_HEDLEY_CLANG_HAS_EXTENSION) + #undef JSON_HEDLEY_CLANG_HAS_EXTENSION +#endif +#define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) JSON_HEDLEY_HAS_EXTENSION(extension) + +#if defined(JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_WARNING) + #undef JSON_HEDLEY_CLANG_HAS_WARNING +#endif +#define JSON_HEDLEY_CLANG_HAS_WARNING(warning) JSON_HEDLEY_HAS_WARNING(warning) + +#endif /* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < X) */ + + +// This file contains all internal macro definitions (except those affecting ABI) +// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them + +// #include + + +// exclude unsupported compilers +#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK) + #if defined(__clang__) + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 + #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 + #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #endif +#endif + +// C++ language standard detection +// if the user manually specified the used c++ version this is skipped +#if !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11) + #if (defined(__cplusplus) && __cplusplus >= 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L) + #define JSON_HAS_CPP_20 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) + #define JSON_HAS_CPP_14 + #endif + // the cpp 11 flag is always specified because it is the minimal required version + #define JSON_HAS_CPP_11 +#endif + +#ifdef __has_include + #if __has_include() + #include + #endif +#endif + +#if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM) + #ifdef JSON_HAS_CPP_17 + #if defined(__cpp_lib_filesystem) + #define JSON_HAS_FILESYSTEM 1 + #elif defined(__cpp_lib_experimental_filesystem) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif !defined(__has_include) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #endif + + // std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/ + #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before GCC 8: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before Clang 7: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__clang_major__) && __clang_major__ < 7 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before MSVC 19.14: https://en.cppreference.com/w/cpp/compiler_support + #if defined(_MSC_VER) && _MSC_VER < 1914 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before iOS 13 + #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before macOS Catalina + #if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + #endif +#endif + +#ifndef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_FILESYSTEM + #define JSON_HAS_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_THREE_WAY_COMPARISON + #if defined(__cpp_impl_three_way_comparison) && __cpp_impl_three_way_comparison >= 201907L \ + && defined(__cpp_lib_three_way_comparison) && __cpp_lib_three_way_comparison >= 201907L + #define JSON_HAS_THREE_WAY_COMPARISON 1 + #else + #define JSON_HAS_THREE_WAY_COMPARISON 0 + #endif +#endif + +#ifndef JSON_HAS_RANGES + // ranges header shipping in GCC 11.1.0 (released 2021-04-27) has syntax error + #if defined(__GLIBCXX__) && __GLIBCXX__ == 20210427 + #define JSON_HAS_RANGES 0 + #elif defined(__cpp_lib_ranges) + #define JSON_HAS_RANGES 1 + #else + #define JSON_HAS_RANGES 0 + #endif +#endif + +#ifdef JSON_HAS_CPP_17 + #define JSON_INLINE_VARIABLE inline +#else + #define JSON_INLINE_VARIABLE +#endif + +#if JSON_HEDLEY_HAS_ATTRIBUTE(no_unique_address) + #define JSON_NO_UNIQUE_ADDRESS [[no_unique_address]] +#else + #define JSON_NO_UNIQUE_ADDRESS +#endif + +// disable documentation warnings on clang +#if defined(__clang__) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdocumentation" + #pragma clang diagnostic ignored "-Wdocumentation-unknown-command" +#endif + +// allow disabling exceptions +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) + #define JSON_INTERNAL_CATCH(exception) catch(exception) +#else + #include + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) + #define JSON_INTERNAL_CATCH(exception) if(false) +#endif + +// override exception macros +#if defined(JSON_THROW_USER) + #undef JSON_THROW + #define JSON_THROW JSON_THROW_USER +#endif +#if defined(JSON_TRY_USER) + #undef JSON_TRY + #define JSON_TRY JSON_TRY_USER +#endif +#if defined(JSON_CATCH_USER) + #undef JSON_CATCH + #define JSON_CATCH JSON_CATCH_USER + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_CATCH_USER +#endif +#if defined(JSON_INTERNAL_CATCH_USER) + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER +#endif + +// allow overriding assert +#if !defined(JSON_ASSERT) + #include // assert + #define JSON_ASSERT(x) assert(x) +#endif + +// allow to access some private functions (needed by the test suite) +#if defined(JSON_TESTS_PRIVATE) + #define JSON_PRIVATE_UNLESS_TESTED public +#else + #define JSON_PRIVATE_UNLESS_TESTED private +#endif + +/*! +@brief macro to briefly define a mapping between an enum and JSON +@def NLOHMANN_JSON_SERIALIZE_ENUM +@since version 3.4.0 +*/ +#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \ + template \ + inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \ + { \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [e](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.first == e; \ + }); \ + j = ((it != std::end(m)) ? it : std::begin(m))->second; \ + } \ + template \ + inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \ + { \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [&j](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.second == j; \ + }); \ + e = ((it != std::end(m)) ? it : std::begin(m))->first; \ + } + +// Ugly macros to avoid uglier copy-paste when specializing basic_json. They +// may be removed in the future once the class is split. + +#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ + template class ObjectType, \ + template class ArrayType, \ + class StringType, class BooleanType, class NumberIntegerType, \ + class NumberUnsignedType, class NumberFloatType, \ + template class AllocatorType, \ + template class JSONSerializer, \ + class BinaryType> + +#define NLOHMANN_BASIC_JSON_TPL \ + basic_json + +// Macros to simplify conversion from/to types + +#define NLOHMANN_JSON_EXPAND( x ) x +#define NLOHMANN_JSON_GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, NAME,...) NAME +#define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \ + NLOHMANN_JSON_PASTE64, \ + NLOHMANN_JSON_PASTE63, \ + NLOHMANN_JSON_PASTE62, \ + NLOHMANN_JSON_PASTE61, \ + NLOHMANN_JSON_PASTE60, \ + NLOHMANN_JSON_PASTE59, \ + NLOHMANN_JSON_PASTE58, \ + NLOHMANN_JSON_PASTE57, \ + NLOHMANN_JSON_PASTE56, \ + NLOHMANN_JSON_PASTE55, \ + NLOHMANN_JSON_PASTE54, \ + NLOHMANN_JSON_PASTE53, \ + NLOHMANN_JSON_PASTE52, \ + NLOHMANN_JSON_PASTE51, \ + NLOHMANN_JSON_PASTE50, \ + NLOHMANN_JSON_PASTE49, \ + NLOHMANN_JSON_PASTE48, \ + NLOHMANN_JSON_PASTE47, \ + NLOHMANN_JSON_PASTE46, \ + NLOHMANN_JSON_PASTE45, \ + NLOHMANN_JSON_PASTE44, \ + NLOHMANN_JSON_PASTE43, \ + NLOHMANN_JSON_PASTE42, \ + NLOHMANN_JSON_PASTE41, \ + NLOHMANN_JSON_PASTE40, \ + NLOHMANN_JSON_PASTE39, \ + NLOHMANN_JSON_PASTE38, \ + NLOHMANN_JSON_PASTE37, \ + NLOHMANN_JSON_PASTE36, \ + NLOHMANN_JSON_PASTE35, \ + NLOHMANN_JSON_PASTE34, \ + NLOHMANN_JSON_PASTE33, \ + NLOHMANN_JSON_PASTE32, \ + NLOHMANN_JSON_PASTE31, \ + NLOHMANN_JSON_PASTE30, \ + NLOHMANN_JSON_PASTE29, \ + NLOHMANN_JSON_PASTE28, \ + NLOHMANN_JSON_PASTE27, \ + NLOHMANN_JSON_PASTE26, \ + NLOHMANN_JSON_PASTE25, \ + NLOHMANN_JSON_PASTE24, \ + NLOHMANN_JSON_PASTE23, \ + NLOHMANN_JSON_PASTE22, \ + NLOHMANN_JSON_PASTE21, \ + NLOHMANN_JSON_PASTE20, \ + NLOHMANN_JSON_PASTE19, \ + NLOHMANN_JSON_PASTE18, \ + NLOHMANN_JSON_PASTE17, \ + NLOHMANN_JSON_PASTE16, \ + NLOHMANN_JSON_PASTE15, \ + NLOHMANN_JSON_PASTE14, \ + NLOHMANN_JSON_PASTE13, \ + NLOHMANN_JSON_PASTE12, \ + NLOHMANN_JSON_PASTE11, \ + NLOHMANN_JSON_PASTE10, \ + NLOHMANN_JSON_PASTE9, \ + NLOHMANN_JSON_PASTE8, \ + NLOHMANN_JSON_PASTE7, \ + NLOHMANN_JSON_PASTE6, \ + NLOHMANN_JSON_PASTE5, \ + NLOHMANN_JSON_PASTE4, \ + NLOHMANN_JSON_PASTE3, \ + NLOHMANN_JSON_PASTE2, \ + NLOHMANN_JSON_PASTE1)(__VA_ARGS__)) +#define NLOHMANN_JSON_PASTE2(func, v1) func(v1) +#define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2) +#define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3) +#define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4) +#define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5) +#define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6) +#define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7) +#define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8) +#define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9) +#define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10) +#define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) +#define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) +#define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) +#define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) +#define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) +#define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) +#define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) +#define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) +#define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) +#define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) +#define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) +#define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) +#define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) +#define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) +#define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) +#define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) +#define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) +#define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) +#define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) +#define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) +#define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) +#define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) +#define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) +#define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) +#define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) +#define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) +#define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) +#define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) +#define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) +#define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) +#define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) +#define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) +#define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) +#define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) +#define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) +#define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) +#define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) +#define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) +#define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) +#define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) +#define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) +#define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) +#define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) +#define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) +#define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) +#define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) +#define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) +#define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) +#define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) +#define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) +#define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) +#define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) +#define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) + +#define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1; +#define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1); +#define NLOHMANN_JSON_FROM_WITH_DEFAULT(v1) nlohmann_json_t.v1 = nlohmann_json_j.value(#v1, nlohmann_json_default_obj.v1); + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE +@since version 3.9.0 +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \ + friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { Type nlohmann_json_default_obj; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE +@since version 3.9.0 +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \ + inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { Type nlohmann_json_default_obj; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + + +// inspired from https://stackoverflow.com/a/26745591 +// allows to call any std function as if (e.g. with begin): +// using std::begin; begin(x); +// +// it allows using the detected idiom to retrieve the return type +// of such an expression +#define NLOHMANN_CAN_CALL_STD_FUNC_IMPL(std_name) \ + namespace detail { \ + using std::std_name; \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + } \ + \ + namespace detail2 { \ + struct std_name##_tag \ + { \ + }; \ + \ + template \ + std_name##_tag std_name(T&&...); \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + \ + template \ + struct would_call_std_##std_name \ + { \ + static constexpr auto const value = ::nlohmann::detail:: \ + is_detected_exact::value; \ + }; \ + } /* namespace detail2 */ \ + \ + template \ + struct would_call_std_##std_name : detail2::would_call_std_##std_name \ + { \ + } + +#ifndef JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_USE_IMPLICIT_CONVERSIONS 1 +#endif + +#if JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_EXPLICIT +#else + #define JSON_EXPLICIT explicit +#endif + +#ifndef JSON_DISABLE_ENUM_SERIALIZATION + #define JSON_DISABLE_ENUM_SERIALIZATION 0 +#endif + +#ifndef JSON_USE_GLOBAL_UDLS + #define JSON_USE_GLOBAL_UDLS 1 +#endif + +#if JSON_HAS_THREE_WAY_COMPARISON + #include // partial_ordering +#endif + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/////////////////////////// +// JSON type enumeration // +/////////////////////////// + +/*! +@brief the JSON type enumeration + +This enumeration collects the different JSON types. It is internally used to +distinguish the stored values, and the functions @ref basic_json::is_null(), +@ref basic_json::is_object(), @ref basic_json::is_array(), +@ref basic_json::is_string(), @ref basic_json::is_boolean(), +@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), +@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), +@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +@ref basic_json::is_structured() rely on it. + +@note There are three enumeration entries (number_integer, number_unsigned, and +number_float), because the library distinguishes these three types for numbers: +@ref basic_json::number_unsigned_t is used for unsigned integers, +@ref basic_json::number_integer_t is used for signed integers, and +@ref basic_json::number_float_t is used for floating-point numbers or to +approximate integers which do not fit in the limits of their respective type. + +@sa see @ref basic_json::basic_json(const value_t value_type) -- create a JSON +value with the default value for a given type + +@since version 1.0.0 +*/ +enum class value_t : std::uint8_t +{ + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + binary, ///< binary array (ordered collection of bytes) + discarded ///< discarded by the parser callback function +}; + +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string < binary +- furthermore, each type is not smaller than itself +- discarded values are not comparable +- binary is represented as a b"" string in python and directly comparable to a + string; however, making a binary array directly comparable with a string would + be surprising behavior in a JSON file. + +@since version 1.0.0 +*/ +#if JSON_HAS_THREE_WAY_COMPARISON + inline std::partial_ordering operator<=>(const value_t lhs, const value_t rhs) noexcept // *NOPAD* +#else + inline bool operator<(const value_t lhs, const value_t rhs) noexcept +#endif +{ + static constexpr std::array order = {{ + 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, + 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */, + 6 /* binary */ + } + }; + + const auto l_index = static_cast(lhs); + const auto r_index = static_cast(rhs); +#if JSON_HAS_THREE_WAY_COMPARISON + if (l_index < order.size() && r_index < order.size()) + { + return order[l_index] <=> order[r_index]; // *NOPAD* + } + return std::partial_ordering::unordered; +#else + return l_index < order.size() && r_index < order.size() && order[l_index] < order[r_index]; +#endif +} + +// GCC selects the built-in operator< over an operator rewritten from +// a user-defined spaceship operator +// Clang, MSVC, and ICC select the rewritten candidate +// (see GCC bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105200) +#if JSON_HAS_THREE_WAY_COMPARISON && defined(__GNUC__) +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + return std::is_lt(lhs <=> rhs); // *NOPAD* +} +#endif + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/*! +@brief replace all occurrences of a substring by another string + +@param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t +@param[in] f the substring to replace with @a t +@param[in] t the string to replace @a f + +@pre The search string @a f must not be empty. **This precondition is +enforced with an assertion.** + +@since version 2.0.0 +*/ +template +inline void replace_substring(StringType& s, const StringType& f, + const StringType& t) +{ + JSON_ASSERT(!f.empty()); + for (auto pos = s.find(f); // find first occurrence of f + pos != StringType::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t, and + pos = s.find(f, pos + t.size())) // find next occurrence of f + {} +} + +/*! + * @brief string escaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to escape + * @return escaped string + * + * Note the order of escaping "~" to "~0" and "/" to "~1" is important. + */ +template +inline StringType escape(StringType s) +{ + replace_substring(s, StringType{"~"}, StringType{"~0"}); + replace_substring(s, StringType{"/"}, StringType{"~1"}); + return s; +} + +/*! + * @brief string unescaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to unescape + * @return unescaped string + * + * Note the order of escaping "~1" to "/" and "~0" to "~" is important. + */ +template +static void unescape(StringType& s) +{ + replace_substring(s, StringType{"~1"}, StringType{"/"}); + replace_substring(s, StringType{"~0"}, StringType{"~"}); +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // size_t + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/// struct to capture the start position of the current token +struct position_t +{ + /// the total number of characters read + std::size_t chars_read_total = 0; + /// the number of characters read in the current line + std::size_t chars_read_current_line = 0; + /// the number of lines read + std::size_t lines_read = 0; + + /// conversion to size_t to preserve SAX interface + constexpr operator size_t() const + { + return chars_read_total; + } +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-FileCopyrightText: 2018 The Abseil Authors +// SPDX-License-Identifier: MIT + + + +#include // array +#include // size_t +#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type +#include // index_sequence, make_index_sequence, index_sequence_for + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +using uncvref_t = typename std::remove_cv::type>::type; + +#ifdef JSON_HAS_CPP_14 + +// the following utilities are natively available in C++14 +using std::enable_if_t; +using std::index_sequence; +using std::make_index_sequence; +using std::index_sequence_for; + +#else + +// alias templates to reduce boilerplate +template +using enable_if_t = typename std::enable_if::type; + +// The following code is taken from https://github.com/abseil/abseil-cpp/blob/10cb35e459f5ecca5b2ff107635da0bfa41011b4/absl/utility/utility.h +// which is part of Google Abseil (https://github.com/abseil/abseil-cpp), licensed under the Apache License 2.0. + +//// START OF CODE FROM GOOGLE ABSEIL + +// integer_sequence +// +// Class template representing a compile-time integer sequence. An instantiation +// of `integer_sequence` has a sequence of integers encoded in its +// type through its template arguments (which is a common need when +// working with C++11 variadic templates). `absl::integer_sequence` is designed +// to be a drop-in replacement for C++14's `std::integer_sequence`. +// +// Example: +// +// template< class T, T... Ints > +// void user_function(integer_sequence); +// +// int main() +// { +// // user_function's `T` will be deduced to `int` and `Ints...` +// // will be deduced to `0, 1, 2, 3, 4`. +// user_function(make_integer_sequence()); +// } +template +struct integer_sequence +{ + using value_type = T; + static constexpr std::size_t size() noexcept + { + return sizeof...(Ints); + } +}; + +// index_sequence +// +// A helper template for an `integer_sequence` of `size_t`, +// `absl::index_sequence` is designed to be a drop-in replacement for C++14's +// `std::index_sequence`. +template +using index_sequence = integer_sequence; + +namespace utility_internal +{ + +template +struct Extend; + +// Note that SeqSize == sizeof...(Ints). It's passed explicitly for efficiency. +template +struct Extend, SeqSize, 0> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)... >; +}; + +template +struct Extend, SeqSize, 1> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)..., 2 * SeqSize >; +}; + +// Recursion helper for 'make_integer_sequence'. +// 'Gen::type' is an alias for 'integer_sequence'. +template +struct Gen +{ + using type = + typename Extend < typename Gen < T, N / 2 >::type, N / 2, N % 2 >::type; +}; + +template +struct Gen +{ + using type = integer_sequence; +}; + +} // namespace utility_internal + +// Compile-time sequences of integers + +// make_integer_sequence +// +// This template alias is equivalent to +// `integer_sequence`, and is designed to be a drop-in +// replacement for C++14's `std::make_integer_sequence`. +template +using make_integer_sequence = typename utility_internal::Gen::type; + +// make_index_sequence +// +// This template alias is equivalent to `index_sequence<0, 1, ..., N-1>`, +// and is designed to be a drop-in replacement for C++14's +// `std::make_index_sequence`. +template +using make_index_sequence = make_integer_sequence; + +// index_sequence_for +// +// Converts a typename pack into an index sequence of the same length, and +// is designed to be a drop-in replacement for C++14's +// `std::index_sequence_for()` +template +using index_sequence_for = make_index_sequence; + +//// END OF CODE FROM GOOGLE ABSEIL + +#endif + +// dispatch utility (taken from ranges-v3) +template struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; + +// taken from ranges-v3 +template +struct static_const +{ + static JSON_INLINE_VARIABLE constexpr T value{}; +}; + +#ifndef JSON_HAS_CPP_17 + template + constexpr T static_const::value; +#endif + +template +inline constexpr std::array make_array(Args&& ... args) +{ + return std::array {{static_cast(std::forward(args))...}}; +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // numeric_limits +#include // false_type, is_constructible, is_integral, is_same, true_type +#include // declval +#include // tuple + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // random_access_iterator_tag + +// #include + +// #include + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +struct iterator_types {}; + +template +struct iterator_types < + It, + void_t> +{ + using difference_type = typename It::difference_type; + using value_type = typename It::value_type; + using pointer = typename It::pointer; + using reference = typename It::reference; + using iterator_category = typename It::iterator_category; +}; + +// This is required as some compilers implement std::iterator_traits in a way that +// doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. +template +struct iterator_traits +{ +}; + +template +struct iterator_traits < T, enable_if_t < !std::is_pointer::value >> + : iterator_types +{ +}; + +template +struct iterator_traits::value>> +{ + using iterator_category = std::random_access_iterator_tag; + using value_type = T; + using difference_type = ptrdiff_t; + using pointer = T*; + using reference = T&; +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN + +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(begin); + +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN + +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(end); + +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + +#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_ + #define INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + #include // int64_t, uint64_t + #include // map + #include // allocator + #include // string + #include // vector + + // #include + + + /*! + @brief namespace for Niels Lohmann + @see https://github.com/nlohmann + @since version 1.0.0 + */ + NLOHMANN_JSON_NAMESPACE_BEGIN + + /*! + @brief default JSONSerializer template argument + + This serializer ignores the template arguments and uses ADL + ([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl)) + for serialization. + */ + template + struct adl_serializer; + + /// a class to store JSON values + /// @sa https://json.nlohmann.me/api/basic_json/ + template class ObjectType = + std::map, + template class ArrayType = std::vector, + class StringType = std::string, class BooleanType = bool, + class NumberIntegerType = std::int64_t, + class NumberUnsignedType = std::uint64_t, + class NumberFloatType = double, + template class AllocatorType = std::allocator, + template class JSONSerializer = + adl_serializer, + class BinaryType = std::vector> + class basic_json; + + /// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document + /// @sa https://json.nlohmann.me/api/json_pointer/ + template + class json_pointer; + + /*! + @brief default specialization + @sa https://json.nlohmann.me/api/json/ + */ + using json = basic_json<>; + + /// @brief a minimal map-like container that preserves insertion order + /// @sa https://json.nlohmann.me/api/ordered_map/ + template + struct ordered_map; + + /// @brief specialization that maintains the insertion order of object keys + /// @sa https://json.nlohmann.me/api/ordered_json/ + using ordered_json = basic_json; + + NLOHMANN_JSON_NAMESPACE_END + +#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + +NLOHMANN_JSON_NAMESPACE_BEGIN +/*! +@brief detail namespace with internal helper functions + +This namespace collects functions that should not be exposed, +implementations of some @ref basic_json methods, and meta-programming helpers. + +@since version 2.1.0 +*/ +namespace detail +{ + +///////////// +// helpers // +///////////// + +// Note to maintainers: +// +// Every trait in this file expects a non CV-qualified type. +// The only exceptions are in the 'aliases for detected' section +// (i.e. those of the form: decltype(T::member_function(std::declval()))) +// +// In this case, T has to be properly CV-qualified to constraint the function arguments +// (e.g. to_json(BasicJsonType&, const T&)) + +template struct is_basic_json : std::false_type {}; + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +struct is_basic_json : std::true_type {}; + +// used by exceptions create() member functions +// true_type for pointer to possibly cv-qualified basic_json or std::nullptr_t +// false_type otherwise +template +struct is_basic_json_context : + std::integral_constant < bool, + is_basic_json::type>::type>::value + || std::is_same::value > +{}; + +////////////////////// +// json_ref helpers // +////////////////////// + +template +class json_ref; + +template +struct is_json_ref : std::false_type {}; + +template +struct is_json_ref> : std::true_type {}; + +////////////////////////// +// aliases for detected // +////////////////////////// + +template +using mapped_type_t = typename T::mapped_type; + +template +using key_type_t = typename T::key_type; + +template +using value_type_t = typename T::value_type; + +template +using difference_type_t = typename T::difference_type; + +template +using pointer_t = typename T::pointer; + +template +using reference_t = typename T::reference; + +template +using iterator_category_t = typename T::iterator_category; + +template +using to_json_function = decltype(T::to_json(std::declval()...)); + +template +using from_json_function = decltype(T::from_json(std::declval()...)); + +template +using get_template_function = decltype(std::declval().template get()); + +// trait checking if JSONSerializer::from_json(json const&, udt&) exists +template +struct has_from_json : std::false_type {}; + +// trait checking if j.get is valid +// use this trait instead of std::is_constructible or std::is_convertible, +// both rely on, or make use of implicit conversions, and thus fail when T +// has several constructors/operator= (see https://github.com/nlohmann/json/issues/958) +template +struct is_getable +{ + static constexpr bool value = is_detected::value; +}; + +template +struct has_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if JSONSerializer::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template +struct has_non_default_from_json : std::false_type {}; + +template +struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if BasicJsonType::json_serializer::to_json exists +// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion. +template +struct has_to_json : std::false_type {}; + +template +struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +template +using detect_key_compare = typename T::key_compare; + +template +struct has_key_compare : std::integral_constant::value> {}; + +// obtains the actual object key comparator +template +struct actual_object_comparator +{ + using object_t = typename BasicJsonType::object_t; + using object_comparator_t = typename BasicJsonType::default_object_comparator_t; + using type = typename std::conditional < has_key_compare::value, + typename object_t::key_compare, object_comparator_t>::type; +}; + +template +using actual_object_comparator_t = typename actual_object_comparator::type; + +/////////////////// +// is_ functions // +/////////////////// + +// https://en.cppreference.com/w/cpp/types/conjunction +template struct conjunction : std::true_type { }; +template struct conjunction : B { }; +template +struct conjunction +: std::conditional(B::value), conjunction, B>::type {}; + +// https://en.cppreference.com/w/cpp/types/negation +template struct negation : std::integral_constant < bool, !B::value > { }; + +// Reimplementation of is_constructible and is_default_constructible, due to them being broken for +// std::pair and std::tuple until LWG 2367 fix (see https://cplusplus.github.io/LWG/lwg-defects.html#2367). +// This causes compile errors in e.g. clang 3.5 or gcc 4.9. +template +struct is_default_constructible : std::is_default_constructible {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + + +template +struct is_constructible : std::is_constructible {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + + +template +struct is_iterator_traits : std::false_type {}; + +template +struct is_iterator_traits> +{ + private: + using traits = iterator_traits; + + public: + static constexpr auto value = + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value; +}; + +template +struct is_range +{ + private: + using t_ref = typename std::add_lvalue_reference::type; + + using iterator = detected_t; + using sentinel = detected_t; + + // to be 100% correct, it should use https://en.cppreference.com/w/cpp/iterator/input_or_output_iterator + // and https://en.cppreference.com/w/cpp/iterator/sentinel_for + // but reimplementing these would be too much work, as a lot of other concepts are used underneath + static constexpr auto is_iterator_begin = + is_iterator_traits>::value; + + public: + static constexpr bool value = !std::is_same::value && !std::is_same::value && is_iterator_begin; +}; + +template +using iterator_t = enable_if_t::value, result_of_begin())>>; + +template +using range_value_t = value_type_t>>; + +// The following implementation of is_complete_type is taken from +// https://blogs.msdn.microsoft.com/vcblog/2015/12/02/partial-support-for-expression-sfinae-in-vs-2015-update-1/ +// and is written by Xiang Fan who agreed to using it in this library. + +template +struct is_complete_type : std::false_type {}; + +template +struct is_complete_type : std::true_type {}; + +template +struct is_compatible_object_type_impl : std::false_type {}; + +template +struct is_compatible_object_type_impl < + BasicJsonType, CompatibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + // macOS's is_constructible does not play well with nonesuch... + static constexpr bool value = + is_constructible::value && + is_constructible::value; +}; + +template +struct is_compatible_object_type + : is_compatible_object_type_impl {}; + +template +struct is_constructible_object_type_impl : std::false_type {}; + +template +struct is_constructible_object_type_impl < + BasicJsonType, ConstructibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + static constexpr bool value = + (is_default_constructible::value && + (std::is_move_assignable::value || + std::is_copy_assignable::value) && + (is_constructible::value && + std::is_same < + typename object_t::mapped_type, + typename ConstructibleObjectType::mapped_type >::value)) || + (has_from_json::value || + has_non_default_from_json < + BasicJsonType, + typename ConstructibleObjectType::mapped_type >::value); +}; + +template +struct is_constructible_object_type + : is_constructible_object_type_impl {}; + +template +struct is_compatible_string_type +{ + static constexpr auto value = + is_constructible::value; +}; + +template +struct is_constructible_string_type +{ + // launder type through decltype() to fix compilation failure on ICPC +#ifdef __INTEL_COMPILER + using laundered_type = decltype(std::declval()); +#else + using laundered_type = ConstructibleStringType; +#endif + + static constexpr auto value = + conjunction < + is_constructible, + is_detected_exact>::value; +}; + +template +struct is_compatible_array_type_impl : std::false_type {}; + +template +struct is_compatible_array_type_impl < + BasicJsonType, CompatibleArrayType, + enable_if_t < + is_detected::value&& + is_iterator_traits>>::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 + !std::is_same>::value >> +{ + static constexpr bool value = + is_constructible>::value; +}; + +template +struct is_compatible_array_type + : is_compatible_array_type_impl {}; + +template +struct is_constructible_array_type_impl : std::false_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t::value >> + : std::true_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t < !std::is_same::value&& + !is_compatible_string_type::value&& + is_default_constructible::value&& +(std::is_move_assignable::value || + std::is_copy_assignable::value)&& +is_detected::value&& +is_iterator_traits>>::value&& +is_detected::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 +!std::is_same>::value&& + is_complete_type < + detected_t>::value >> +{ + using value_type = range_value_t; + + static constexpr bool value = + std::is_same::value || + has_from_json::value || + has_non_default_from_json < + BasicJsonType, + value_type >::value; +}; + +template +struct is_constructible_array_type + : is_constructible_array_type_impl {}; + +template +struct is_compatible_integer_type_impl : std::false_type {}; + +template +struct is_compatible_integer_type_impl < + RealIntegerType, CompatibleNumberIntegerType, + enable_if_t < std::is_integral::value&& + std::is_integral::value&& + !std::is_same::value >> +{ + // is there an assert somewhere on overflows? + using RealLimits = std::numeric_limits; + using CompatibleLimits = std::numeric_limits; + + static constexpr auto value = + is_constructible::value && + CompatibleLimits::is_integer && + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template +struct is_compatible_integer_type + : is_compatible_integer_type_impl {}; + +template +struct is_compatible_type_impl: std::false_type {}; + +template +struct is_compatible_type_impl < + BasicJsonType, CompatibleType, + enable_if_t::value >> +{ + static constexpr bool value = + has_to_json::value; +}; + +template +struct is_compatible_type + : is_compatible_type_impl {}; + +template +struct is_constructible_tuple : std::false_type {}; + +template +struct is_constructible_tuple> : conjunction...> {}; + +template +struct is_json_iterator_of : std::false_type {}; + +template +struct is_json_iterator_of : std::true_type {}; + +template +struct is_json_iterator_of : std::true_type +{}; + +// checks if a given type T is a template specialization of Primary +template