diff --git a/.gitignore b/.gitignore index e1db685..01f8967 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ # R Ignores /r_app/*.Rhistory /r_app/*.Rdata + +.DS_Store diff --git a/Current - Pivots planting date and harevsting data.xlsx b/Current - Pivots planting date and harevsting data.xlsx new file mode 100644 index 0000000..88cc23e Binary files /dev/null and b/Current - Pivots planting date and harevsting data.xlsx differ diff --git a/Laravel_app/.editorconfig b/Laravel_app/.editorconfig new file mode 100644 index 0000000..8f0de65 --- /dev/null +++ b/Laravel_app/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 + +[docker-compose.yml] +indent_size = 4 diff --git a/Laravel_app/.env.example b/Laravel_app/.env.example new file mode 100644 index 0000000..ea0665b --- /dev/null +++ b/Laravel_app/.env.example @@ -0,0 +1,59 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +LOG_CHANNEL=stack +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=laravel +DB_USERNAME=root +DB_PASSWORD= + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +FILESYSTEM_DISK=local +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +MEMCACHED_HOST=127.0.0.1 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=smtp +MAIL_HOST=mailpit +MAIL_PORT=1025 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS="hello@example.com" +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= +AWS_USE_PATH_STYLE_ENDPOINT=false + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_HOST= +PUSHER_PORT=443 +PUSHER_SCHEME=https +PUSHER_APP_CLUSTER=mt1 + +VITE_APP_NAME="${APP_NAME}" +VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +VITE_PUSHER_HOST="${PUSHER_HOST}" +VITE_PUSHER_PORT="${PUSHER_PORT}" +VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" +VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Laravel_app/.gitattributes b/Laravel_app/.gitattributes new file mode 100644 index 0000000..fcb21d3 --- /dev/null +++ b/Laravel_app/.gitattributes @@ -0,0 +1,11 @@ +* text=auto eol=lf + +*.blade.php diff=html +*.css diff=css +*.html diff=html +*.md diff=markdown +*.php diff=php + +/.github export-ignore +CHANGELOG.md export-ignore +.styleci.yml export-ignore diff --git a/Laravel_app/.gitignore b/Laravel_app/.gitignore new file mode 100644 index 0000000..7fe978f --- /dev/null +++ b/Laravel_app/.gitignore @@ -0,0 +1,19 @@ +/.phpunit.cache +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/vendor +.env +.env.backup +.env.production +.phpunit.result.cache +Homestead.json +Homestead.yaml +auth.json +npm-debug.log +yarn-error.log +/.fleet +/.idea +/.vscode diff --git a/Laravel_app/README.md b/Laravel_app/README.md new file mode 100644 index 0000000..3ed385a --- /dev/null +++ b/Laravel_app/README.md @@ -0,0 +1,66 @@ +

Laravel Logo

+ +

+Build Status +Total Downloads +Latest Stable Version +License +

+ +## About Laravel + +Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: + +- [Simple, fast routing engine](https://laravel.com/docs/routing). +- [Powerful dependency injection container](https://laravel.com/docs/container). +- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. +- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). +- Database agnostic [schema migrations](https://laravel.com/docs/migrations). +- [Robust background job processing](https://laravel.com/docs/queues). +- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). + +Laravel is accessible, powerful, and provides tools required for large, robust applications. + +## Learning Laravel + +Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. + +You may also try the [Laravel Bootcamp](https://bootcamp.laravel.com), where you will be guided through building a modern Laravel application from scratch. + +If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. + +## Laravel Sponsors + +We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). + +### Premium Partners + +- **[Vehikl](https://vehikl.com/)** +- **[Tighten Co.](https://tighten.co)** +- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** +- **[64 Robots](https://64robots.com)** +- **[Cubet Techno Labs](https://cubettech.com)** +- **[Cyber-Duck](https://cyber-duck.co.uk)** +- **[Many](https://www.many.co.uk)** +- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** +- **[DevSquad](https://devsquad.com)** +- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** +- **[OP.GG](https://op.gg)** +- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** +- **[Lendio](https://lendio.com)** + +## Contributing + +Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). + +## Code of Conduct + +In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). + +## Security Vulnerabilities + +If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. + +## License + +The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Laravel_app/app/Console/Kernel.php b/Laravel_app/app/Console/Kernel.php new file mode 100644 index 0000000..e6b9960 --- /dev/null +++ b/Laravel_app/app/Console/Kernel.php @@ -0,0 +1,27 @@ +command('inspire')->hourly(); + } + + /** + * Register the commands for the application. + */ + protected function commands(): void + { + $this->load(__DIR__.'/Commands'); + + require base_path('routes/console.php'); + } +} diff --git a/Laravel_app/app/Exceptions/Handler.php b/Laravel_app/app/Exceptions/Handler.php new file mode 100644 index 0000000..56af264 --- /dev/null +++ b/Laravel_app/app/Exceptions/Handler.php @@ -0,0 +1,30 @@ + + */ + protected $dontFlash = [ + 'current_password', + 'password', + 'password_confirmation', + ]; + + /** + * Register the exception handling callbacks for the application. + */ + public function register(): void + { + $this->reportable(function (Throwable $e) { + // + }); + } +} diff --git a/Laravel_app/app/Http/Controllers/Controller.php b/Laravel_app/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..77ec359 --- /dev/null +++ b/Laravel_app/app/Http/Controllers/Controller.php @@ -0,0 +1,12 @@ + + */ + protected $middleware = [ + // \App\Http\Middleware\TrustHosts::class, + \App\Http\Middleware\TrustProxies::class, + \Illuminate\Http\Middleware\HandleCors::class, + \App\Http\Middleware\PreventRequestsDuringMaintenance::class, + \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, + \App\Http\Middleware\TrimStrings::class, + \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + ]; + + /** + * The application's route middleware groups. + * + * @var array> + */ + protected $middlewareGroups = [ + 'web' => [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, + \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + ]; + + /** + * The application's middleware aliases. + * + * Aliases may be used instead of class names to conveniently assign middleware to routes and groups. + * + * @var array + */ + protected $middlewareAliases = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class, + 'signed' => \App\Http\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + ]; +} diff --git a/Laravel_app/app/Http/Middleware/Authenticate.php b/Laravel_app/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..d4ef644 --- /dev/null +++ b/Laravel_app/app/Http/Middleware/Authenticate.php @@ -0,0 +1,17 @@ +expectsJson() ? null : route('login'); + } +} diff --git a/Laravel_app/app/Http/Middleware/EncryptCookies.php b/Laravel_app/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..867695b --- /dev/null +++ b/Laravel_app/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/Laravel_app/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Laravel_app/app/Http/Middleware/PreventRequestsDuringMaintenance.php new file mode 100644 index 0000000..74cbd9a --- /dev/null +++ b/Laravel_app/app/Http/Middleware/PreventRequestsDuringMaintenance.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/Laravel_app/app/Http/Middleware/RedirectIfAuthenticated.php b/Laravel_app/app/Http/Middleware/RedirectIfAuthenticated.php new file mode 100644 index 0000000..afc78c4 --- /dev/null +++ b/Laravel_app/app/Http/Middleware/RedirectIfAuthenticated.php @@ -0,0 +1,30 @@ +check()) { + return redirect(RouteServiceProvider::HOME); + } + } + + return $next($request); + } +} diff --git a/Laravel_app/app/Http/Middleware/TrimStrings.php b/Laravel_app/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..88cadca --- /dev/null +++ b/Laravel_app/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,19 @@ + + */ + protected $except = [ + 'current_password', + 'password', + 'password_confirmation', + ]; +} diff --git a/Laravel_app/app/Http/Middleware/TrustHosts.php b/Laravel_app/app/Http/Middleware/TrustHosts.php new file mode 100644 index 0000000..c9c58bd --- /dev/null +++ b/Laravel_app/app/Http/Middleware/TrustHosts.php @@ -0,0 +1,20 @@ + + */ + public function hosts(): array + { + return [ + $this->allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/Laravel_app/app/Http/Middleware/TrustProxies.php b/Laravel_app/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000..3391630 --- /dev/null +++ b/Laravel_app/app/Http/Middleware/TrustProxies.php @@ -0,0 +1,28 @@ +|string|null + */ + protected $proxies; + + /** + * The headers that should be used to detect proxies. + * + * @var int + */ + protected $headers = + Request::HEADER_X_FORWARDED_FOR | + Request::HEADER_X_FORWARDED_HOST | + Request::HEADER_X_FORWARDED_PORT | + Request::HEADER_X_FORWARDED_PROTO | + Request::HEADER_X_FORWARDED_AWS_ELB; +} diff --git a/Laravel_app/app/Http/Middleware/ValidateSignature.php b/Laravel_app/app/Http/Middleware/ValidateSignature.php new file mode 100644 index 0000000..093bf64 --- /dev/null +++ b/Laravel_app/app/Http/Middleware/ValidateSignature.php @@ -0,0 +1,22 @@ + + */ + protected $except = [ + // 'fbclid', + // 'utm_campaign', + // 'utm_content', + // 'utm_medium', + // 'utm_source', + // 'utm_term', + ]; +} diff --git a/Laravel_app/app/Http/Middleware/VerifyCsrfToken.php b/Laravel_app/app/Http/Middleware/VerifyCsrfToken.php new file mode 100644 index 0000000..9e86521 --- /dev/null +++ b/Laravel_app/app/Http/Middleware/VerifyCsrfToken.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/Laravel_app/app/Models/User.php b/Laravel_app/app/Models/User.php new file mode 100644 index 0000000..4d7f70f --- /dev/null +++ b/Laravel_app/app/Models/User.php @@ -0,0 +1,45 @@ + + */ + protected $fillable = [ + 'name', + 'email', + 'password', + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var array + */ + protected $hidden = [ + 'password', + 'remember_token', + ]; + + /** + * The attributes that should be cast. + * + * @var array + */ + protected $casts = [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + ]; +} diff --git a/Laravel_app/app/Providers/AppServiceProvider.php b/Laravel_app/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..452e6b6 --- /dev/null +++ b/Laravel_app/app/Providers/AppServiceProvider.php @@ -0,0 +1,24 @@ + + */ + protected $policies = [ + // + ]; + + /** + * Register any authentication / authorization services. + */ + public function boot(): void + { + // + } +} diff --git a/Laravel_app/app/Providers/BroadcastServiceProvider.php b/Laravel_app/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..2be04f5 --- /dev/null +++ b/Laravel_app/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,19 @@ +> + */ + protected $listen = [ + Registered::class => [ + SendEmailVerificationNotification::class, + ], + ]; + + /** + * Register any events for your application. + */ + public function boot(): void + { + // + } + + /** + * Determine if events and listeners should be automatically discovered. + */ + public function shouldDiscoverEvents(): bool + { + return false; + } +} diff --git a/Laravel_app/app/Providers/RouteServiceProvider.php b/Laravel_app/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..1cf5f15 --- /dev/null +++ b/Laravel_app/app/Providers/RouteServiceProvider.php @@ -0,0 +1,40 @@ +by($request->user()?->id ?: $request->ip()); + }); + + $this->routes(function () { + Route::middleware('api') + ->prefix('api') + ->group(base_path('routes/api.php')); + + Route::middleware('web') + ->group(base_path('routes/web.php')); + }); + } +} diff --git a/Laravel_app/artisan b/Laravel_app/artisan new file mode 100755 index 0000000..67a3329 --- /dev/null +++ b/Laravel_app/artisan @@ -0,0 +1,53 @@ +#!/usr/bin/env php +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running, we will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/Laravel_app/bootstrap/app.php b/Laravel_app/bootstrap/app.php new file mode 100644 index 0000000..037e17d --- /dev/null +++ b/Laravel_app/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/Laravel_app/bootstrap/cache/.gitignore b/Laravel_app/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/Laravel_app/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/Laravel_app/composer.json b/Laravel_app/composer.json new file mode 100644 index 0000000..e1fb449 --- /dev/null +++ b/Laravel_app/composer.json @@ -0,0 +1,66 @@ +{ + "name": "laravel/laravel", + "type": "project", + "description": "The skeleton application for the Laravel framework.", + "keywords": ["laravel", "framework"], + "license": "MIT", + "require": { + "php": "^8.1", + "guzzlehttp/guzzle": "^7.2", + "laravel/framework": "^10.10", + "laravel/sanctum": "^3.2", + "laravel/tinker": "^2.8" + }, + "require-dev": { + "fakerphp/faker": "^1.9.1", + "laravel/pint": "^1.0", + "laravel/sail": "^1.18", + "mockery/mockery": "^1.4.4", + "nunomaduro/collision": "^7.0", + "phpunit/phpunit": "^10.1", + "spatie/laravel-ignition": "^2.0" + }, + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" + ], + "post-update-cmd": [ + "@php artisan vendor:publish --tag=laravel-assets --ansi --force" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi" + ] + }, + "extra": { + "laravel": { + "dont-discover": [] + } + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true, + "allow-plugins": { + "pestphp/pest-plugin": true, + "php-http/discovery": true + } + }, + "minimum-stability": "stable", + "prefer-stable": true +} diff --git a/Laravel_app/composer.lock b/Laravel_app/composer.lock new file mode 100644 index 0000000..b32e29c --- /dev/null +++ b/Laravel_app/composer.lock @@ -0,0 +1,8076 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "aa322c53454393ed775cfe4807d54a50", + "packages": [ + { + "name": "brick/math", + "version": "0.11.0", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^9.0", + "vimeo/psalm": "5.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.11.0" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2023-01-15T23:15:59+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "f41715465d65213d644d3141a6a93081be5d3549" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", + "reference": "f41715465d65213d644d3141a6a93081be5d3549", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" + }, + "time": "2022-10-27T11:44:00+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.8", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.8" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2023-06-16T13:40:37+00:00" + }, + { + "name": "doctrine/lexer", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "84a527db05647743d50373e0ec53a152f2cde568" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", + "reference": "84a527db05647743d50373e0ec53a152f2cde568", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^9.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/3.0.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2022-12-15T16:57:16+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.3.3", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-webmozart-assert": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2023-08-10T19:36:49+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.2", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2023-10-06T06:47:41+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", + "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barryvdh", + "email": "barryvdh@gmail.com" + } + ], + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", + "keywords": [ + "cors", + "laravel", + "symfony" + ], + "support": { + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2022-02-20T15:07:15+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", + "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.1" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2023-02-25T20:23:15+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.8.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1110f66a6530a40fe7aea0378fe608ee2b2248f9", + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "ext-curl": "*", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.8.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2023-08-27T10:20:53+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d", + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2023-08-03T15:11:55+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.6.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/be45764272e8873c72dbe3d2edcfdfcc3bc9f727", + "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.6.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2023-08-27T10:13:57+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/61bf437fc2197f587f6857d3ff903a24f1731b5d", + "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.17" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "phpunit/phpunit": "^8.5.19 || ^9.5.8", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2023-08-27T10:19:19+00:00" + }, + { + "name": "laravel/framework", + "version": "v10.27.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "616f81bd6dd8aa2e26a9fc21d9c95e98bd30803b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/616f81bd6dd8aa2e26a9fc21d9c95e98bd30803b", + "reference": "616f81bd6dd8aa2e26a9fc21d9c95e98bd30803b", + "shasum": "" + }, + "require": { + "brick/math": "^0.9.3|^0.10.2|^0.11", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.3.2", + "egulias/email-validator": "^3.2.1|^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.2", + "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.1.9", + "laravel/serializable-closure": "^1.3", + "league/commonmark": "^2.2.1", + "league/flysystem": "^3.8.0", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^2.67", + "nunomaduro/termwind": "^1.13", + "php": "^8.1", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^6.2", + "symfony/error-handler": "^6.2", + "symfony/finder": "^6.2", + "symfony/http-foundation": "^6.2", + "symfony/http-kernel": "^6.2", + "symfony/mailer": "^6.2", + "symfony/mime": "^6.2", + "symfony/process": "^6.2", + "symfony/routing": "^6.2", + "symfony/uid": "^6.2", + "symfony/var-dumper": "^6.2", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^2.0" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/conditionable": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version" + }, + "require-dev": { + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.235.5", + "doctrine/dbal": "^3.5.1", + "ext-gmp": "*", + "fakerphp/faker": "^1.21", + "guzzlehttp/guzzle": "^7.5", + "league/flysystem-aws-s3-v3": "^3.0", + "league/flysystem-ftp": "^3.0", + "league/flysystem-path-prefixing": "^3.3", + "league/flysystem-read-only": "^3.3", + "league/flysystem-sftp-v3": "^3.0", + "mockery/mockery": "^1.5.1", + "orchestra/testbench-core": "^8.12", + "pda/pheanstalk": "^4.0", + "phpstan/phpstan": "^1.4.7", + "phpunit/phpunit": "^10.0.7", + "predis/predis": "^2.0.2", + "symfony/cache": "^6.2", + "symfony/http-client": "^6.2.4" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", + "ext-pdo": "Required to use all database features.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", + "league/flysystem-read-only": "Required to use read-only disks (^3.3)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", + "mockery/mockery": "Required to use mocking (^1.5.1).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", + "predis/predis": "Required to use the predis connector (^2.0.2).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2023-10-09T15:15:28+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.1.11", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "cce65a90e64712909ea1adc033e1d88de8455ffd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/cce65a90e64712909ea1adc033e1d88de8455ffd", + "reference": "cce65a90e64712909ea1adc033e1d88de8455ffd", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.1.11" + }, + "time": "2023-10-03T01:07:35+00:00" + }, + { + "name": "laravel/sanctum", + "version": "v3.3.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/sanctum.git", + "reference": "338f633e6487e76b255470d3373fbc29228aa971" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/338f633e6487e76b255470d3373fbc29228aa971", + "reference": "338f633e6487e76b255470d3373fbc29228aa971", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/console": "^9.21|^10.0", + "illuminate/contracts": "^9.21|^10.0", + "illuminate/database": "^9.21|^10.0", + "illuminate/support": "^9.21|^10.0", + "php": "^8.0.2" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^7.28.2|^8.8.3", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sanctum\\SanctumServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sanctum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.", + "keywords": [ + "auth", + "laravel", + "sanctum" + ], + "support": { + "issues": "https://github.com/laravel/sanctum/issues", + "source": "https://github.com/laravel/sanctum" + }, + "time": "2023-09-07T15:46:33+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/e5a3057a5591e1cfe8183034b0203921abe2c902", + "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "nesbot/carbon": "^2.61", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2023-07-14T13:56:28+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.8.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/b936d415b252b499e8c3b1f795cd4fc20f57e1f3", + "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.10.4|^0.11.1", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.8|^9.3.3" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.8.2" + }, + "time": "2023-08-15T14:27:00+00:00" + }, + { + "name": "league/commonmark", + "version": "2.4.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.30.0", + "commonmark/commonmark.js": "0.30.0", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2023-08-30T16:55:00+00:00" + }, + { + "name": "league/config", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2022-12-11T20:36:23+00:00" + }, + { + "name": "league/flysystem", + "version": "3.17.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "bd4c9b26849d82364119c68429541f1631fba94b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/bd4c9b26849d82364119c68429541f1631fba94b", + "reference": "bd4c9b26849d82364119c68429541f1631fba94b", + "shasum": "" + }, + "require": { + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.220.0", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "microsoft/azure-storage-blob": "^1.1", + "phpseclib/phpseclib": "^3.0.14", + "phpstan/phpstan": "^0.12.26", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.3.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "File storage abstraction for PHP", + "keywords": [ + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.17.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2023-10-05T20:15:05+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.16.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "ec7383f25642e6fd4bb0c9554fc2311245391781" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/ec7383f25642e6fd4bb0c9554fc2311245391781", + "reference": "ec7383f25642e6fd4bb0c9554fc2311245391781", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem-local/issues", + "source": "https://github.com/thephpleague/flysystem-local/tree/3.16.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2023-08-30T10:23:59+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.13.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/a6dfb1194a2946fcdc1f38219445234f65b35c96", + "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.13.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2023-08-05T12:09:49+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.4.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "e2392369686d420ca32df3803de28b5d6f76867d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e2392369686d420ca32df3803de28b5d6f76867d", + "reference": "e2392369686d420ca32df3803de28b5d6f76867d", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.1", + "predis/predis": "^1.1 || ^2", + "ruflin/elastica": "^7", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.4.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2023-06-21T08:46:11+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.71.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "98276233188583f2ff845a0f992a235472d9466a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/98276233188583f2ff845a0f992a235472d9466a", + "reference": "98276233188583f2ff845a0f992a235472d9466a", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.1.4", + "doctrine/orm": "^2.7", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "*", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "squizlabs/php_codesniffer": "^3.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-3.x": "3.x-dev", + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2023-09-25T11:31:05+00:00" + }, + { + "name": "nette/schema", + "version": "v1.2.5", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/0462f0166e823aad657c9224d0f849ecac1ba10a", + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a", + "shasum": "" + }, + "require": { + "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", + "php": "7.1 - 8.3" + }, + "require-dev": { + "nette/tester": "^2.3 || ^2.4", + "phpstan/phpstan-nette": "^1.0", + "tracy/tracy": "^2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.2.5" + }, + "time": "2023-10-05T20:37:59+00:00" + }, + { + "name": "nette/utils", + "version": "v4.0.2", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "cead6637226456b35e1175cc53797dd585d85545" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/cead6637226456b35e1175cc53797dd585d85545", + "reference": "cead6637226456b35e1175cc53797dd585d85545", + "shasum": "" + }, + "require": { + "php": ">=8.0 <8.4" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "dev-master", + "nette/tester": "^2.5", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v4.0.2" + }, + "time": "2023-09-19T11:58:07+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.17.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + }, + "time": "2023-08-13T19:53:39+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v1.15.1", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.0", + "symfony/console": "^5.3.0|^6.0.0" + }, + "require-dev": { + "ergebnis/phpstan-rules": "^1.0.", + "illuminate/console": "^8.0|^9.0", + "illuminate/support": "^8.0|^9.0", + "laravel/pint": "^1.0.0", + "pestphp/pest": "^1.21.0", + "pestphp/pest-plugin-mock": "^1.0", + "phpstan/phpstan": "^1.4.6", + "phpstan/phpstan-strict-rules": "^1.1.0", + "symfony/var-dumper": "^5.2.7|^6.0.0", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Termwind\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Its like Tailwind CSS, but for the console.", + "keywords": [ + "cli", + "console", + "css", + "package", + "php", + "style" + ], + "support": { + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", + "type": "github" + } + ], + "time": "2023-02-08T01:06:31+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2023-02-25T19:38:58+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "e616d01114759c4c489f93b099585439f795fe35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + }, + "time": "2023-04-10T20:10:41+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/log", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.0" + }, + "time": "2021-07-14T16:46:02+00:00" + }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.11.21", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "bcb22101107f3bf770523b65630c9d547f60c540" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/bcb22101107f3bf770523b65630c9d547f60c540", + "reference": "bcb22101107f3bf770523b65630c9d547f60c540", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^4.0 || ^3.1", + "php": "^8.0 || ^7.0.8", + "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.11.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.11.21" + }, + "time": "2023-09-17T21:15:54+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2022-12-31T21:50:55+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.7.4", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "60a4c63ab724854332900504274f6150ff26d286" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", + "reference": "60a4c63ab724854332900504274f6150ff26d286", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", + "ext-json": "*", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.7.4" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2023-04-15T23:01:58+00:00" + }, + { + "name": "symfony/console", + "version": "v6.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/lock": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v6.3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-08-16T10:10:12+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v6.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v6.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-12T16:00:22+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-23T14:45:45+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "1f69476b64fb47105c06beef757766c376b548c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/1f69476b64fb47105c06beef757766c376b548c4", + "reference": "1f69476b64fb47105c06beef757766c376b548c4", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^5.4|^6.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-12T06:57:20+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v6.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-06T06:56:43+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-23T14:45:45+00:00" + }, + { + "name": "symfony/finder", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/a1b31d88c0e998168ca7792f222cbecee47428c4", + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-26T12:56:25+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "b50f5e281d722cb0f4c296f908bacc3e2b721957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b50f5e281d722cb0f4c296f908bacc3e2b721957", + "reference": "b50f5e281d722cb0f4c296f908bacc3e2b721957", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "symfony/cache": "<6.2" + }, + "require-dev": { + "doctrine/dbal": "^2.13.1|^3.0", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^5.4|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-04T21:33:54+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "9f991a964368bee8d883e8d57ced4fe9fff04dfc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9f991a964368bee8d883e8d57ced4fe9fff04dfc", + "reference": "9f991a964368bee8d883e8d57ced4fe9fff04dfc", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.3", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/http-foundation": "^6.3.4", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.3.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<5.4", + "symfony/var-dumper": "<6.3", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/clock": "^6.2", + "symfony/config": "^6.1", + "symfony/console": "^5.4|^6.0", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dependency-injection": "^6.3.4", + "symfony/dom-crawler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0", + "symfony/property-access": "^5.4.5|^6.0.5", + "symfony/routing": "^5.4|^6.0", + "symfony/serializer": "^6.3", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^6.3", + "symfony/var-exporter": "^6.2", + "twig/twig": "^2.13|^3.0.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-30T06:37:04+00:00" + }, + { + "name": "symfony/mailer", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "d89611a7830d51b5e118bca38e390dea92f9ea06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/d89611a7830d51b5e118bca38e390dea92f9ea06", + "reference": "d89611a7830d51b5e118bca38e390dea92f9ea06", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.1", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/mime": "^6.2", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/messenger": "^6.2", + "symfony/twig-bridge": "^6.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-06T09:47:15+00:00" + }, + { + "name": "symfony/mime", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/d5179eedf1cb2946dbd760475ebf05c251ef6a6e", + "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<5.4", + "symfony/serializer": "<6.2.13|>=6.3,<6.3.2" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/serializer": "~6.2.13|^6.3.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-29T06:59:36+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "875e90aeea2777b6f135677f618529449334a612" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:30:37+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "42292d99c55abe617799667f454222c54c60e229" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-28T09:04:16+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-08-16T06:22:46+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/process", + "version": "v6.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54", + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v6.3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-08-07T10:39:22+00:00" + }, + { + "name": "symfony/routing", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/82616e59acd3e3d9c916bba798326cb7796d7d31", + "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "symfony/config": "<6.2", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12|^2", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.2", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-20T16:05:51+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^2.0" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-23T14:45:45+00:00" + }, + { + "name": "symfony/string", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339", + "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/error-handler": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/intl": "^6.2", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-18T10:38:32+00:00" + }, + { + "name": "symfony/translation", + "version": "v6.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.13", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v6.3.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-31T07:08:24+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-30T17:17:10+00:00" + }, + { + "name": "symfony/uid", + "version": "v6.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/01b0f20b1351d997711c56f1638f7a8c3061e384", + "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v6.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-04-08T07:25:02+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "3d9999376be5fea8de47752837a3e1d1c5f69ef5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3d9999376be5fea8de47752837a3e1d1c5f69ef5", + "reference": "3d9999376be5fea8de47752837a3e1d1c5f69ef5", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/uid": "^5.4|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-12T10:11:35+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "2.2.6", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6" + }, + "time": "2023-01-03T09:29:04+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.5.0", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.0.2", + "php": "^7.1.3 || ^8.0", + "phpoption/phpoption": "^1.8", + "symfony/polyfill-ctype": "^1.23", + "symfony/polyfill-mbstring": "^1.23.1", + "symfony/polyfill-php80": "^1.23.1" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-filter": "*", + "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "5.5-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2022-10-16T01:01:54+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b56450eed252f6801410d810c8e1727224ae0743" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", + "reference": "b56450eed252f6801410d810c8e1727224ae0743", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-03-08T17:03:00+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "packages-dev": [ + { + "name": "fakerphp/faker", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "v1.21-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" + }, + "time": "2023-06-12T08:44:38+00:00" + }, + { + "name": "filp/whoops", + "version": "2.15.3", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187", + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.15.3" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2023-07-13T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.13.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "bbb13460d7f8c5c0cd9a58109beedd79cd7331ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/bbb13460d7f8c5c0cd9a58109beedd79cd7331ff", + "reference": "bbb13460d7f8c5c0cd9a58109beedd79cd7331ff", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.26.1", + "illuminate/view": "^10.23.1", + "laravel-zero/framework": "^10.1.2", + "mockery/mockery": "^1.6.6", + "nunomaduro/larastan": "^2.6.4", + "nunomaduro/termwind": "^1.15.1", + "pestphp/pest": "^2.18.2" + }, + "bin": [ + "builds/pint" + ], + "type": "project", + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Seeders\\": "database/seeders/", + "Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "An opinionated code formatter for PHP.", + "homepage": "https://laravel.com", + "keywords": [ + "format", + "formatter", + "lint", + "linter", + "php" + ], + "support": { + "issues": "https://github.com/laravel/pint/issues", + "source": "https://github.com/laravel/pint" + }, + "time": "2023-09-19T15:55:02+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "e81a7bd7ac1a745ccb25572830fecf74a89bb48a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/e81a7bd7ac1a745ccb25572830fecf74a89bb48a", + "reference": "e81a7bd7ac1a745ccb25572830fecf74a89bb48a", + "shasum": "" + }, + "require": { + "illuminate/console": "^8.0|^9.0|^10.0", + "illuminate/contracts": "^8.0|^9.0|^10.0", + "illuminate/support": "^8.0|^9.0|^10.0", + "php": "^8.0", + "symfony/yaml": "^6.0" + }, + "require-dev": { + "orchestra/testbench": "^6.0|^7.0|^8.0", + "phpstan/phpstan": "^1.10" + }, + "bin": [ + "bin/sail" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sail\\SailServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Docker files for running a basic Laravel application.", + "keywords": [ + "docker", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/sail/issues", + "source": "https://github.com/laravel/sail" + }, + "time": "2023-09-11T17:37:09+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.6", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e", + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.6.10", + "psalm/plugin-phpunit": "^0.18.4", + "symplify/easy-coding-standard": "^11.5.0", + "vimeo/psalm": "^4.30" + }, + "type": "library", + "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" + }, + "time": "2023-08-09T00:03:52+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.11.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2023-03-08T13:26:56+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v7.9.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "296d0cf9fe462837ac0da8a568b56fc026b132da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/296d0cf9fe462837ac0da8a568b56fc026b132da", + "reference": "296d0cf9fe462837ac0da8a568b56fc026b132da", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.15.3", + "nunomaduro/termwind": "^1.15.1", + "php": "^8.1.0", + "symfony/console": "^6.3.4" + }, + "require-dev": { + "brianium/paratest": "^7.2.7", + "laravel/framework": "^10.23.1", + "laravel/pint": "^1.13.1", + "laravel/sail": "^1.25.0", + "laravel/sanctum": "^3.3.1", + "laravel/tinker": "^2.8.2", + "nunomaduro/larastan": "^2.6.4", + "orchestra/testbench-core": "^8.11.0", + "pestphp/pest": "^2.19.1", + "phpunit/phpunit": "^10.3.5", + "sebastian/environment": "^6.0.1", + "spatie/laravel-ignition": "^2.3.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2023-09-19T10:45:09+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "10.1.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "355324ca4980b8916c18b9db29f3ef484078f26e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/355324ca4980b8916c18b9db29f3ef484078f26e", + "reference": "355324ca4980b8916c18b9db29f3ef484078f26e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.15", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-text-template": "^3.0", + "sebastian/code-unit-reverse-lookup": "^3.0", + "sebastian/complexity": "^3.0", + "sebastian/environment": "^6.0", + "sebastian/lines-of-code": "^2.0", + "sebastian/version": "^4.0", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.1" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.7" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-10-04T15:34:17+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "4.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T06:24:48+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:56:09+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T14:07:24+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:57:52+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "10.4.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "62bd7af13d282deeb95650077d28ba3600ca321c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/62bd7af13d282deeb95650077d28ba3600ca321c", + "reference": "62bd7af13d282deeb95650077d28ba3600ca321c", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.5", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-invoker": "^4.0", + "phpunit/php-text-template": "^3.0", + "phpunit/php-timer": "^6.0", + "sebastian/cli-parser": "^2.0", + "sebastian/code-unit": "^2.0", + "sebastian/comparator": "^5.0", + "sebastian/diff": "^5.0", + "sebastian/environment": "^6.0", + "sebastian/exporter": "^5.1", + "sebastian/global-state": "^6.0.1", + "sebastian/object-enumerator": "^5.0", + "sebastian/recursion-context": "^5.0", + "sebastian/type": "^4.0", + "sebastian/version": "^4.0" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.4-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.4.1" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2023-10-08T05:01:11+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:58:15+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:58:43+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:59:15+00:00" + }, + { + "name": "sebastian/comparator", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-14T13:18:12+00:00" + }, + { + "name": "sebastian/complexity", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68cfb347a44871f01e33ab0ef8215966432f6957", + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.10", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-09-28T11:50:59+00:00" + }, + { + "name": "sebastian/diff", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-05-01T07:48:21+00:00" + }, + { + "name": "sebastian/environment", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-04-11T05:39:26+00:00" + }, + { + "name": "sebastian/exporter", + "version": "5.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-09-24T13:22:09+00:00" + }, + { + "name": "sebastian/global-state", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-07-19T07:19:23+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.10", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T09:25:50+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:08:32+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:06:18+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:05:40+00:00" + }, + { + "name": "sebastian/type", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:10:45+00:00" + }, + { + "name": "sebastian/version", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-07T11:34:05+00:00" + }, + { + "name": "spatie/backtrace", + "version": "1.5.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/backtrace.git", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/483f76a82964a0431aa836b6ed0edde0c248e3ab", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "ext-json": "*", + "phpunit/phpunit": "^9.3", + "spatie/phpunit-snapshot-assertions": "^4.2", + "symfony/var-dumper": "^5.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Backtrace\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van de Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A better backtrace", + "homepage": "https://github.com/spatie/backtrace", + "keywords": [ + "Backtrace", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/backtrace/tree/1.5.3" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2023-06-28T12:59:17+00:00" + }, + { + "name": "spatie/flare-client-php", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5f2c6a7a0d2c1d90c12559dc7828fd942911a544", + "reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544", + "shasum": "" + }, + "require": { + "illuminate/pipeline": "^8.0|^9.0|^10.0", + "nesbot/carbon": "^2.62.1", + "php": "^8.0", + "spatie/backtrace": "^1.5.2", + "symfony/http-foundation": "^5.0|^6.0", + "symfony/mime": "^5.2|^6.0", + "symfony/process": "^5.2|^6.0", + "symfony/var-dumper": "^5.2|^6.0" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.3.0", + "pestphp/pest": "^1.20", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/phpunit-snapshot-assertions": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\FlareClient\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/spatie/flare-client-php", + "keywords": [ + "exception", + "flare", + "reporting", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/flare-client-php/issues", + "source": "https://github.com/spatie/flare-client-php/tree/1.4.2" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-07-28T08:07:24+00:00" + }, + { + "name": "spatie/ignition", + "version": "1.11.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/ignition.git", + "reference": "48b23411ca4bfbc75c75dfc638b6b36159c375aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/ignition/zipball/48b23411ca4bfbc75c75dfc638b6b36159c375aa", + "reference": "48b23411ca4bfbc75c75dfc638b6b36159c375aa", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.0", + "spatie/backtrace": "^1.5.3", + "spatie/flare-client-php": "^1.4.0", + "symfony/console": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" + }, + "require-dev": { + "illuminate/cache": "^9.52", + "mockery/mockery": "^1.4", + "pestphp/pest": "^1.20", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "psr/simple-cache-implementation": "*", + "symfony/cache": "^6.0", + "symfony/process": "^5.4|^6.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for PHP applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/ignition/issues", + "source": "https://github.com/spatie/ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-09-19T15:29:52+00:00" + }, + { + "name": "spatie/laravel-ignition", + "version": "2.3.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ignition.git", + "reference": "bf21cd15aa47fa4ec5d73bbc932005c70261efc8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/bf21cd15aa47fa4ec5d73bbc932005c70261efc8", + "reference": "bf21cd15aa47fa4ec5d73bbc932005c70261efc8", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/support": "^10.0", + "php": "^8.1", + "spatie/flare-client-php": "^1.3.5", + "spatie/ignition": "^1.9", + "symfony/console": "^6.2.3", + "symfony/var-dumper": "^6.2.3" + }, + "require-dev": { + "livewire/livewire": "^2.11", + "mockery/mockery": "^1.5.1", + "openai-php/client": "^0.3.4", + "orchestra/testbench": "^8.0", + "pestphp/pest": "^1.22.3", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.3", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\LaravelIgnition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\LaravelIgnition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/laravel-ignition/issues", + "source": "https://github.com/spatie/laravel-ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-10-09T12:55:26+00:00" + }, + { + "name": "symfony/yaml", + "version": "v6.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add", + "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v6.3.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-31T07:08:24+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.1" + }, + "platform-dev": [], + "plugin-api-version": "2.3.0" +} diff --git a/Laravel_app/config/app.php b/Laravel_app/config/app.php new file mode 100644 index 0000000..4c231b4 --- /dev/null +++ b/Laravel_app/config/app.php @@ -0,0 +1,188 @@ + env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + 'asset_url' => env('ASSET_URL'), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + + 'locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + + 'fallback_locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Faker Locale + |-------------------------------------------------------------------------- + | + | This locale will be used by the Faker PHP library when generating fake + | data for your database seeds. For example, this will be used to get + | localized telephone numbers, street address information and more. + | + */ + + 'faker_locale' => 'en_US', + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + + 'key' => env('APP_KEY'), + + 'cipher' => 'AES-256-CBC', + + /* + |-------------------------------------------------------------------------- + | Maintenance Mode Driver + |-------------------------------------------------------------------------- + | + | These configuration options determine the driver used to determine and + | manage Laravel's "maintenance mode" status. The "cache" driver will + | allow maintenance mode to be controlled across multiple machines. + | + | Supported drivers: "file", "cache" + | + */ + + 'maintenance' => [ + 'driver' => 'file', + // 'store' => 'redis', + ], + + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => ServiceProvider::defaultProviders()->merge([ + /* + * Package Service Providers... + */ + + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + ])->toArray(), + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => Facade::defaultAliases()->merge([ + // 'Example' => App\Facades\Example::class, + ])->toArray(), + +]; diff --git a/Laravel_app/config/auth.php b/Laravel_app/config/auth.php new file mode 100644 index 0000000..9548c15 --- /dev/null +++ b/Laravel_app/config/auth.php @@ -0,0 +1,115 @@ + [ + 'guard' => 'web', + 'passwords' => 'users', + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\Models\User::class, + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | + | The expiry time is the number of minutes that each reset token will be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + | The throttle setting is the number of seconds a user must wait before + | generating more password reset tokens. This prevents the user from + | quickly generating a very large amount of password reset tokens. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => 'password_reset_tokens', + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => 10800, + +]; diff --git a/Laravel_app/config/broadcasting.php b/Laravel_app/config/broadcasting.php new file mode 100644 index 0000000..2410485 --- /dev/null +++ b/Laravel_app/config/broadcasting.php @@ -0,0 +1,71 @@ + env('BROADCAST_DRIVER', 'null'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', + 'port' => env('PUSHER_PORT', 443), + 'scheme' => env('PUSHER_SCHEME', 'https'), + 'encrypted' => true, + 'useTLS' => env('PUSHER_SCHEME', 'https') === 'https', + ], + 'client_options' => [ + // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html + ], + ], + + 'ably' => [ + 'driver' => 'ably', + 'key' => env('ABLY_KEY'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + 'null' => [ + 'driver' => 'null', + ], + + ], + +]; diff --git a/Laravel_app/config/cache.php b/Laravel_app/config/cache.php new file mode 100644 index 0000000..d4171e2 --- /dev/null +++ b/Laravel_app/config/cache.php @@ -0,0 +1,111 @@ + env('CACHE_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + | Supported drivers: "apc", "array", "database", "file", + | "memcached", "redis", "dynamodb", "octane", "null" + | + */ + + 'stores' => [ + + 'apc' => [ + 'driver' => 'apc', + ], + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + 'lock_connection' => null, + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + 'lock_path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'cache', + 'lock_connection' => 'default', + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + 'octane' => [ + 'driver' => 'octane', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing the APC, database, memcached, Redis, or DynamoDB cache + | stores there might be other applications using the same cache. For + | that reason, you may prefix every cache key to avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), + +]; diff --git a/Laravel_app/config/cors.php b/Laravel_app/config/cors.php new file mode 100644 index 0000000..8a39e6d --- /dev/null +++ b/Laravel_app/config/cors.php @@ -0,0 +1,34 @@ + ['api/*', 'sanctum/csrf-cookie'], + + 'allowed_methods' => ['*'], + + 'allowed_origins' => ['*'], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => ['*'], + + 'exposed_headers' => [], + + 'max_age' => 0, + + 'supports_credentials' => false, + +]; diff --git a/Laravel_app/config/database.php b/Laravel_app/config/database.php new file mode 100644 index 0000000..137ad18 --- /dev/null +++ b/Laravel_app/config/database.php @@ -0,0 +1,151 @@ + env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DATABASE_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + // 'encrypt' => env('DB_ENCRYPT', 'yes'), + // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run in the database. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/Laravel_app/config/filesystems.php b/Laravel_app/config/filesystems.php new file mode 100644 index 0000000..e9d9dbd --- /dev/null +++ b/Laravel_app/config/filesystems.php @@ -0,0 +1,76 @@ + env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been set up for each driver as an example of the required values. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + 'throw' => false, + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + 'throw' => false, + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/Laravel_app/config/hashing.php b/Laravel_app/config/hashing.php new file mode 100644 index 0000000..bcd3be4 --- /dev/null +++ b/Laravel_app/config/hashing.php @@ -0,0 +1,52 @@ + 'bcrypt', + + /* + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 10), + ], + + /* + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'argon' => [ + 'memory' => 65536, + 'threads' => 1, + 'time' => 4, + ], + +]; diff --git a/Laravel_app/config/logging.php b/Laravel_app/config/logging.php new file mode 100644 index 0000000..c44d276 --- /dev/null +++ b/Laravel_app/config/logging.php @@ -0,0 +1,131 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + + 'deprecations' => [ + 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + 'trace' => false, + ], + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | + */ + + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['single'], + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => 14, + 'replace_placeholders' => true, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => env('LOG_LEVEL', 'critical'), + 'replace_placeholders' => true, + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + 'facility' => LOG_USER, + 'replace_placeholders' => true, + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + ], + +]; diff --git a/Laravel_app/config/mail.php b/Laravel_app/config/mail.php new file mode 100644 index 0000000..e652bd0 --- /dev/null +++ b/Laravel_app/config/mail.php @@ -0,0 +1,125 @@ + env('MAIL_MAILER', 'smtp'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers to be used while + | sending an e-mail. You will specify which one you are using for your + | mailers below. You are free to add additional mailers as required. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", + | "postmark", "log", "array", "failover" + | + */ + + 'mailers' => [ + 'smtp' => [ + 'transport' => 'smtp', + 'url' => env('MAIL_URL'), + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'port' => env('MAIL_PORT', 587), + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN'), + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'postmark' => [ + 'transport' => 'postmark', + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + + 'failover' => [ + 'transport' => 'failover', + 'mailers' => [ + 'smtp', + 'log', + ], + ], + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + + /* + |-------------------------------------------------------------------------- + | Markdown Mail Settings + |-------------------------------------------------------------------------- + | + | If you are using Markdown based email rendering, you may configure your + | theme and component paths here, allowing you to customize the design + | of the emails. Or, you may simply stick with the Laravel defaults! + | + */ + + 'markdown' => [ + 'theme' => 'default', + + 'paths' => [ + resource_path('views/vendor/mail'), + ], + ], + +]; diff --git a/Laravel_app/config/queue.php b/Laravel_app/config/queue.php new file mode 100644 index 0000000..01c6b05 --- /dev/null +++ b/Laravel_app/config/queue.php @@ -0,0 +1,109 @@ + env('QUEUE_CONNECTION', 'sync'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'retry_after' => 90, + 'block_for' => 0, + 'after_commit' => false, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => 90, + 'block_for' => null, + 'after_commit' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Job Batching + |-------------------------------------------------------------------------- + | + | The following options configure the database and table that store job + | batching information. These options can be updated to any database + | connection and table which has been defined by your application. + | + */ + + 'batching' => [ + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'job_batches', + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/Laravel_app/config/sanctum.php b/Laravel_app/config/sanctum.php new file mode 100644 index 0000000..529cfdc --- /dev/null +++ b/Laravel_app/config/sanctum.php @@ -0,0 +1,67 @@ + explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( + '%s%s', + 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', + Sanctum::currentApplicationUrlWithPort() + ))), + + /* + |-------------------------------------------------------------------------- + | Sanctum Guards + |-------------------------------------------------------------------------- + | + | This array contains the authentication guards that will be checked when + | Sanctum is trying to authenticate a request. If none of these guards + | are able to authenticate the request, Sanctum will use the bearer + | token that's present on an incoming request for authentication. + | + */ + + 'guard' => ['web'], + + /* + |-------------------------------------------------------------------------- + | Expiration Minutes + |-------------------------------------------------------------------------- + | + | This value controls the number of minutes until an issued token will be + | considered expired. If this value is null, personal access tokens do + | not expire. This won't tweak the lifetime of first-party sessions. + | + */ + + 'expiration' => null, + + /* + |-------------------------------------------------------------------------- + | Sanctum Middleware + |-------------------------------------------------------------------------- + | + | When authenticating your first-party SPA with Sanctum you may need to + | customize some of the middleware Sanctum uses while processing the + | request. You may change the middleware listed below as required. + | + */ + + 'middleware' => [ + 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, + 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, + ], + +]; diff --git a/Laravel_app/config/services.php b/Laravel_app/config/services.php new file mode 100644 index 0000000..0ace530 --- /dev/null +++ b/Laravel_app/config/services.php @@ -0,0 +1,34 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + 'scheme' => 'https', + ], + + 'postmark' => [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + +]; diff --git a/Laravel_app/config/session.php b/Laravel_app/config/session.php new file mode 100644 index 0000000..8fed97c --- /dev/null +++ b/Laravel_app/config/session.php @@ -0,0 +1,201 @@ + env('SESSION_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to immediately expire on the browser closing, set that option. + | + */ + + 'lifetime' => env('SESSION_LIFETIME', 120), + + 'expire_on_close' => false, + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | + */ + + 'encrypt' => false, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION'), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | While using one of the framework's cache driven session backends you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + | Affects: "apc", "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE'), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + 'domain' => env('SESSION_DOMAIN'), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you when it can't be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | + */ + + 'http_only' => true, + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" since this is a secure default value. + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => 'lax', + +]; diff --git a/Laravel_app/config/view.php b/Laravel_app/config/view.php new file mode 100644 index 0000000..22b8a18 --- /dev/null +++ b/Laravel_app/config/view.php @@ -0,0 +1,36 @@ + [ + resource_path('views'), + ], + + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + + 'compiled' => env( + 'VIEW_COMPILED_PATH', + realpath(storage_path('framework/views')) + ), + +]; diff --git a/Laravel_app/database/.gitignore b/Laravel_app/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/Laravel_app/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/Laravel_app/database/factories/UserFactory.php b/Laravel_app/database/factories/UserFactory.php new file mode 100644 index 0000000..a6ecc0a --- /dev/null +++ b/Laravel_app/database/factories/UserFactory.php @@ -0,0 +1,38 @@ + + */ +class UserFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'remember_token' => Str::random(10), + ]; + } + + /** + * Indicate that the model's email address should be unverified. + */ + public function unverified(): static + { + return $this->state(fn (array $attributes) => [ + 'email_verified_at' => null, + ]); + } +} diff --git a/Laravel_app/database/migrations/2014_10_12_000000_create_users_table.php b/Laravel_app/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 0000000..444fafb --- /dev/null +++ b/Laravel_app/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('name'); + $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('users'); + } +}; diff --git a/Laravel_app/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php b/Laravel_app/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php new file mode 100644 index 0000000..81a7229 --- /dev/null +++ b/Laravel_app/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php @@ -0,0 +1,28 @@ +string('email')->primary(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('password_reset_tokens'); + } +}; diff --git a/Laravel_app/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Laravel_app/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 0000000..249da81 --- /dev/null +++ b/Laravel_app/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('failed_jobs'); + } +}; diff --git a/Laravel_app/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Laravel_app/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php new file mode 100644 index 0000000..e828ad8 --- /dev/null +++ b/Laravel_app/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php @@ -0,0 +1,33 @@ +id(); + $table->morphs('tokenable'); + $table->string('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamp('expires_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('personal_access_tokens'); + } +}; diff --git a/Laravel_app/database/seeders/DatabaseSeeder.php b/Laravel_app/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..a9f4519 --- /dev/null +++ b/Laravel_app/database/seeders/DatabaseSeeder.php @@ -0,0 +1,22 @@ +create(); + + // \App\Models\User::factory()->create([ + // 'name' => 'Test User', + // 'email' => 'test@example.com', + // ]); + } +} diff --git a/Laravel_app/package-lock.json b/Laravel_app/package-lock.json new file mode 100644 index 0000000..13a0438 --- /dev/null +++ b/Laravel_app/package-lock.json @@ -0,0 +1,1483 @@ +{ + "name": "Laravel_app", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "tailwindcss": "^3.3.3" + }, + "devDependencies": { + "axios": "^1.1.2", + "laravel-vite-plugin": "^0.8.0", + "vite": "^4.0.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/axios": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jiti": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", + "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/laravel-vite-plugin": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.8.1.tgz", + "integrity": "sha512-fxzUDjOA37kOsYq8dP+3oPIlw8/kJVXwu0hOXLun82R1LpV02shGeWGYKx2lbpKffL5I0sfPPjfqbYxuqBluAA==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "vite-plugin-full-reload": "^1.0.5" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + }, + "engines": { + "node": ">= 14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", + "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", + "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.18.2", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/vite": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz", + "integrity": "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-full-reload": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.0.5.tgz", + "integrity": "sha512-kVZFDFWr0DxiHn6MuDVTQf7gnWIdETGlZh0hvTiMXzRN80vgF4PKbONSq8U1d0WtHsKaFODTQgJeakLacoPZEQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "picomatch": "^2.3.1" + }, + "peerDependencies": { + "vite": "^2 || ^3 || ^4" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/yaml": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", + "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", + "engines": { + "node": ">= 14" + } + } + } +} diff --git a/Laravel_app/package.json b/Laravel_app/package.json new file mode 100644 index 0000000..f9f46d0 --- /dev/null +++ b/Laravel_app/package.json @@ -0,0 +1,16 @@ +{ + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build" + }, + "devDependencies": { + "axios": "^1.1.2", + "laravel-vite-plugin": "^0.8.0", + "vite": "^4.0.0" + }, + "dependencies": { + "tailwindcss": "^3.3.3" + } +} diff --git a/Laravel_app/phpunit.xml b/Laravel_app/phpunit.xml new file mode 100644 index 0000000..f112c0c --- /dev/null +++ b/Laravel_app/phpunit.xml @@ -0,0 +1,31 @@ + + + + + tests/Unit + + + tests/Feature + + + + + app + + + + + + + + + + + + + + diff --git a/Laravel_app/public/.htaccess b/Laravel_app/public/.htaccess new file mode 100644 index 0000000..3aec5e2 --- /dev/null +++ b/Laravel_app/public/.htaccess @@ -0,0 +1,21 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/Laravel_app/public/favicon.ico b/Laravel_app/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/Laravel_app/public/index.php b/Laravel_app/public/index.php new file mode 100644 index 0000000..1d69f3a --- /dev/null +++ b/Laravel_app/public/index.php @@ -0,0 +1,55 @@ +make(Kernel::class); + +$response = $kernel->handle( + $request = Request::capture() +)->send(); + +$kernel->terminate($request, $response); diff --git a/Laravel_app/public/robots.txt b/Laravel_app/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/Laravel_app/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/Laravel_app/resources/css/app.css b/Laravel_app/resources/css/app.css new file mode 100644 index 0000000..e69de29 diff --git a/Laravel_app/resources/js/app.js b/Laravel_app/resources/js/app.js new file mode 100644 index 0000000..e59d6a0 --- /dev/null +++ b/Laravel_app/resources/js/app.js @@ -0,0 +1 @@ +import './bootstrap'; diff --git a/Laravel_app/resources/js/bootstrap.js b/Laravel_app/resources/js/bootstrap.js new file mode 100644 index 0000000..846d350 --- /dev/null +++ b/Laravel_app/resources/js/bootstrap.js @@ -0,0 +1,32 @@ +/** + * We'll load the axios HTTP library which allows us to easily issue requests + * to our Laravel back-end. This library automatically handles sending the + * CSRF token as a header based on the value of the "XSRF" token cookie. + */ + +import axios from 'axios'; +window.axios = axios; + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + +/** + * Echo exposes an expressive API for subscribing to channels and listening + * for events that are broadcast by Laravel. Echo and event broadcasting + * allows your team to easily build robust real-time web applications. + */ + +// import Echo from 'laravel-echo'; + +// import Pusher from 'pusher-js'; +// window.Pusher = Pusher; + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: import.meta.env.VITE_PUSHER_APP_KEY, +// cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', +// wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, +// wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, +// wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, +// forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', +// enabledTransports: ['ws', 'wss'], +// }); diff --git a/Laravel_app/resources/views/welcome.blade.php b/Laravel_app/resources/views/welcome.blade.php new file mode 100644 index 0000000..638ec96 --- /dev/null +++ b/Laravel_app/resources/views/welcome.blade.php @@ -0,0 +1,140 @@ + + + + + + + Laravel + + + + + + + + + + + + diff --git a/Laravel_app/routes/api.php b/Laravel_app/routes/api.php new file mode 100644 index 0000000..889937e --- /dev/null +++ b/Laravel_app/routes/api.php @@ -0,0 +1,19 @@ +get('/user', function (Request $request) { + return $request->user(); +}); diff --git a/Laravel_app/routes/channels.php b/Laravel_app/routes/channels.php new file mode 100644 index 0000000..5d451e1 --- /dev/null +++ b/Laravel_app/routes/channels.php @@ -0,0 +1,18 @@ +id === (int) $id; +}); diff --git a/Laravel_app/routes/console.php b/Laravel_app/routes/console.php new file mode 100644 index 0000000..e05f4c9 --- /dev/null +++ b/Laravel_app/routes/console.php @@ -0,0 +1,19 @@ +comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); diff --git a/Laravel_app/routes/web.php b/Laravel_app/routes/web.php new file mode 100644 index 0000000..d259f33 --- /dev/null +++ b/Laravel_app/routes/web.php @@ -0,0 +1,18 @@ +make(Kernel::class)->bootstrap(); + + return $app; + } +} diff --git a/Laravel_app/tests/Feature/ExampleTest.php b/Laravel_app/tests/Feature/ExampleTest.php new file mode 100644 index 0000000..8364a84 --- /dev/null +++ b/Laravel_app/tests/Feature/ExampleTest.php @@ -0,0 +1,19 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/Laravel_app/tests/TestCase.php b/Laravel_app/tests/TestCase.php new file mode 100644 index 0000000..2932d4a --- /dev/null +++ b/Laravel_app/tests/TestCase.php @@ -0,0 +1,10 @@ +assertTrue(true); + } +} diff --git a/Laravel_app/vite.config.js b/Laravel_app/vite.config.js new file mode 100644 index 0000000..421b569 --- /dev/null +++ b/Laravel_app/vite.config.js @@ -0,0 +1,11 @@ +import { defineConfig } from 'vite'; +import laravel from 'laravel-vite-plugin'; + +export default defineConfig({ + plugins: [ + laravel({ + input: ['resources/css/app.css', 'resources/js/app.js'], + refresh: true, + }), + ], +}); diff --git a/Rplots.pdf b/Rplots.pdf new file mode 100644 index 0000000..a68f07a Binary files /dev/null and b/Rplots.pdf differ diff --git a/pivot_20210625.geojson b/pivot_20210625.geojson new file mode 100644 index 0000000..f8b3d67 --- /dev/null +++ b/pivot_20210625.geojson @@ -0,0 +1,159 @@ +{ +"type": "FeatureCollection", +"name": "pivot_20210625", +"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, +"features": [ +{ "type": "Feature", "properties": { "hectares": 669.0, "radius": 461, "pivot": "6.2", "pivot_quadrant": "6.2B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.933686532028823, -17.34741850738671 ], [ 34.936458268544008, -17.344213063126752 ], [ 34.936487787462688, -17.34423678523423 ], [ 34.936654047751475, -17.344385275553996 ], [ 34.936811988565154, -17.344541918958814 ], [ 34.936961177001955, -17.344706286119994 ], [ 34.93710120414535, -17.344877926538839 ], [ 34.937231686184816, -17.345056369781194 ], [ 34.937352265468007, -17.345241126766645 ], [ 34.937462611481052, -17.345431691108853 ], [ 34.937562421754727, -17.345627540503298 ], [ 34.937651422693591, -17.345828138158684 ], [ 34.937729370326288, -17.346032934268045 ], [ 34.937796050974356, -17.346241367515468 ], [ 34.937851281838412, -17.34645286661458 ], [ 34.937894911499427, -17.346666851874129 ], [ 34.93792682033417, -17.346882736786782 ], [ 34.937946920843501, -17.347099929636563 ], [ 34.937955157892617, -17.347317835120631 ], [ 34.937951508862682, -17.347535855980816 ], [ 34.937935983713146, -17.347753394640662 ], [ 34.937908624955057, -17.347969854843281 ], [ 34.937869507534906, -17.348184643285634 ], [ 34.937818738629701, -17.348397171244734 ], [ 34.937756457353686, -17.348606856191328 ], [ 34.937682834377377, -17.348813123386648 ], [ 34.937598071460293, -17.349015407457767 ], [ 34.937502400898275, -17.349213153947368 ], [ 34.937396084887148, -17.349405820833582 ], [ 34.937279414804458, -17.349592880015777 ], [ 34.93715271041102, -17.349773818762202 ], [ 34.937016318974827, -17.349948141115476 ], [ 34.936891437505039, -17.35009147006711 ], [ 34.933686532028823, -17.34741850738671 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.2", "pivot_quadrant": "5.2B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.892982579947684, -17.30260313717654 ], [ 34.8969126991338, -17.302747852699646 ], [ 34.896848733623173, -17.306522026027363 ], [ 34.896761992373065, -17.306520666974571 ], [ 34.89655566821915, -17.306507035570725 ], [ 34.896350369530914, -17.306483049995649 ], [ 34.896146659052505, -17.306448775992763 ], [ 34.895945095174199, -17.306404307507115 ], [ 34.895746230401478, -17.306349766427822 ], [ 34.895550609840363, -17.306285302254011 ], [ 34.895358769702952, -17.306211091684883 ], [ 34.895171235837296, -17.306127338135401 ], [ 34.894988522285892, -17.306034271178618 ], [ 34.894811129876366, -17.305932145916291 ], [ 34.894639544848609, -17.305821242279585 ], [ 34.894474237521642, -17.3057018642616 ], [ 34.894315661004462, -17.305574339084064 ], [ 34.894164249953917, -17.305439016300223 ], [ 34.89402041938321, -17.305296266836596 ], [ 34.89388456352436, -17.305146481976095 ], [ 34.893757054747589, -17.304990072285385 ], [ 34.893638242540632, -17.304827466489353 ], [ 34.893528452551024, -17.304659110295812 ], [ 34.89342798569345, -17.304485465173695 ], [ 34.893337117325196, -17.304307007087981 ], [ 34.893256096491513, -17.304124225194958 ], [ 34.893185145243294, -17.30393762050133 ], [ 34.893124458028609, -17.303747704490792 ], [ 34.893074201160012, -17.303554997721992 ], [ 34.893034512359016, -17.303360028401542 ], [ 34.893005500378912, -17.303163330936176 ], [ 34.892987244707008, -17.302965444467794 ], [ 34.892979795347131, -17.302766911395732 ], [ 34.892982579947684, -17.30260313717654 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.3", "pivot_quadrant": "5.3B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.887065228066767, -17.304559537671949 ], [ 34.887585923201613, -17.308341731698718 ], [ 34.887518594228453, -17.308350893542517 ], [ 34.887312586440835, -17.308368425006687 ], [ 34.887105905758595, -17.30837557560691 ], [ 34.886899118713622, -17.308372325739303 ], [ 34.886692792129786, -17.308358684308679 ], [ 34.886487491568985, -17.308334688704125 ], [ 34.88628377978047, -17.308300404696595 ], [ 34.886082215158112, -17.308255926258568 ], [ 34.885883350209426, -17.308201375306449 ], [ 34.885687730040928, -17.308136901366442 ], [ 34.885495890863602, -17.308062681164554 ], [ 34.885308358522892, -17.307978918142162 ], [ 34.885125647057059, -17.30788584189828 ], [ 34.884948257288038, -17.307783707560155 ], [ 34.884776675448421, -17.307672795083811 ], [ 34.884611371848493, -17.307553408486619 ], [ 34.884452799587045, -17.307425875013813 ], [ 34.88430139330918, -17.307290544241372 ], [ 34.884157568015056, -17.307147787117731 ], [ 34.884021717922174, -17.306997994946784 ], [ 34.883894215384913, -17.306841578315254 ], [ 34.883775409873941, -17.30667896596702 ], [ 34.88366562701836, -17.306510603627871 ], [ 34.8835651677133, -17.306336952783568 ], [ 34.883474307295344, -17.306158489414777 ], [ 34.883393294787901, -17.305975702692255 ], [ 34.883322352219061, -17.305789093635923 ], [ 34.883261674013042, -17.305599173741417 ], [ 34.883211426457713, -17.305406463578016 ], [ 34.883171747249051, -17.305211491361643 ], [ 34.883142745114029, -17.305014791506924 ], [ 34.883138407553353, -17.304967747142655 ], [ 34.887065228066767, -17.304559537671949 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.1", "pivot_quadrant": "5.1D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.893567231271753, -17.309696371939275 ], [ 34.897496240357995, -17.309278976679899 ], [ 34.897513960068423, -17.309470988039859 ], [ 34.897521415315232, -17.309669520314646 ], [ 34.897518043544963, -17.309868155299348 ], [ 34.897503853964437, -17.310066348552152 ], [ 34.897478885431291, -17.310263556840273 ], [ 34.897443206347809, -17.310459239628845 ], [ 34.897396914473845, -17.310652860562591 ], [ 34.897340136659309, -17.310843888935889 ], [ 34.897273028496706, -17.311031801147418 ], [ 34.897195773895142, -17.311216082135513 ], [ 34.897108584576472, -17.311396226789807 ], [ 34.89701169949538, -17.311571741335957 ], [ 34.896905384184613, -17.311742144689092 ], [ 34.896789930027452, -17.311906969772526 ], [ 34.896665653459273, -17.312065764798231 ], [ 34.896532895100407, -17.312218094505198 ], [ 34.896392018822652, -17.312363541352671 ], [ 34.896243410752028, -17.312501706664793 ], [ 34.896087478210511, -17.312632211723482 ], [ 34.895924648599603, -17.312754698806646 ], [ 34.895755368228862, -17.312868832168913 ], [ 34.895580101092513, -17.312974298962004 ], [ 34.895399327597637, -17.313070810092483 ], [ 34.89521354324723, -17.313158101014249 ], [ 34.895023257281863, -17.313235932453882 ], [ 34.894828991283774, -17.313304091066559 ], [ 34.894631277746932, -17.313362390021041 ], [ 34.89443065861731, -17.313410669511875 ], [ 34.894227683807067, -17.313448797197559 ], [ 34.894135431768206, -17.313461353424515 ], [ 34.893567231271753, -17.309696371939275 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.5", "pivot_quadrant": "4.5D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.893769553711472, -17.316586264213559 ], [ 34.892115685045027, -17.314291416092694 ], [ 34.892195700790658, -17.314237469887129 ], [ 34.892325067135602, -17.314159627332327 ], [ 34.892458497355165, -17.314088394803694 ], [ 34.892595625734742, -17.314023967536052 ], [ 34.892736076425152, -17.313966522111834 ], [ 34.892879464472585, -17.313916215977194 ], [ 34.893025396873647, -17.313873187010579 ], [ 34.893173473652432, -17.313837553144793 ], [ 34.893323288956616, -17.313809412043945 ], [ 34.893474432169747, -17.313788840835716 ], [ 34.893626489036507, -17.3137758959001 ], [ 34.893779042797945, -17.313770612714848 ], [ 34.89393167533364, -17.313773005758303 ], [ 34.894083968307477, -17.313783068469746 ], [ 34.894235504314096, -17.313800773267371 ], [ 34.894385868022724, -17.313826071623883 ], [ 34.894534647315439, -17.313858894199562 ], [ 34.894681434416484, -17.313899151032253 ], [ 34.894825827009804, -17.313946731783918 ], [ 34.89496742934147, -17.314001506043073 ], [ 34.895105853304429, -17.314063323682145 ], [ 34.895240719501928, -17.31413201526895 ], [ 34.895371658287381, -17.314207392530999 ], [ 34.895498310777313, -17.314289248871496 ], [ 34.895620329835019, -17.314377359935495 ], [ 34.895737381021917, -17.3144714842248 ], [ 34.895849143514049, -17.314571363759772 ], [ 34.895955310981499, -17.31467672478637 ], [ 34.896055592427977, -17.314787278526357 ], [ 34.896149712988276, -17.314902721968778 ], [ 34.896237414681828, -17.315022738700307 ], [ 34.896250865251233, -17.315043362242964 ], [ 34.893769553711472, -17.316586264213559 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.6", "pivot_quadrant": "4.6C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.90130835758503, -17.31122562620051 ], [ 34.899440097999843, -17.313485312578923 ], [ 34.8972189524941, -17.311647539775638 ], [ 34.897298142992156, -17.311556674113714 ], [ 34.897402122142452, -17.311449320113248 ], [ 34.897511807803241, -17.311347340442076 ], [ 34.897626899332451, -17.311251014610363 ], [ 34.897747081272875, -17.311160606631386 ], [ 34.897872024216817, -17.311076364297964 ], [ 34.898001385709044, -17.310998518503435 ], [ 34.898134811185194, -17.310927282608827 ], [ 34.898271934943708, -17.310862851858154 ], [ 34.898412381148042, -17.310805402843425 ], [ 34.898555764856667, -17.310755093020635 ], [ 34.898701693078088, -17.310712060278291 ], [ 34.898849765847828, -17.310676422559613 ], [ 34.898999577324581, -17.310648277539208 ], [ 34.899150716902355, -17.310627702355518 ], [ 34.89930277033578, -17.31061475339942 ], [ 34.899455320875333, -17.310609466159704 ], [ 34.899607950409418, -17.310611855125785 ], [ 34.899760240610121, -17.310621913748125 ], [ 34.899911774079676, -17.310639614456139 ], [ 34.900062135494302, -17.31066490873372 ], [ 34.900210912742331, -17.310697727252315 ], [ 34.900357698053639, -17.310737980060885 ], [ 34.900502089117012, -17.310785556832428 ], [ 34.90064369018279, -17.310840327166343 ], [ 34.900782113147358, -17.310902140945849 ], [ 34.900916978616706, -17.310970828749291 ], [ 34.901047916946233, -17.311046202314571 ], [ 34.901174569253754, -17.311128055055008 ], [ 34.901296588403042, -17.31121616262552 ], [ 34.90130835758503, -17.31122562620051 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 239.0, "radius": 276, "pivot": "4.4", "pivot_quadrant": "4.4C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.900201998898332, -17.316577029381111 ], [ 34.901510659033576, -17.318761975282452 ], [ 34.89921991385566, -17.319939028684551 ], [ 34.89919319521254, -17.31989285674155 ], [ 34.899133472197327, -17.319775587027554 ], [ 34.899080220785628, -17.319655475739637 ], [ 34.899033586926492, -17.319532852100672 ], [ 34.898993698429557, -17.31940805221921 ], [ 34.898960664614833, -17.319281418168284 ], [ 34.898934576013126, -17.319153297047684 ], [ 34.898915504118094, -17.319024040032534 ], [ 34.898903501190432, -17.318894001410737 ], [ 34.898898600114762, -17.318763537611808 ], [ 34.89890081430967, -17.318633006229952 ], [ 34.898910137691097, -17.318502765043846 ], [ 34.898926544689147, -17.318373171036008 ], [ 34.898949990318393, -17.318244579414355 ], [ 34.898980410301313, -17.318117342638544 ], [ 34.899017721244583, -17.317991809453979 ], [ 34.899061820867914, -17.317868323935873 ], [ 34.89911258828446, -17.317747224546256 ], [ 34.899169884332323, -17.317628843206275 ], [ 34.899233551956158, -17.317513504386454 ], [ 34.899303416637665, -17.317401524217455 ], [ 34.899379286874172, -17.317293209623546 ], [ 34.899460954703535, -17.317188857481462 ], [ 34.899548196274232, -17.317088753806768 ], [ 34.899640772459016, -17.316993172969916 ], [ 34.899738429510414, -17.31690237694437 ], [ 34.899840899756157, -17.316816614588575 ], [ 34.899947902332954, -17.316736120963917 ], [ 34.900059143956319, -17.316661116690586 ], [ 34.900174319724371, -17.316591807342899 ], [ 34.900201998898332, -17.316577029381111 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "4.3", "pivot_quadrant": "4.3C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.895357321246472, -17.319337751577674 ], [ 34.896432140987109, -17.321371469783127 ], [ 34.894337657341168, -17.322447678138754 ], [ 34.894309541855741, -17.3223990902598 ], [ 34.89425566308077, -17.32229329109223 ], [ 34.894207622969382, -17.322184928461439 ], [ 34.894165553188593, -17.322074299386902 ], [ 34.894129569040125, -17.321961707099845 ], [ 34.894099769144624, -17.321847460212147 ], [ 34.894076235171276, -17.321731871870391 ], [ 34.894059031614177, -17.321615258897467 ], [ 34.89404820561564, -17.321497940924189 ], [ 34.894043786837109, -17.321380239513154 ], [ 34.894045787378019, -17.321262477277379 ], [ 34.894054201742712, -17.321144976995981 ], [ 34.894069006855688, -17.321028060729436 ], [ 34.894090162124932, -17.32091204893689 ], [ 34.894117609553369, -17.320797259597772 ], [ 34.894151273897926, -17.320684007340216 ], [ 34.89419106287589, -17.320572602578771 ], [ 34.894236867418009, -17.32046335066353 ], [ 34.894288561967485, -17.32035655104325 ], [ 34.894346004824278, -17.320252496444606 ], [ 34.894409038533638, -17.320151472069909 ], [ 34.894477490317634, -17.320053754815419 ], [ 34.894551172548908, -17.319959612512406 ], [ 34.894629883264997, -17.319869303193162 ], [ 34.894713406721877, -17.319783074383764 ], [ 34.894801513985477, -17.319701162425709 ], [ 34.894893963559014, -17.319623791828143 ], [ 34.894990502045104, -17.319551174652602 ], [ 34.895090864840206, -17.319483509931821 ], [ 34.895194776859846, -17.319420983124225 ], [ 34.895301953292638, -17.319363765605722 ], [ 34.895357321246472, -17.319337751577674 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.1", "pivot_quadrant": "4.1C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.885846577829994, -17.324065205990067 ], [ 34.886782334569538, -17.326739205117487 ], [ 34.883964047061163, -17.327599439232444 ], [ 34.883926891813566, -17.3274831654618 ], [ 34.883889797650568, -17.327340927904032 ], [ 34.883860504808354, -17.3271970206277 ], [ 34.883839093559693, -17.327051838077736 ], [ 34.883825622573575, -17.326905778193673 ], [ 34.88382012875465, -17.326759241318918 ], [ 34.883822627142258, -17.326612629103337 ], [ 34.883833110869425, -17.326466343402387 ], [ 34.883851551181877, -17.326320785175589 ], [ 34.883877897517046, -17.326176353387591 ], [ 34.88391207764294, -17.326033443914554 ], [ 34.883953997856267, -17.325892448459154 ], [ 34.884003543239437, -17.325753753476985 ], [ 34.884060577975809, -17.32561773911727 ], [ 34.884124945722114, -17.325484778181053 ], [ 34.884196470037082, -17.325355235099337 ], [ 34.884274954865283, -17.325229464934313 ], [ 34.884360185074598, -17.325107812406213 ], [ 34.884451927046008, -17.324990610948547 ], [ 34.884549929313991, -17.324878181794265 ], [ 34.884653923255925, -17.324770833095336 ], [ 34.884763623828356, -17.324668859078276 ], [ 34.884878730348319, -17.324572539237757 ], [ 34.884998927317575, -17.324482137570598 ], [ 34.885123885287243, -17.324397901852347 ], [ 34.885253261760887, -17.324320062958176 ], [ 34.885386702133168, -17.324248834230222 ], [ 34.885523840661676, -17.324184410892851 ], [ 34.885664301469411, -17.324126969517753 ], [ 34.885807699574862, -17.324076667539991 ], [ 34.885846577829994, -17.324065205990067 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "4.2", "pivot_quadrant": "4.2D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.892592473294087, -17.324940604483569 ], [ 34.890807409243124, -17.32342733014784 ], [ 34.890881858516011, -17.32335047371787 ], [ 34.890969969192497, -17.323268563141767 ], [ 34.891062422186693, -17.323191194008754 ], [ 34.891158964091794, -17.32311857837632 ], [ 34.891259330294872, -17.32305091527299 ], [ 34.891363245702173, -17.322988390152755 ], [ 34.891470425492983, -17.322931174386909 ], [ 34.891580575900392, -17.322879424794326 ], [ 34.891693395016318, -17.322833283211736 ], [ 34.891808573619024, -17.322792876105019 ], [ 34.891925796020537, -17.322758314222579 ], [ 34.892044740931865, -17.322729692291919 ], [ 34.892165082343496, -17.322707088759937 ], [ 34.892286490418904, -17.32269056557811 ], [ 34.892408632398393, -17.32268016803253 ], [ 34.89253117351118, -17.322675924619965 ], [ 34.892653777892725, -17.322677846969675 ], [ 34.892776109505235, -17.322685929811669 ], [ 34.892897833058612, -17.322700150991011 ], [ 34.893018614929247, -17.322720471528676 ], [ 34.893138124074405, -17.322746835728307 ], [ 34.893256032939391, -17.322779171328932 ], [ 34.893372018355308, -17.322817389702962 ], [ 34.893485762424611, -17.322861386099067 ], [ 34.893596953392439, -17.322911039929352 ], [ 34.89370528650096, -17.322966215099775 ], [ 34.893810464824533, -17.323026760383154 ], [ 34.893912200083612, -17.3230925098336 ], [ 34.894010213434655, -17.323163283241353 ], [ 34.894104236234512, -17.323238886626648 ], [ 34.894194010776616, -17.323319112771372 ], [ 34.89423852225147, -17.323363284353789 ], [ 34.892592473294087, -17.324940604483569 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "3.3", "pivot_quadrant": "3.3C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.900331858463275, -17.322163720229909 ], [ 34.900551100160158, -17.32491517010353 ], [ 34.897565743794004, -17.325142207305205 ], [ 34.89756504241015, -17.325134608564934 ], [ 34.89755953787251, -17.324988073109029 ], [ 34.897562025399424, -17.324841461768788 ], [ 34.897572498153679, -17.324695176397274 ], [ 34.897590927411045, -17.324549617953146 ], [ 34.897617262639329, -17.324405185401652 ], [ 34.897651431636909, -17.324262274621056 ], [ 34.897693340730996, -17.324121277317641 ], [ 34.897742875034517, -17.323982579952059 ], [ 34.897799898761171, -17.323846562680117 ], [ 34.897864255597824, -17.32371359831081 ], [ 34.897935769133142, -17.323584051284573 ], [ 34.898014243341194, -17.323458276674447 ], [ 34.898099463118982, -17.323336619212824 ], [ 34.898191194876041, -17.323219412346742 ], [ 34.898289187174854, -17.323106977324002 ], [ 34.898393171420096, -17.322999622312651 ], [ 34.898502862594867, -17.322897641556505 ], [ 34.89861796004196, -17.322801314568704 ], [ 34.898738148287975, -17.322710905365678 ], [ 34.898863097907935, -17.322626661743598 ], [ 34.898992466428268, -17.322548814599326 ], [ 34.899125899265393, -17.322477577297583 ], [ 34.89926303069759, -17.322413145086237 ], [ 34.899403484867264, -17.322355694561299 ], [ 34.899546876811073, -17.322305383182883 ], [ 34.89969281351496, -17.322262348843783 ], [ 34.899840894991208, -17.322226709491549 ], [ 34.899990715374656, -17.322198562805294 ], [ 34.900141864034907, -17.322177985928029 ], [ 34.900293926701728, -17.322165035255239 ], [ 34.900331858463275, -17.322163720229909 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "3.2", "pivot_quadrant": "3.2C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.907099870341185, -17.322607987848503 ], [ 34.906021160934294, -17.32453810278799 ], [ 34.903896908377526, -17.323502846894009 ], [ 34.903917242324283, -17.323466009089106 ], [ 34.903980271340309, -17.323364982123337 ], [ 34.904048718674474, -17.323267261990232 ], [ 34.904122396711607, -17.323173116528974 ], [ 34.904201103500704, -17.323082803780501 ], [ 34.904284623308548, -17.322996571280285 ], [ 34.904372727211005, -17.322914655379957 ], [ 34.90446517372056, -17.32283728059944 ], [ 34.90456170944816, -17.32276465901176 ], [ 34.904662069797851, -17.322696989661715 ], [ 34.904765979691838, -17.322634458020435 ], [ 34.904873154324569, -17.322577235477077 ], [ 34.90498329994324, -17.322525478869093 ], [ 34.905096114652899, -17.322479330052449 ], [ 34.905211289243852, -17.322438915512812 ], [ 34.905328508039148, -17.322404346018985 ], [ 34.905447449759642, -17.322375716319311 ], [ 34.905567788404575, -17.322353104881994 ], [ 34.905689194144998, -17.322336573680126 ], [ 34.905811334227622, -17.322326168021803 ], [ 34.905933873886852, -17.322321916426024 ], [ 34.906056477262126, -17.322323830544466 ], [ 34.90617880831843, -17.32233190512968 ], [ 34.906300531767172, -17.322346118049349 ], [ 34.906421313985021, -17.322366430347106 ], [ 34.906540823928317, -17.322392786349138 ], [ 34.906658734040178, -17.322425113816962 ], [ 34.906774721148288, -17.322463324145243 ], [ 34.90688846735047, -17.32250731260471 ], [ 34.906999660886036, -17.322556958629232 ], [ 34.907099870341185, -17.322607987848503 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "3.1", "pivot_quadrant": "3.1D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.911721763444021, -17.327270799151147 ], [ 34.909685584378018, -17.325148690849765 ], [ 34.909715691499358, -17.325120697051958 ], [ 34.90983078373403, -17.325024364110629 ], [ 34.909950967164427, -17.324933948628292 ], [ 34.910075912378765, -17.32484969841833 ], [ 34.910205276915569, -17.324771844395649 ], [ 34.910338706202126, -17.3247005999438 ], [ 34.910475834526437, -17.324636160330265 ], [ 34.910616286039428, -17.324578702171344 ], [ 34.910759675785044, -17.324528382948049 ], [ 34.910905610755215, -17.32448534057465 ], [ 34.911053690967016, -17.324449693020743 ], [ 34.911203510558707, -17.324421537987895 ], [ 34.911354658902077, -17.324400952641973 ], [ 34.911506721727747, -17.324387993401679 ], [ 34.911659282260466, -17.324382695783971 ], [ 34.911811922361267, -17.324385074306729 ], [ 34.911964223673273, -17.324395122449015 ], [ 34.912115768768309, -17.324412812668925 ], [ 34.912266142290733, -17.32443809647912 ], [ 34.912414932095714, -17.324470904579723 ], [ 34.912561730378727, -17.324511147048252 ], [ 34.912706134793041, -17.324558713586011 ], [ 34.912847749552412, -17.32461347382046 ], [ 34.91298618651571, -17.324675277662489 ], [ 34.913121066250604, -17.32474395571769 ], [ 34.913252019073362, -17.32481931975067 ], [ 34.913378686062146, -17.324901163200888 ], [ 34.91350072004051, -17.32498926174873 ], [ 34.913617786528953, -17.325083373930308 ], [ 34.913729564661651, -17.325183241799166 ], [ 34.913835748065821, -17.325288591633232 ], [ 34.913936045701512, -17.325399134684982 ], [ 34.914030182659175, -17.325514567972732 ], [ 34.914031362474837, -17.325516182075784 ], [ 34.911721763444021, -17.327270799151147 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "2.4", "pivot_quadrant": "2.4D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.896270521422032, -17.345778057340958 ], [ 34.894633955948727, -17.344108401435214 ], [ 34.894659373611468, -17.344084773603896 ], [ 34.894751834385303, -17.344007402050345 ], [ 34.894848384675079, -17.343934783858305 ], [ 34.894948759844887, -17.343867118063262 ], [ 34.895052684776374, -17.343804590126624 ], [ 34.895159874622749, -17.343747371427341 ], [ 34.895270035589526, -17.343695618792371 ], [ 34.895382865739712, -17.343649474066748 ], [ 34.895498055821321, -17.343609063724955 ], [ 34.895615290114932, -17.343574498524291 ], [ 34.895734247298968, -17.343545873201311 ], [ 34.895854601330292, -17.343523266212244 ], [ 34.895976022337791, -17.343506739517984 ], [ 34.896098177526369, -17.343496338414269 ], [ 34.896220732089027, -17.343492091407629 ], [ 34.896343350124383, -17.343494010137192 ], [ 34.896465695557261, -17.343502089342831 ], [ 34.896587433059651, -17.343516306879611 ], [ 34.896708228969764, -17.343536623778476 ], [ 34.896827752206391, -17.343562984353067 ], [ 34.896945675176234, -17.343595316352321 ], [ 34.897061674671747, -17.343633531158535 ], [ 34.897175432756811, -17.343677524030166 ], [ 34.897286637638175, -17.34372717438897 ], [ 34.897394984519835, -17.34378234615043 ], [ 34.897500176438477, -17.343842888096699 ], [ 34.897601925077247, -17.343908634291068 ], [ 34.897699951556, -17.343979404532686 ], [ 34.89779398719557, -17.344055004850485 ], [ 34.89788377425419, -17.344135228034745 ], [ 34.897969066633934, -17.344219854204994 ], [ 34.898018534309401, -17.34427437726421 ], [ 34.896270521422032, -17.345778057340958 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "2.3", "pivot_quadrant": "2.3C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.8993698935897, -17.3404132919784 ], [ 34.899977306418968, -17.342598676400389 ], [ 34.897632654475345, -17.343156624592137 ], [ 34.897616064985897, -17.343093039404593 ], [ 34.897592524699924, -17.342977452198006 ], [ 34.897575315514821, -17.342860840179966 ], [ 34.897564484588315, -17.342743522978669 ], [ 34.897560061595343, -17.342625822154599 ], [ 34.897562058646876, -17.342508060319165 ], [ 34.897570470256781, -17.342390560250386 ], [ 34.897585273357109, -17.34227364400817 ], [ 34.89760642736136, -17.342157632051599 ], [ 34.897633874275868, -17.34204284236052 ], [ 34.897667538859004, -17.341929589564067 ], [ 34.897707328827337, -17.341818184078249 ], [ 34.8977531351089, -17.341708931255134 ], [ 34.897804832142121, -17.341602130545965 ], [ 34.89786227822016, -17.341498074680427 ], [ 34.89792531587937, -17.341397048864266 ], [ 34.89799377233102, -17.341299329997696 ], [ 34.898067459934943, -17.341205185916401 ], [ 34.898146176713922, -17.341114874657549 ], [ 34.898229706907351, -17.341028643752509 ], [ 34.898317821562657, -17.34094672954852 ], [ 34.898410279162817, -17.340869356560894 ], [ 34.898506826288433, -17.340796736857698 ], [ 34.89860719831227, -17.340729069478559 ], [ 34.898711120124595, -17.340666539889227 ], [ 34.898818306887151, -17.340609319473213 ], [ 34.898928464813913, -17.340557565062127 ], [ 34.899041291976218, -17.34051141850593 ], [ 34.899156479130262, -17.34047100628408 ], [ 34.899273710564628, -17.340436439159028 ], [ 34.8993698935897, -17.3404132919784 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 414.0, "radius": 363, "pivot": "2.2", "pivot_quadrant": "2.2C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.906533452371185, -17.338050305737823 ], [ 34.909113153334729, -17.34030905206204 ], [ 34.906860112803329, -17.342790160574449 ], [ 34.906785146846069, -17.342729896748654 ], [ 34.90665424850053, -17.342612951146734 ], [ 34.906529902534977, -17.342489586312865 ], [ 34.906412449774884, -17.342360140393918 ], [ 34.906302212149164, -17.34222496820469 ], [ 34.906199491807826, -17.342084440255348 ], [ 34.906104570293813, -17.341938941735673 ], [ 34.906017707771433, -17.341788871459226 ], [ 34.905939142313287, -17.341634640770003 ], [ 34.905869089247915, -17.341476672414917 ], [ 34.905807740569742, -17.341315399384907 ], [ 34.905755264412988, -17.341151263728026 ], [ 34.905711804591036, -17.340984715337761 ], [ 34.905677480202478, -17.340816210719719 ], [ 34.90565238530489, -17.340646211740392 ], [ 34.905636588657302, -17.340475184361022 ], [ 34.905630133532, -17.340303597360474 ], [ 34.905633037596203, -17.340131921050247 ], [ 34.905645292863881, -17.339960625985302 ], [ 34.905666865717976, -17.339790181674402 ], [ 34.905697697002793, -17.339621055293083 ], [ 34.905737702186485, -17.339453710403209 ], [ 34.905786771592958, -17.339288605682437 ], [ 34.905844770702799, -17.339126193667006 ], [ 34.905911540522254, -17.338966919511417 ], [ 34.905986898019179, -17.338811219768395 ], [ 34.906070636625088, -17.338659521192326 ], [ 34.906162526801396, -17.338512239569724 ], [ 34.906262316668872, -17.338369778579619 ], [ 34.90636973269811, -17.338232528687239 ], [ 34.906484480459412, -17.338100866073905 ], [ 34.906533452371185, -17.338050305737823 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "2.1", "pivot_quadrant": "2.1D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.913379761071603, -17.335625170111705 ], [ 34.911437392245574, -17.333407717834426 ], [ 34.911460462998669, -17.333388407832093 ], [ 34.911580650515376, -17.333297990941542 ], [ 34.911705600115177, -17.333213739250976 ], [ 34.911834969324552, -17.33313588367934 ], [ 34.911968403558056, -17.333064637614456 ], [ 34.912105537090085, -17.333000196328197 ], [ 34.912245994057315, -17.332942736441435 ], [ 34.91238938948873, -17.33289241543994 ], [ 34.912535330360718, -17.332849371242844 ], [ 34.912683416674128, -17.332813721824717 ], [ 34.912833242550533, -17.332785564892241 ], [ 34.912984397344523, -17.332764977616499 ], [ 34.913136466769025, -17.332752016421484 ], [ 34.913289034030726, -17.33274671682949 ], [ 34.913441680972198, -17.332749093363816 ], [ 34.913593989217865, -17.332759139508962 ], [ 34.91374554132053, -17.332776827728509 ], [ 34.913895921905365, -17.332802109540605 ], [ 34.914044718808199, -17.332834915650842 ], [ 34.914191524205023, -17.332875156142183 ], [ 34.914335935729667, -17.332922720721363 ], [ 34.914477557576397, -17.332977479021213 ], [ 34.914616001584655, -17.333039280957927 ], [ 34.914750888302791, -17.333107957142325 ], [ 34.914881848028003, -17.333183319344126 ], [ 34.915008521819459, -17.333265161007834 ], [ 34.915130562482133, -17.333353257818729 ], [ 34.915247635518178, -17.333447368317675 ], [ 34.915359420043842, -17.33354723456284 ], [ 34.915465609668836, -17.333652582836624 ], [ 34.915518445366438, -17.33371081141938 ], [ 34.913379761071603, -17.335625170111705 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "2.5", "pivot_quadrant": "2.5B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.920240082361659, -17.336946735747041 ], [ 34.922942052048946, -17.33414882953203 ], [ 34.923015700072284, -17.334214619847671 ], [ 34.92315957577275, -17.334357343654762 ], [ 34.923295477304066, -17.334507103771536 ], [ 34.923423032168401, -17.33466348973268 ], [ 34.923541890741852, -17.334826072912001 ], [ 34.923651727232865, -17.334994407696968 ], [ 34.923752240575283, -17.335168032709991 ], [ 34.923843155253664, -17.335346472072818 ], [ 34.923924222058574, -17.335529236710677 ], [ 34.92399521876996, -17.335715825692713 ], [ 34.924055950766373, -17.335905727604761 ], [ 34.924106251558761, -17.336098421951011 ], [ 34.924145983247044, -17.336293380580464 ], [ 34.924175036898419, -17.336490069134513 ], [ 34.924193332846301, -17.336687948511432 ], [ 34.924200820909014, -17.336886476343878 ], [ 34.924197480527702, -17.337085108485553 ], [ 34.924183320823069, -17.337283300502477 ], [ 34.924158380570788, -17.337480509165285 ], [ 34.924122728095575, -17.337676193938162 ], [ 34.924076461084262, -17.337869818460412 ], [ 34.924019706318504, -17.338060852016596 ], [ 34.923952619327601, -17.338248770991257 ], [ 34.923875383962496, -17.338433060304176 ], [ 34.923788211892266, -17.338613214822228 ], [ 34.923691342024206, -17.338788740744029 ], [ 34.923585039849272, -17.338959156953514 ], [ 34.923469596714675, -17.339123996338795 ], [ 34.923345329025501, -17.339282807072621 ], [ 34.923212577377683, -17.339435153850914 ], [ 34.923199307657669, -17.339448856263918 ], [ 34.920240082361659, -17.336946735747041 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 669.0, "radius": 461, "pivot": "6.1", "pivot_quadrant": "6.1B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.926975301324241, -17.341756277068452 ], [ 34.929874621707043, -17.3387198647094 ], [ 34.929976827889384, -17.338811156788797 ], [ 34.930134758291622, -17.338967806549938 ], [ 34.930283936250547, -17.339132179782727 ], [ 34.930423952878314, -17.339303825971783 ], [ 34.930554424393229, -17.339482274667148 ], [ 34.930674993171756, -17.339667036773445 ], [ 34.930785328728838, -17.339857605890288 ], [ 34.930885128623856, -17.340053459700087 ], [ 34.930974119289864, -17.340254061399367 ], [ 34.931052056783614, -17.340458861170085 ], [ 34.931118727454496, -17.340667297686302 ], [ 34.931173948530414, -17.340878799652643 ], [ 34.931217568619211, -17.341092787369995 ], [ 34.93124946812388, -17.341308674324267 ], [ 34.931269559570865, -17.34152586879387 ], [ 34.931277787850235, -17.341743775471489 ], [ 34.931274130367186, -17.341961797095689 ], [ 34.931258597104346, -17.342179336087895 ], [ 34.931231230595053, -17.342395796190306 ], [ 34.931192105807014, -17.342610584100129 ], [ 34.931141329937518, -17.342823111095818 ], [ 34.93107904211984, -17.343032794650775 ], [ 34.93100541304252, -17.343239060030005 ], [ 34.930920644481787, -17.343441341865585 ], [ 34.930824968748979, -17.34363908570629 ], [ 34.930718648054125, -17.343831749537522 ], [ 34.930601973787617, -17.344018805267019 ], [ 34.930475265721768, -17.344199740172474 ], [ 34.930338871134673, -17.344374058307057 ], [ 34.930206135800262, -17.344526394378821 ], [ 34.926975301324241, -17.341756277068452 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 669.0, "radius": 461, "pivot": "6.2", "pivot_quadrant": "6.2C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.930918907739319, -17.350619195960071 ], [ 34.933686532028823, -17.34741850738671 ], [ 34.936891437505039, -17.35009147006711 ], [ 34.936870614319417, -17.350115369252237 ], [ 34.936715995799332, -17.350275044792941 ], [ 34.936552887205806, -17.350426730058501 ], [ 34.936381735605124, -17.350570009270172 ], [ 34.936203010113339, -17.350704489689271 ], [ 34.936017200610422, -17.35082980269403 ], [ 34.93582481639752, -17.350945604790095 ], [ 34.935626384800806, -17.351051578552209 ], [ 34.935422449725991, -17.351147433494578 ], [ 34.935213570167356, -17.351232906867171 ], [ 34.935000318675286, -17.351307764376163 ], [ 34.934783279786686, -17.351371800826296 ], [ 34.934563048422454, -17.351424840683471 ], [ 34.93434022825658, -17.351466738556034 ], [ 34.934115430061013, -17.351497379593461 ], [ 34.933889270031244, -17.351516679801193 ], [ 34.933662368096904, -17.351524586271111 ], [ 34.933435346222147, -17.351521077326474 ], [ 34.933208826700387, -17.351506162581522 ], [ 34.932983430448253, -17.351479882915079 ], [ 34.932759775303161, -17.351442310358582 ], [ 34.932538474329434, -17.351393547898589 ], [ 34.932320134137491, -17.351333729194508 ], [ 34.932105353220734, -17.351263018212201 ], [ 34.931894720314659, -17.351181608774432 ], [ 34.931688812782838, -17.351089724029563 ], [ 34.931488195034035, -17.350987615839795 ], [ 34.931293416974796, -17.350875564090668 ], [ 34.931105012501995, -17.350753875923818 ], [ 34.930923498039114, -17.350622884894868 ], [ 34.930918907739319, -17.350619195960071 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 60.0, "radius": 437, "pivot": "1.8", "pivot_quadrant": "1.8B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.961161225337996, -17.342695153682683 ], [ 34.963463180156758, -17.345951999810669 ], [ 34.963432746238198, -17.345972531590462 ], [ 34.963250401228407, -17.34608232777347 ], [ 34.963062322565051, -17.346182808203306 ], [ 34.962869025775234, -17.346273697452876 ], [ 34.962671040692122, -17.346354746384645 ], [ 34.962468910002343, -17.346425732833538 ], [ 34.962263187758481, -17.346486462216212 ], [ 34.962054437859955, -17.346536768064457 ], [ 34.961843232507221, -17.346576512481615 ], [ 34.961630150633034, -17.34660558652071 ], [ 34.961415776315228, -17.346623910483206 ], [ 34.961200697175478, -17.346631434137443 ], [ 34.960985502768224, -17.346628136856513 ], [ 34.960770782964332, -17.346614027674772 ], [ 34.960557126333896, -17.346589145263163 ], [ 34.960345118532622, -17.346553557823199 ], [ 34.960135340696091, -17.346507362900038 ], [ 34.959928367846587, -17.346450687115105 ], [ 34.959724767316587, -17.346383685818981 ], [ 34.959525097193278, -17.346306542665452 ], [ 34.959329904788703, -17.346219469108206 ], [ 34.959139725139103, -17.34612270382096 ], [ 34.958955079538242, -17.346016512043306 ], [ 34.958776474108255, -17.345901184853453 ], [ 34.958604398412149, -17.345777038370297 ], [ 34.958439324111843, -17.345644412886852 ], [ 34.958281703675084, -17.345503671937216 ], [ 34.958131969135259, -17.345355201300144 ], [ 34.957990530907111, -17.345199407941248 ], [ 34.95785777666174, -17.345036718897553 ], [ 34.957734070264131, -17.344867580106648 ], [ 34.957665162047512, -17.344762020273741 ], [ 34.961161225337996, -17.342695153682683 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 42.0, "radius": 366, "pivot": "1.6", "pivot_quadrant": "1.6C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.978354668011164, -17.346604682049772 ], [ 34.977997053286906, -17.349855632180109 ], [ 34.977869135434879, -17.349840746730006 ], [ 34.977691568440811, -17.349810957379173 ], [ 34.977515868251459, -17.349772283910664 ], [ 34.977342516473946, -17.349724832328775 ], [ 34.977171988277505, -17.349668732699339 ], [ 34.977004751090774, -17.349604138793072 ], [ 34.976841263320381, -17.349531227664105 ], [ 34.976681973094188, -17.349450199164586 ], [ 34.976527317032911, -17.349361275396888 ], [ 34.97637771905309, -17.34926470010463 ], [ 34.976233589205009, -17.349160738004564 ], [ 34.976095322548673, -17.349049674060865 ], [ 34.975963298070845, -17.348931812703938 ], [ 34.975837877646171, -17.348807476995859 ], [ 34.97571940504529, -17.348677007744797 ], [ 34.97560820499254, -17.348540762570682 ], [ 34.975504582275924, -17.34839911492486 ], [ 34.975408820911731, -17.348252453066394 ], [ 34.975321183366191, -17.348101178997709 ], [ 34.9752419098361, -17.347945707362602 ], [ 34.975171217590642, -17.347786464309539 ], [ 34.975109300375976, -17.347623886323589 ], [ 34.975056327884417, -17.347458419029859 ], [ 34.975012445289508, -17.347290515971977 ], [ 34.974977772848305, -17.34712063736885 ], [ 34.974952405572012, -17.346949248853143 ], [ 34.974936412965867, -17.346776820194972 ], [ 34.974929838838861, -17.346603824014135 ], [ 34.974932701183953, -17.346430734484802 ], [ 34.974944992128989, -17.346258026035596 ], [ 34.974946239091686, -17.346248144213522 ], [ 34.978354668011164, -17.346604682049772 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 204.0, "radius": 255, "pivot": "1.5", "pivot_quadrant": "1.5C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.981679444479695, -17.339111001077271 ], [ 34.981414279389675, -17.341507128753143 ], [ 34.979069772171925, -17.341221754105334 ], [ 34.97907218780167, -17.341187800312291 ], [ 34.979087294041641, -17.341068065924567 ], [ 34.979108904300226, -17.340949254926347 ], [ 34.979136959332656, -17.340831692969534 ], [ 34.979171382229808, -17.340715702281784 ], [ 34.979212078629267, -17.340601600783437 ], [ 34.979258936974006, -17.340489701216075 ], [ 34.979311828818311, -17.340380310285358 ], [ 34.979370609179981, -17.340273727820453 ], [ 34.979435116937729, -17.340170245952184 ], [ 34.979505175273005, -17.340070148312417 ], [ 34.979580592154655, -17.339973709256714 ], [ 34.979661160865334, -17.339881193112319 ], [ 34.979746660568168, -17.339792853453819 ], [ 34.979836856912151, -17.339708932408108 ], [ 34.979931502674376, -17.33962965999083 ], [ 34.9800303384378, -17.339555253475954 ], [ 34.980133093302214, -17.339485916800367 ], [ 34.980239485626747, -17.339421840004896 ], [ 34.980349223801831, -17.339363198713549 ], [ 34.980462007048374, -17.339310153652161 ], [ 34.980577526242143, -17.339262850207973 ], [ 34.980695464761006, -17.339221418031112 ], [ 34.98081549935263, -17.339185970679388 ], [ 34.980937301020425, -17.339156605307025 ], [ 34.981060535925209, -17.339133402398442 ], [ 34.981184866300069, -17.339116425547651 ], [ 34.981309951376097, -17.339105721284096 ], [ 34.981435448316205, -17.339101318945044 ], [ 34.98156101315476, -17.339103230595249 ], [ 34.981679444479695, -17.339111001077271 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 238.0, "radius": 275, "pivot": "1.4", "pivot_quadrant": "1.4B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.975949718590073, -17.343237636498074 ], [ 34.976297118077937, -17.340867839790402 ], [ 34.978926265695563, -17.341206981511462 ], [ 34.978913049912912, -17.341279639946706 ], [ 34.978882794231374, -17.341406422427387 ], [ 34.978845671151007, -17.341531510388236 ], [ 34.978801782409981, -17.341654560969456 ], [ 34.978751248291495, -17.341775236894811 ], [ 34.978694207294154, -17.341893207396165 ], [ 34.978630815752453, -17.342008149120165 ], [ 34.978561247408479, -17.342119747014557 ], [ 34.978485692935763, -17.342227695191749 ], [ 34.978404359416693, -17.342331697767307 ], [ 34.978317469775135, -17.342431469671059 ], [ 34.978225262165303, -17.342526737428432 ], [ 34.978127989319184, -17.342617239910208 ], [ 34.97802591785377, -17.342702729048238 ], [ 34.97791932754032, -17.34278297051554 ], [ 34.977808510537486, -17.342857744368597 ], [ 34.977693770590584, -17.34292684565029 ], [ 34.97757542219891, -17.342990084951776 ], [ 34.977453789753753, -17.343047288931722 ], [ 34.977329206649109, -17.343098300791471 ], [ 34.977202014367826, -17.343142980704894 ], [ 34.977072561545548, -17.343181206201727 ], [ 34.976941203014952, -17.343212872503312 ], [ 34.97680829883312, -17.343237892809821 ], [ 34.97667421329443, -17.343256198538253 ], [ 34.976539313931994, -17.343267739510448 ], [ 34.976403970510042, -17.34327248409063 ], [ 34.976268554010332, -17.343270419272212 ], [ 34.976133435615104, -17.343261550713425 ], [ 34.975998985689543, -17.343245902721812 ], [ 34.975949718590073, -17.343237636498074 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 22.0, "radius": 265, "pivot": "1.2", "pivot_quadrant": "1.2D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.976816384818314, -17.338238223714697 ], [ 34.976762738159529, -17.338203588832894 ], [ 34.976658388456634, -17.338128315241242 ], [ 34.976558283695852, -17.3380478996406 ], [ 34.976462698261315, -17.337962562450763 ], [ 34.976371894148514, -17.33787253758145 ], [ 34.976286120246264, -17.337778071791206 ], [ 34.976205611654429, -17.337679424010897 ], [ 34.97613058903957, -17.337576864633927 ], [ 34.976061258030121, -17.337470674775066 ], [ 34.975997808652856, -17.337361145499887 ], [ 34.975940414812008, -17.337248577026841 ], [ 34.975889233812737, -17.337133277904332 ], [ 34.975844405930061, -17.337015564164975 ], [ 34.97580605402436, -17.336895758459242 ], [ 34.97577428320492, -17.336774189171134 ], [ 34.975749180541747, -17.336651189517951 ], [ 34.975730814827195, -17.336527096636967 ], [ 34.975719236387441, -17.336402250661358 ], [ 34.975714476944766, -17.336276993787809 ], [ 34.975716549530709, -17.336151669338609 ], [ 34.975725448450497, -17.336026620820551 ], [ 34.975741149298841, -17.33590219098344 ], [ 34.975763609026941, -17.335778720880647 ], [ 34.975792766060671, -17.335656548934217 ], [ 34.975828540469436, -17.335536010007385 ], [ 34.975870834185486, -17.335417434486722 ], [ 34.975919531272815, -17.335301147376583 ], [ 34.975974498245002, -17.335187467408328 ], [ 34.976035584431322, -17.335076706166753 ], [ 34.976102622389732, -17.334969167236075 ], [ 34.976145471591806, -17.334907946244652 ], [ 34.97820349148671, -17.336307953800048 ], [ 34.976973009965533, -17.338311269909727 ], [ 34.976816384818314, -17.338238223714697 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 15.0, "radius": 219, "pivot": "1.7", "pivot_quadrant": "1.7C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.965141978743468, -17.34115131321493 ], [ 34.96697037363257, -17.340380748223968 ], [ 34.967862993493888, -17.342116599326115 ], [ 34.967767121182092, -17.342155850020827 ], [ 34.967665828053995, -17.342191426810356 ], [ 34.967562734991439, -17.342221863436112 ], [ 34.967458124572644, -17.342247076470123 ], [ 34.967352283535391, -17.342266996802234 ], [ 34.96724550199103, -17.342281569829609 ], [ 34.967138072629211, -17.342290755606424 ], [ 34.967030289915506, -17.342294528953374 ], [ 34.966922449284276, -17.342292879526671 ], [ 34.966814846328695, -17.342285811846477 ], [ 34.966707775990557, -17.342273345284447 ], [ 34.966601531751685, -17.342255514010727 ], [ 34.966496404829407, -17.342232366900181 ], [ 34.966392683378324, -17.342203967398536 ], [ 34.966290651700341, -17.342170393348415 ], [ 34.966190589465299, -17.342131736775904 ], [ 34.966092770944378, -17.342088103638435 ], [ 34.965997464258237, -17.342039613534183 ], [ 34.965904930642061, -17.341986399374331 ], [ 34.965815423729424, -17.341928607018694 ], [ 34.965729188857061, -17.34186639487589 ], [ 34.965646462392378, -17.341799933469115 ], [ 34.965567471085528, -17.341729404968714 ], [ 34.965492431447899, -17.341655002692814 ], [ 34.965421549158599, -17.341576930577368 ], [ 34.965355018500752, -17.34149540261722 ], [ 34.965293021828984, -17.34141064227941 ], [ 34.965235729069583, -17.341322881890694 ], [ 34.965183297254761, -17.341232362000632 ], [ 34.965141978743468, -17.34115131321493 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 30.0, "radius": 309, "pivot": "1.3", "pivot_quadrant": "1.3B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.970773107481506, -17.335663616039604 ], [ 34.970354223381719, -17.338412629071641 ], [ 34.970344564689924, -17.338411504611443 ], [ 34.970194661483319, -17.338386347845049 ], [ 34.970046334609464, -17.338353690604716 ], [ 34.96989999063991, -17.338313622403852 ], [ 34.96975603071045, -17.338266253069662 ], [ 34.969614849421397, -17.338211712442192 ], [ 34.969476833755884, -17.338150150018279 ], [ 34.969342362018992, -17.338081734541827 ], [ 34.969211802800672, -17.338006653541218 ], [ 34.969085513965389, -17.337925112815231 ], [ 34.968963841671005, -17.337837335868841 ], [ 34.968847119420062, -17.337743563300634 ], [ 34.96873566714541, -17.337644052143105 ], [ 34.96862979033336, -17.337539075158222 ], [ 34.968529779186312, -17.337428920089575 ], [ 34.968435907827235, -17.337313888873631 ], [ 34.968348433548449, -17.3371942968121 ], [ 34.968267596106315, -17.337070471707587 ], [ 34.968193617064209, -17.336942752964909 ], [ 34.968126699185284, -17.336811490660896 ], [ 34.968067025876756, -17.336677044584633 ], [ 34.96801476068736, -17.336539783251222 ], [ 34.967970046859186, -17.33640008289165 ], [ 34.967933006935205, -17.336258326421515 ], [ 34.967903742423537, -17.336114902391344 ], [ 34.967882333519427, -17.335970203921576 ], [ 34.967868838885579, -17.335824627624998 ], [ 34.967863295491597, -17.335678572519573 ], [ 34.967865718512797, -17.335532438934763 ], [ 34.967876101288894, -17.335386627414191 ], [ 34.967894415342442, -17.335241537617812 ], [ 34.967900765229288, -17.335206638144747 ], [ 34.970773107481506, -17.335663616039604 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 15.0, "radius": 219, "pivot": "1.1", "pivot_quadrant": "1.1D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.975967002903133, -17.329006613978088 ], [ 34.977225538507916, -17.327402417183986 ], [ 34.977276534416632, -17.327439206013974 ], [ 34.977359257505945, -17.327505662931092 ], [ 34.977438246093733, -17.327576187031788 ], [ 34.977513283679436, -17.327650585018809 ], [ 34.977584164590994, -17.327728652976958 ], [ 34.97765069454843, -17.327810176931923 ], [ 34.97771269119648, -17.327894933436831 ], [ 34.977769984604379, -17.327982690184498 ], [ 34.97782241773163, -17.328073206644273 ], [ 34.977869846858539, -17.328166234721127 ], [ 34.977912141980134, -17.328261519435703 ], [ 34.977949187162594, -17.328358799623132 ], [ 34.977980880861054, -17.328457808648796 ], [ 34.978007136197959, -17.328558275139187 ], [ 34.978027881201406, -17.328659923725571 ], [ 34.978043059002367, -17.328762475798857 ], [ 34.978052627990678, -17.328865650273102 ], [ 34.978056561929264, -17.328969164356007 ], [ 34.978054850026062, -17.329072734323933 ], [ 34.978047496963782, -17.329176076299639 ], [ 34.978034522887093, -17.329278907030307 ], [ 34.978015963347566, -17.329380944663903 ], [ 34.977991869206356, -17.329481909521785 ], [ 34.977962306494838, -17.329581524865198 ], [ 34.977927356233742, -17.329679517653869 ], [ 34.977887114211171, -17.329775619294388 ], [ 34.97784169072019, -17.329869566376452 ], [ 34.977791210256534, -17.32996110139484 ], [ 34.977735811177453, -17.330049973455242 ], [ 34.97768378767087, -17.330124305102657 ], [ 34.975967002903133, -17.329006613978088 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 30.0, "radius": 309, "pivot": "1.9", "pivot_quadrant": "1.9D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.964728870983024, -17.336051561916904 ], [ 34.967428748672695, -17.335013069641263 ], [ 34.967469972171351, -17.335121335030792 ], [ 34.967514685216699, -17.335261035588786 ], [ 34.967551724543249, -17.335402792202579 ], [ 34.967580988613044, -17.335546216333061 ], [ 34.967602397198554, -17.335690914869808 ], [ 34.967615891602726, -17.335836491208521 ], [ 34.967621434820103, -17.335982546338016 ], [ 34.967619011638341, -17.336128679933918 ], [ 34.967608628680289, -17.336274491455832 ], [ 34.967590314385895, -17.336419581245202 ], [ 34.967564118934519, -17.33656355162071 ], [ 34.96753011410761, -17.336706007968349 ], [ 34.96748839309214, -17.336846559823023 ], [ 34.967439070225389, -17.336984821938778 ], [ 34.967382280681733, -17.337120415344799 ], [ 34.967318180102346, -17.337252968384213 ], [ 34.967246944168728, -17.337382117732766 ], [ 34.96716876812134, -17.337507509394726 ], [ 34.967083866224598, -17.33762879967334 ], [ 34.966992471179729, -17.337745656112833 ], [ 34.966894833487004, -17.337857758409786 ], [ 34.966791220759234, -17.337964799291147 ], [ 34.96668191698835, -17.338066485356531 ], [ 34.966567221766972, -17.338162537882528 ], [ 34.966447449467367, -17.338252693586735 ], [ 34.966322928379626, -17.338336705349501 ], [ 34.966193999811964, -17.338414342891376 ], [ 34.966061017155035, -17.33848539340439 ], [ 34.966003469280459, -17.338512454706869 ], [ 34.964728870983024, -17.336051561916904 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 341.0, "radius": 329, "pivot": "1.10", "pivot_quadrant": "1.10D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.957010326871092, -17.336809457524954 ], [ 34.955242480798987, -17.334332157368866 ], [ 34.955350420930586, -17.334267165729322 ], [ 34.955492013053238, -17.334191523989539 ], [ 34.955637532828916, -17.334123103067494 ], [ 34.95578658140937, -17.3340620904909 ], [ 34.955938750276061, -17.334008653482151 ], [ 34.956093622359603, -17.333962938500228 ], [ 34.956250773182859, -17.333925070839225 ], [ 34.95640977202418, -17.333895154285123 ], [ 34.956570183097803, -17.33387327083128 ], [ 34.956731566748068, -17.333859480453818 ], [ 34.95689348065433, -17.333853820947308 ], [ 34.957055481043014, -17.333856307821161 ], [ 34.957217123903831, -17.333866934257205 ], [ 34.957377966206458, -17.333885671128321 ], [ 34.957537567114713, -17.333912467078409 ], [ 34.957695489194478, -17.333947248662994 ], [ 34.957851299612628, -17.333989920550646 ], [ 34.958004571322995, -17.334040365784176 ], [ 34.958154884236826, -17.334098446101205 ], [ 34.958301826373862, -17.33416400231307 ], [ 34.958444994991495, -17.334236854741064 ], [ 34.958583997688393, -17.334316803708923 ], [ 34.958718453479904, -17.334403630089952 ], [ 34.958847993842262, -17.334497095907654 ], [ 34.958972263722472, -17.334596944987808 ], [ 34.9590909225114, -17.33470290366062 ], [ 34.959203644977393, -17.33481468151064 ], [ 34.959310122157575, -17.33493197217275 ], [ 34.959410062204682, -17.335054454171708 ], [ 34.959503191187082, -17.335181791803198 ], [ 34.959540353269119, -17.335238722501 ], [ 34.957010326871092, -17.336809457524954 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 544.0, "radius": 416, "pivot": "1.11", "pivot_quadrant": "1.11D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.960619385935466, -17.330692249633707 ], [ 34.961187884958441, -17.334400587778653 ], [ 34.961072028950504, -17.334416395801075 ], [ 34.960867969605161, -17.334433837419532 ], [ 34.960663239453304, -17.33444099772812 ], [ 34.960458399679979, -17.334437857096304 ], [ 34.96025401177112, -17.334424424129391 ], [ 34.960050635974234, -17.334400735644973 ], [ 34.959848829762414, -17.334366856572057 ], [ 34.959649146305892, -17.33432287977303 ], [ 34.959452132955583, -17.334268925789214 ], [ 34.959258329742404, -17.334205142510285 ], [ 34.959068267896775, -17.334131704768978 ], [ 34.958882468392225, -17.334048813861745 ], [ 34.958701440517132, -17.333956696996925 ], [ 34.958525680478566, -17.333855606671875 ], [ 34.958355670041925, -17.333745819980795 ], [ 34.958191875210261, -17.333627637855024 ], [ 34.958034744946829, -17.333501384238147 ], [ 34.957884709944366, -17.333367405197862 ], [ 34.957742181444438, -17.333226067977272 ], [ 34.957607550110296, -17.333077759988161 ], [ 34.957481184955945, -17.332922887748911 ], [ 34.957363432334795, -17.332761875770107 ], [ 34.957254614990347, -17.332595165390771 ], [ 34.957155031171695, -17.332423213568532 ], [ 34.957064953816122, -17.332246491626936 ], [ 34.956984629801269, -17.332065483963447 ], [ 34.956914279268503, -17.331880686721558 ], [ 34.956854095019878, -17.331692606430721 ], [ 34.956804241989921, -17.331501758617907 ], [ 34.956779145904193, -17.33137872104356 ], [ 34.960619385935466, -17.330692249633707 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 307.0, "radius": 313, "pivot": "1.12", "pivot_quadrant": "1.12A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.955236330182871, -17.33431716598372 ], [ 34.953639390624843, -17.331963065750791 ], [ 34.956244881516085, -17.330425794331145 ], [ 34.956261331297341, -17.330450996469615 ], [ 34.956336256917439, -17.330580374246498 ], [ 34.956404030135602, -17.330713340954052 ], [ 34.956464465179891, -17.330849532148207 ], [ 34.956517396390062, -17.330988574546339 ], [ 34.956562678671851, -17.33113008705028 ], [ 34.95660018789475, -17.331273681790872 ], [ 34.956629821232468, -17.331418965190952 ], [ 34.956651497444895, -17.331565539044075 ], [ 34.95666515710095, -17.33171300160593 ], [ 34.956670762741744, -17.331860948695443 ], [ 34.956668298983416, -17.33200897480253 ], [ 34.956657772559488, -17.332156674199577 ], [ 34.956639212302683, -17.332303642053507 ], [ 34.956612669066011, -17.332449475535363 ], [ 34.956578215583725, -17.33259377492443 ], [ 34.956535946272076, -17.332736144703894 ], [ 34.95648597697074, -17.3328761946449 ], [ 34.95642844462553, -17.333013540876248 ], [ 34.956363506913185, -17.33314780693653 ], [ 34.956291341809404, -17.333278624806081 ], [ 34.956212147101148, -17.333405635915714 ], [ 34.956126139844635, -17.333528492129666 ], [ 34.956033555770553, -17.333646856699861 ], [ 34.955934648638085, -17.33376040518899 ], [ 34.955829689539371, -17.333868826359854 ], [ 34.955718966156532, -17.333971823028588 ], [ 34.95560278197329, -17.33406911287927 ], [ 34.955481455443014, -17.334160429237812 ], [ 34.955355319115959, -17.334245521803091 ], [ 34.955236330182871, -17.33431716598372 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 629.0, "radius": 447, "pivot": "1.13", "pivot_quadrant": "1.13B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.954988844373986, -17.325074100205931 ], [ 34.955577723835631, -17.328974101137693 ], [ 34.955456933590519, -17.32899057899429 ], [ 34.955237672884792, -17.329009313455341 ], [ 34.955017691779858, -17.329017000371412 ], [ 34.95479759326777, -17.329013618667915 ], [ 34.954577980662954, -17.328999177610459 ], [ 34.954359455948037, -17.328973716779579 ], [ 34.95414261812347, -17.328937305962217 ], [ 34.9539280615653, -17.328890044960499 ], [ 34.953716374395555, -17.328832063318103 ], [ 34.953508136869821, -17.328763519965111 ], [ 34.953303919786507, -17.328684602782413 ], [ 34.953104282921842, -17.328595528086584 ], [ 34.952909773495264, -17.328496540036845 ], [ 34.952720924669258, -17.328387909965802 ], [ 34.952538254087635, -17.328269935635504 ], [ 34.95236226245656, -17.328142940421166 ], [ 34.952193432171818, -17.328007272424674 ], [ 34.952032225996575, -17.327863303520239 ], [ 34.95187908579274, -17.327711428334975 ], [ 34.951734431309859, -17.32755206316698 ], [ 34.951598659034502, -17.327385644844153 ], [ 34.951472141103615, -17.32721262952661 ], [ 34.951355224284541, -17.327033491456227 ], [ 34.951248229024607, -17.326848721656539 ], [ 34.951151448573079, -17.326658826586701 ], [ 34.951065148177435, -17.326464326753069 ], [ 34.950989564356654, -17.326265755282392 ], [ 34.950924904253185, -17.326063656460345 ], [ 34.95087134506548, -17.325858584239537 ], [ 34.950829033562627, -17.325651100720965 ], [ 34.950800585931511, -17.325458685865403 ], [ 34.954988844373986, -17.325074100205931 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 254.0, "radius": 284, "pivot": "1.14", "pivot_quadrant": "1.14D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.959429692942393, -17.324632437480492 ], [ 34.96199524794266, -17.324405539234302 ], [ 34.962917097922038, -17.326827271055144 ], [ 34.9628057726948, -17.326860136943811 ], [ 34.962670123327506, -17.326892829017506 ], [ 34.962532878449238, -17.326918657395606 ], [ 34.962394414252785, -17.326937551279997 ], [ 34.962255110273766, -17.32694945888019 ], [ 34.96211534835011, -17.326954347555368 ], [ 34.961975511575361, -17.326952203903854 ], [ 34.961835983248399, -17.326943033799861 ], [ 34.961697145822697, -17.326926862377444 ], [ 34.961559379857924, -17.326903733961579 ], [ 34.961423062976593, -17.326873711946686 ], [ 34.961288568828891, -17.326836878622842 ], [ 34.961156266068393, -17.326793334950221 ], [ 34.961026517341416, -17.326743200282376 ], [ 34.96089967829289, -17.32668661203898 ], [ 34.960776096591395, -17.326623725329195 ], [ 34.960656110976146, -17.326554712526441 ], [ 34.960540050328412, -17.326479762795923 ], [ 34.960428232769921, -17.326399081575982 ], [ 34.960320964790888, -17.326312890015025 ], [ 34.960218540409869, -17.326221424365276 ], [ 34.960121240367819, -17.326124935335116 ], [ 34.960029331358555, -17.32602368740184 ], [ 34.959943065297743, -17.325917958086681 ], [ 34.959862678632533, -17.325808037194083 ], [ 34.959788391693294, -17.325694226017156 ], [ 34.959720408089943, -17.325576836511928 ], [ 34.959658914153827, -17.32545619044215 ], [ 34.959604078427063, -17.325332618497225 ], [ 34.959556051200735, -17.325206459385821 ], [ 34.959514964103008, -17.325078058907394 ], [ 34.959480929738518, -17.324947769004307 ], [ 34.9594540413798, -17.324815946797088 ], [ 34.959434372711804, -17.324682953605588 ], [ 34.959429692942393, -17.324632437480492 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 156.0, "radius": 223, "pivot": "1.16", "pivot_quadrant": "1.16C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.955074672069358, -17.318897254404234 ], [ 34.953055168419084, -17.319242829332627 ], [ 34.953045135325517, -17.3191749687957 ], [ 34.953035406841693, -17.319069907036841 ], [ 34.953031416182405, -17.318964500208651 ], [ 34.953033174276065, -17.318859037225231 ], [ 34.953040676293959, -17.31875380715416 ], [ 34.953053901663694, -17.318649098424061 ], [ 34.953072814125669, -17.318545198034169 ], [ 34.953097361832498, -17.318442390767569 ], [ 34.953127477491357, -17.318340958410715 ], [ 34.9531630785484, -17.31824117898103 ], [ 34.953204067415207, -17.318143325964947 ], [ 34.953250331736328, -17.318047667568258 ], [ 34.953301744697342, -17.317954465981085 ], [ 34.953358165372507, -17.317863976659215 ], [ 34.953419439111137, -17.31777644762397 ], [ 34.953485397961508, -17.317692118782404 ], [ 34.953555861131257, -17.317611221269846 ], [ 34.953630635482966, -17.317533976816364 ], [ 34.953709516063618, -17.317460597139068 ], [ 34.953792286666292, -17.317391283361872 ], [ 34.953878720422843, -17.317326225464313 ], [ 34.953968580425695, -17.317265601760816 ], [ 34.954061620377189, -17.317209578412005 ], [ 34.954157585264667, -17.3171583089694 ], [ 34.954256212059335, -17.317111933954514 ], [ 34.954357230437225, -17.317070580473761 ], [ 34.954460363520035, -17.317034361870103 ], [ 34.954565328634033, -17.317003377412487 ], [ 34.954661651915764, -17.316980166566335 ], [ 34.955074672069358, -17.318897254404234 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 187.0, "radius": 244, "pivot": "1.17", "pivot_quadrant": "1.17A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.954026875506962, -17.314612148368443 ], [ 34.95629602563065, -17.314112227198336 ], [ 34.956322154378064, -17.31421226865082 ], [ 34.956345251698423, -17.314325525156761 ], [ 34.95636214657646, -17.314439787577303 ], [ 34.956372792693529, -17.314554742729765 ], [ 34.956377160857997, -17.314670075532256 ], [ 34.956375239085375, -17.314785469867143 ], [ 34.956367032631277, -17.314900609447584 ], [ 34.956352563977227, -17.315015178684423 ], [ 34.956331872769042, -17.31512886355118 ], [ 34.956305015708395, -17.315241352444758 ], [ 34.956272066397489, -17.31535233703957 ], [ 34.956233115137429, -17.315461513132622 ], [ 34.956188268680854, -17.31556858147739 ], [ 34.956137649939436, -17.315673248603972 ], [ 34.956081397647068, -17.315775227623565 ], [ 34.95601966597976, -17.315874239014846 ], [ 34.955952624133047, -17.315970011390132 ], [ 34.955880455858406, -17.316062282239301 ], [ 34.955803358959564, -17.31615079864936 ], [ 34.955721544750475, -17.31623531799772 ], [ 34.955635237476123, -17.316315608617266 ], [ 34.955544673697872, -17.316391450431393 ], [ 34.955450101645134, -17.316462635557304 ], [ 34.955351780534926, -17.316528968875815 ], [ 34.955249979861421, -17.316590268566287 ], [ 34.955144978657209, -17.316646366605035 ], [ 34.955037064728437, -17.316697109225839 ], [ 34.954926533865958, -17.3167423573416 ], [ 34.954813689034438, -17.316781986925569 ], [ 34.954698839541891, -17.316815889351282 ], [ 34.95460479566993, -17.316838550983693 ], [ 34.954026875506962, -17.314612148368443 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 277.0, "radius": 297, "pivot": "1.18", "pivot_quadrant": "1.18D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.959294104555354, -17.315720468707916 ], [ 34.961301964672387, -17.313838203379714 ], [ 34.963115666188799, -17.315822640664031 ], [ 34.963041894062059, -17.315884425490665 ], [ 34.962926783983661, -17.315971076915993 ], [ 34.962807110273779, -17.316051822842091 ], [ 34.962683200953926, -17.316126441941666 ], [ 34.96255539565685, -17.316194729680749 ], [ 34.962424044695666, -17.316256498879472 ], [ 34.962289508103467, -17.316311580225161 ], [ 34.962152154646418, -17.316359822736526 ], [ 34.962012360812984, -17.316401094177511 ], [ 34.961870509781747, -17.316435281419889 ], [ 34.961726990371027, -17.316462290753368 ], [ 34.961582195973008, -17.316482048142475 ], [ 34.961436523475342, -17.316494499429613 ], [ 34.961290372173067, -17.316499610483458 ], [ 34.961144142673987, -17.316497367292616 ], [ 34.96099823580051, -17.316487776003999 ], [ 34.960853051490787, -17.316470862906066 ], [ 34.960708987702283, -17.316446674356676 ], [ 34.960566439320871, -17.31641527665608 ], [ 34.960425797078265, -17.316376755865221 ], [ 34.960287446480869, -17.316331217569729 ], [ 34.960151766752965, -17.316278786590583 ], [ 34.960019129797111, -17.316219606641869 ], [ 34.959889899174662, -17.316153839936874 ], [ 34.959764429109072, -17.316081666743379 ], [ 34.959643063514939, -17.316003284889536 ], [ 34.959526135055206, -17.315918909221505 ], [ 34.959413964229249, -17.31582877101453 ], [ 34.959306858494422, -17.315733117339001 ], [ 34.959294104555354, -17.315720468707916 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 32.0, "radius": null, "pivot": "DL1.3", "pivot_quadrant": "DL1.3" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.947298927757849, -17.321663500672134 ], [ 34.947451385514611, -17.321753599029073 ], [ 34.947340653363916, -17.32175579751058 ], [ 34.947298927757849, -17.321663500672134 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 42.0, "radius": 366, "pivot": "1.6", "pivot_quadrant": "1.6D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.978720327296884, -17.343280601630497 ], [ 34.978354668011164, -17.346604682049772 ], [ 34.974946239091686, -17.346248144213522 ], [ 34.974966677958683, -17.346086172049372 ], [ 34.974997699207229, -17.345915643565576 ], [ 34.975037970821617, -17.345746907989223 ], [ 34.975087382395003, -17.345580427809782 ], [ 34.97514579846969, -17.345416659333534 ], [ 34.975213058908558, -17.345256051432944 ], [ 34.97528897933433, -17.345099044316385 ], [ 34.97537335163512, -17.344946068321619 ], [ 34.975465944535074, -17.344797542736355 ], [ 34.975566504228468, -17.344653874649165 ], [ 34.975674755075552, -17.34451545783368 ], [ 34.975790400358186, -17.344382671669511 ], [ 34.975913123093221, -17.344255880102434 ], [ 34.976042586901428, -17.344135430647047 ], [ 34.976178436929551, -17.344021653434318 ], [ 34.976320300822913, -17.343914860306906 ], [ 34.976467789746074, -17.343815343964536 ], [ 34.97662049944848, -17.343723377161893 ], [ 34.976778011372502, -17.343639211961133 ], [ 34.976939893800484, -17.343563079041154 ], [ 34.977105703038013, -17.343495187065461 ], [ 34.977274984629851, -17.343435722110325 ], [ 34.977447274605353, -17.343384847154883 ], [ 34.977622100750068, -17.343342701634597 ], [ 34.97779898389976, -17.34330940105912 ], [ 34.977977439253515, -17.343285036695779 ], [ 34.978156977702334, -17.343269675319497 ], [ 34.978337107169416, -17.343263359029866 ], [ 34.978517333958685, -17.343266105135793 ], [ 34.978697164107672, -17.343277906108096 ], [ 34.978720327296884, -17.343280601630497 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 42.0, "radius": 366, "pivot": "1.6", "pivot_quadrant": "1.6B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.977997053286906, -17.349855632180109 ], [ 34.978354668011164, -17.346604682049772 ], [ 34.981789841437561, -17.346964017488332 ], [ 34.981778585407078, -17.347053244850819 ], [ 34.981747570472095, -17.34722377374904 ], [ 34.981707304975053, -17.34739251006086 ], [ 34.981657899255794, -17.347558991288736 ], [ 34.981599488707879, -17.347722761114898 ], [ 34.981532233407833, -17.347883370652081 ], [ 34.981456317676674, -17.348040379673982 ], [ 34.981371949574829, -17.348193357821991 ], [ 34.981279360332159, -17.348341885784777 ], [ 34.981178803714307, -17.348485556447741 ], [ 34.981070555327335, -17.348623976009009 ], [ 34.980954911862447, -17.348756765058912 ], [ 34.980832190282847, -17.348883559620049 ], [ 34.980702726955109, -17.349004012144992 ], [ 34.980566876727238, -17.349117792469176 ], [ 34.980425011956086, -17.349224588715831 ], [ 34.98027752148672, -17.349324108151073 ], [ 34.980124809586627, -17.349416077986319 ], [ 34.979967294837536, -17.349500246126194 ], [ 34.979805408988021, -17.349576381859599 ], [ 34.979639595770003, -17.349644276492203 ], [ 34.979470309682334, -17.349703743918624 ], [ 34.979298014744906, -17.34975462113265 ], [ 34.979123183226534, -17.349796768674064 ], [ 34.978946294350337, -17.349830071011084 ], [ 34.978767832979948, -17.349854436857079 ], [ 34.978588288290318, -17.349869799420887 ], [ 34.978408152426617, -17.34987611658989 ], [ 34.978227919154975, -17.349873371045543 ], [ 34.97804808250892, -17.349861570310917 ], [ 34.977997053286906, -17.349855632180109 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 42.0, "radius": 366, "pivot": "1.6", "pivot_quadrant": "1.6A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.978354668011164, -17.346604682049772 ], [ 34.978720327296884, -17.343280601630497 ], [ 34.978876104741104, -17.343298729600111 ], [ 34.979053665421596, -17.343328518536502 ], [ 34.979229359493594, -17.343367191269554 ], [ 34.979402705416973, -17.343414641803008 ], [ 34.979573228086664, -17.343470740082537 ], [ 34.979740460134565, -17.3435353323522 ], [ 34.979903943210367, -17.343608241575833 ], [ 34.980063229237601, -17.343689267922098 ], [ 34.980217881641593, -17.343778189312268 ], [ 34.980367476545865, -17.343874762028761 ], [ 34.98051160393382, -17.343978721383035 ], [ 34.980649868772417, -17.34408978244101 ], [ 34.980781892094825, -17.344207640803891 ], [ 34.980907312039015, -17.344331973442401 ], [ 34.981025784839666, -17.344462439582017 ], [ 34.981136985770199, -17.344598681636882 ], [ 34.981240610033026, -17.344740326189832 ], [ 34.9813363735949, -17.344886985015684 ], [ 34.981424013965515, -17.345038256145251 ], [ 34.981503290917125, -17.345193724966947 ], [ 34.981573987143072, -17.345352965363091 ], [ 34.981635908853576, -17.345515540877745 ], [ 34.981688886307055, -17.345681005912901 ], [ 34.981732774275621, -17.345848906949652 ], [ 34.981767452443343, -17.346018783791244 ], [ 34.981792825736257, -17.34619017082429 ], [ 34.981808824583204, -17.346362598294956 ], [ 34.981815405106829, -17.346535593596407 ], [ 34.981812549244125, -17.346708682564159 ], [ 34.981800264796163, -17.3468813907757 ], [ 34.981789841437561, -17.346964017488332 ], [ 34.978354668011164, -17.346604682049772 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 204.0, "radius": 255, "pivot": "1.5", "pivot_quadrant": "1.5B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.981414279389675, -17.341507128753143 ], [ 34.981172574054533, -17.343691265597464 ], [ 34.981109475823907, -17.343683923580347 ], [ 34.980985765165556, -17.343663170309824 ], [ 34.980863355007244, -17.343636227310451 ], [ 34.980742580878861, -17.343603168432548 ], [ 34.980623773825592, -17.343564084290307 ], [ 34.980507259500335, -17.343519082013337 ], [ 34.980393357270984, -17.343468284952998 ], [ 34.980282379345013, -17.343411832344319 ], [ 34.980174629913549, -17.343349878924265 ], [ 34.980070404317615, -17.343282594507567 ], [ 34.979969988238452, -17.343210163521317 ], [ 34.979873656914428, -17.343132784499232 ], [ 34.979781674386686, -17.343050669537625 ], [ 34.9796942927752, -17.34296404371387 ], [ 34.979611751587868, -17.342873144469429 ], [ 34.979534277063955, -17.34277822095903 ], [ 34.979462081553976, -17.342679533367615 ], [ 34.979395362937744, -17.3425773521972 ], [ 34.979334304081959, -17.342471957525312 ], [ 34.979279072339089, -17.34236363823727 ], [ 34.979229819088637, -17.342252691234346 ], [ 34.979186679322453, -17.342139420619834 ], [ 34.979149771274642, -17.342024136865543 ], [ 34.979119196097734, -17.341907155960765 ], [ 34.979095037585431, -17.341788798546016 ], [ 34.979077361943133, -17.341669389034291 ], [ 34.979066217606537, -17.341549254721702 ], [ 34.97906163510909, -17.341428724890427 ], [ 34.979063626998311, -17.341308129906089 ], [ 34.979069772171925, -17.341221754105334 ], [ 34.981414279389675, -17.341507128753143 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 204.0, "radius": 255, "pivot": "1.5", "pivot_quadrant": "1.5D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.981414279389675, -17.341507128753143 ], [ 34.981679444479695, -17.339111001077271 ], [ 34.981686301740211, -17.339111450993876 ], [ 34.981810970678175, -17.339125957608928 ], [ 34.981934678272594, -17.339146710678925 ], [ 34.982057085462138, -17.339173653321986 ], [ 34.982177856749416, -17.339206711691663 ], [ 34.98229666112038, -17.339245795179348 ], [ 34.982413172951517, -17.339290796662603 ], [ 34.982527072902251, -17.33934159279875 ], [ 34.982638048790086, -17.339398044362888 ], [ 34.982745796446203, -17.339459996629525 ], [ 34.98285002054908, -17.339527279796517 ], [ 34.982950435433793, -17.339599709450528 ], [ 34.983046765875045, -17.339677087072367 ], [ 34.983138747841409, -17.33975920058111 ], [ 34.983226129219041, -17.339845824915287 ], [ 34.983308670502595, -17.339936722649764 ], [ 34.983386145451767, -17.340031644646341 ], [ 34.983458341711369, -17.340130330736663 ], [ 34.983525061393408, -17.340232510435182 ], [ 34.98358612161946, -17.340337903680478 ], [ 34.983641355022087, -17.340446221602868 ], [ 34.983690610203553, -17.340557167316049 ], [ 34.983733752150904, -17.340670436730836 ], [ 34.983770662606105, -17.340785719388574 ], [ 34.98380124039025, -17.340902699312007 ], [ 34.983825401681088, -17.341021055871334 ], [ 34.983843080242778, -17.341140464662963 ], [ 34.983854227607615, -17.341260598398659 ], [ 34.983858813209004, -17.341381127802574 ], [ 34.983856824465377, -17.341501722513755 ], [ 34.983848266814846, -17.341622051991578 ], [ 34.983833163700361, -17.341741786421814 ], [ 34.983822529204822, -17.341800262183327 ], [ 34.981414279389675, -17.341507128753143 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 204.0, "radius": 255, "pivot": "1.5", "pivot_quadrant": "1.5A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.981172574054533, -17.343691265597464 ], [ 34.981414279389675, -17.341507128753143 ], [ 34.983822529204822, -17.341800262183327 ], [ 34.983811556505685, -17.341860597620538 ], [ 34.98378350444203, -17.341978159933678 ], [ 34.983749084385991, -17.342094151129654 ], [ 34.983708390668845, -17.342208253282561 ], [ 34.983661534818218, -17.342320153643641 ], [ 34.983608645252517, -17.342429545498533 ], [ 34.983549866928996, -17.342536129007982 ], [ 34.983485360946574, -17.342639612029675 ], [ 34.983415304104362, -17.34273971091913 ], [ 34.983339888417177, -17.342836151307104 ], [ 34.983259320589269, -17.342928668851723 ], [ 34.983173821447792, -17.343017009963088 ], [ 34.983083625337699, -17.343100932498373 ], [ 34.982988979479238, -17.343180206425632 ], [ 34.982890143290554, -17.343254614454327 ], [ 34.982787387676503, -17.343323952631003 ], [ 34.982680994286177, -17.343388030898371 ], [ 34.982571254740826, -17.343446673616306 ], [ 34.982458469834533, -17.343499720043344 ], [ 34.982342948709736, -17.343547024777287 ], [ 34.982225008009713, -17.343588458153864 ], [ 34.982104971010692, -17.343623906602136 ], [ 34.981983166735645, -17.343653272955859 ], [ 34.981859929052334, -17.343676476719857 ], [ 34.981735595758096, -17.343693454290744 ], [ 34.981610507653819, -17.343704159131189 ], [ 34.981485007609791, -17.343708561897607 ], [ 34.981359439625614, -17.343706650520566 ], [ 34.981234147887363, -17.3436984302379 ], [ 34.981172574054533, -17.343691265597464 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 238.0, "radius": 275, "pivot": "1.4", "pivot_quadrant": "1.4A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.977605005473734, -17.338606017387828 ], [ 34.977665672603734, -17.33863431107558 ], [ 34.977763772866389, -17.338690719975755 ], [ 34.977876169269216, -17.338763283345308 ], [ 34.977984457548132, -17.338841396753352 ], [ 34.978088340898189, -17.338924846102827 ], [ 34.978187534586567, -17.339013402671572 ], [ 34.978281766732948, -17.339106823739105 ], [ 34.978370779054657, -17.339204853251911 ], [ 34.978454327574674, -17.339307222525107 ], [ 34.97853218329027, -17.339413650978859 ], [ 34.978604132800747, -17.339523846907355 ], [ 34.978669978892427, -17.33963750827823 ], [ 34.978729541079169, -17.339754323560388 ], [ 34.978782656097266, -17.339873972577784 ], [ 34.97882917835291, -17.339996127386925 ], [ 34.978868980321394, -17.34012045317569 ], [ 34.978901952896805, -17.340246609181008 ], [ 34.978928005691152, -17.340374249622688 ], [ 34.978947067282256, -17.340503024651259 ], [ 34.978959085409684, -17.340632581306743 ], [ 34.978964027118096, -17.340762564486102 ], [ 34.978961878847812, -17.340892617916531 ], [ 34.978952646472038, -17.341022385131897 ], [ 34.97893635528105, -17.34115151044988 ], [ 34.978926265695563, -17.341206981511462 ], [ 34.976297118077937, -17.340867839790402 ], [ 34.976670537115623, -17.338320549892174 ], [ 34.976755638684374, -17.338330454697513 ], [ 34.976889048044576, -17.338352838997491 ], [ 34.977004841715654, -17.33837832923189 ], [ 34.977605005473734, -17.338606017387828 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 238.0, "radius": 275, "pivot": "1.4", "pivot_quadrant": "1.4C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.976297118077937, -17.340867839790402 ], [ 34.975949718590073, -17.343237636498074 ], [ 34.97586557276648, -17.343223518187639 ], [ 34.975733562536121, -17.343194458466325 ], [ 34.975603316843497, -17.343158803210262 ], [ 34.975475192696571, -17.343116650150446 ], [ 34.975349541287549, -17.343068114828622 ], [ 34.97522670703011, -17.343013330280517 ], [ 34.975107026615298, -17.342952446671219 ], [ 34.974990828088544, -17.34288563088344 ], [ 34.974878429950408, -17.342813066060131 ], [ 34.974770140283518, -17.342734951102397 ], [ 34.974666255908012, -17.342651500124298 ], [ 34.974567061567939, -17.342562941865822 ], [ 34.974472829150777, -17.342469519065983 ], [ 34.974383816942158, -17.342371487797241 ], [ 34.974300268917865, -17.342269116763756 ], [ 34.974222414075207, -17.34216268656462 ], [ 34.974150465805295, -17.342052488924793 ], [ 34.974084621308229, -17.341938825895362 ], [ 34.974025061052657, -17.341822009025627 ], [ 34.973971948281175, -17.341702358509004 ], [ 34.973925428562943, -17.341580202305412 ], [ 34.973885629394871, -17.34145587524225 ], [ 34.973852659852184, -17.341329718096571 ], [ 34.973826610289663, -17.34120207666103 ], [ 34.973807552094073, -17.341073300796005 ], [ 34.973795537488641, -17.340943743470646 ], [ 34.973790599390107, -17.340813759795306 ], [ 34.973792751318612, -17.340683706048242 ], [ 34.973801987360879, -17.340553938699045 ], [ 34.973802974953465, -17.340546112708161 ], [ 34.976297118077937, -17.340867839790402 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 238.0, "radius": 275, "pivot": "1.4", "pivot_quadrant": "1.4D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.976670537115623, -17.338320549892174 ], [ 34.976297118077937, -17.340867839790402 ], [ 34.973802974953465, -17.340546112708161 ], [ 34.973818282186457, -17.340424813431532 ], [ 34.973841591117456, -17.34029668416888 ], [ 34.973871850251086, -17.340169902103536 ], [ 34.973908976634981, -17.340044814734618 ], [ 34.973952868494727, -17.33992176491547 ], [ 34.974003405512995, -17.339801089913962 ], [ 34.974060449159396, -17.339683120488104 ], [ 34.974123843070416, -17.339568179979455 ], [ 34.974193413478005, -17.339456583426976 ], [ 34.97426896968603, -17.339348636703559 ], [ 34.974350304593074, -17.339244635677673 ], [ 34.974437195260094, -17.339144865402556 ], [ 34.974529403521622, -17.339049599334913 ], [ 34.974626676638515, -17.338959098585459 ], [ 34.974728747990838, -17.338873611203347 ], [ 34.974835337808571, -17.338793371496333 ], [ 34.974946153938468, -17.338718599388653 ], [ 34.975060892644805, -17.338649499818292 ], [ 34.975179239441857, -17.338586262175358 ], [ 34.975300869955831, -17.338529059782996 ], [ 34.975425450813887, -17.338478049422477 ], [ 34.975552640557751, -17.338433370903498 ], [ 34.975682090579618, -17.338395146681059 ], [ 34.975813446077481, -17.338363481519838 ], [ 34.975946347027502, -17.33833846220719 ], [ 34.976080429170672, -17.338320157315209 ], [ 34.976215325011133, -17.338308617012903 ], [ 34.976350664823187, -17.338303872928698 ], [ 34.976486077664653, -17.338305938063733 ], [ 34.976621192393402, -17.338314806756351 ], [ 34.976670537115623, -17.338320549892174 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 22.0, "radius": 265, "pivot": "1.2", "pivot_quadrant": "1.2A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.979495810456342, -17.334203961691134 ], [ 34.97820349148671, -17.336307953800048 ], [ 34.976145471591806, -17.334907946244652 ], [ 34.976175428365991, -17.334865145367932 ], [ 34.976253802797373, -17.334764925673479 ], [ 34.976337530859709, -17.334668782842019 ], [ 34.976426383056278, -17.334576980388171 ], [ 34.976520115846917, -17.33448976992964 ], [ 34.976618472315508, -17.334407390497606 ], [ 34.976721182874279, -17.334330067881691 ], [ 34.976827966002574, -17.334258014011112 ], [ 34.976938529018604, -17.334191426373845 ], [ 34.977052568881554, -17.334130487475448 ], [ 34.977169773022176, -17.334075364338887 ], [ 34.977289820199417, -17.334026208046808 ], [ 34.977412381380873, -17.333983153327463 ], [ 34.977537120644556, -17.333946318185511 ], [ 34.977663696099462, -17.333915803578684 ], [ 34.977791760822647, -17.333891693141041 ], [ 34.977920963809922, -17.333874052953824 ], [ 34.978050950937828, -17.333862931364354 ], [ 34.978181365934098, -17.333858358853604 ], [ 34.978311851354057, -17.333860347952598 ], [ 34.978442049560201, -17.333868893208162 ], [ 34.978571603702264, -17.333883971197807 ], [ 34.978700158695197, -17.333905540594017 ], [ 34.978827362192298, -17.33393354227746 ], [ 34.978952865550774, -17.333967899499068 ], [ 34.97907632478725, -17.334008518090307 ], [ 34.979197401520416, -17.334055286721373 ], [ 34.979315763898441, -17.334108077206196 ], [ 34.979431087508353, -17.334166744853853 ], [ 34.979495810456342, -17.334203961691134 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 22.0, "radius": 265, "pivot": "1.2", "pivot_quadrant": "1.2C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.976973009965533, -17.338311269909727 ], [ 34.97820349148671, -17.336307953800048 ], [ 34.980211685376219, -17.337674066258426 ], [ 34.980160358782953, -17.337739701106912 ], [ 34.98007663167305, -17.33783584545019 ], [ 34.979987780081963, -17.337927649472633 ], [ 34.979894047543212, -17.338014861539353 ], [ 34.979795690970128, -17.338097242601521 ], [ 34.979692979951686, -17.338174566851677 ], [ 34.979586196013528, -17.338246622342712 ], [ 34.979475631846341, -17.33831321156887 ], [ 34.979361590503522, -17.338374152007198 ], [ 34.979244384570571, -17.338429276617834 ], [ 34.979124335308164, -17.338478434302029 ], [ 34.979001771771522, -17.338521490316253 ], [ 34.978877029908503, -17.33855832664165 ], [ 34.978750451638518, -17.338588842307534 ], [ 34.978622383915415, -17.338612953668228 ], [ 34.978493177776194, -17.338630594632406 ], [ 34.978363187378896, -17.338641716844212 ], [ 34.978232769031571, -17.338646289815852 ], [ 34.978102280215623, -17.338644301011275 ], [ 34.977972078605781, -17.338635755880404 ], [ 34.97784252108957, -17.338620677844375 ], [ 34.977713962789039, -17.338599108231218 ], [ 34.977586756087099, -17.338571106162615 ], [ 34.97746124966168, -17.338536748391885 ], [ 34.977445054809721, -17.33853142025189 ], [ 34.976973009965533, -17.338311269909727 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 22.0, "radius": 265, "pivot": "1.2", "pivot_quadrant": "1.2B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.97820349148671, -17.336307953800048 ], [ 34.979495810456342, -17.334203961691134 ], [ 34.979543056265214, -17.334231128865 ], [ 34.979651363278293, -17.334301052772663 ], [ 34.979755711692235, -17.334376324925834 ], [ 34.979855815500571, -17.334456739014655 ], [ 34.979951400329632, -17.334542074635905 ], [ 34.980042204190553, -17.334632097897025 ], [ 34.980127978197274, -17.334726562057128 ], [ 34.980208487248802, -17.334825208203203 ], [ 34.980283510673523, -17.334927765959726 ], [ 34.980352842834122, -17.33503395422969 ], [ 34.980416293691249, -17.335143481964927 ], [ 34.980473689324427, -17.335256048963895 ], [ 34.980524872408871, -17.335371346694291 ], [ 34.980569702646726, -17.335489059138776 ], [ 34.98060805715177, -17.335608863661058 ], [ 34.980639830786288, -17.33573043189012 ], [ 34.980664936449386, -17.335853430620244 ], [ 34.980683305315878, -17.335977522724271 ], [ 34.980694887025031, -17.336102368077537 ], [ 34.980699649818746, -17.336227624490192 ], [ 34.980697580628785, -17.336352948644983 ], [ 34.980688685112696, -17.336477997038344 ], [ 34.980672987638499, -17.336602426921839 ], [ 34.980650531218004, -17.336725897241585 ], [ 34.980621377389127, -17.336848069573168 ], [ 34.980585606047292, -17.336968609049123 ], [ 34.980543315226697, -17.337087185276864 ], [ 34.980494620831621, -17.337203473244294 ], [ 34.980439656318971, -17.337317154210655 ], [ 34.98037857233254, -17.337427916580229 ], [ 34.980311536290245, -17.337535456756427 ], [ 34.980238731925354, -17.337639479973969 ], [ 34.980211685376219, -17.337674066258426 ], [ 34.97820349148671, -17.336307953800048 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 15.0, "radius": 219, "pivot": "1.1", "pivot_quadrant": "1.1A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.974747055587912, -17.330561624074441 ], [ 34.975967002903133, -17.329006613978088 ], [ 34.97768378767087, -17.330124305102657 ], [ 34.977675645322599, -17.330135938962055 ], [ 34.977610877597876, -17.330218762285984 ], [ 34.977541685523548, -17.330298216410046 ], [ 34.97746825874755, -17.330374083551767 ], [ 34.97739079852591, -17.330446155760175 ], [ 34.97730951717098, -17.330514235485847 ], [ 34.977224637469618, -17.330578136122426 ], [ 34.977136392072467, -17.330637682518109 ], [ 34.977045022856281, -17.330692711455839 ], [ 34.976950780260992, -17.33074307210066 ], [ 34.976853922603134, -17.330788626413213 ], [ 34.976754715367839, -17.330829249528179 ], [ 34.9766534304811, -17.330864830096498 ], [ 34.976550345564355, -17.330895270590695 ], [ 34.976445743173485, -17.330920487572168 ], [ 34.976339910024251, -17.330940411919936 ], [ 34.976233136206396, -17.330954989020189 ], [ 34.976125714388374, -17.330964178915902 ], [ 34.97601793901508, -17.33096795641648 ], [ 34.975910105500709, -17.330966311166762 ], [ 34.975802509418969, -17.330959247675441 ], [ 34.975695445692772, -17.330946785302704 ], [ 34.975589207785838, -17.330928958207167 ], [ 34.975484086898128, -17.330905815252294 ], [ 34.975380371167688, -17.330877419872376 ], [ 34.975278344880749, -17.330843849898734 ], [ 34.975178287692358, -17.330805197346297 ], [ 34.975080473859883, -17.33076156816146 ], [ 34.97498517149112, -17.330713081931542 ], [ 34.974892641809419, -17.330659871557128 ], [ 34.974803138437572, -17.330602082887651 ], [ 34.974747055587912, -17.330561624074441 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 15.0, "radius": 219, "pivot": "1.1", "pivot_quadrant": "1.1C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.977225538507916, -17.327402417183986 ], [ 34.975967002903133, -17.329006613978088 ], [ 34.974274653035941, -17.327904830888109 ], [ 34.974317836853025, -17.327843131256433 ], [ 34.974382605457386, -17.327760308914549 ], [ 34.974451798181676, -17.327680855822567 ], [ 34.974525225370748, -17.327604989751688 ], [ 34.974602685764104, -17.327532918641111 ], [ 34.974683967047483, -17.327464840028238 ], [ 34.97476884643482, -17.327400940507246 ], [ 34.974857091278928, -17.327341395217715 ], [ 34.974948459709061, -17.327286367364568 ], [ 34.975042701293965, -17.327236007770892 ], [ 34.975139557728149, -17.327190454464535 ], [ 34.975238763539863, -17.327149832299764 ], [ 34.975340046818744, -17.32711425261525 ], [ 34.975443129960965, -17.327083812928787 ], [ 34.975547730430073, -17.327058596670124 ], [ 34.97565356153136, -17.32703867295232 ], [ 34.975760333197549, -17.327024096382285 ], [ 34.975867752783742, -17.32701490691122 ], [ 34.975975525869487, -17.327011129725086 ], [ 34.976083357065676, -17.327012775175607 ], [ 34.976190950823955, -17.327019838751866 ], [ 34.976298012246922, -17.327032301092764 ], [ 34.97640424789607, -17.327050128040007 ], [ 34.976509366596161, -17.327073270731798 ], [ 34.976613080233122, -17.327101665736684 ], [ 34.976715104543686, -17.327135235227491 ], [ 34.976815159894414, -17.327173887194547 ], [ 34.976912972048119, -17.327217515697914 ], [ 34.977008272915363, -17.327266001157675 ], [ 34.977100801289254, -17.327319210681736 ], [ 34.977190303561343, -17.32737699842998 ], [ 34.977225538507916, -17.327402417183986 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 15.0, "radius": 219, "pivot": "1.1", "pivot_quadrant": "1.1B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.975967002903133, -17.329006613978088 ], [ 34.974747055587912, -17.330561624074441 ], [ 34.974716906702625, -17.330539874321609 ], [ 34.974634182963371, -17.330473416372392 ], [ 34.974555193962502, -17.330402891200858 ], [ 34.974480156205075, -17.330328492116003 ], [ 34.974409275365083, -17.330250423045062 ], [ 34.974342745721671, -17.330168897974517 ], [ 34.974280749626672, -17.330084140363468 ], [ 34.974223457004811, -17.329996382531196 ], [ 34.974171024887951, -17.329905865020287 ], [ 34.974123596984739, -17.329812835937251 ], [ 34.974081303286702, -17.329717550272466 ], [ 34.974044259712088, -17.329620269201229 ], [ 34.974012567788179, -17.329521259367823 ], [ 34.973986314373022, -17.329420792154632 ], [ 34.973965571417502, -17.329319142938278 ], [ 34.973950395768235, -17.329216590334781 ], [ 34.973940829011752, -17.329113415435877 ], [ 34.973936897360709, -17.329009901038535 ], [ 34.973938611582099, -17.328906330869806 ], [ 34.973945966967818, -17.328802988809159 ], [ 34.973958943347753, -17.328700158110344 ], [ 34.973977505145072, -17.328598120625017 ], [ 34.974001601473894, -17.328497156030238 ], [ 34.974031166278891, -17.328397541061847 ], [ 34.974066118516369, -17.328299548756014 ], [ 34.974106362376588, -17.328203447700862 ], [ 34.974151787546347, -17.328109501300297 ], [ 34.97420226951153, -17.328017967052048 ], [ 34.974257669898414, -17.327929095841995 ], [ 34.974274653035941, -17.327904830888109 ], [ 34.975967002903133, -17.329006613978088 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 30.0, "radius": 309, "pivot": "1.3", "pivot_quadrant": "1.3C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.971195967655134, -17.332888509205493 ], [ 34.970773107481506, -17.335663616039604 ], [ 34.967900765229288, -17.335206638144747 ], [ 34.967920610457007, -17.335097567226367 ], [ 34.967954614815163, -17.334955110851492 ], [ 34.967996335195423, -17.334814558954029 ], [ 34.968045657228011, -17.33467629677391 ], [ 34.968102445708503, -17.334540703274193 ], [ 34.968166544968589, -17.334408150102437 ], [ 34.968237779302939, -17.334279000572078 ], [ 34.968315953450919, -17.334153608666739 ], [ 34.968400853131925, -17.334032318069912 ], [ 34.968492245632852, -17.333915461223164 ], [ 34.968589880446025, -17.333803358414983 ], [ 34.968693489955889, -17.333696316902909 ], [ 34.968802790172646, -17.333594630071527 ], [ 34.968917481510559, -17.333498576628386 ], [ 34.969037249609258, -17.333408419840225 ], [ 34.969161766195299, -17.333324406811389 ], [ 34.969290689981875, -17.333246767806713 ], [ 34.969423667604325, -17.333175715620431 ], [ 34.969560334588486, -17.333111444993076 ], [ 34.969700316349666, -17.333054132077738 ], [ 34.969843229219229, -17.333003933957372 ], [ 34.969988681496098, -17.332960988214293 ], [ 34.970136274520222, -17.332925412553223 ], [ 34.970285603765085, -17.33289730447866 ], [ 34.970436259946382, -17.332876741027736 ], [ 34.970587830143572, -17.332863778559105 ], [ 34.970739898931548, -17.332858452598554 ], [ 34.970892049519023, -17.332860777741558 ], [ 34.97104386489081, -17.332870747613462 ], [ 34.971194928950496, -17.332888334886835 ], [ 34.971195967655134, -17.332888509205493 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 30.0, "radius": 309, "pivot": "1.3", "pivot_quadrant": "1.3A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.970354223381719, -17.338412629071641 ], [ 34.970773107481506, -17.335663616039604 ], [ 34.973634084154476, -17.336118785717325 ], [ 34.973618904232666, -17.336202230245593 ], [ 34.973584904230833, -17.33634468714585 ], [ 34.973543188019221, -17.336485239791532 ], [ 34.97349386992196, -17.336623502934522 ], [ 34.973437085100322, -17.336759097601192 ], [ 34.973372989182529, -17.336891652131232 ], [ 34.973301757837334, -17.337020803196278 ], [ 34.973223586292583, -17.337146196795945 ], [ 34.973138688800368, -17.33726748922814 ], [ 34.973047298049813, -17.337384348031179 ], [ 34.972949664529423, -17.337496452895188 ], [ 34.97284605584057, -17.337603496540073 ], [ 34.972736755964092, -17.337705185557869 ], [ 34.972622064481968, -17.337801241217083 ], [ 34.972502295756165, -17.337891400226717 ], [ 34.972377778066971, -17.337975415458054 ], [ 34.9722488527133, -17.338053056622162 ], [ 34.972115873076987, -17.338124110901102 ], [ 34.97197920365425, -17.338188383531453 ], [ 34.97183921905652, -17.338245698338167 ], [ 34.97169630298346, -17.338295898217574 ], [ 34.971550847171287, -17.338338845568071 ], [ 34.971403250318779, -17.338374422667343 ], [ 34.971253916994385, -17.338402531995111 ], [ 34.971103256527137, -17.338423096500538 ], [ 34.970951681884493, -17.3384360598134 ], [ 34.970799608540283, -17.338441386398674 ], [ 34.970647453335715, -17.338439061654018 ], [ 34.970495633336562, -17.338429091949749 ], [ 34.970354223381719, -17.338412629071641 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 30.0, "radius": 309, "pivot": "1.3", "pivot_quadrant": "1.3D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.970773107481506, -17.335663616039604 ], [ 34.971195967655134, -17.332888509205493 ], [ 34.971344827660843, -17.33291349135645 ], [ 34.971493150178375, -17.332946148071397 ], [ 34.971639489979275, -17.332986215524052 ], [ 34.971783445973415, -17.333033583895354 ], [ 34.971924623603627, -17.333088123355868 ], [ 34.972062635926825, -17.333149684421517 ], [ 34.972197104674571, -17.333218098363261 ], [ 34.972327661289661, -17.333293177669553 ], [ 34.97245394793616, -17.333374716560179 ], [ 34.972575618480157, -17.333462491550247 ], [ 34.972692339438325, -17.333556262062647 ], [ 34.972803790891966, -17.333655771087365 ], [ 34.972909667363737, -17.333760745885836 ], [ 34.973009678655011, -17.333870898738422 ], [ 34.973103550641191, -17.33398592773289 ], [ 34.973191026023137, -17.334105517591908 ], [ 34.973271865032345, -17.334229340537018 ], [ 34.9733458460883, -17.33435705718701 ], [ 34.973412766405815, -17.334488317488017 ], [ 34.973472442550914, -17.334622761672907 ], [ 34.973524710943792, -17.334760021247295 ], [ 34.973569428307272, -17.334899719999441 ], [ 34.973606472059643, -17.335041475031371 ], [ 34.973635740650828, -17.335184897808336 ], [ 34.973657153840904, -17.335329595223612 ], [ 34.973670652920205, -17.335475170675963 ], [ 34.973676200870415, -17.335621225156661 ], [ 34.973673782466292, -17.335767358343112 ], [ 34.973663404317563, -17.335913169696045 ], [ 34.97364509485098, -17.336058259557369 ], [ 34.973634084154476, -17.336118785717325 ], [ 34.970773107481506, -17.335663616039604 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 15.0, "radius": 219, "pivot": "1.7", "pivot_quadrant": "1.7B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.96697037363257, -17.340380748223968 ], [ 34.968913119447087, -17.339561990788184 ], [ 34.968924732557923, -17.339588154703865 ], [ 34.968961776131572, -17.339685436701803 ], [ 34.96899346779216, -17.339784447337809 ], [ 34.969019720667752, -17.339884915233949 ], [ 34.969040462793117, -17.33998656501765 ], [ 34.969055637307129, -17.340089118076534 ], [ 34.969065202608647, -17.340192293321937 ], [ 34.969069132470679, -17.34029580795945 ], [ 34.969067416112331, -17.340399378263918 ], [ 34.969060058228507, -17.340502720357161 ], [ 34.969047078977077, -17.340605550986041 ], [ 34.969028513923831, -17.340707588298791 ], [ 34.969004413945001, -17.340808552617649 ], [ 34.968974845087928, -17.340908167205317 ], [ 34.968939888390231, -17.341006159023614 ], [ 34.968899639657678, -17.341102259481772 ], [ 34.968854209201659, -17.341196205172718 ], [ 34.968803721537007, -17.341287738595042 ], [ 34.968748315040735, -17.341376608858798 ], [ 34.968688141572834, -17.341462572373302 ], [ 34.968623366060072, -17.341545393514739 ], [ 34.968554166044022, -17.341624845272079 ], [ 34.96848073119444, -17.341700709869322 ], [ 34.968403262789458, -17.341772779362497 ], [ 34.968321973163881, -17.3418408562096 ], [ 34.968237085127249, -17.341904753812166 ], [ 34.968148831353027, -17.341964297026713 ], [ 34.968057453740961, -17.342019322644887 ], [ 34.967963202754007, -17.34206967984084 ], [ 34.967866336731689, -17.342115230584671 ], [ 34.967862993493888, -17.342116599326115 ], [ 34.96697037363257, -17.340380748223968 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 15.0, "radius": 219, "pivot": "1.7", "pivot_quadrant": "1.7D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.96697037363257, -17.340380748223968 ], [ 34.965141978743468, -17.34115131321493 ], [ 34.965135870092325, -17.341139330722289 ], [ 34.965093577571821, -17.341044043052051 ], [ 34.965056535608213, -17.340946760170706 ], [ 34.965024845724365, -17.340847748727509 ], [ 34.964998594772723, -17.340747280109223 ], [ 34.964977854697416, -17.340645629696343 ], [ 34.964962682337145, -17.340543076108169 ], [ 34.964953119269445, -17.340439900439126 ], [ 34.96494919169681, -17.340336385488293 ], [ 34.964950910375102, -17.340232814984212 ], [ 34.964958270583949, -17.340129472807298 ], [ 34.964971252140032, -17.340026642211601 ], [ 34.964989819452306, -17.339924605048481 ], [ 34.965013921619786, -17.339823640994112 ], [ 34.965043492571134, -17.339724026782864 ], [ 34.965078451245816, -17.339626035448813 ], [ 34.965118701816422, -17.339529935577406 ], [ 34.965164133951369, -17.339435990569296 ], [ 34.965214623117454, -17.339344457918411 ], [ 34.965270030921225, -17.339255588506234 ], [ 34.965330205488343, -17.339169625914124 ], [ 34.965394981880017, -17.339086805755809 ], [ 34.965464182545041, -17.33900735503153 ], [ 34.965537617806547, -17.338931491505967 ], [ 34.965615086381874, -17.338859423111348 ], [ 34.965696375934364, -17.338791347377654 ], [ 34.965781263655309, -17.338727450891149 ], [ 34.965869516874641, -17.338667908783069 ], [ 34.965960893698714, -17.338612884249663 ], [ 34.966039653327748, -17.338570804330793 ], [ 34.96697037363257, -17.340380748223968 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 15.0, "radius": 219, "pivot": "1.7", "pivot_quadrant": "1.7A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.968913119447087, -17.339561990788184 ], [ 34.96697037363257, -17.340380748223968 ], [ 34.966039653327748, -17.338570804330793 ], [ 34.966055143673252, -17.338562528104891 ], [ 34.966152008469777, -17.338516978367149 ], [ 34.96625122259362, -17.338476359880929 ], [ 34.966352514111676, -17.338440783974821 ], [ 34.966455605397492, -17.338410348156252 ], [ 34.966560213892357, -17.33838513584438 ], [ 34.966666052879539, -17.338365216141444 ], [ 34.966772832270152, -17.338350643643359 ], [ 34.96688025939816, -17.338341458290188 ], [ 34.966988039822454, -17.338337685256583 ], [ 34.967095878133762, -17.338339334882878 ], [ 34.967203478764311, -17.338346402646742 ], [ 34.967310546797805, -17.338358869175604 ], [ 34.967416788777662, -17.33837670029968 ], [ 34.967521913511277, -17.338399847145745 ], [ 34.967625632868057, -17.338428246270951 ], [ 34.967727662569054, -17.338461819836844 ], [ 34.967827722966078, -17.338500475822592 ], [ 34.967925539808057, -17.338544108277233 ], [ 34.968020844992765, -17.338592597610052 ], [ 34.968113377301442, -17.338645810918319 ], [ 34.968202883114863, -17.338703602351565 ], [ 34.968289117108299, -17.338765813511245 ], [ 34.968371842924007, -17.338832273884954 ], [ 34.968450833818949, -17.338902801313676 ], [ 34.968525873286232, -17.33897720249103 ], [ 34.968596755648612, -17.339055273493063 ], [ 34.968663286622174, -17.339136800337148 ], [ 34.968725283848819, -17.339221559568486 ], [ 34.968782577396205, -17.339309318872438 ], [ 34.968835010223451, -17.339399837711309 ], [ 34.968882438611672, -17.339492867983591 ], [ 34.968913119447087, -17.339561990788184 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 60.0, "radius": 437, "pivot": "1.8", "pivot_quadrant": "1.8C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.958846576270247, -17.339420347508153 ], [ 34.961161225337996, -17.342695153682683 ], [ 34.957665162047512, -17.344762020273741 ], [ 34.957619750775827, -17.344692455184319 ], [ 34.957515131525668, -17.344511824153546 ], [ 34.95742049925115, -17.344326182128594 ], [ 34.957336113312707, -17.344136037957821 ], [ 34.957262204982982, -17.343941912828704 ], [ 34.957198976813203, -17.343744338839166 ], [ 34.957146602078303, -17.343543857538954 ], [ 34.957105224302296, -17.34334101844518 ], [ 34.957074956865263, -17.343136377535984 ], [ 34.957055882692877, -17.342930495726488 ], [ 34.957048054029585, -17.342723937331343 ], [ 34.957051492295761, -17.342517268517859 ], [ 34.957066188029401, -17.342311055754124 ], [ 34.957092100912497, -17.342105864256347 ], [ 34.957129159881944, -17.341902256439582 ], [ 34.957177263324716, -17.341700790376251 ], [ 34.95723627935687, -17.341502018266478 ], [ 34.957306046185302, -17.341306484924623 ], [ 34.957386372551667, -17.341114726286037 ], [ 34.957477038256947, -17.34092726793822 ], [ 34.957577794765285, -17.340744623680305 ], [ 34.957688365885573, -17.340567294114859 ], [ 34.957808448528688, -17.340395765275964 ], [ 34.957937713538506, -17.340230507297168 ], [ 34.958075806594252, -17.340071973122999 ], [ 34.958222349181902, -17.339920597267728 ], [ 34.958376939631663, -17.339776794624512 ], [ 34.95853915421911, -17.339640959328449 ], [ 34.958708548326541, -17.339513463676425 ], [ 34.958846576270247, -17.339420347508153 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 60.0, "radius": 437, "pivot": "1.8", "pivot_quadrant": "1.8A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.963463180156758, -17.345951999810669 ], [ 34.961161225337996, -17.342695153682683 ], [ 34.964664424622271, -17.340624068304397 ], [ 34.964697486842347, -17.340674713360091 ], [ 34.964802110127501, -17.34085534020641 ], [ 34.964896747286502, -17.341040978226815 ], [ 34.964981138905401, -17.341231118616804 ], [ 34.965055053649337, -17.34142524023035 ], [ 34.965118288896797, -17.34162281100804 ], [ 34.965170671295283, -17.3418232894353 ], [ 34.965212057236833, -17.342026126026514 ], [ 34.965242333251901, -17.342230764830955 ], [ 34.96526141632085, -17.342436644956557 ], [ 34.96526925410172, -17.342643202107119 ], [ 34.965265825074276, -17.342849870128966 ], [ 34.965251138599292, -17.34305608256269 ], [ 34.965225234893339, -17.343261274195687 ], [ 34.965188184918972, -17.343464882611432 ], [ 34.965140090190644, -17.343666349730935 ], [ 34.965081082496845, -17.343865123342518 ], [ 34.965011323539322, -17.344060658615334 ], [ 34.964931004490182, -17.344252419592877 ], [ 34.964840345468289, -17.344439880662051 ], [ 34.964739594936226, -17.344622527993895 ], [ 34.96462902901969, -17.344799860952165 ], [ 34.964508950750719, -17.344971393465599 ], [ 34.964379689237582, -17.345136655360388 ], [ 34.964241598762683, -17.345295193649122 ], [ 34.964095057811839, -17.345446573772414 ], [ 34.963940468036853, -17.34559038079038 ], [ 34.963778253154771, -17.345726220519964 ], [ 34.963608857786525, -17.345853720615708 ], [ 34.963463180156758, -17.345951999810669 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 60.0, "radius": 437, "pivot": "1.8", "pivot_quadrant": "1.8D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.961161225337996, -17.342695153682683 ], [ 34.958846576270247, -17.339420347508153 ], [ 34.958884657661677, -17.339394657106936 ], [ 34.959066999530179, -17.339284865242441 ], [ 34.959255074158534, -17.339184388997051 ], [ 34.95944836606386, -17.339093503752036 ], [ 34.959646345466524, -17.339012458601051 ], [ 34.95984846974207, -17.33894147566772 ], [ 34.96005418490828, -17.338880749496898 ], [ 34.960262927143212, -17.338830446521602 ], [ 34.960474124330389, -17.338790704607014 ], [ 34.960687197626548, -17.338761632672661 ], [ 34.960901563047791, -17.338743310394069 ], [ 34.961116633069963, -17.338735787984415 ], [ 34.961331818238484, -17.338739086056979 ], [ 34.961546528783735, -17.338753195568739 ], [ 34.961760176237021, -17.338778077845117 ], [ 34.961972175043229, -17.3388136646861 ], [ 34.962181944165295, -17.338859858553089 ], [ 34.962388908676445, -17.338916532836219 ], [ 34.96259250133555, -17.338983532201397 ], [ 34.962792164141611, -17.33906067301595 ], [ 34.962987349862807, -17.339147743851825 ], [ 34.963177523536125, -17.33924450606515 ], [ 34.963362163933262, -17.33935069444999 ], [ 34.963540764989084, -17.339466017965307 ], [ 34.96371283718851, -17.339590160532456 ], [ 34.963877908907953, -17.339722781901354 ], [ 34.964035527707921, -17.339863518582955 ], [ 34.964185261572979, -17.340011984845287 ], [ 34.964326700095761, -17.340167773770666 ], [ 34.964459455601954, -17.340330458370634 ], [ 34.964583164212755, -17.340499592756277 ], [ 34.964664424622271, -17.340624068304397 ], [ 34.961161225337996, -17.342695153682683 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 30.0, "radius": 309, "pivot": "1.9", "pivot_quadrant": "1.9A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.962034302490196, -17.337088012040809 ], [ 34.964728870983024, -17.336051561916904 ], [ 34.966003469280459, -17.338512454706869 ], [ 34.965924344913347, -17.338549662135424 ], [ 34.965784357706042, -17.338606972920125 ], [ 34.965641439239995, -17.338657168665854 ], [ 34.965495981257945, -17.338700111782341 ], [ 34.965348382464626, -17.338735684558884 ], [ 34.965199047433821, -17.338763789487064 ], [ 34.965048385499237, -17.33878434952808 ], [ 34.96489680963235, -17.338797308323986 ], [ 34.964744735310369, -17.338802630352134 ], [ 34.964592579377161, -17.338800301022673 ], [ 34.964440758900508, -17.338790326718492 ], [ 34.964289690028806, -17.338772734777791 ], [ 34.96413978685019, -17.338747573419131 ], [ 34.963991460257319, -17.338714911609266 ], [ 34.963845116820963, -17.338674838874116 ], [ 34.963701157675445, -17.338627465053349 ], [ 34.96355997741891, -17.338572919999283 ], [ 34.963421963031685, -17.338511353220905 ], [ 34.963287492815319, -17.338442933474067 ], [ 34.96315693535562, -17.338367848298851 ], [ 34.963030648512166, -17.338286303505473 ], [ 34.96290897843744, -17.338198522610085 ], [ 34.962792258627822, -17.338104746222072 ], [ 34.962680809009477, -17.338005231384418 ], [ 34.962574935061454, -17.337900250869161 ], [ 34.962474926978267, -17.337790092429572 ], [ 34.962381058874492, -17.337675058011381 ], [ 34.962293588033532, -17.337555462925053 ], [ 34.962212754202319, -17.337431634981467 ], [ 34.962138778934303, -17.337303913593271 ], [ 34.962071864982285, -17.337172648844497 ], [ 34.962034302490196, -17.337088012040809 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 30.0, "radius": 309, "pivot": "1.9", "pivot_quadrant": "1.9C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.967428748672695, -17.335013069641263 ], [ 34.964728870983024, -17.336051561916904 ], [ 34.963415169170496, -17.333515171177073 ], [ 34.963505628599926, -17.333472634116486 ], [ 34.963645612969273, -17.33341532522212 ], [ 34.963788528230573, -17.33336513123426 ], [ 34.96393398267621, -17.33332218972393 ], [ 34.964081577640179, -17.333286618384236 ], [ 34.964230908590665, -17.333258514707836 ], [ 34.964381566238657, -17.333237955719817 ], [ 34.964533137659622, -17.333224997766614 ], [ 34.964685207425113, -17.333219676361633 ], [ 34.964837358741143, -17.333222006087869 ], [ 34.964989174590535, -17.333231980558111 ], [ 34.96514023887557, -17.333249572432333 ], [ 34.965290137558391, -17.333274733492722 ], [ 34.965438459795585, -17.333307394775765 ], [ 34.965584799064111, -17.333347466761317 ], [ 34.965728754275318, -17.333394839617938 ], [ 34.965869930874121, -17.333449383503872 ], [ 34.966007941920303, -17.333510948922914 ], [ 34.966142409148922, -17.333579367134121 ], [ 34.96627296400689, -17.333654450614219 ], [ 34.966399248663151, -17.333735993571572 ], [ 34.966520916989182, -17.333823772510151 ], [ 34.966637635507752, -17.333917546842027 ], [ 34.966749084306826, -17.334017059546696 ], [ 34.966854957916375, -17.334122037875517 ], [ 34.966954966145565, -17.334232194099176 ], [ 34.967048834878206, -17.334347226296227 ], [ 34.967136306824045, -17.334466819180523 ], [ 34.967217142224001, -17.334590644965317 ], [ 34.967291119507479, -17.334718364261622 ], [ 34.967358035899565, -17.334849627008314 ], [ 34.967417707977077, -17.334984073431553 ], [ 34.967428748672695, -17.335013069641263 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 30.0, "radius": 309, "pivot": "1.9", "pivot_quadrant": "1.9B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.964728870983024, -17.336051561916904 ], [ 34.962034302490196, -17.337088012040809 ], [ 34.962012195742716, -17.337038200530916 ], [ 34.961959934753182, -17.336900937173795 ], [ 34.961915225244269, -17.33676123500965 ], [ 34.961878189747068, -17.336619476959022 ], [ 34.961848929757601, -17.33647605157676 ], [ 34.961827525458673, -17.336331351987006 ], [ 34.96181403550041, -17.336185774805603 ], [ 34.961808496839552, -17.336039719052945 ], [ 34.961810924638471, -17.335893585060266 ], [ 34.961821312223798, -17.33574777337228 ], [ 34.961839631104837, -17.335602683649384 ], [ 34.961865831052002, -17.335458713572155 ], [ 34.961899840234594, -17.335316257751341 ], [ 34.961941565417888, -17.335175706646258 ], [ 34.961990892218978, -17.335037445494642 ], [ 34.962047685420352, -17.33490185325676 ], [ 34.962111789340781, -17.334769301576685 ], [ 34.962183028262146, -17.334640153763782 ], [ 34.962261206911265, -17.334514763796925 ], [ 34.962346110995185, -17.334393475354325 ], [ 34.962437507788763, -17.334276620871645 ], [ 34.962535146772538, -17.334164520630836 ], [ 34.962638760319571, -17.334057481882457 ], [ 34.962748064428943, -17.333955798003494 ], [ 34.962862759504311, -17.333859747693428 ], [ 34.962982531175044, -17.333769594210374 ], [ 34.96310705115792, -17.333685584649643 ], [ 34.963235978156838, -17.33360794926655 ], [ 34.963368958798306, -17.333536900845434 ], [ 34.963415169170496, -17.333515171177073 ], [ 34.964728870983024, -17.336051561916904 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 341.0, "radius": 329, "pivot": "1.10", "pivot_quadrant": "1.10A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.958739701646998, -17.339232847473824 ], [ 34.957010326871092, -17.336809457524954 ], [ 34.959540353269119, -17.335238722501 ], [ 34.959589253839567, -17.335313636053893 ], [ 34.959668014263052, -17.335449625557878 ], [ 34.959739256571318, -17.335589387587159 ], [ 34.959802785482793, -17.335732539073017 ], [ 34.959858426855881, -17.335878687655981 ], [ 34.959906028166579, -17.336027432761135 ], [ 34.959945458926505, -17.336178366695954 ], [ 34.959976611040844, -17.336331075767689 ], [ 34.959999399104831, -17.336485141417217 ], [ 34.960013760638006, -17.336640141366214 ], [ 34.960019656255689, -17.336795650774501 ], [ 34.960017069777173, -17.336951243404492 ], [ 34.960006008270348, -17.337106492789449 ], [ 34.959986502032443, -17.337260973402362 ], [ 34.959958604507399, -17.337414261822307 ], [ 34.959922392139397, -17.337565937894968 ], [ 34.959877964163766, -17.337715585884322 ], [ 34.959825442335102, -17.337862795612132 ], [ 34.959764970593746, -17.338007163582269 ], [ 34.959696714671516, -17.338148294086736 ], [ 34.959620861637603, -17.338285800290265 ], [ 34.959537619385998, -17.33841930529077 ], [ 34.959447216065776, -17.338548443152437 ], [ 34.959349899456001, -17.33867285990879 ], [ 34.959245936286599, -17.338792214533026 ], [ 34.959135611507378, -17.338906179872861 ], [ 34.959019227507071, -17.339014443547278 ], [ 34.958897103284585, -17.339116708802869 ], [ 34.9587695735746, -17.339212695327376 ], [ 34.958739701646998, -17.339232847473824 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 341.0, "radius": 329, "pivot": "1.10", "pivot_quadrant": "1.10C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.955242480798987, -17.334332157368866 ], [ 34.957010326871092, -17.336809457524954 ], [ 34.954343541002665, -17.33846509794364 ], [ 34.954260784434837, -17.338338313495246 ], [ 34.95418202629854, -17.338202321620905 ], [ 34.954110786758697, -17.338062557323308 ], [ 34.954047261066549, -17.337919403696002 ], [ 34.953991623328406, -17.337773253121934 ], [ 34.953944026028459, -17.33762450619783 ], [ 34.95390459961115, -17.337473570636146 ], [ 34.953873452123695, -17.337320860147432 ], [ 34.95385066892019, -17.337166793306359 ], [ 34.953836312427846, -17.337011792404329 ], [ 34.953830421976093, -17.336856282291919 ], [ 34.953833013689021, -17.336700689214442 ], [ 34.953844080441442, -17.336545439643551 ], [ 34.953863591878616, -17.336390959108272 ], [ 34.953891494499679, -17.336237671028709 ], [ 34.953927711804546, -17.336085995555422 ], [ 34.953972144503872, -17.335936348417885 ], [ 34.954024670791277, -17.335789139784975 ], [ 34.954085146677556, -17.33564477314086 ], [ 34.954153406385494, -17.335503644178985 ], [ 34.954229262804425, -17.335366139717731 ], [ 34.954312508003291, -17.33523263664009 ], [ 34.954402913800664, -17.335103500860804 ], [ 34.954500232390394, -17.334979086323543 ], [ 34.954604197020849, -17.334859734030776 ], [ 34.954714522726206, -17.334745771109269 ], [ 34.954830907107592, -17.334637509913541 ], [ 34.954953031161914, -17.334535247169818 ], [ 34.95508056015634, -17.334439263162871 ], [ 34.955213144545709, -17.334349820967844 ], [ 34.955242480798987, -17.334332157368866 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 341.0, "radius": 329, "pivot": "1.10", "pivot_quadrant": "1.10B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.957010326871092, -17.336809457524954 ], [ 34.958739701646998, -17.339232847473824 ], [ 34.958636987930127, -17.339302140018049 ], [ 34.95849970976434, -17.339384797702966 ], [ 34.9583581153545, -17.339460441813092 ], [ 34.958212592810412, -17.339528865003448 ], [ 34.958063541010617, -17.33958987972149 ], [ 34.957911368508981, -17.339643318721347 ], [ 34.957756492414681, -17.339689035522227 ], [ 34.957599337248816, -17.339726904810092 ], [ 34.957440333780596, -17.339756822781162 ], [ 34.957279917846499, -17.339778707426536 ], [ 34.957118529155416, -17.339792498757056 ], [ 34.956956610083246, -17.339798158967696 ], [ 34.956794604460114, -17.339795672541321 ], [ 34.956632956353708, -17.339785046291222 ], [ 34.956472108851798, -17.339766309342444 ], [ 34.95631250284756, -17.339739513051995 ], [ 34.956154575830887, -17.339704730868029 ], [ 34.95599876068907, -17.339662058128571 ], [ 34.955845484519955, -17.339611611800109 ], [ 34.955695167461201, -17.33955353015708 ], [ 34.955548221538436, -17.339487972402619 ], [ 34.955405049535798, -17.339415118232349 ], [ 34.955266043891676, -17.339335167341641 ], [ 34.955131585622986, -17.339248338878221 ], [ 34.955002043280672, -17.339154870841433 ], [ 34.954877771939422, -17.339055019429797 ], [ 34.954759112224359, -17.338949058338667 ], [ 34.954646389377288, -17.338837278009954 ], [ 34.95453991236527, -17.338719984835976 ], [ 34.954439973033701, -17.338597500319473 ], [ 34.954346845306404, -17.338470160192326 ], [ 34.954343541002665, -17.33846509794364 ], [ 34.957010326871092, -17.336809457524954 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 544.0, "radius": 416, "pivot": "1.11", "pivot_quadrant": "1.11A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.959791281109077, -17.327010987988146 ], [ 34.960630932270384, -17.330690185640638 ], [ 34.956779145904193, -17.33137872104356 ], [ 34.956764856793804, -17.331308666394371 ], [ 34.956736047353225, -17.331113859021773 ], [ 34.95671789260097, -17.330917870461413 ], [ 34.956710442264828, -17.330721237910581 ], [ 34.956713716731777, -17.330524500330025 ], [ 34.956727706992346, -17.330328196966747 ], [ 34.956752374665776, -17.330132865875832 ], [ 34.956787652105561, -17.329939042445719 ], [ 34.956833442585214, -17.329747257930709 ], [ 34.956889620563857, -17.329558037994907 ], [ 34.956956032030497, -17.329371901271418 ], [ 34.957032494926693, -17.329189357940876 ], [ 34.957118799645741, -17.329010908333149 ], [ 34.957214709607541, -17.328837041556099 ], [ 34.957319961907359, -17.328668234155014 ], [ 34.957434268036607, -17.328504948806675 ], [ 34.957557314673871, -17.328347633051155 ], [ 34.957688764543875, -17.328196718065481 ], [ 34.957828257342058, -17.328052617481823 ], [ 34.957975410722298, -17.327915726254009 ], [ 34.958129821344905, -17.327786419575087 ], [ 34.958291065982159, -17.327665051849202 ], [ 34.958458702678442, -17.327551955720331 ], [ 34.958632271961456, -17.327447441160722 ], [ 34.958811298101537, -17.327351794621475 ], [ 34.958995290415487, -17.32726527824753 ], [ 34.959183744611337, -17.327188129159367 ], [ 34.959376144170342, -17.327120558803227 ], [ 34.959571961762535, -17.327062752371688 ], [ 34.959770660691824, -17.327014868296196 ], [ 34.959791281109077, -17.327010987988146 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 544.0, "radius": 416, "pivot": "1.11", "pivot_quadrant": "1.11B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.960630932270384, -17.330690185640638 ], [ 34.959791281109077, -17.327010987988146 ], [ 34.959971696366765, -17.326977037813023 ], [ 34.960174517792879, -17.326949364603571 ], [ 34.960378569082671, -17.326931924510365 ], [ 34.960583290978782, -17.32692476532921 ], [ 34.960788122386646, -17.326927906678304 ], [ 34.960992501911946, -17.326941339944465 ], [ 34.961195869399035, -17.326965028306834 ], [ 34.96139766746591, -17.326998906837758 ], [ 34.961597343031521, -17.327042882680757 ], [ 34.96179434883144, -17.327096835305003 ], [ 34.96198814491747, -17.327160616835705 ], [ 34.962178200137267, -17.327234052459289 ], [ 34.962363993589896, -17.327316940902499 ], [ 34.962545016053291, -17.327409054984003 ], [ 34.962720771379686, -17.327510142236925 ], [ 34.962890777855286, -17.327619925600736 ], [ 34.963054569520445, -17.327738104180536 ], [ 34.963211697446603, -17.327864354071615 ], [ 34.963361730966632, -17.327998329247073 ], [ 34.96350425885521, -17.328139662506167 ], [ 34.963638890455776, -17.328287966480499 ], [ 34.963765256751422, -17.328442834695693 ], [ 34.963883011376232, -17.328603842685226 ], [ 34.963991831564719, -17.328770549153813 ], [ 34.96409141903667, -17.328942497186652 ], [ 34.964181500814739, -17.329119215501724 ], [ 34.964261829972877, -17.329300219741285 ], [ 34.964332186313328, -17.329485013799381 ], [ 34.964392376970423, -17.329673091181412 ], [ 34.964442236939426, -17.329863936392307 ], [ 34.964470767983819, -17.3300037865056 ], [ 34.960630932270384, -17.330690185640638 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 544.0, "radius": 416, "pivot": "1.11", "pivot_quadrant": "1.11C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.961187884958441, -17.334400587778653 ], [ 34.960619385935466, -17.330692249633707 ], [ 34.964470767983819, -17.3300037865056 ], [ 34.964481629529139, -17.330057026349291 ], [ 34.964510446736824, -17.330251831815545 ], [ 34.964528609544658, -17.330447818850658 ], [ 34.964536068136539, -17.330644450274068 ], [ 34.964532802035059, -17.330841187137342 ], [ 34.964518820158055, -17.331037490201368 ], [ 34.964494160794402, -17.331232821414325 ], [ 34.964458891499589, -17.331426645386436 ], [ 34.964413108910819, -17.331618430857471 ], [ 34.964356938482574, -17.331807652152843 ], [ 34.964290534143089, -17.331993790624551 ], [ 34.964214077872739, -17.332176336072834 ], [ 34.964127779205612, -17.332354788144567 ], [ 34.964031874655497, -17.332528657704952 ], [ 34.963926627067856, -17.332697468178146 ], [ 34.963812324899642, -17.332860756853766 ], [ 34.963689281428891, -17.333018076155238 ], [ 34.963557833896161, -17.33316899486671 ], [ 34.963418342580404, -17.333313099315198 ], [ 34.963271189811508, -17.333449994504512 ], [ 34.96311677892249, -17.333579305198217 ], [ 34.962955533143941, -17.333700676948169 ], [ 34.962787894444006, -17.333813777066307 ], [ 34.962614322316931, -17.333918295536666 ], [ 34.962435292523566, -17.334013945865316 ], [ 34.962251295787105, -17.334100465865792 ], [ 34.962062836447977, -17.334177618377865 ], [ 34.961870431081294, -17.334245191917802 ], [ 34.961674607080617, -17.334303001258153 ], [ 34.961475901212289, -17.334350887935564 ], [ 34.961274858143774, -17.334388720685283 ], [ 34.961187884958441, -17.334400587778653 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 254.0, "radius": 284, "pivot": "1.14", "pivot_quadrant": "1.14C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.96199524794266, -17.324405539234302 ], [ 34.964747977596112, -17.324162087220788 ], [ 34.964754107256297, -17.324228233923105 ], [ 34.964759198639079, -17.324362472761511 ], [ 34.964756968599289, -17.324496783565166 ], [ 34.964747423233277, -17.324630798198889 ], [ 34.964730588688205, -17.324764149338428 ], [ 34.964706511090462, -17.324896471477366 ], [ 34.964675256419525, -17.325027401928896 ], [ 34.964636910327144, -17.325156581819918 ], [ 34.96459157790283, -17.325283657074714 ], [ 34.964539383385976, -17.325408279385538 ], [ 34.964480469825446, -17.325530107167204 ], [ 34.964414998687616, -17.325648806493543 ], [ 34.964343149413992, -17.32576405201263 ], [ 34.964265118929369, -17.325875527838612 ], [ 34.964181121102321, -17.325982928417645 ], [ 34.964091386158998, -17.326085959365418 ], [ 34.963996160052147, -17.326184338274128 ], [ 34.963895703787074, -17.326277795486632 ], [ 34.963790292706257, -17.326366074835622 ], [ 34.96368021573462, -17.326448934345862 ], [ 34.963565774587678, -17.326526146897482 ], [ 34.9634472829445, -17.32659750084861 ], [ 34.963325065587895, -17.326662800615537 ], [ 34.963199457514115, -17.326721867208889 ], [ 34.963070803014624, -17.32677453872428 ], [ 34.962939454732314, -17.326820670786223 ], [ 34.962917097922038, -17.326827271055144 ], [ 34.96199524794266, -17.324405539234302 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 254.0, "radius": 284, "pivot": "1.14", "pivot_quadrant": "1.14A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.96199524794266, -17.324405539234302 ], [ 34.959429692942393, -17.324632437480492 ], [ 34.959421977630143, -17.324549153958536 ], [ 34.959416890093451, -17.32441491459441 ], [ 34.959419124030532, -17.324280603456128 ], [ 34.959428673302277, -17.324146588682531 ], [ 34.959445511718769, -17.324013237599395 ], [ 34.959469593111187, -17.323880915712522 ], [ 34.9595008514585, -17.323749985705984 ], [ 34.959539201068687, -17.323620806447984 ], [ 34.959584536813644, -17.323493732007297 ], [ 34.959636734417636, -17.323369110682769 ], [ 34.959695650797968, -17.323247284048762 ], [ 34.95976112445738, -17.323128586018875 ], [ 34.95983297592673, -17.323013341930839 ], [ 34.959911008257158, -17.322901867654821 ], [ 34.959995007559861, -17.322794468727679 ], [ 34.960084743592546, -17.322691439515644 ], [ 34.96017997039052, -17.322593062407474 ], [ 34.960280426940905, -17.322499607040605 ], [ 34.960385837898102, -17.322411329562119 ], [ 34.960495914338523, -17.322328471926756 ], [ 34.960610354552486, -17.322251261233856 ], [ 34.960728844871134, -17.322179909104896 ], [ 34.960851060526181, -17.322114611103654 ], [ 34.960976666540034, -17.322055546200151 ], [ 34.96108398180769, -17.322011611539249 ], [ 34.96199524794266, -17.324405539234302 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 254.0, "radius": 284, "pivot": "1.14", "pivot_quadrant": "1.14B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.964747977596112, -17.324162087220788 ], [ 34.96199524794266, -17.324405539234302 ], [ 34.96108398180769, -17.322011611539249 ], [ 34.961105318643774, -17.322002876280248 ], [ 34.96123666422077, -17.321956745701957 ], [ 34.961370343273025, -17.321917280899935 ], [ 34.961505989407819, -17.321884590038856 ], [ 34.961643230841815, -17.321858762717138 ], [ 34.961781691419915, -17.321839869721348 ], [ 34.961920991646146, -17.321827962832202 ], [ 34.962060749723705, -17.32182307468274 ], [ 34.962200582601191, -17.321825218668891 ], [ 34.96234010702242, -17.321834388912762 ], [ 34.962478940576688, -17.321850560278769 ], [ 34.962616702746779, -17.321873688442555 ], [ 34.962753015951741, -17.321903710012467 ], [ 34.962887506581652, -17.321940542703295 ], [ 34.963019806021485, -17.321984085561798 ], [ 34.963149551661324, -17.32203421924336 ], [ 34.963276387890048, -17.322090806339091 ], [ 34.963399967069982, -17.322153691752426 ], [ 34.963519950489498, -17.322222703124122 ], [ 34.963636009291434, -17.32229765130468 ], [ 34.963747825374263, -17.322378330872727 ], [ 34.963855092263934, -17.322464520697949 ], [ 34.963957515953815, -17.322555984547151 ], [ 34.964054815710554, -17.322652471731679 ], [ 34.964146724843467, -17.322753717794438 ], [ 34.96423299143548, -17.322859445234723 ], [ 34.964313379033676, -17.322969364268623 ], [ 34.96438766729743, -17.323083173623363 ], [ 34.964455652602332, -17.323200561362906 ], [ 34.964517148598397, -17.323321205742843 ], [ 34.964571986720919, -17.323444776092288 ], [ 34.964620016652553, -17.323570933720035 ], [ 34.964661106735534, -17.323699332842892 ], [ 34.964695144332502, -17.323829621533367 ], [ 34.96472203613552, -17.323961442684205 ], [ 34.964741708421862, -17.324094434987114 ], [ 34.964747977596112, -17.324162087220788 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 629.0, "radius": 447, "pivot": "1.13", "pivot_quadrant": "1.13C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.954371207002062, -17.320983642849392 ], [ 34.954988844373986, -17.325074100205931 ], [ 34.950800585931511, -17.325458685865403 ], [ 34.950798085682457, -17.325441774613314 ], [ 34.95077858621412, -17.32523117967385 ], [ 34.950770588566108, -17.325019893135909 ], [ 34.950774114620295, -17.324808494126536 ], [ 34.9507891546723, -17.324597562079067 ], [ 34.950815667458698, -17.324387675145019 ], [ 34.950853580270376, -17.324179408609258 ], [ 34.950902789152352, -17.323973333313319 ], [ 34.950963159189094, -17.323770014090702 ], [ 34.951034524874757, -17.323570008218802 ], [ 34.951116690567204, -17.323373863891501 ], [ 34.951209431024573, -17.323182118716737 ], [ 34.95131249202305, -17.322995298242994 ], [ 34.951425591053983, -17.322813914518999 ], [ 34.951548418098469, -17.322638464690389 ], [ 34.951680636477363, -17.322469429637149 ], [ 34.951821883774279, -17.322307272655788 ], [ 34.951971772829168, -17.322152438189679 ], [ 34.952129892799526, -17.322005350611001 ], [ 34.952295810286643, -17.321866413057819 ], [ 34.952469070523492, -17.321736006329285 ], [ 34.952649198621224, -17.321614487842119 ], [ 34.952835700870786, -17.321502190651106 ], [ 34.95302806609596, -17.321399422536551 ], [ 34.953225767054377, -17.32130646516076 ], [ 34.953428261882415, -17.321223573296251 ], [ 34.953634995580217, -17.321150974127637 ], [ 34.953845401532618, -17.321088866629136 ], [ 34.95405890306192, -17.321037421019309 ], [ 34.954274915008149, -17.320996778294667 ], [ 34.954371207002062, -17.320983642849392 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 629.0, "radius": 447, "pivot": "1.13", "pivot_quadrant": "1.13A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.955577723835631, -17.328974101137693 ], [ 34.954988844373986, -17.325074100205931 ], [ 34.959167806457437, -17.324690368182022 ], [ 34.959171141296942, -17.324726367099057 ], [ 34.959179148473709, -17.324937652338512 ], [ 34.959175632074597, -17.325149050522835 ], [ 34.959160601698166, -17.325359982227685 ], [ 34.95913409850187, -17.32556986930533 ], [ 34.959096195089728, -17.325778136469321 ], [ 34.95904699531377, -17.325984212871251 ], [ 34.958986633989731, -17.3261875336655 ], [ 34.958915276527989, -17.326387541557416 ], [ 34.958833118480612, -17.326583688331024 ], [ 34.958740385005683, -17.326775436351578 ], [ 34.958637330250511, -17.326962260039437 ], [ 34.958524236655357, -17.327143647310606 ], [ 34.958401414179555, -17.327319100980638 ], [ 34.958269199452211, -17.327488140127418 ], [ 34.958127954849679, -17.327650301409609 ], [ 34.957978067502509, -17.327805140336711 ], [ 34.957819948234501, -17.327952232487675 ], [ 34.957654030436665, -17.328091174674338 ], [ 34.957480768879407, -17.328221586046784 ], [ 34.957300638466052, -17.328343109137428 ], [ 34.957114132931054, -17.328455410841006 ], [ 34.956921763486584, -17.328558183327818 ], [ 34.956724057421276, -17.328651144887623 ], [ 34.956521556654678, -17.328734040702091 ], [ 34.956314816251719, -17.328806643543295 ], [ 34.95610440290104, -17.328868754396808 ], [ 34.955890893361392, -17.328920203007311 ], [ 34.955674872880472, -17.3289608483454 ], [ 34.955577723835631, -17.328974101137693 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 629.0, "radius": 447, "pivot": "1.13", "pivot_quadrant": "1.13D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.954694649227697, -17.320949807844581 ], [ 34.954492845332638, -17.320967049843368 ], [ 34.954371207002062, -17.320983642849392 ], [ 34.954988844373986, -17.325074100205931 ], [ 34.959167806457437, -17.324690368182022 ], [ 34.959151632530556, -17.324515773917259 ], [ 34.9591206756849, -17.324306450007203 ], [ 34.959078355647378, -17.324098969102089 ], [ 34.959024788449319, -17.323893899881941 ], [ 34.958960120947573, -17.323691804414914 ], [ 34.958884530421642, -17.323493236616837 ], [ 34.958798224087445, -17.323298740733154 ], [ 34.958701438529012, -17.323108849847333 ], [ 34.958594439049804, -17.322924084419899 ], [ 34.958477518945266, -17.322744950862091 ], [ 34.958350998698776, -17.322571940148009 ], [ 34.958215225103011, -17.322405526469097 ], [ 34.958070570309403, -17.32224616593458 ], [ 34.957917430807903, -17.322094295321598 ], [ 34.957756226340365, -17.321950330878167 ], [ 34.957587398750036, -17.321814667182498 ], [ 34.957411410770504, -17.32168767606171 ], [ 34.957228744757572, -17.321569705572823 ], [ 34.957039901367345, -17.321461079048959 ], [ 34.956845398184079, -17.321362094213331 ], [ 34.956645768301847, -17.321273022363293 ], [ 34.956441558863588, -17.321194107626912 ], [ 34.956233329561812, -17.321125566293954 ], [ 34.956021651104756, -17.321067586223158 ], [ 34.955807103652589, -17.321020326327432 ], [ 34.955590275227564, -17.320983916138314 ], [ 34.955489834358993, -17.320972213087796 ], [ 34.955350371836573, -17.320966445369216 ], [ 34.954694649227697, -17.320949807844581 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 307.0, "radius": 313, "pivot": "1.12", "pivot_quadrant": "1.12D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.953639390624843, -17.331963065750791 ], [ 34.952025040374643, -17.329583299853645 ], [ 34.952098160034545, -17.329533973616417 ], [ 34.952228758810662, -17.32945534029977 ], [ 34.952363463216741, -17.329383379493198 ], [ 34.952501904045853, -17.329318288427501 ], [ 34.952643701851599, -17.329260245504308 ], [ 34.952788467988015, -17.32920940980728 ], [ 34.952935805674699, -17.329165920666156 ], [ 34.953085311084202, -17.329129897274889 ], [ 34.953236574448724, -17.329101438365029 ], [ 34.953389181183084, -17.329080621935237 ], [ 34.953542713020894, -17.329067505037447 ], [ 34.953696749160791, -17.329062123620638 ], [ 34.953850867419632, -17.329064492432295 ], [ 34.954004645389389, -17.329074604977993 ], [ 34.954157661594884, -17.32909243353928 ], [ 34.954309496648627, -17.32911792924957 ], [ 34.954459734400203, -17.329151022228181 ], [ 34.954607963076747, -17.329191621771777 ], [ 34.954753776411302, -17.329239616603008 ], [ 34.954896774756236, -17.329294875175442 ], [ 34.955036566178386, -17.329357246034085 ], [ 34.955172767533284, -17.329426558230505 ], [ 34.955305005515051, -17.329502621791256 ], [ 34.955432917679516, -17.329585228238543 ], [ 34.955556153437534, -17.329674151161573 ], [ 34.955674375015825, -17.329769146837066 ], [ 34.955787258382678, -17.329869954897095 ], [ 34.955894494136068, -17.329976299042801 ], [ 34.955995788351686, -17.330087887801479 ], [ 34.956090863388482, -17.330204415325397 ], [ 34.956179458649743, -17.330325562230108 ], [ 34.956244881516085, -17.330425794331145 ], [ 34.953639390624843, -17.331963065750791 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 307.0, "radius": 313, "pivot": "1.12", "pivot_quadrant": "1.12B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.953639390624843, -17.331963065750791 ], [ 34.955236330182871, -17.33431716598372 ], [ 34.955224718727678, -17.334324157333015 ], [ 34.955090012251418, -17.334396120283976 ], [ 34.954951568916741, -17.334461213401692 ], [ 34.954809768197514, -17.334519258262056 ], [ 34.954664998771598, -17.334570095760149 ], [ 34.954517657455462, -17.334613586546542 ], [ 34.954368148116309, -17.33464961140923 ], [ 34.954216880565006, -17.334678071600539 ], [ 34.954064269432592, -17.334698889107798 ], [ 34.953910733033638, -17.334712006867239 ], [ 34.953756692219486, -17.334717388920446 ], [ 34.9536025692245, -17.334715020512974 ], [ 34.953448786508559, -17.334704908134796 ], [ 34.953295765598902, -17.334687079502569 ], [ 34.953143925934526, -17.334661583483619 ], [ 34.952993683716358, -17.334628489962032 ], [ 34.952845450766205, -17.334587889647075 ], [ 34.952699633397849, -17.334539893824552 ], [ 34.952556631303125, -17.334484634051776 ], [ 34.952416836456244, -17.334422261796878 ], [ 34.952280632039226, -17.334352948023589 ], [ 34.952148391391503, -17.334276882722619 ], [ 34.952020476986448, -17.334194274390857 ], [ 34.951897239437749, -17.334105349459705 ], [ 34.95177901653831, -17.33401035167449 ], [ 34.951666132334324, -17.333909541426202 ], [ 34.951558896236968, -17.333803195037721 ], [ 34.951457602174337, -17.333691604006312 ], [ 34.951362527785797, -17.333575074204578 ], [ 34.951273933660957, -17.333453925041969 ], [ 34.951229068073914, -17.333385185468085 ], [ 34.953639390624843, -17.331963065750791 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 307.0, "radius": 313, "pivot": "1.12", "pivot_quadrant": "1.12C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.952025040374643, -17.329583299853645 ], [ 34.953639390624843, -17.331963065750791 ], [ 34.951229068073914, -17.333385185468085 ], [ 34.951192062625495, -17.333328488589178 ], [ 34.951117139075599, -17.333199108667912 ], [ 34.951049368362995, -17.333066139908343 ], [ 34.9509889362322, -17.332929946777021 ], [ 34.950936008311515, -17.33279090257782 ], [ 34.950890729659179, -17.332649388428607 ], [ 34.950853224365929, -17.332505792216605 ], [ 34.950823595214999, -17.332360507535061 ], [ 34.95080192340064, -17.332213932604489 ], [ 34.950788268305715, -17.332066469180983 ], [ 34.950782667339162, -17.331918521455069 ], [ 34.950785135833648, -17.331770494943793 ], [ 34.950795667003739, -17.331622795379207 ], [ 34.950814231964728, -17.33147582759624 ], [ 34.950840779812026, -17.331329994423033 ], [ 34.950875237760897, -17.331185695576949 ], [ 34.950917511346177, -17.331043326568849 ], [ 34.950967484681314, -17.330903277619115 ], [ 34.951025020776335, -17.330765932588115 ], [ 34.951089961913382, -17.330631667924091 ], [ 34.951162130079283, -17.330500851631427 ], [ 34.951241327453488, -17.330373842262006 ], [ 34.951327336950605, -17.33025098793253 ], [ 34.951419922815354, -17.330132625370453 ], [ 34.951518831268977, -17.330019078991043 ], [ 34.951623791204831, -17.329910660008423 ], [ 34.95173451493163, -17.329807665582468 ], [ 34.951850698961884, -17.329710378004542 ], [ 34.951972024843911, -17.32961906392379 ], [ 34.952025040374643, -17.329583299853645 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 187.0, "radius": 244, "pivot": "1.17", "pivot_quadrant": "1.17B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.951827023263888, -17.31509680237874 ], [ 34.954026875506962, -17.314612148368443 ], [ 34.95460479566993, -17.316838550983693 ], [ 34.954582300191881, -17.316843971690474 ], [ 34.954464390420419, -17.316866156967695 ], [ 34.954345433420492, -17.316882384371478 ], [ 34.954225755255891, -17.316892609420933 ], [ 34.954105683967548, -17.316896804087772 ], [ 34.953985548674133, -17.316894956873099 ], [ 34.953865678669999, -17.316887072839005 ], [ 34.953746402522292, -17.316873173594651 ], [ 34.953628047170405, -17.316853297237095 ], [ 34.953510937029606, -17.316827498246788 ], [ 34.953395393101793, -17.316795847338348 ], [ 34.953281732095512, -17.316758431266628 ], [ 34.953170265557723, -17.316715352588957 ], [ 34.953061299019829, -17.316666729384 ], [ 34.95295513116006, -17.316612694928025 ], [ 34.952852052984774, -17.316553397329692 ], [ 34.95275234703076, -17.316488999123926 ], [ 34.952656286590667, -17.316419676826428 ], [ 34.952564134963964, -17.316345620449805 ], [ 34.95247614473513, -17.316267032982701 ], [ 34.952392557081382, -17.316184129833367 ], [ 34.952313601111499, -17.316097138239147 ], [ 34.952239493237947, -17.31600629664365 ], [ 34.952170436583643, -17.315911854043023 ], [ 34.952106620425212, -17.315814069303528 ], [ 34.952048219674296, -17.31571321045185 ], [ 34.95199539439816, -17.315609553940433 ], [ 34.951948289380944, -17.315503383889688 ], [ 34.951907033726947, -17.315394991309187 ], [ 34.951871740506874, -17.315284673299935 ], [ 34.951842506447925, -17.315172732240043 ], [ 34.951827023263888, -17.31509680237874 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 187.0, "radius": 244, "pivot": "1.17", "pivot_quadrant": "1.17D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.95629602563065, -17.314112227198336 ], [ 34.954026875506962, -17.314612148368443 ], [ 34.953494750340077, -17.312562168216999 ], [ 34.953582389133082, -17.312541050248115 ], [ 34.953700296363273, -17.312518865749148 ], [ 34.953819250693684, -17.312502638999813 ], [ 34.953938926089734, -17.312492414473798 ], [ 34.954058994540823, -17.312488220193675 ], [ 34.95417912695936, -17.312490067654078 ], [ 34.954298994082514, -17.312497951790249 ], [ 34.954418267374685, -17.312511850991893 ], [ 34.954536619927801, -17.312531727162444 ], [ 34.954653727357204, -17.312557525823461 ], [ 34.954769268690725, -17.312589176263966 ], [ 34.954882927248256, -17.312626591734215 ], [ 34.954994391509658, -17.312669669683476 ], [ 34.955103355968461, -17.312718292041072 ], [ 34.955209521969209, -17.312772325539996 ], [ 34.955312598525929, -17.312831622082093 ], [ 34.955412303119552, -17.312896019143999 ], [ 34.955508362472351, -17.312965340222579 ], [ 34.955600513296758, -17.313039395318516 ], [ 34.955688503017065, -17.313117981457257 ], [ 34.955772090461657, -17.313200883245095 ], [ 34.955851046524032, -17.313287873459569 ], [ 34.955925154790734, -17.313378713672218 ], [ 34.955994212134506, -17.313473154902031 ], [ 34.956058029271169, -17.313570938297769 ], [ 34.956116431278367, -17.313671795847476 ], [ 34.956169258075107, -17.313775451112978 ], [ 34.956216364860559, -17.31388161998748 ], [ 34.956257622511032, -17.313990011474338 ], [ 34.956292917933979, -17.3141003284845 ], [ 34.95629602563065, -17.314112227198336 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 187.0, "radius": 244, "pivot": "1.17", "pivot_quadrant": "1.17C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.954026875506962, -17.314612148368443 ], [ 34.951827023263888, -17.31509680237874 ], [ 34.951819411668815, -17.315059474955834 ], [ 34.951802519460308, -17.314945211880861 ], [ 34.951791876111791, -17.314830256204942 ], [ 34.951787510784577, -17.314714923015753 ], [ 34.951789435432069, -17.314599528435117 ], [ 34.951797644767126, -17.314484388752604 ], [ 34.951812116276713, -17.314369819558468 ], [ 34.95183281028369, -17.314256134878732 ], [ 34.951859670055732, -17.314143646314449 ], [ 34.951892621960923, -17.314032662187568 ], [ 34.95193157566974, -17.31392348669598 ], [ 34.951976424402709, -17.313816419079632 ], [ 34.952027045223218, -17.313711752800415 ], [ 34.952083299374593, -17.313609774737873 ], [ 34.952145032660468, -17.313510764402817 ], [ 34.952212075867564, -17.313414993171374 ], [ 34.952284245229521, -17.313322723541155 ], [ 34.952361342930651, -17.31323420841176 ], [ 34.952443157648254, -17.313149690391761 ], [ 34.952529465131775, -17.313069401133724 ], [ 34.95262002881752, -17.312993560699343 ], [ 34.952714600477137, -17.312922376956276 ], [ 34.952812920897877, -17.312856045008573 ], [ 34.952914720593142, -17.312794746661851 ], [ 34.95301972054105, -17.312738649925091 ], [ 34.953127632949226, -17.31268790855022 ], [ 34.953238162043483, -17.312642661610678 ], [ 34.953351004878527, -17.312603033120357 ], [ 34.953465852168193, -17.312569131693717 ], [ 34.953494750340077, -17.312562168216999 ], [ 34.954026875506962, -17.314612148368443 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 156.0, "radius": 223, "pivot": "1.16", "pivot_quadrant": "1.16D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.957182302821295, -17.318536599276882 ], [ 34.955074672069358, -17.318897254404234 ], [ 34.954661651915764, -17.316980166566335 ], [ 34.954671838084693, -17.316977712023718 ], [ 34.954779599945176, -17.316957436047787 ], [ 34.954888318856462, -17.316942605057037 ], [ 34.954997696836713, -17.316933259699976 ], [ 34.955107434097982, -17.316929425589755 ], [ 34.955217229867827, -17.316931113234073 ], [ 34.955326783213508, -17.316938318006393 ], [ 34.955435793866819, -17.316951020158577 ], [ 34.955543963046949, -17.316969184875028 ], [ 34.955650994279274, -17.316992762368198 ], [ 34.955756594207948, -17.317021688014929 ], [ 34.955860473399802, -17.31705588253363 ], [ 34.955962347137593, -17.3170952522016 ], [ 34.9560619362003, -17.317139689111766 ], [ 34.956158967628355, -17.317189071468594 ], [ 34.956253175471744, -17.317243263921736 ], [ 34.956344301518882, -17.317302117937068 ], [ 34.956432096004264, -17.317365472203772 ], [ 34.956516318293041, -17.317433153076365 ], [ 34.956596737540529, -17.317504975050671 ], [ 34.956673133324919, -17.317580741272227 ], [ 34.956745296251377, -17.317660244075764 ], [ 34.956813028526042, -17.317743265554331 ], [ 34.956876144498082, -17.31782957815658 ], [ 34.956934471168672, -17.317918945310385 ], [ 34.956987848665094, -17.318011122071191 ], [ 34.957036130679015, -17.318105855793377 ], [ 34.957079184867595, -17.318202886822661 ], [ 34.957116893216238, -17.31830194920779 ], [ 34.957149152362099, -17.318402771429408 ], [ 34.957175873877567, -17.318505077144206 ], [ 34.957182302821295, -17.318536599276882 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 156.0, "radius": 223, "pivot": "1.16", "pivot_quadrant": "1.16B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.954859932451754, -17.320941430306988 ], [ 34.954821771081448, -17.320936983748155 ], [ 34.954713599562865, -17.320918818875519 ], [ 34.954606566065088, -17.320895241107298 ], [ 34.954500963968805, -17.320866315069665 ], [ 34.954397082730935, -17.320832120048479 ], [ 34.954295207091114, -17.320792749771989 ], [ 34.95419561629123, -17.320748312153899 ], [ 34.954098583309857, -17.320698928997505 ], [ 34.954004374114035, -17.320644735661915 ], [ 34.95391324693022, -17.320585880690935 ], [ 34.953825451536296, -17.320522525405838 ], [ 34.953741228577087, -17.320454843463274 ], [ 34.95366080890463, -17.320383020379118 ], [ 34.953584412945403, -17.320307253020022 ], [ 34.953512250096132, -17.320227749063722 ], [ 34.953444518149837, -17.320144726429767 ], [ 34.95338140275377, -17.320058412682187 ], [ 34.953323076900439, -17.319969044405653 ], [ 34.95326970045361, -17.319876866557024 ], [ 34.953221419710069, -17.319782131793826 ], [ 34.953178366998799, -17.319685099781751 ], [ 34.953140660318205, -17.319586036482843 ], [ 34.953108403012827, -17.31948521342645 ], [ 34.953081683490133, -17.319382906965 ], [ 34.953060574978281, -17.319279397516461 ], [ 34.953055168419084, -17.319242829332627 ], [ 34.955074672069358, -17.318897254404234 ], [ 34.955511377817565, -17.320924282071903 ], [ 34.955477979112175, -17.320930566296397 ], [ 34.955369257970489, -17.320945397833995 ], [ 34.95529630929034, -17.320951630797449 ], [ 34.954859932451754, -17.320941430306988 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 156.0, "radius": 223, "pivot": "1.16", "pivot_quadrant": "1.16A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.955074672069358, -17.318897254404234 ], [ 34.957182302821295, -17.318536599276882 ], [ 34.95719698451262, -17.318608585942435 ], [ 34.957212426395785, -17.318713014116351 ], [ 34.95722215719276, -17.318818075437807 ], [ 34.957226150222589, -17.318923481942836 ], [ 34.957224394530947, -17.319028944720859 ], [ 34.957216894920172, -17.319134174706594 ], [ 34.957203671936284, -17.319238883472298 ], [ 34.957184761812783, -17.319342784018371 ], [ 34.957160216371385, -17.319445591560026 ], [ 34.957130102880129, -17.319547024307777 ], [ 34.957094503869122, -17.319646804239927 ], [ 34.957053516904331, -17.31974465786454 ], [ 34.957007254320388, -17.319840316969159 ], [ 34.956955842912699, -17.319933519355892 ], [ 34.956899423589938, -17.320024009560218 ], [ 34.956838150988013, -17.320111539551114 ], [ 34.956772193046199, -17.320195869411073 ], [ 34.956701730546861, -17.320276767993608 ], [ 34.956626956620106, -17.320354013556926 ], [ 34.956548076214318, -17.320427394371769 ], [ 34.956465305534444, -17.320496709301732 ], [ 34.95637887144953, -17.320561768354683 ], [ 34.956289010870705, -17.320622393203507 ], [ 34.956195970101952, -17.320678417675055 ], [ 34.956100004164895, -17.320729688205471 ], [ 34.956001376099834, -17.32077606426137 ], [ 34.955900356244626, -17.320817418724921 ], [ 34.955797221493775, -17.320853638242355 ], [ 34.955692254539301, -17.320884623534763 ], [ 34.955585743095874, -17.320910289670167 ], [ 34.955511377817565, -17.320924282071903 ], [ 34.955074672069358, -17.318897254404234 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 669.0, "radius": 461, "pivot": "6.2", "pivot_quadrant": "6.2D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.933686532028823, -17.34741850738671 ], [ 34.930918907739319, -17.350619195960071 ], [ 34.930749371120577, -17.350482950059067 ], [ 34.9305831090279, -17.350334454986911 ], [ 34.930425167481324, -17.35017780671259 ], [ 34.930275979390657, -17.350013434618159 ], [ 34.930135953668632, -17.349841789256359 ], [ 34.930005474110168, -17.349663341115505 ], [ 34.929884898340468, -17.349478579329688 ], [ 34.929774556834893, -17.349288010337819 ], [ 34.929674752013298, -17.349092156495377 ], [ 34.929585757411353, -17.348891554642378 ], [ 34.92950781693105, -17.348686754631803 ], [ 34.929441144172401, -17.348478317822277 ], [ 34.9293859218484, -17.348266815539219 ], [ 34.929342301284514, -17.348052827508759 ], [ 34.929310402004319, -17.347836940268596 ], [ 34.92929031140222, -17.347619745560188 ], [ 34.929282084504514, -17.347401838706777 ], [ 34.929285743818809, -17.347183816981492 ], [ 34.92930127927297, -17.346966277970296 ], [ 34.929328648243064, -17.346749817933908 ], [ 34.929367775670698, -17.346535030173548 ], [ 34.929418554269198, -17.34632250340475 ], [ 34.929480844818194, -17.346112820143716 ], [ 34.929554476545505, -17.345906555110741 ], [ 34.929639247595759, -17.345704273655056 ], [ 34.929734925584, -17.345506530205324 ], [ 34.929841248233032, -17.345313866750129 ], [ 34.929957924092612, -17.34512681135249 ], [ 34.930084633338602, -17.344945876702717 ], [ 34.930221028649861, -17.34477155871328 ], [ 34.930343832257769, -17.344630621189719 ], [ 34.933686532028823, -17.34741850738671 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 669.0, "radius": 461, "pivot": "6.2", "pivot_quadrant": "6.2A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.936458268544008, -17.344213063126752 ], [ 34.933686532028823, -17.34741850738671 ], [ 34.930343832257769, -17.344630621189719 ], [ 34.930366736160408, -17.344604335159747 ], [ 34.93052135648437, -17.344444664371434 ], [ 34.930684465810785, -17.344292983975372 ], [ 34.93085561706534, -17.344149709696961 ], [ 34.931034341135764, -17.344015234220802 ], [ 34.931220148157657, -17.343889926114542 ], [ 34.931412528857074, -17.343774128818861 ], [ 34.931610955946326, -17.343668159706397 ], [ 34.931814885569068, -17.343572309212028 ], [ 34.93202375879077, -17.343486840037041 ], [ 34.932237003130467, -17.34341198642927 ], [ 34.932454034129648, -17.343347953541233 ], [ 34.932674256953796, -17.343294916868011 ], [ 34.932897068022541, -17.343253021766351 ], [ 34.933121856663583, -17.343222383056439 ], [ 34.933348006786112, -17.343203084707323 ], [ 34.933574898569034, -17.343195179606763 ], [ 34.933801910159438, -17.343198689416489 ], [ 34.934028419376581, -17.343213604512808 ], [ 34.934253805416724, -17.343239884013023 ], [ 34.934477450554319, -17.343277455887517 ], [ 34.93469874183473, -17.343326217157209 ], [ 34.934917072753706, -17.343386034175726 ], [ 34.935131844919461, -17.343456742995702 ], [ 34.935342469692365, -17.343538149818031 ], [ 34.935548369797949, -17.343630031523016 ], [ 34.935748980908848, -17.343732136281769 ], [ 34.935943753191204, -17.343844184246329 ], [ 34.936132152811439, -17.343965868316541 ], [ 34.936313663399275, -17.34409685498165 ], [ 34.936458268544008, -17.344213063126752 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 669.0, "radius": 461, "pivot": "6.1", "pivot_quadrant": "6.1C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.924014427740026, -17.344857153121342 ], [ 34.926975301324241, -17.341756277068452 ], [ 34.930206135800262, -17.344526394378821 ], [ 34.93019316385849, -17.344541281858941 ], [ 34.93003854325503, -17.344700952461203 ], [ 34.929875433121211, -17.344852632448269 ], [ 34.929704280527545, -17.344995906055839 ], [ 34.929525554592857, -17.345130380560647 ], [ 34.929339745198348, -17.345255687357142 ], [ 34.929147361644837, -17.345371482967963 ], [ 34.92894893125672, -17.34547744998568 ], [ 34.928744997936427, -17.345573297942956 ], [ 34.928536120673414, -17.345658764108965 ], [ 34.928322872011776, -17.345733614209617 ], [ 34.928105836480654, -17.345797643070011 ], [ 34.92788560899178, -17.345850675176816 ], [ 34.927662793208455, -17.345892565159698 ], [ 34.927437999890635, -17.345923198189734 ], [ 34.927211845220448, -17.345942490294355 ], [ 34.926984949112807, -17.345950388587646 ], [ 34.926757933515866, -17.345946871415304 ], [ 34.926531420705857, -17.345931948414133 ], [ 34.926306031580957, -17.345905660485595 ], [ 34.926082383959056, -17.345868079683793 ], [ 34.925861090883807, -17.345819309017926 ], [ 34.925642758943994, -17.345759482169868 ], [ 34.925427986610323, -17.345688763127814 ], [ 34.9252173625948, -17.345607345736642 ], [ 34.925011464236583, -17.345515453166517 ], [ 34.92481085591924, -17.345413337301096 ], [ 34.924616087523482, -17.345301278046954 ], [ 34.92442769291965, -17.345179582566296 ], [ 34.924246188504156, -17.34504858443481 ], [ 34.924072071783883, -17.344908642727177 ], [ 34.924014427740026, -17.344857153121342 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 669.0, "radius": 461, "pivot": "6.1", "pivot_quadrant": "6.1A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.929874621707043, -17.3387198647094 ], [ 34.926975301324241, -17.341756277068452 ], [ 34.923737722930689, -17.338980377523537 ], [ 34.923844300080475, -17.338870324057513 ], [ 34.924007410942906, -17.33871864893819 ], [ 34.924178563186587, -17.338575380261723 ], [ 34.92435728769653, -17.338440910697358 ], [ 34.924543094607159, -17.338315608796531 ], [ 34.924735474644862, -17.338199817982947 ], [ 34.924933900523754, -17.338093855611472 ], [ 34.925137828390824, -17.337998012098549 ], [ 34.92534669931635, -17.33791255012633 ], [ 34.925559940825678, -17.337837703922908 ], [ 34.925776968468028, -17.33777367862054 ], [ 34.925997187418091, -17.337720649693534 ], [ 34.92621999410612, -17.337678762477399 ], [ 34.926444777871808, -17.337648131770756 ], [ 34.926670922637705, -17.337628841520697 ], [ 34.926897808597396, -17.337620944592842 ], [ 34.927124813913892, -17.337624462626497 ], [ 34.927351316423618, -17.337639385975457 ], [ 34.927576695341251, -17.337665673734445 ], [ 34.927800332960729, -17.337703253851203 ], [ 34.928021616347976, -17.33775202332404 ], [ 34.928239939020372, -17.337811848484161 ], [ 34.928454702608725, -17.337882565361848 ], [ 34.928665318496876, -17.337963980135974 ], [ 34.928871209434661, -17.338055869664995 ], [ 34.929071811119861, -17.338157982098618 ], [ 34.929266573744414, -17.338270037567831 ], [ 34.929454963501193, -17.338391728951922 ], [ 34.929636464046908, -17.338522722720082 ], [ 34.929810577917074, -17.338662659845419 ], [ 34.929874621707043, -17.3387198647094 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 669.0, "radius": 461, "pivot": "6.1", "pivot_quadrant": "6.1D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.926975301324241, -17.341756277068452 ], [ 34.924014427740026, -17.344857153121342 ], [ 34.923905820012344, -17.344760141032754 ], [ 34.923747888881501, -17.344603486403877 ], [ 34.923598711272561, -17.344439108239992 ], [ 34.923458696069524, -17.344267457110487 ], [ 34.923328227038496, -17.344089003519457 ], [ 34.92320766177577, -17.343904236615927 ], [ 34.923097330727906, -17.343713662852821 ], [ 34.922997536286125, -17.343517804598687 ], [ 34.922908551957605, -17.343317198705623 ], [ 34.922830621616164, -17.343112395037664 ], [ 34.922763958834061, -17.342903954963422 ], [ 34.922708746296955, -17.342692449817278 ], [ 34.922665135303461, -17.342478459333183 ], [ 34.922633245350909, -17.342262570055521 ], [ 34.922613163808208, -17.342045373731359 ], [ 34.922604945676802, -17.341827465688315 ], [ 34.922608613440303, -17.341609443202778 ], [ 34.922624157003398, -17.341391903862778 ], [ 34.922651533719979, -17.341175443929924 ], [ 34.922690668510434, -17.34096065670515 ], [ 34.922741454067939, -17.340748130902483 ], [ 34.922803751153019, -17.340538449035467 ], [ 34.922877388975664, -17.340332185820596 ], [ 34.922962165663776, -17.34012990660208 ], [ 34.92305784881701, -17.339932165802466 ], [ 34.923164176144006, -17.339739505403038 ], [ 34.923280856181734, -17.33955245345847 ], [ 34.923407569094621, -17.339371522649586 ], [ 34.923543967551495, -17.339197208878335 ], [ 34.923689677677785, -17.339029989908727 ], [ 34.923737722930689, -17.338980377523537 ], [ 34.926975301324241, -17.341756277068452 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "2.5", "pivot_quadrant": "2.5C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.917570487117061, -17.339711118027701 ], [ 34.920240082361659, -17.336946735747041 ], [ 34.923199307657669, -17.339448856263918 ], [ 34.923071705624515, -17.33958061908611 ], [ 34.922923099879576, -17.339718804051945 ], [ 34.922767167458396, -17.339849329976413 ], [ 34.922604335762102, -17.339971839080217 ], [ 34.922435051105928, -17.340085995557583 ], [ 34.922259777495817, -17.340191486496835 ], [ 34.922078995356557, -17.340288022738303 ], [ 34.921893200214804, -17.340375339667009 ], [ 34.921702901340709, -17.340453197938189 ], [ 34.921508620351901, -17.340521384133421 ], [ 34.921310889783442, -17.340579711345818 ], [ 34.921110251627987, -17.340628019692403 ], [ 34.920907255849897, -17.340666176752553 ], [ 34.920702458877493, -17.34069407793098 ], [ 34.920496422077605, -17.340711646744563 ], [ 34.920289710216586, -17.340718835032121 ], [ 34.920082889911853, -17.3407156230864 ], [ 34.919876528078532, -17.340702019708203 ], [ 34.919671190375219, -17.34067806218227 ], [ 34.91946743965304, -17.340643816175103 ], [ 34.919265834412677, -17.340599375555005 ], [ 34.919066927273107, -17.340544862134671 ], [ 34.918871263456573, -17.340480425337375 ], [ 34.918679379293778, -17.340406241787306 ], [ 34.918491800753571, -17.34032251482536 ], [ 34.918309042000999, -17.340229473951673 ], [ 34.918131603987675, -17.340127374196545 ], [ 34.917959973078531, -17.340016495421217 ], [ 34.917794619718457, -17.33989714155069 ], [ 34.917635997142689, -17.339769639740499 ], [ 34.917570487117061, -17.339711118027701 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "2.5", "pivot_quadrant": "2.5A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.922942052048946, -17.33414882953203 ], [ 34.920240082361659, -17.336946735747041 ], [ 34.917269399022985, -17.334434927085208 ], [ 34.917287823506996, -17.334413783914261 ], [ 34.91742869674966, -17.334268322621668 ], [ 34.917577303095733, -17.334130141694978 ], [ 34.917733235223096, -17.33399961986192 ], [ 34.917896065733828, -17.333877114856964 ], [ 34.918065348325705, -17.333762962440996 ], [ 34.918240619015357, -17.333657475481164 ], [ 34.91842139741005, -17.333560943093559 ], [ 34.918607188024126, -17.333473629850932 ], [ 34.918797481637021, -17.33339577505766 ], [ 34.91899175668879, -17.333327592094061 ], [ 34.919189480709392, -17.333269267831611 ], [ 34.919390111777922, -17.333220962120961 ], [ 34.91959310000766, -17.333182807353882 ], [ 34.919797889052994, -17.333154908100525 ], [ 34.920003917633906, -17.333137340822887 ], [ 34.920210621074162, -17.333130153665365 ], [ 34.920417432848552, -17.333133366322823 ], [ 34.920623786135408, -17.33314696998664 ], [ 34.920829115369827, -17.333170927368968 ], [ 34.921032857793406, -17.333205172804849 ], [ 34.921234454996402, -17.333249612432297 ], [ 34.921433354447913, -17.333304124449441 ], [ 34.921629011009919, -17.333368559448381 ], [ 34.921820888431192, -17.333442740824655 ], [ 34.922008460816762, -17.333526465261187 ], [ 34.922191214068988, -17.333619503285469 ], [ 34.922368647296558, -17.333721599898446 ], [ 34.922540274186922, -17.333832475273329 ], [ 34.922705624339265, -17.333951825522362 ], [ 34.922864244553487, -17.334079323529647 ], [ 34.922942052048946, -17.33414882953203 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "2.5", "pivot_quadrant": "2.5D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.920240082361659, -17.336946735747041 ], [ 34.917570487117061, -17.339711118027701 ], [ 34.917484540134382, -17.339634339479865 ], [ 34.917340663832782, -17.339491611633623 ], [ 34.917204762595283, -17.339341847425441 ], [ 34.917077208916524, -17.339185457365442 ], [ 34.916958352407384, -17.339022870124747 ], [ 34.916848518836794, -17.338854531360347 ], [ 34.916748009238944, -17.338680902493451 ], [ 34.916657099088269, -17.338502459444559 ], [ 34.916576037544537, -17.338319691328788 ], [ 34.916505046770205, -17.338133099115122 ], [ 34.916444321321642, -17.337943194253128 ], [ 34.916394027616185, -17.337750497270942 ], [ 34.916354303476247, -17.337555536348415 ], [ 34.916325257751936, -17.337358845869311 ], [ 34.916306970023015, -17.337160964956428 ], [ 34.916299490381085, -17.336962435993936 ], [ 34.91630283929274, -17.336763803140538 ], [ 34.91631700754381, -17.33656561083799 ], [ 34.916341956265015, -17.336368402318797 ], [ 34.916377617038826, -17.33617271811719 ], [ 34.916423892087501, -17.335979094587614 ], [ 34.91648065454131, -17.335788062434609 ], [ 34.916547748786755, -17.335600145258304 ], [ 34.916624990893368, -17.33541585811918 ], [ 34.916712169118249, -17.335235706126554 ], [ 34.916809044486669, -17.335060183054143 ], [ 34.916915351447358, -17.334889769986802 ], [ 34.917030798600706, -17.334724934001962 ], [ 34.917155069497618, -17.334566126889655 ], [ 34.917269399022985, -17.334434927085208 ], [ 34.920240082361659, -17.336946735747041 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "2.1", "pivot_quadrant": "2.1A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.915191282440283, -17.337693243965902 ], [ 34.913379761071603, -17.335625170111705 ], [ 34.915518445366438, -17.33371081141938 ], [ 34.91556591333611, -17.333763124395745 ], [ 34.915660056119648, -17.333878556262661 ], [ 34.915747779977927, -17.333998562055793 ], [ 34.915828844461352, -17.334122812856673 ], [ 34.915903027371279, -17.33425096811143 ], [ 34.9159701253691, -17.334382676564005 ], [ 34.916029954533762, -17.33451757721895 ], [ 34.916082350865892, -17.334655300330706 ], [ 34.916127170737504, -17.334795468417038 ], [ 34.916164291285796, -17.334937697293565 ], [ 34.916193610750071, -17.335081597126699 ], [ 34.916215048750807, -17.335226773502143 ], [ 34.916228546510219, -17.33537282850585 ], [ 34.916234067013484, -17.335519361814619 ], [ 34.916231595110446, -17.335665971793379 ], [ 34.916221137557322, -17.335812256595954 ], [ 34.91620272299842, -17.335957815266493 ], [ 34.916176401887839, -17.336102248838476 ], [ 34.916142246351313, -17.336245161428248 ], [ 34.916100349988831, -17.336386161320107 ], [ 34.916050827618207, -17.33652486203999 ], [ 34.915993814960572, -17.336660883414858 ], [ 34.915929468268565, -17.336793852614697 ], [ 34.915857963898262, -17.336923405174531 ], [ 34.915779497825845, -17.337049185993408 ], [ 34.915694285110668, -17.337170850307807 ], [ 34.915602559305853, -17.337288064636702 ], [ 34.915504571818289, -17.337400507695637 ], [ 34.915400591219608, -17.337507871277509 ], [ 34.91529090251003, -17.337609861097384 ], [ 34.915191282440283, -17.337693243965902 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "2.1", "pivot_quadrant": "2.1C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.911437392245574, -17.333407717834426 ], [ 34.913379761071603, -17.335625170111705 ], [ 34.911255677582851, -17.337526459469718 ], [ 34.911170570838692, -17.337442025530336 ], [ 34.911070267333443, -17.337331481742687 ], [ 34.910976125197692, -17.337216047643373 ], [ 34.910888402465794, -17.337096039638435 ], [ 34.910807339575037, -17.336971786670553 ], [ 34.910733158706634, -17.336843629317364 ], [ 34.910666063176791, -17.336711918857905 ], [ 34.910606236879538, -17.336577016309619 ], [ 34.910553843782843, -17.336439291438793 ], [ 34.910509027479215, -17.336299121746951 ], [ 34.910471910792388, -17.336156891436062 ], [ 34.910442595440756, -17.336012990355417 ], [ 34.910421161758748, -17.335867812933003 ], [ 34.910407668476871, -17.335721757094326 ], [ 34.910402152560884, -17.335575223171723 ], [ 34.910404629110673, -17.335428612807021 ], [ 34.910415091319095, -17.335282327850589 ], [ 34.910433510490847, -17.335136769259989 ], [ 34.910459836121319, -17.334992336000848 ], [ 34.910493996035243, -17.334849423953397 ], [ 34.910535896584648, -17.334708424827415 ], [ 34.910585422905875, -17.334569725088556 ], [ 34.910642439234486, -17.334433704899109 ], [ 34.910706789277619, -17.334300737076106 ], [ 34.910778296642519, -17.334171186069447 ], [ 34.910856765320155, -17.334045406963057 ], [ 34.910941980222667, -17.333923744501693 ], [ 34.911033707772944, -17.33380653214607 ], [ 34.911131696544956, -17.333694091159053 ], [ 34.911235677953037, -17.333586729725003 ], [ 34.911345366988073, -17.33348474210538 ], [ 34.911437392245574, -17.333407717834426 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "2.1", "pivot_quadrant": "2.1B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.913379761071603, -17.335625170111705 ], [ 34.915191282440283, -17.337693243965902 ], [ 34.915175806337395, -17.337706197599196 ], [ 34.915055618172943, -17.337796616722148 ], [ 34.914930667446747, -17.337880870624524 ], [ 34.914801296644683, -17.337958728363152 ], [ 34.914667860369669, -17.338029976526471 ], [ 34.914530724369655, -17.338094419819619 ], [ 34.914390264535022, -17.338151881599728 ], [ 34.914246865868172, -17.338202204360293 ], [ 34.914100921428201, -17.338245250162895 ], [ 34.913952831253319, -17.338280901015388 ], [ 34.913803001264291, -17.33830905919536 ], [ 34.913651842151559, -17.338329647518076 ], [ 34.913499768249508, -17.338342609548064 ], [ 34.913347196400544, -17.338347909753889 ], [ 34.913194544812328, -17.338345533605516 ], [ 34.913042231911355, -17.33833548761422 ], [ 34.912890675195818, -17.338317799314741 ], [ 34.912740290091094, -17.338292517189796 ], [ 34.912591488810882, -17.33825971053723 ], [ 34.912444679227121, -17.33821946928002 ], [ 34.912300263751881, -17.338171903719815 ], [ 34.912158638234182, -17.338117144234534 ], [ 34.912020190874792, -17.338055340920988 ], [ 34.911885301162073, -17.337986663183429 ], [ 34.911754338831614, -17.33791129926913 ], [ 34.91162766285283, -17.337829455752399 ], [ 34.911505620444707, -17.337741356968213 ], [ 34.911388546124208, -17.337647244397367 ], [ 34.911276760789143, -17.337547376004352 ], [ 34.911255677582851, -17.337526459469718 ], [ 34.913379761071603, -17.335625170111705 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 414.0, "radius": 363, "pivot": "2.2", "pivot_quadrant": "2.2B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.909113153334729, -17.34030905206204 ], [ 34.911578911920543, -17.342468032199982 ], [ 34.911483266003707, -17.342566783644735 ], [ 34.911354818022311, -17.342686208422425 ], [ 34.911220037986965, -17.342799013216435 ], [ 34.911079295321287, -17.342904888824119 ], [ 34.910932975794793, -17.343003545035192 ], [ 34.910781480465488, -17.343094711427394 ], [ 34.910625224580507, -17.343178138107756 ], [ 34.910464636437894, -17.343253596397744 ], [ 34.9103001562125, -17.343320879460098 ], [ 34.910132234749348, -17.343379802865964 ], [ 34.909961332327725, -17.343430205100489 ], [ 34.90978791739942, -17.343471948005583 ], [ 34.909612465304448, -17.343504917158779 ], [ 34.909435456967969, -17.343529022186893 ], [ 34.909257377581909, -17.343544197013831 ], [ 34.90907871527471, -17.343550400041732 ], [ 34.90889995977318, -17.343547614265091 ], [ 34.908721601059909, -17.343535847317359 ], [ 34.908544128029973, -17.343515131450051 ], [ 34.908368027150622, -17.343485523444404 ], [ 34.908193781127558, -17.343447104455645 ], [ 34.908021867581709, -17.343399979790647 ], [ 34.907852757739754, -17.343344278619131 ], [ 34.90768691514225, -17.343280153619709 ], [ 34.907524794372911, -17.343207780561201 ], [ 34.90736683981239, -17.343127357820926 ], [ 34.907213484420012, -17.343039105840777 ], [ 34.907065148546927, -17.342943266522941 ], [ 34.906922238783757, -17.342840102566772 ], [ 34.906860112803329, -17.342790160574449 ], [ 34.909113153334729, -17.34030905206204 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 414.0, "radius": 363, "pivot": "2.2", "pivot_quadrant": "2.2D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.909113153334729, -17.34030905206204 ], [ 34.906533452371185, -17.338050305737823 ], [ 34.90660624542992, -17.337975151605978 ], [ 34.906734693855789, -17.337855729846009 ], [ 34.906869473666958, -17.337742928108351 ], [ 34.907010215442298, -17.337637055562148 ], [ 34.907156533422004, -17.337538402384133 ], [ 34.907308026565047, -17.33744723896336 ], [ 34.907464279648224, -17.337363815160227 ], [ 34.907624864404212, -17.337288359621752 ], [ 34.907789340695246, -17.337221079155054 ], [ 34.907957257719431, -17.337162158160531 ], [ 34.908128155246089, -17.33711175812665 ], [ 34.908301564877085, -17.337070017187351 ], [ 34.908477011330419, -17.337037049743579 ], [ 34.908654013742748, -17.337012946149805 ], [ 34.908832086987054, -17.336997772466383 ], [ 34.909010743002206, -17.336991570278656 ], [ 34.909189492130309, -17.33699435658291 ], [ 34.9093678444586, -17.337006123739954 ], [ 34.909545311161978, -17.337026839495923 ], [ 34.90972140584249, -17.337056447070864 ], [ 34.909895645862328, -17.337094865314214 ], [ 34.910067553666394, -17.3371419889273 ], [ 34.910236658090895, -17.337197688751889 ], [ 34.910402495654601, -17.337261812124172 ], [ 34.910564611828974, -17.33733418329313 ], [ 34.910722562283695, -17.337414603902154 ], [ 34.910875914104444, -17.337502853532694 ], [ 34.911024246979174, -17.337598690308319 ], [ 34.911167154350139, -17.337701851557512 ], [ 34.911304244527969, -17.337812054533547 ], [ 34.91134641261079, -17.337849727197245 ], [ 34.909113153334729, -17.34030905206204 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 414.0, "radius": 363, "pivot": "2.2", "pivot_quadrant": "2.2A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.911578911920543, -17.342468032199982 ], [ 34.909113153334729, -17.34030905206204 ], [ 34.91134641261079, -17.337849727197245 ], [ 34.91143514176526, -17.337928997189451 ], [ 34.911559487286333, -17.338052359005587 ], [ 34.91167694027061, -17.338181801868199 ], [ 34.911787178786682, -17.338316970995947 ], [ 34.911889900674801, -17.33845749591223 ], [ 34.911984824375082, -17.338602991460462 ], [ 34.91207168969926, -17.33875305885968 ], [ 34.912150258544031, -17.338907286797372 ], [ 34.912220315543756, -17.339065252556818 ], [ 34.912281668660903, -17.339226523175476 ], [ 34.912334149712621, -17.339390656631728 ], [ 34.91237761483189, -17.339557203056199 ], [ 34.912411944862086, -17.339725705964806 ], [ 34.912437045683824, -17.339895703509814 ], [ 34.912452848473158, -17.340066729745672 ], [ 34.912459309890508, -17.340238315906035 ], [ 34.912456412199738, -17.340409991688645 ], [ 34.912444163317041, -17.340581286544278 ], [ 34.912422596789526, -17.340751730966492 ], [ 34.912391771703525, -17.340920857778553 ], [ 34.912351772523039, -17.341088203413818 ], [ 34.912302708858348, -17.34125330918652 ], [ 34.912244715165983, -17.341415722548859 ], [ 34.912177950380325, -17.341574998331588 ], [ 34.912102597478352, -17.341730699964163 ], [ 34.912018862978236, -17.341882400671473 ], [ 34.911926976373564, -17.342029684643691 ], [ 34.91182718950445, -17.342172148176019 ], [ 34.911719775867432, -17.34230940077537 ], [ 34.911605029865996, -17.34244106623078 ], [ 34.911578911920543, -17.342468032199982 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "2.3", "pivot_quadrant": "2.3B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.899977306418968, -17.342598676400389 ], [ 34.900577206073855, -17.344757029496293 ], [ 34.90053099248378, -17.344770656279508 ], [ 34.900412035589035, -17.344799284489611 ], [ 34.900291681601324, -17.344821894278759 ], [ 34.900170260413489, -17.344838423671792 ], [ 34.900048104844025, -17.344848827360014 ], [ 34.899925549724713, -17.344853076825434 ], [ 34.899802930982794, -17.344851160418948 ], [ 34.899680584720031, -17.344843083392274 ], [ 34.899558846291384, -17.344828867883589 ], [ 34.899438049385651, -17.34480855285684 ], [ 34.899318525110722, -17.344782193994938 ], [ 34.899200601085958, -17.344749863547143 ], [ 34.899084600543979, -17.344711650130986 ], [ 34.898970841444694, -17.344667658489421 ], [ 34.898859635603621, -17.344618009203618 ], [ 34.898751287837094, -17.344562838362481 ], [ 34.898646095126765, -17.344502297189571 ], [ 34.898544345805426, -17.344436551628583 ], [ 34.898446318766688, -17.344365781888438 ], [ 34.898352282700444, -17.34429018194934 ], [ 34.898262495356455, -17.344209959030934 ], [ 34.898177202837687, -17.344125333024376 ], [ 34.898096638925864, -17.344036535889487 ], [ 34.898021024440638, -17.343943811018971 ], [ 34.897950566634307, -17.343847412571144 ], [ 34.89788545862384, -17.343747604773341 ], [ 34.897825878861511, -17.343644661197509 ], [ 34.897771990645907, -17.343538864010416 ], [ 34.897723941674307, -17.343430503200111 ], [ 34.897681863638006, -17.343319875781045 ], [ 34.897645871861357, -17.343207284979929 ], [ 34.897632654475345, -17.343156624592137 ], [ 34.899977306418968, -17.342598676400389 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "2.3", "pivot_quadrant": "2.3D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.899977306418968, -17.342598676400389 ], [ 34.8993698935897, -17.3404132919784 ], [ 34.899392664965589, -17.340407811872627 ], [ 34.899513016297661, -17.340385202886463 ], [ 34.899634434697063, -17.340368674166911 ], [ 34.89975658737589, -17.340358271015273 ], [ 34.899879139534015, -17.340354021943661 ], [ 34.90000175527662, -17.340355938596865 ], [ 34.900124098534818, -17.340364015720475 ], [ 34.900245833986595, -17.340378231175233 ], [ 34.900366627975728, -17.340398545997807 ], [ 34.900486149426307, -17.340424904507497 ], [ 34.900604070749914, -17.340457234458924 ], [ 34.90072006874351, -17.340495447239984 ], [ 34.90083382547509, -17.340539438114668 ], [ 34.900945029155146, -17.340589086510239 ], [ 34.901053374990944, -17.340644256347534 ], [ 34.901158566022026, -17.340704796413981 ], [ 34.901260313933982, -17.34077054077801 ], [ 34.901358339848642, -17.340841309243807 ], [ 34.901452375088432, -17.340916907845159 ], [ 34.901542161912666, -17.340997129377051 ], [ 34.901627454224055, -17.34108175396354 ], [ 34.901708018243141, -17.34117054966033 ], [ 34.901783633149101, -17.341263273090505 ], [ 34.901854091685024, -17.341359670111498 ], [ 34.901919200725978, -17.341459476511659 ], [ 34.901978781808353, -17.341562418734288 ], [ 34.902032671619118, -17.341668214627489 ], [ 34.902080722443529, -17.341776574217395 ], [ 34.902122802569984, -17.341887200502885 ], [ 34.902158796651207, -17.341999790269696 ], [ 34.902178392629686, -17.3420748920176 ], [ 34.899977306418968, -17.342598676400389 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "2.3", "pivot_quadrant": "2.3A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.900577206073855, -17.344757029496293 ], [ 34.899977306418968, -17.342598676400389 ], [ 34.902178392629686, -17.3420748920176 ], [ 34.902188606020459, -17.342114034921313 ], [ 34.902212148962079, -17.342229621324904 ], [ 34.9022293609356, -17.342346232669474 ], [ 34.902240194752764, -17.342463549334198 ], [ 34.902244620706924, -17.34258124976445 ], [ 34.902242626654697, -17.342699011353165 ], [ 34.902234218049344, -17.342816511325012 ], [ 34.902219417925892, -17.342933427621141 ], [ 34.902198266838255, -17.343049439781904 ], [ 34.902170822748069, -17.343164229825184 ], [ 34.902137160866111, -17.343277483118008 ], [ 34.902097373446153, -17.343388889238934 ], [ 34.902051569532283, -17.343498142828913 ], [ 34.901999874660113, -17.343604944428311 ], [ 34.901942430512797, -17.343709001297707 ], [ 34.901879394532841, -17.343810028220332 ], [ 34.901810939490574, -17.343907748283865 ], [ 34.901737253010715, -17.344001893639497 ], [ 34.901658537058189, -17.344092206236112 ], [ 34.901575007384508, -17.344178438527649 ], [ 34.901486892936596, -17.344260354151714 ], [ 34.901394435229165, -17.344337728577433 ], [ 34.901297887682823, -17.344410349720999 ], [ 34.901197514929372, -17.344478018526939 ], [ 34.901093592086589, -17.344540549513926 ], [ 34.90098640400398, -17.344597771283127 ], [ 34.900876244482049, -17.344649526988103 ], [ 34.900763415466933, -17.344695674764722 ], [ 34.900648226222749, -17.344736088120147 ], [ 34.900577206073855, -17.344757029496293 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "2.4", "pivot_quadrant": "2.4A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.89784433134804, -17.347383688817565 ], [ 34.896270521422032, -17.345778057340958 ], [ 34.898018534309401, -17.34427437726421 ], [ 34.898049630555178, -17.344308651412607 ], [ 34.898125245197328, -17.344401376276529 ], [ 34.898195703304218, -17.344497774650247 ], [ 34.898260811752031, -17.344597582318404 ], [ 34.898320392078851, -17.344700525720842 ], [ 34.898374280973691, -17.344806322702414 ], [ 34.898422330724294, -17.344914683286273 ], [ 34.898464409622015, -17.345025310468575 ], [ 34.898500402322924, -17.345137901032597 ], [ 34.898530210164083, -17.345252146379647 ], [ 34.898553751434022, -17.345367733374978 ], [ 34.898570961596832, -17.345484345205968 ], [ 34.898581793469205, -17.345601662250449 ], [ 34.898586217349859, -17.345719362952764 ], [ 34.898584221101068, -17.345837124705092 ], [ 34.898575810182095, -17.345954624731661 ], [ 34.898561007634342, -17.346071540973472 ], [ 34.898539854018331, -17.34618755297101 ], [ 34.898512407302668, -17.346302342742597 ], [ 34.898478742705286, -17.346415595656016 ], [ 34.898438952487425, -17.346527001290848 ], [ 34.898393145700823, -17.346636254289407 ], [ 34.898341447888967, -17.346743055193635 ], [ 34.898284000743089, -17.34684711126604 ], [ 34.898220961713911, -17.346948137292031 ], [ 34.898152503580086, -17.347045856361728 ], [ 34.898078813974848, -17.347140000629064 ], [ 34.898000094871662, -17.347230312045884 ], [ 34.897916562030716, -17.347316543069386 ], [ 34.89784433134804, -17.347383688817565 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "2.4", "pivot_quadrant": "2.4C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.894633955948727, -17.344108401435214 ], [ 34.896270521422032, -17.345778057340958 ], [ 34.894530375270897, -17.347274970273929 ], [ 34.89451869393659, -17.347263380014812 ], [ 34.894438130123419, -17.347174581368925 ], [ 34.894362515902834, -17.347081855064534 ], [ 34.894292058526425, -17.346985455263962 ], [ 34.894226951109985, -17.346885646198167 ], [ 34.894167372104157, -17.346782701442645 ], [ 34.894113484805423, -17.346676903167346 ], [ 34.894065436908569, -17.346568541363308 ], [ 34.894023360101947, -17.346457913047725 ], [ 34.893987369706529, -17.346345321449771 ], [ 34.893957564360043, -17.346231075179425 ], [ 34.893934025746624, -17.346115487381585 ], [ 34.893916818373043, -17.345998874877647 ], [ 34.893905989392053, -17.345881557297147 ], [ 34.893901568473275, -17.345763856201621 ], [ 34.893903567721992, -17.3456460942032 ], [ 34.893911981646049, -17.34552859408036 ], [ 34.893926787171132, -17.345411677893143 ], [ 34.893947943704113, -17.345295666100494 ], [ 34.893975393244382, -17.345180876681777 ], [ 34.894009060543098, -17.345067624265408 ], [ 34.894048853309421, -17.344956219266344 ], [ 34.894094662463672, -17.344846967035298 ], [ 34.894146362436459, -17.344740167021918 ], [ 34.894203811512831, -17.34463611195395 ], [ 34.894266852220959, -17.344535087034966 ], [ 34.894335311763747, -17.344437369162709 ], [ 34.894409002492552, -17.344343226170164 ], [ 34.894487722421609, -17.344252916091463 ], [ 34.894571255781663, -17.344166686454802 ], [ 34.894633955948727, -17.344108401435214 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "2.4", "pivot_quadrant": "2.4B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.896270521422032, -17.345778057340958 ], [ 34.89784433134804, -17.347383688817565 ], [ 34.897828444407587, -17.347398457340631 ], [ 34.897735983525699, -17.347475830332453 ], [ 34.897639432814358, -17.347548449964961 ], [ 34.89753905691407, -17.347616117186867 ], [ 34.897435130951216, -17.347678646521146 ], [ 34.897327939783857, -17.347735866573512 ], [ 34.897217777220966, -17.347787620502217 ], [ 34.897104945217023, -17.347833766448016 ], [ 34.896989753044323, -17.347874177923067 ], [ 34.8968725164452, -17.347908744157682 ], [ 34.896753556766491, -17.347937370403951 ], [ 34.896633200078661, -17.347959978195529 ], [ 34.896511776281947, -17.347976505562741 ], [ 34.896389618201965, -17.347986907202465 ], [ 34.896267060677431, -17.347991154602312 ], [ 34.89614443964215, -17.347989236118849 ], [ 34.896022091204195, -17.347981157009478 ], [ 34.895900350724474, -17.347966939418107 ], [ 34.895779551897398, -17.347946622314364 ], [ 34.895660025836158, -17.347920261386893 ], [ 34.895542100164981, -17.347887928890579 ], [ 34.895426098121014, -17.347849713448607 ], [ 34.89531233766828, -17.347805719809461 ], [ 34.895201130625999, -17.347756068559807 ], [ 34.89509278181383, -17.347700895793917 ], [ 34.894987588216253, -17.347640352740644 ], [ 34.894885838168513, -17.347574605348829 ], [ 34.894787810566186, -17.347503833832434 ], [ 34.894693774100759, -17.347428232176501 ], [ 34.894603986523009, -17.347348007605405 ], [ 34.894530375270897, -17.347274970273929 ], [ 34.896270521422032, -17.345778057340958 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "3.1", "pivot_quadrant": "3.1A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.913636518942788, -17.329266359662952 ], [ 34.911721763444021, -17.327270799151147 ], [ 34.914031362474837, -17.325516182075784 ], [ 34.914117900913318, -17.325634575111025 ], [ 34.914198960029665, -17.325758827177712 ], [ 34.914273137824281, -17.325886983615426 ], [ 34.914340230972627, -17.326018693164876 ], [ 34.914400055566908, -17.326153594827613 ], [ 34.914452447620299, -17.326291318855283 ], [ 34.914497263516544, -17.326431487763152 ], [ 34.914534380403744, -17.326573717364585 ], [ 34.914563696531239, -17.326717617824006 ], [ 34.914585131528675, -17.326862794725379 ], [ 34.914598626626493, -17.327008850153227 ], [ 34.914604144817197, -17.327155383783179 ], [ 34.914601670956962, -17.327301993979287 ], [ 34.914591211807391, -17.327448278894774 ], [ 34.91457279601719, -17.327593837573485 ], [ 34.914546474043796, -17.327738271048865 ], [ 34.914512318015369, -17.327881183437523 ], [ 34.914470421533231, -17.328022183024327 ], [ 34.914420899415532, -17.328160883336039 ], [ 34.914363887382741, -17.328296904200737 ], [ 34.914299541685793, -17.328429872789819 ], [ 34.914228038678019, -17.328559424639966 ], [ 34.914149574331894, -17.328685204652192 ], [ 34.914064363702025, -17.328806868065175 ], [ 34.913972640335864, -17.328924081400377 ], [ 34.913874655633592, -17.329036523376065 ], [ 34.913770678159203, -17.32914388578811 ], [ 34.913660992904397, -17.329245874354772 ], [ 34.913636518942788, -17.329266359662952 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "3.1", "pivot_quadrant": "3.1C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.909685584378018, -17.325148690849765 ], [ 34.911721763444021, -17.327270799151147 ], [ 34.909460106454006, -17.328988994353146 ], [ 34.909440549923985, -17.328967439651969 ], [ 34.909346413613996, -17.328852004133012 ], [ 34.909258696485878, -17.328731994784103 ], [ 34.909177638961573, -17.328607740551625 ], [ 34.909103463207565, -17.328479582016655 ], [ 34.909036372526053, -17.328347870461474 ], [ 34.908976550797789, -17.32821296690652 ], [ 34.908924161978199, -17.32807524112085 ], [ 34.908879349648117, -17.327935070608461 ], [ 34.908842236620366, -17.327792839573583 ], [ 34.908812924603325, -17.327648937867501 ], [ 34.908791493922287, -17.327503759919889 ], [ 34.908778003299552, -17.327357703657697 ], [ 34.908772489693582, -17.327211169414433 ], [ 34.90877496819796, -17.327064558832792 ], [ 34.908785432000194, -17.326918273763734 ], [ 34.908803852400631, -17.326772715165127 ], [ 34.908830178891286, -17.32662828200262 ], [ 34.908864339294539, -17.326485370156192 ], [ 34.908906239961134, -17.326344371335054 ], [ 34.908955766027034, -17.326205672004026 ], [ 34.90901278172857, -17.3260696523243 ], [ 34.909077130774563, -17.325936685111486 ], [ 34.909148636775029, -17.325807134813829 ], [ 34.909227103724675, -17.325681356513325 ], [ 34.909312316540387, -17.325559694952492 ], [ 34.90940404165076, -17.325442483589615 ], [ 34.909502027636492, -17.325330043684811 ], [ 34.909606005919557, -17.325222683419522 ], [ 34.909685584378018, -17.325148690849765 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "3.1", "pivot_quadrant": "3.1B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.911721763444021, -17.327270799151147 ], [ 34.913636518942788, -17.329266359662952 ], [ 34.913545900507494, -17.329342209523453 ], [ 34.91342571642943, -17.329432627237008 ], [ 34.913300770089045, -17.329516879657564 ], [ 34.913171403960227, -17.329594735846065 ], [ 34.913037972633042, -17.329665982395142 ], [ 34.912900841841903, -17.3297304240144 ], [ 34.912760387462882, -17.329787884065563 ], [ 34.912616994483479, -17.329838205046872 ], [ 34.912471055947115, -17.329881249024769 ], [ 34.912322971875888, -17.329916898012115 ], [ 34.912173148173757, -17.329945054291645 ], [ 34.912021995513982, -17.329965640683806 ], [ 34.911869928213214, -17.329978600758434 ], [ 34.911717363095775, -17.329983898989447 ], [ 34.911564718350839, -17.329981520852233 ], [ 34.911412412386156, -17.329971472863519 ], [ 34.911260862680884, -17.329953782563518 ], [ 34.911110484641192, -17.329928498440431 ], [ 34.910961690461392, -17.329895689797588 ], [ 34.910814887993944, -17.32985544656341 ], [ 34.910670479631406, -17.329807879044964 ], [ 34.910528861203304, -17.329753117625536 ], [ 34.910390420890941, -17.329691312407235 ], [ 34.910255538163376, -17.329622632799548 ], [ 34.910124582737076, -17.329547267054856 ], [ 34.909997913562464, -17.329465421752481 ], [ 34.90987587783988, -17.3293773212323 ], [ 34.909758810067963, -17.329283206979852 ], [ 34.909647031126617, -17.329183336964235 ], [ 34.90954084739743, -17.329077984931061 ], [ 34.909460106454006, -17.328988994353146 ], [ 34.911721763444021, -17.327270799151147 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "3.2", "pivot_quadrant": "3.2B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.906021160934294, -17.32453810278799 ], [ 34.904885066790669, -17.326570895183487 ], [ 34.904806230599256, -17.326530749763023 ], [ 34.904701047182016, -17.326470210855359 ], [ 34.904599306688482, -17.326404467496388 ], [ 34.904501287988097, -17.326333699888984 ], [ 34.904407259747913, -17.32625810200749 ], [ 34.904317479696211, -17.32617788106592 ], [ 34.904232193915959, -17.326093256949981 ], [ 34.904151636170468, -17.326004461614346 ], [ 34.904076027262448, -17.325911738446724 ], [ 34.90400557442895, -17.325815341600823 ], [ 34.903940470773314, -17.32571553529953 ], [ 34.903880894735885, -17.325612593110719 ], [ 34.903827009605024, -17.325506797197328 ], [ 34.90377896306962, -17.325398437543917 ], [ 34.903736886814265, -17.32528781116179 ], [ 34.903700896158483, -17.325175221274797 ], [ 34.903671089740698, -17.325060976488256 ], [ 34.903647549248021, -17.324945389942979 ], [ 34.903630339192389, -17.324828778456951 ], [ 34.903619506733925, -17.324711461656918 ], [ 34.90361508155182, -17.324593761102271 ], [ 34.903617075763009, -17.324475999403674 ], [ 34.903625483889194, -17.324358499338782 ], [ 34.903640282871983, -17.324241582967488 ], [ 34.903661432136161, -17.324125570749231 ], [ 34.903688873701093, -17.324010780664615 ], [ 34.903722532339778, -17.323897527343828 ], [ 34.903762315785151, -17.323786121204328 ], [ 34.903808114983079, -17.323676867599978 ], [ 34.903859804391431, -17.323570065984185 ], [ 34.903896908377526, -17.323502846894009 ], [ 34.906021160934294, -17.32453810278799 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "3.2", "pivot_quadrant": "3.2D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.906021160934294, -17.32453810278799 ], [ 34.907099870341185, -17.322607987848503 ], [ 34.907107996990085, -17.322612126146115 ], [ 34.907213178728831, -17.322672663949191 ], [ 34.907314917813316, -17.322738406113043 ], [ 34.907412935389594, -17.322809172447901 ], [ 34.907506962802877, -17.322884768993358 ], [ 34.907596742334007, -17.322964988550062 ], [ 34.907682027905636, -17.323049611247448 ], [ 34.907762585756814, -17.323138405146423 ], [ 34.907838195083627, -17.323231126874965 ], [ 34.907908648644458, -17.32332752229518 ], [ 34.907973753328015, -17.323427327199781 ], [ 34.908033330682649, -17.323530268036201 ], [ 34.908087217405573, -17.323636062656309 ], [ 34.908135265790484, -17.323744421089724 ], [ 34.908177344132525, -17.323855046338515 ], [ 34.908213337089279, -17.323967635191241 ], [ 34.908243145997119, -17.324081879053907 ], [ 34.908266689141676, -17.324197464795841 ], [ 34.908283901981953, -17.324314075607841 ], [ 34.908294737327296, -17.324431391870569 ], [ 34.908299165466907, -17.324549092030502 ], [ 34.908297174251452, -17.324666853481297 ], [ 34.908288769126365, -17.324784353448031 ], [ 34.908273973117211, -17.32490126987188 ], [ 34.908252826766599, -17.325017282292816 ], [ 34.908225388023233, -17.325132072728039 ], [ 34.908191732083218, -17.325245326543502 ], [ 34.908151951184053, -17.32535673331634 ], [ 34.908106154351955, -17.325465987685721 ], [ 34.908071600970572, -17.325537386101097 ], [ 34.906021160934294, -17.32453810278799 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "3.2", "pivot_quadrant": "3.2A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.904885066790669, -17.326570895183487 ], [ 34.906021160934294, -17.32453810278799 ], [ 34.908071600970572, -17.325537386101097 ], [ 34.908054467103149, -17.325572790189899 ], [ 34.90799703109991, -17.325676848086957 ], [ 34.907934003762392, -17.325777876157318 ], [ 34.907865557837262, -17.325875597485545 ], [ 34.907791880924258, -17.325969744219353 ], [ 34.907713174962034, -17.326060058303852 ], [ 34.907629655674789, -17.326146292188934 ], [ 34.907541551980941, -17.326228209507818 ], [ 34.907449105365721, -17.326305585725002 ], [ 34.907352569219306, -17.326378208751755 ], [ 34.907252208142296, -17.32644587952749 ], [ 34.907148297220381, -17.326508412565456 ], [ 34.90704112127046, -17.326565636461215 ], [ 34.906930974059705, -17.326617394362458 ], [ 34.906818157500545, -17.326663544399111 ], [ 34.906702980822907, -17.326703960072088 ], [ 34.906585759726646, -17.326738530600174 ], [ 34.906466815516076, -17.326767161223724 ], [ 34.906346474219269, -17.326789773464377 ], [ 34.906225065694215, -17.326806305340277 ], [ 34.906102922724692, -17.326816711535912 ], [ 34.905980380107977, -17.326820963526419 ], [ 34.905857773736962, -17.326819049655761 ], [ 34.905735439679553, -17.326810975168716 ], [ 34.905613713257182, -17.326796762196473 ], [ 34.905492928125767, -17.326776449696034 ], [ 34.905373415360891, -17.326750093343406 ], [ 34.905255502550368, -17.326717765380913 ], [ 34.905139512896064, -17.326679554419297 ], [ 34.90502576432803, -17.326635565194774 ], [ 34.904914568632925, -17.326585918281896 ], [ 34.904885066790669, -17.326570895183487 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "3.3", "pivot_quadrant": "3.3B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.900551100160158, -17.32491517010353 ], [ 34.900776626466843, -17.327745490872061 ], [ 34.900656786239431, -17.327755697621463 ], [ 34.900504221756528, -17.327760987206652 ], [ 34.900351578120073, -17.327758600371943 ], [ 34.900199273734728, -17.327748543657901 ], [ 34.900047726075364, -17.327730844628654 ], [ 34.899897350542489, -17.327705551796367 ], [ 34.899748559323548, -17.327672734488232 ], [ 34.899601760262883, -17.327632482656444 ], [ 34.899457355743735, -17.327584906631635 ], [ 34.899315741585028, -17.327530136820421 ], [ 34.899177305956393, -17.327468323347929 ], [ 34.899042428314019, -17.327399635646241 ], [ 34.898911478360418, -17.327324261989983 ], [ 34.898784815031014, -17.327242408980108 ], [ 34.898662785510126, -17.327154300977668 ], [ 34.898545724279373, -17.32706017948869 ], [ 34.898433952200669, -17.326960302502119 ], [ 34.898327775636837, -17.326854943782664 ], [ 34.898227485611763, -17.326744392120304 ], [ 34.898133357012782, -17.326628950538552 ], [ 34.898045647837129, -17.326508935463988 ], [ 34.897964598484933, -17.32638467585863 ], [ 34.897890431100279, -17.32625651231832 ], [ 34.897823348962419, -17.326124796139013 ], [ 34.897763535928661, -17.325989888353835 ], [ 34.897711155930615, -17.325852158743412 ], [ 34.897666352524929, -17.325711984822245 ], [ 34.897629248499918, -17.325569750803872 ], [ 34.897599945539312, -17.325425846547741 ], [ 34.897578523943601, -17.325280666490528 ], [ 34.897565743794004, -17.325142207305205 ], [ 34.900551100160158, -17.32491517010353 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "3.3", "pivot_quadrant": "3.3D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.900551100160158, -17.32491517010353 ], [ 34.900331858463275, -17.322163720229909 ], [ 34.900446486600295, -17.322159746280438 ], [ 34.900599125593352, -17.322162133497788 ], [ 34.900751425327122, -17.322172190362547 ], [ 34.900902968377679, -17.322189889308945 ], [ 34.901053339395013, -17.322215181825705 ], [ 34.901202126241159, -17.322247998589095 ], [ 34.901348921119656, -17.322288249652903 ], [ 34.901493321693145, -17.3223358246949 ], [ 34.901634932185885, -17.322390593319241 ], [ 34.901773364468404, -17.322452405413809 ], [ 34.901908239121205, -17.322521091561601 ], [ 34.902039186474497, -17.322596463505029 ], [ 34.902165847621376, -17.322678314661896 ], [ 34.902287875401406, -17.322766420691451 ], [ 34.902404935352081, -17.322860540109318 ], [ 34.90251670662547, -17.322960414949193 ], [ 34.902622882867597, -17.323065771469913 ], [ 34.902723173058085, -17.323176320905603 ], [ 34.90281730230781, -17.323291760257099 ], [ 34.902905012612401, -17.323411773122313 ], [ 34.902986063559332, -17.323536030563393 ], [ 34.903060232987073, -17.323664192008231 ], [ 34.903127317593992, -17.323795906183808 ], [ 34.903187133495692, -17.323930812078967 ], [ 34.903239516729194, -17.324068539933798 ], [ 34.90328432370238, -17.324208712253018 ], [ 34.903321431587827, -17.324350944840624 ], [ 34.903350738659526, -17.32449484785289 ], [ 34.903372164571941, -17.324640026866742 ], [ 34.90337772102832, -17.324700204781678 ], [ 34.900551100160158, -17.32491517010353 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "3.3", "pivot_quadrant": "3.3A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.900776626466843, -17.327745490872061 ], [ 34.900551100160158, -17.32491517010353 ], [ 34.90337772102832, -17.324700204781678 ], [ 34.903385650580439, -17.324786083960905 ], [ 34.903391159702402, -17.324932618806443 ], [ 34.903388676818878, -17.325079229764025 ], [ 34.903378208716227, -17.325225514984815 ], [ 34.903359784067653, -17.325371073511793 ], [ 34.903333453354918, -17.325515506378824 ], [ 34.903299288730132, -17.325658417704162 ], [ 34.903257383818179, -17.325799415775553 ], [ 34.903207853460337, -17.325938114123943 ], [ 34.903150833399678, -17.326074132582772 ], [ 34.903086479909113, -17.326207098330002 ], [ 34.903014969363383, -17.326336646910139 ], [ 34.902936497755626, -17.326462423233099 ], [ 34.902851280160384, -17.326584082547722 ], [ 34.902759550144168, -17.326701291386676 ], [ 34.902661559125448, -17.326813728480538 ], [ 34.902557575685506, -17.326921085638585 ], [ 34.902447884832448, -17.327023068593451 ], [ 34.902332787219926, -17.327119397807941 ], [ 34.902212598323182, -17.327209809241211 ], [ 34.902087647574284, -17.327294055072645 ], [ 34.901958277459215, -17.327371904381195 ], [ 34.901824842578996, -17.327443143778424 ], [ 34.901687708677741, -17.327507577993487 ], [ 34.901547251640118, -17.327565030408447 ], [ 34.90140385646086, -17.327615343542455 ], [ 34.901257916189486, -17.327658379483513 ], [ 34.901109830852782, -17.327694020266488 ], [ 34.900960006358247, -17.327722168196619 ], [ 34.900808853381278, -17.327742746117259 ], [ 34.900776626466843, -17.327745490872061 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.1", "pivot_quadrant": "4.1B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.886782334569538, -17.326739205117487 ], [ 34.887703979851366, -17.329372879634846 ], [ 34.8876643191578, -17.329386792202165 ], [ 34.887518373215272, -17.329429818514686 ], [ 34.887370282716603, -17.329465449470245 ], [ 34.88722045358341, -17.329493587401011 ], [ 34.887069296503846, -17.329514155177758 ], [ 34.886917225806691, -17.329527096421376 ], [ 34.886764658325532, -17.329532375657408 ], [ 34.886612012256101, -17.329529978413341 ], [ 34.886459706009731, -17.329519911258302 ], [ 34.886308157066374, -17.329502201785065 ], [ 34.886157780830047, -17.329476898534416 ], [ 34.886008989490165, -17.32944407086211 ], [ 34.885862190891373, -17.32940380874879 ], [ 34.885717787415615, -17.329356222553258 ], [ 34.88557617487897, -17.329301442710033 ], [ 34.885437741446637, -17.32923961937173 ], [ 34.885302866568736, -17.329170921997534 ], [ 34.885171919940205, -17.32909553888852 ], [ 34.885045260487331, -17.329013676671618 ], [ 34.884923235383837, -17.328925559733097 ], [ 34.884806179099137, -17.328831429603483 ], [ 34.884694412481636, -17.328731544295415 ], [ 34.88458824187915, -17.328626177596401 ], [ 34.884487958299232, -17.328515618318296 ], [ 34.884393836611494, -17.328400169505525 ], [ 34.884306134794222, -17.328280147604413 ], [ 34.884225093227393, -17.328155881595727 ], [ 34.884150934033698, -17.328027712092847 ], [ 34.884083860469936, -17.327895990408074 ], [ 34.884024056369917, -17.327761077589614 ], [ 34.883971685640724, -17.327623343431874 ], [ 34.883964047061163, -17.327599439232444 ], [ 34.886782334569538, -17.326739205117487 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.1", "pivot_quadrant": "4.1D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.886782334569538, -17.326739205117487 ], [ 34.885846577829994, -17.324065205990067 ], [ 34.885953641947083, -17.324033642826574 ], [ 34.886101728582837, -17.323998013298716 ], [ 34.886251553602811, -17.323969876608579 ], [ 34.886402706363931, -17.323949309871807 ], [ 34.886554772584716, -17.32393636945611 ], [ 34.886707335480622, -17.323931090826889 ], [ 34.88685997690618, -17.323933488449978 ], [ 34.887012278500904, -17.323943555752123 ], [ 34.887163822835845, -17.323961265138948 ], [ 34.887314194557419, -17.323986568070588 ], [ 34.887462981525729, -17.324019395194775 ], [ 34.887609775944007, -17.324059656536921 ], [ 34.887754175476097, -17.324107241746617 ], [ 34.887895784349141, -17.324162020400173 ], [ 34.888034214438093, -17.324223842358005 ], [ 34.888169086329441, -17.324292538176074 ], [ 34.88830003036098, -17.324367919570307 ], [ 34.888426687634862, -17.324449779932586 ], [ 34.888548711001285, -17.324537894896967 ], [ 34.888665766009801, -17.324632022954553 ], [ 34.888777531826008, -17.324731906115399 ], [ 34.888883702110896, -17.324837270615532 ], [ 34.888983985860385, -17.324947827667181 ], [ 34.88907810820298, -17.325063274250319 ], [ 34.889165811153212, -17.325183293943041 ], [ 34.889246854318749, -17.325307557788776 ], [ 34.889321015559332, -17.325435725197845 ], [ 34.889388091595755, -17.325567444880889 ], [ 34.889447898567113, -17.325702355811647 ], [ 34.88950027253486, -17.325840088216371 ], [ 34.889520512970037, -17.325903422939145 ], [ 34.886782334569538, -17.326739205117487 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.1", "pivot_quadrant": "4.1A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.887703979851366, -17.329372879634846 ], [ 34.886782334569538, -17.326739205117487 ], [ 34.889520512970037, -17.325903422939145 ], [ 34.889545069932325, -17.325980264587329 ], [ 34.889582167958245, -17.326122500717403 ], [ 34.889611464913656, -17.326266406753103 ], [ 34.889632880480761, -17.326411588263088 ], [ 34.889646355943256, -17.326557647319234 ], [ 34.889651854347427, -17.326704183587182 ], [ 34.889649360603691, -17.326850795423734 ], [ 34.889638881528178, -17.326997080977577 ], [ 34.889620445824171, -17.327142639290791 ], [ 34.889594104003734, -17.327287071397805 ], [ 34.889559928249412, -17.327429981418941 ], [ 34.889518012216612, -17.327570977645536 ], [ 34.889468470777103, -17.327709673613544 ], [ 34.889411439704311, -17.32784568916291 ], [ 34.889347075301409, -17.327978651479597 ], [ 34.889275553972986, -17.328108196117469 ], [ 34.889197071741769, -17.328233967997264 ], [ 34.88911184371144, -17.328355622379977 ], [ 34.889020103477137, -17.32847282581178 ], [ 34.888922102485324, -17.328585257038089 ], [ 34.888818109344669, -17.328692607884239 ], [ 34.888708409089844, -17.328794584100173 ], [ 34.888593302400324, -17.328890906167157 ], [ 34.888473104776217, -17.328981310063959 ], [ 34.888348145673561, -17.329065547990599 ], [ 34.888218767601209, -17.329143389047712 ], [ 34.888085325182047, -17.329214619869479 ], [ 34.887948184180871, -17.329279045208576 ], [ 34.887807720501797, -17.329336488471384 ], [ 34.887703979851366, -17.329372879634846 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "4.2", "pivot_quadrant": "4.2A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.894318941931957, -17.326404205007993 ], [ 34.892592473294087, -17.324940604483569 ], [ 34.89423852225147, -17.323363284353789 ], [ 34.894279290997311, -17.323403741786901 ], [ 34.894359843150291, -17.323492541716824 ], [ 34.894435446447254, -17.323585269172604 ], [ 34.894505893663094, -17.323681670000639 ], [ 34.894570991703901, -17.323781479978805 ], [ 34.894630562136221, -17.323884425540623 ], [ 34.894684441676247, -17.32399022452503 ], [ 34.894732482637338, -17.32409858694966 ], [ 34.894774553334969, -17.324209215805645 ], [ 34.8948105384477, -17.324321807871623 ], [ 34.894840339333385, -17.324436054544822 ], [ 34.894863874299624, -17.324551642686835 ], [ 34.894881078827837, -17.324668255481892 ], [ 34.894891905750164, -17.324785573305192 ], [ 34.89489632537888, -17.32490327459891 ], [ 34.894894325587956, -17.325021036753622 ], [ 34.894885911846373, -17.325138536992469 ], [ 34.894871107203294, -17.325255453255821 ], [ 34.894849952224995, -17.325371465084146 ], [ 34.894822504883827, -17.325486254496205 ], [ 34.894788840399457, -17.32559950686079 ], [ 34.894749051032846, -17.325710911758964 ], [ 34.894703245833377, -17.325820163835068 ], [ 34.894651550340264, -17.325926963633588 ], [ 34.894594106238337, -17.326031018420061 ], [ 34.89453107096999, -17.326132042983406 ], [ 34.894462617303638, -17.326229760417807 ], [ 34.894388932860224, -17.326323902881626 ], [ 34.894318941931957, -17.326404205007993 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "4.2", "pivot_quadrant": "4.2C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.890807409243124, -17.32342733014784 ], [ 34.892592473294087, -17.324940604483569 ], [ 34.890923514244896, -17.32653987812137 ], [ 34.890914484047336, -17.32653180828056 ], [ 34.890829203620619, -17.3264471778465 ], [ 34.890748651575883, -17.326358376480158 ], [ 34.890673048700258, -17.326265647585799 ], [ 34.890602602214209, -17.326169245332796 ], [ 34.890537505203675, -17.326069433958875 ], [ 34.890477936090804, -17.325966487045811 ], [ 34.890424058144973, -17.325860686769481 ], [ 34.890376019035322, -17.325752323126384 ], [ 34.890333950426125, -17.325641693138767 ], [ 34.890297967615908, -17.325529100040367 ], [ 34.890268169221613, -17.32541485244527 ], [ 34.890244636908328, -17.325299263501982 ], [ 34.890227435165592, -17.325182650035078 ], [ 34.890216611130739, -17.325065331676697 ], [ 34.890212194459821, -17.324947629990511 ], [ 34.890214197246515, -17.324829867590271 ], [ 34.890222613988975, -17.324712367255533 ], [ 34.890237421605185, -17.324595451046935 ], [ 34.890258579496297, -17.324479439423452 ], [ 34.890286029658014, -17.324364650364053 ], [ 34.890319696839796, -17.324251398496109 ], [ 34.890359488751137, -17.324139994233082 ], [ 34.890405296314732, -17.324030742923696 ], [ 34.890456993965522, -17.323923944015053 ], [ 34.890514439994988, -17.323819890231881 ], [ 34.890577476939619, -17.32371886677425 ], [ 34.890645932012674, -17.323621150535875 ], [ 34.89071961757778, -17.323527009345277 ], [ 34.890798331663291, -17.323436701231689 ], [ 34.890807409243124, -17.32342733014784 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "4.2", "pivot_quadrant": "4.2B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.892592473294087, -17.324940604483569 ], [ 34.894318941931957, -17.326404205007993 ], [ 34.894310219599099, -17.326414212331692 ], [ 34.894226693264422, -17.326500441230607 ], [ 34.89413858279395, -17.326582353225231 ], [ 34.89404612969151, -17.32665972379467 ], [ 34.893949587365086, -17.326732340865671 ], [ 34.893849220432202, -17.326800005393974 ], [ 34.893745303994642, -17.32686253190996 ], [ 34.893638122884369, -17.326919749027052 ], [ 34.893527970882786, -17.326971499911568 ], [ 34.893415149915398, -17.327017642712615 ], [ 34.893299969224287, -17.327058050950988 ], [ 34.893182744520246, -17.327092613865844 ], [ 34.893063797117513, -17.327121236718394 ], [ 34.892943453052915, -17.327143841051626 ], [ 34.892822042192059, -17.327160364905325 ], [ 34.892699897325102, -17.327170762986 ], [ 34.892577353254502, -17.327175006791023 ], [ 34.892454745877195, -17.327173084686827 ], [ 34.892332411263794, -17.327165001940749 ], [ 34.892210684737286, -17.327150780706638 ], [ 34.892089899953852, -17.327130459964124 ], [ 34.891970387988138, -17.32710409541183 ], [ 34.89185247642574, -17.327071759314567 ], [ 34.891736488465099, -17.327033540305397 ], [ 34.89162274203165, -17.32698954314257 ], [ 34.891511548906152, -17.326939888422402 ], [ 34.891403213870092, -17.326884712248685 ], [ 34.891298033870221, -17.326824165859591 ], [ 34.891196297204459, -17.326758415213135 ], [ 34.891098282731733, -17.326687640532139 ], [ 34.891004259107483, -17.326612035810371 ], [ 34.890923514244896, -17.32653987812137 ], [ 34.892592473294087, -17.324940604483569 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 239.0, "radius": 276, "pivot": "4.4", "pivot_quadrant": "4.4B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.901510659033576, -17.318761975282452 ], [ 34.90279052743562, -17.320898850353373 ], [ 34.902695969314003, -17.320949335742025 ], [ 34.902573880267774, -17.32100670306102 ], [ 34.90244883266864, -17.321057854335081 ], [ 34.902321169272682, -17.321102649355964 ], [ 34.902191240006921, -17.321140965337896 ], [ 34.902059401010106, -17.321172697254248 ], [ 34.901926013656272, -17.321197758125358 ], [ 34.901791443564306, -17.321216079257098 ], [ 34.90165605959551, -17.32122761042908 ], [ 34.901520232842493, -17.321232320032479 ], [ 34.901384335611887, -17.321230195156613 ], [ 34.901248740403666, -17.321221241624368 ], [ 34.901113818890003, -17.321205483976261 ], [ 34.900979940896406, -17.321182965403178 ], [ 34.900847473387834, -17.321153747627999 ], [ 34.900716779462755, -17.321117910736373 ], [ 34.900588217357772, -17.321075552957247 ], [ 34.900462139465517, -17.321026790393535 ], [ 34.900338891368634, -17.320971756703898 ], [ 34.900218810892511, -17.320910602736351 ], [ 34.900102227179111, -17.32084349611473 ], [ 34.899989459784749, -17.320770620779172 ], [ 34.899880817804124, -17.320692176481966 ], [ 34.899776599023014, -17.320608378239882 ], [ 34.899677089102028, -17.320519455744826 ], [ 34.899582560793547, -17.320425652734166 ], [ 34.899493273194146, -17.320327226322597 ], [ 34.89940947103441, -17.32022444629732 ], [ 34.899331384008093, -17.320117594378495 ], [ 34.899259226142632, -17.320006963446986 ], [ 34.89921991385566, -17.319939028684551 ], [ 34.901510659033576, -17.318761975282452 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "4.3", "pivot_quadrant": "4.3B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.896432140987109, -17.321371469783127 ], [ 34.89747695456991, -17.323348411891939 ], [ 34.897469679008267, -17.323352296088142 ], [ 34.897359530326881, -17.323404048785928 ], [ 34.897246712631812, -17.32345019345582 ], [ 34.897131535156085, -17.323490603613518 ], [ 34.897014313601751, -17.323525168492896 ], [ 34.896895369274397, -17.323553793349777 ], [ 34.896775028202391, -17.323576399721649 ], [ 34.896653620243129, -17.323592925642721 ], [ 34.896531478178844, -17.323603325813824 ], [ 34.896408936804313, -17.323607571726608 ], [ 34.896286332009041, -17.323605651741715 ], [ 34.896163999856569, -17.323597571120658 ], [ 34.89604227566317, -17.323583352011493 ], [ 34.895921493078589, -17.323563033388012 ], [ 34.895801983171467, -17.32353667094301 ], [ 34.895684073521728, -17.323504336935521 ], [ 34.895568087322616, -17.32346611999289 ], [ 34.895454342494695, -17.323422124867694 ], [ 34.895343150814341, -17.323372472150655 ], [ 34.895234817059112, -17.32331729794009 ], [ 34.895129638172165, -17.323256753468765 ], [ 34.895027902448454, -17.323191004689452 ], [ 34.894929888744272, -17.323120231819857 ], [ 34.894835865713006, -17.323044628848749 ], [ 34.894746091068598, -17.3229644030041 ], [ 34.894660810879273, -17.322879774185061 ], [ 34.894580258892958, -17.322790974359165 ], [ 34.894504655896569, -17.322698246926471 ], [ 34.894434209110955, -17.322601846052333 ], [ 34.894369111622865, -17.3225020359707 ], [ 34.894337657341168, -17.322447678138754 ], [ 34.896432140987109, -17.321371469783127 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 239.0, "radius": 276, "pivot": "4.4", "pivot_quadrant": "4.4D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.901510659033576, -17.318761975282452 ], [ 34.900201998898332, -17.316577029381111 ], [ 34.900293113953509, -17.316528382885895 ], [ 34.900415201043664, -17.316471017154804 ], [ 34.900540246370653, -17.316419867378574 ], [ 34.900667907203236, -17.316375073749036 ], [ 34.900797833642493, -17.316336759036712 ], [ 34.900929669580677, -17.316305028254352 ], [ 34.90106305367722, -17.316279968369155 ], [ 34.90119762034896, -17.316261648064486 ], [ 34.901333000772034, -17.316250117551629 ], [ 34.901468823892699, -17.316245408432209 ], [ 34.901604717444123, -17.316247533611602 ], [ 34.90174030896663, -17.316256487263608 ], [ 34.901875226828437, -17.316272244846392 ], [ 34.90200910124404, -17.316294763169765 ], [ 34.902141565287693, -17.316323980513619 ], [ 34.902272255898858, -17.316359816796982 ], [ 34.902400814877282, -17.31640217379762 ], [ 34.902526889864582, -17.316450935421123 ], [ 34.902650135309905, -17.31650596801914 ], [ 34.902770213416957, -17.316567120755611 ], [ 34.902886795069712, -17.316634226020188 ], [ 34.902999560734415, -17.316707099887594 ], [ 34.903108201335357, -17.316785542621652 ], [ 34.903212419101848, -17.316869339222688 ], [ 34.903311928384397, -17.316958260016797 ], [ 34.903406456437629, -17.317052061285217 ], [ 34.903495744167735, -17.317150485932377 ], [ 34.903579546842757, -17.317253264190409 ], [ 34.903657634763242, -17.317360114358475 ], [ 34.903729793891969, -17.317470743574912 ], [ 34.903795826440607, -17.317584848619777 ], [ 34.903797012928912, -17.317587178252715 ], [ 34.901510659033576, -17.318761975282452 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 239.0, "radius": 276, "pivot": "4.4", "pivot_quadrant": "4.4A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.90279052743562, -17.320898850353373 ], [ 34.901510659033576, -17.318761975282452 ], [ 34.903797012928912, -17.317587178252715 ], [ 34.903855551411873, -17.317702116745874 ], [ 34.903908805095746, -17.317822226535956 ], [ 34.903955441518242, -17.317944848783579 ], [ 34.90399533284166, -17.318069647395419 ], [ 34.904028369715036, -17.318196280312364 ], [ 34.904054461574034, -17.318324400447054 ], [ 34.904073536889292, -17.318453656635143 ], [ 34.904085543362676, -17.31858369459782 ], [ 34.904090448070683, -17.318714157912751 ], [ 34.90408823755498, -17.318844688991089 ], [ 34.904078917859259, -17.318974930057436 ], [ 34.904062514513072, -17.319104524130601 ], [ 34.904039072461806, -17.319233116001957 ], [ 34.904008655943819, -17.319360353209095 ], [ 34.90397134831445, -17.31948588700191 ], [ 34.903927251817677, -17.319609373298508 ], [ 34.903876487306093, -17.319730473628336 ], [ 34.903819193909769, -17.319848856059931 ], [ 34.903755528655026, -17.319964196110821 ], [ 34.903685666034164, -17.320076177636885 ], [ 34.903609797527295, -17.320184493698932 ], [ 34.903528131077636, -17.320288847404175 ], [ 34.903440890521551, -17.320388952719917 ], [ 34.903348314975204, -17.320484535257712 ], [ 34.903250658179061, -17.320575333025491 ], [ 34.903148187802621, -17.320661097145702 ], [ 34.903041184710538, -17.320741592537622 ], [ 34.902929942192998, -17.320816598561695 ], [ 34.902814765161672, -17.320885909624447 ], [ 34.90279052743562, -17.320898850353373 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "4.3", "pivot_quadrant": "4.3D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.896432140987109, -17.321371469783127 ], [ 34.895357321246472, -17.319337751577674 ], [ 34.895412100380852, -17.319312014200012 ], [ 34.895524916225504, -17.319265870748787 ], [ 34.895640091613821, -17.319225461723033 ], [ 34.895757310866635, -17.319190897876435 ], [ 34.89587625270358, -17.319162273941881 ], [ 34.895996591123556, -17.319139668371751 ], [ 34.896117996298237, -17.319123143123075 ], [ 34.8962401354759, -17.319112743487636 ], [ 34.8963626738934, -17.319108497967935 ], [ 34.896485275693607, -17.31911041819901 ], [ 34.896607604845812, -17.319118498916652 ], [ 34.896729326066612, -17.319132717971751 ], [ 34.896850105738828, -17.319153036391111 ], [ 34.896969612825721, -17.31917939848416 ], [ 34.897087519778275, -17.319211731995729 ], [ 34.897203503432799, -17.31924994830392 ], [ 34.897317245896588, -17.319293942663073 ], [ 34.897428435419187, -17.319343594490885 ], [ 34.897536767246699, -17.319398767698779 ], [ 34.897641944457035, -17.319459311064964 ], [ 34.897743678773672, -17.319525058648797 ], [ 34.897841691355659, -17.319595830245646 ], [ 34.897935713561985, -17.3196714318807 ], [ 34.898025487687661, -17.319751656340614 ], [ 34.898110767670225, -17.319836283741424 ], [ 34.898191319763967, -17.319925082131114 ], [ 34.89826692318082, -17.320017808125392 ], [ 34.898337370695316, -17.320114207574626 ], [ 34.898402469212712, -17.320214016260511 ], [ 34.898462040298284, -17.32031696062009 ], [ 34.898466676679575, -17.320326064479389 ], [ 34.896432140987109, -17.321371469783127 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "4.3", "pivot_quadrant": "4.3A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.89747695456991, -17.323348411891939 ], [ 34.896432140987109, -17.321371469783127 ], [ 34.898466676679575, -17.320326064479389 ], [ 34.898515920666433, -17.320422758495592 ], [ 34.898563962628245, -17.320531119907688 ], [ 34.898606034496453, -17.320641747850299 ], [ 34.898642020946426, -17.320754339104575 ], [ 34.898671823332343, -17.320868585069945 ], [ 34.898695359957713, -17.320984172609954 ], [ 34.898712566299402, -17.321100784910492 ], [ 34.898723395184547, -17.321218102348105 ], [ 34.898727816920108, -17.321335803366054 ], [ 34.89872581937427, -17.32145356535565 ], [ 34.898717408009844, -17.321571065540464 ], [ 34.898702605869474, -17.321687981861071 ], [ 34.898681453512594, -17.321803993857738 ], [ 34.898654008904387, -17.321918783548817 ], [ 34.898620347257008, -17.322032036302279 ], [ 34.898580560823632, -17.322143441698167 ], [ 34.898534758645638, -17.322252694379447 ], [ 34.898483066253917, -17.322359494888957 ], [ 34.89842562532484, -17.322463550490273 ], [ 34.898362593292084, -17.322564575970105 ], [ 34.898294142915205, -17.322662294420091 ], [ 34.89822046180609, -17.322756437995842 ], [ 34.898141751914984, -17.322846748651152 ], [ 34.89805822897678, -17.322932978845273 ], [ 34.897970121919982, -17.323014892221561 ], [ 34.897877672239005, -17.323092264255322 ], [ 34.897781133332444, -17.323164882869285 ], [ 34.897680769808474, -17.323232549014975 ], [ 34.897576856759528, -17.323295077218333 ], [ 34.89747695456991, -17.323348411891939 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.5", "pivot_quadrant": "4.5A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.895433867295488, -17.318895605322869 ], [ 34.893769553711472, -17.316586264213559 ], [ 34.896250865251233, -17.315043362242964 ], [ 34.896318457119754, -17.315146999772502 ], [ 34.896392618163802, -17.315275164603293 ], [ 34.896459694535324, -17.315406881910381 ], [ 34.896519502372527, -17.315541790673997 ], [ 34.896571877734488, -17.31567952112637 ], [ 34.896616677050702, -17.315819695765096 ], [ 34.896653777514736, -17.315961930387815 ], [ 34.896683077420903, -17.316105835145184 ], [ 34.896704496443341, -17.316251015609364 ], [ 34.896717975856284, -17.316397073855079 ], [ 34.896723478695229, -17.316543609550223 ], [ 34.896720989858451, -17.316690221053168 ], [ 34.896710516148602, -17.316836506513539 ], [ 34.896692086254312, -17.316982064973665 ], [ 34.896665750671708, -17.317126497467576 ], [ 34.896631581566275, -17.317269408114562 ], [ 34.896589672575168, -17.317410405204214 ], [ 34.89654013855089, -17.317549102270181 ], [ 34.896483115246532, -17.317685119149388 ], [ 34.896418758943973, -17.317818083024147 ], [ 34.89634724602562, -17.317947629444067 ], [ 34.896268772491148, -17.318073403325023 ], [ 34.896183553420386, -17.318195059922527 ], [ 34.896091822383909, -17.31831226577669 ], [ 34.895993830802993, -17.318424699626295 ], [ 34.89588984726047, -17.318532053289481 ], [ 34.895780156764722, -17.318634032508506 ], [ 34.895665059968458, -17.31873035775638 ], [ 34.895544872344658, -17.31882076500316 ], [ 34.895433867295488, -17.318895605322869 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.5", "pivot_quadrant": "4.5C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.892115685045027, -17.314291416092694 ], [ 34.893769553711472, -17.316586264213559 ], [ 34.891356570129695, -17.318086679241528 ], [ 34.891297083615598, -17.317995466139099 ], [ 34.891222924615022, -17.317867299214686 ], [ 34.891155850712593, -17.317735579905825 ], [ 34.891096045743055, -17.317600669254201 ], [ 34.891043673615911, -17.31746293704829 ], [ 34.890998877866231, -17.317322760809684 ], [ 34.890961781261367, -17.317180524758289 ], [ 34.890932485464695, -17.317036618759101 ], [ 34.890911070757085, -17.31689143725356 ], [ 34.890897595817023, -17.316745378178336 ], [ 34.890892097560027, -17.316598841874647 ], [ 34.890894591037593, -17.316452229990769 ], [ 34.890905069396219, -17.316305944381273 ], [ 34.890923503896353, -17.316160386005446 ], [ 34.8909498439914, -17.316015953828344 ], [ 34.890984017466458, -17.315873043727201 ], [ 34.891025930636467, -17.315732047406435 ], [ 34.891075468603169, -17.315593351324001 ], [ 34.89113249557024, -17.315457335632171 ], [ 34.891196855215718, -17.315324373135638 ], [ 34.891268371120539, -17.315194828269686 ], [ 34.891346847252301, -17.315069056101418 ], [ 34.891432068502752, -17.314947401356562 ], [ 34.891523801277408, -17.314830197474695 ], [ 34.891621794135965, -17.314717765695455 ], [ 34.891725778481565, -17.314610414177974 ], [ 34.891835469297064, -17.314508437156523 ], [ 34.891950565926237, -17.314412114133994 ], [ 34.892070752897929, -17.314321709115958 ], [ 34.892115685045027, -17.314291416092694 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.5", "pivot_quadrant": "4.5B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.893769553711472, -17.316586264213559 ], [ 34.895433867295488, -17.318895605322869 ], [ 34.895419923321938, -17.318905006439724 ], [ 34.895290555381528, -17.318982851157038 ], [ 34.895157123118501, -17.319054085779275 ], [ 34.895019992269809, -17.319118515048697 ], [ 34.894879538711734, -17.319175962360919 ], [ 34.894736147429491, -17.319226270249096 ], [ 34.894590211461896, -17.319269300815598 ], [ 34.894442130823954, -17.319304936110047 ], [ 34.894292311410268, -17.319333078452726 ], [ 34.894141163882288, -17.319353650702329 ], [ 34.893989102542648, -17.319366596467447 ], [ 34.89383654419926, -17.31937188026124 ], [ 34.893683907022783, -17.319369487598706 ], [ 34.893531609400171, -17.319359425036396 ], [ 34.893380068787728, -17.319341720154483 ], [ 34.893229700566629, -17.319316421481151 ], [ 34.893080916904303, -17.31928359835964 ], [ 34.892934125624336, -17.319243340758049 ], [ 34.892789729088619, -17.319195759022865 ], [ 34.892648123094212, -17.319140983576336 ], [ 34.892509695788348, -17.319079164559028 ], [ 34.892374826604382, -17.319010471418256 ], [ 34.892243885221639, -17.318935092443517 ], [ 34.892117230552039, -17.318853234250383 ], [ 34.891995209756132, -17.318765121214074 ], [ 34.891878157291615, -17.318670994854429 ], [ 34.891766393996384, -17.318571113173732 ], [ 34.891660226209176, -17.31846574994956 ], [ 34.89155994492981, -17.318355193984225 ], [ 34.891465825021619, -17.318239748313058 ], [ 34.891378124458043, -17.318119729373805 ], [ 34.891356570129695, -17.318086679241528 ], [ 34.893769553711472, -17.316586264213559 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.6", "pivot_quadrant": "4.6B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.899440097999843, -17.313485312578923 ], [ 34.897682148973075, -17.31561157677756 ], [ 34.89767166812657, -17.315604008707908 ], [ 34.897554615295256, -17.315509885726271 ], [ 34.897442851360346, -17.315410007298045 ], [ 34.897336682662356, -17.315304647191873 ], [ 34.897236400203575, -17.315194094201519 ], [ 34.897142278850595, -17.31507865135416 ], [ 34.897054576580814, -17.314958635079801 ], [ 34.896973533775437, -17.314834374343764 ], [ 34.89689937256059, -17.314706209744962 ], [ 34.896832296198639, -17.314574492582278 ], [ 34.89677248853107, -17.314439583891517 ], [ 34.896720113474764, -17.314301853455778 ], [ 34.89667531457286, -17.314161678791795 ], [ 34.896638214601346, -17.314019444115193 ], [ 34.896608915232846, -17.313875539287164 ], [ 34.896587496758009, -17.313730358745971 ], [ 34.89657401786566, -17.313584300425656 ], [ 34.896568515482123, -17.313437764665327 ], [ 34.896571004670271, -17.313291153111834 ], [ 34.896581478588317, -17.313144867618806 ], [ 34.896599908508904, -17.312999309145241 ], [ 34.896626243897977, -17.312854876656449 ], [ 34.896660412553551, -17.312711966030534 ], [ 34.896702320803762, -17.312570968973372 ], [ 34.896751853763831, -17.312432271944935 ], [ 34.896808875651196, -17.312296255100076 ], [ 34.896873230157759, -17.312163291246673 ], [ 34.896944740878574, -17.312033744823729 ], [ 34.897023211795457, -17.31190797090262 ], [ 34.897108427814409, -17.311786314213879 ], [ 34.897200155355293, -17.311669108202434 ], [ 34.8972189524941, -17.311647539775638 ], [ 34.899440097999843, -17.313485312578923 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.6", "pivot_quadrant": "4.6D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.899440097999843, -17.313485312578923 ], [ 34.90130835758503, -17.31122562620051 ], [ 34.901413639955251, -17.311310283537498 ], [ 34.901525403085479, -17.31141015982055 ], [ 34.901631571462033, -17.311515517729532 ], [ 34.901731854086115, -17.311626068494771 ], [ 34.901825976089349, -17.311741509113453 ], [ 34.901913679487194, -17.311861523179989 ], [ 34.901994723886119, -17.311985781753258 ], [ 34.902068887142498, -17.312113944258016 ], [ 34.90213596597161, -17.312245659418359 ], [ 34.902195776504954, -17.312380566220416 ], [ 34.902248154794236, -17.312518294901775 ], [ 34.902292957260912, -17.312658467964877 ], [ 34.902330061089906, -17.312800701211714 ], [ 34.902359364566351, -17.312944604796709 ], [ 34.902380787354609, -17.313089784295226 ], [ 34.902394270718574, -17.313235841784657 ], [ 34.902399777682902, -17.313382376934985 ], [ 34.902397293134591, -17.313528988106064 ], [ 34.902386823864568, -17.313675273448435 ], [ 34.902368398549257, -17.313820832004755 ], [ 34.902342067672237, -17.313965264808807 ], [ 34.902307903386109, -17.314108175979023 ], [ 34.902265999314849, -17.314249173803603 ], [ 34.902216470297404, -17.314387871814134 ], [ 34.902159452073207, -17.314523889844988 ], [ 34.902095100910188, -17.314656855075331 ], [ 34.902023593176651, -17.314786403051055 ], [ 34.901945124858074, -17.31491217868377 ], [ 34.901859911019962, -17.315033837224195 ], [ 34.901768185218579, -17.315151045207116 ], [ 34.90167019886082, -17.315263481365488 ], [ 34.901634167766389, -17.315300682952017 ], [ 34.899440097999843, -17.313485312578923 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.6", "pivot_quadrant": "4.6A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.897682148973075, -17.31561157677756 ], [ 34.899440097999843, -17.313485312578923 ], [ 34.901634167766389, -17.315300682952017 ], [ 34.901566220515207, -17.315370837511132 ], [ 34.901456535175853, -17.31547281937948 ], [ 34.901341443481343, -17.315569147436317 ], [ 34.901221260890679, -17.315659557643983 ], [ 34.901096316818645, -17.31574380218521 ], [ 34.900966953732905, -17.315821650142521 ], [ 34.900833526215209, -17.315892888131156 ], [ 34.900696399989521, -17.315957320884166 ], [ 34.900555950919419, -17.316014771787611 ], [ 34.900412563977817, -17.316065083364801 ], [ 34.900266632191638, -17.316108117707994 ], [ 34.900118555564397, -17.316143756856455 ], [ 34.899968739979705, -17.316171903119908 ], [ 34.899817596088525, -17.316192479346252 ], [ 34.899665538183491, -17.316205429133237 ], [ 34.899512983063111, -17.316210716982958 ], [ 34.899360348889211, -17.316208328399284 ], [ 34.8992080540405, -17.316198269927593 ], [ 34.899056515965661, -17.316180569136844 ], [ 34.898906150038954, -17.316155274543995 ], [ 34.898757368421464, -17.316122455481082 ], [ 34.898610578931248, -17.316082201905107 ], [ 34.898466183925223, -17.316034624151484 ], [ 34.898324579196277, -17.31597985263155 ], [ 34.898186152888186, -17.315918037475122 ], [ 34.898051284431546, -17.315849348118899 ], [ 34.897920343503721, -17.315773972842017 ], [ 34.897793689015366, -17.315692118249903 ], [ 34.897682148973075, -17.31561157677756 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.1", "pivot_quadrant": "5.1A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.889644280205616, -17.310113123629545 ], [ 34.893567231271753, -17.309696371939275 ], [ 34.894135431768206, -17.313461353424515 ], [ 34.894022909687017, -17.31347666856341 ], [ 34.893816897561351, -17.313494207208084 ], [ 34.893610212128692, -17.313501365053114 ], [ 34.893403419933982, -17.313498122474773 ], [ 34.893197087815246, -17.313484488357865 ], [ 34.892991781349544, -17.313460500071429 ], [ 34.892788063302312, -17.313426223366324 ], [ 34.892586492084611, -17.313381752195014 ], [ 34.892387620222046, -17.313327208454009 ], [ 34.892191992840104, -17.313262741649709 ], [ 34.892000146169543, -17.313188528488556 ], [ 34.891812606076378, -17.313104772392641 ], [ 34.891629886620137, -17.313011702941967 ], [ 34.891452488644688, -17.312909575245161 ], [ 34.891280898405093, -17.31279866924006 ], [ 34.89111558623474, -17.312679288926272 ], [ 34.890957005255849, -17.312551761531832 ], [ 34.890805590137525, -17.312416436616065 ], [ 34.890661755904112, -17.312273685111339 ], [ 34.890525896797627, -17.312123898306147 ], [ 34.890398385197194, -17.311967486772534 ], [ 34.890279570598331, -17.311804879240409 ], [ 34.890169778655036, -17.311636521422365 ], [ 34.89006931028738, -17.311462874791772 ], [ 34.889978440856758, -17.311284415317768 ], [ 34.889897419411362, -17.311101632160437 ], [ 34.889826468003683, -17.310915026329962 ], [ 34.889765781082247, -17.310725109313132 ], [ 34.889715524958767, -17.310532401671345 ], [ 34.889675837352712, -17.310337431613661 ], [ 34.889646827014069, -17.310140733548774 ], [ 34.889644280205616, -17.310113123629545 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.1", "pivot_quadrant": "5.1C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.897496240357995, -17.309278976679899 ], [ 34.893567231271753, -17.309696371939275 ], [ 34.893002323669023, -17.305953209660426 ], [ 34.893119668539669, -17.305937238579631 ], [ 34.893325672458758, -17.305919701457171 ], [ 34.893532349484737, -17.30591254472894 ], [ 34.893739133164758, -17.305915788006445 ], [ 34.893945456754139, -17.305929422397227 ], [ 34.894150754769228, -17.30595341052922 ], [ 34.894354464537166, -17.30598768665326 ], [ 34.894556027737657, -17.306032156823267 ], [ 34.894754891932848, -17.306086699153688 ], [ 34.89495051208133, -17.30615116415359 ], [ 34.895142352031577, -17.306225375136297 ], [ 34.895329885991188, -17.306309128703578 ], [ 34.895512599967851, -17.306402195303132 ], [ 34.895689993177726, -17.306504319857581 ], [ 34.895861579417975, -17.306615222463513 ], [ 34.896026888399007, -17.306734599158542 ], [ 34.896185467033547, -17.306862122754314 ], [ 34.896336880678206, -17.306997443733113 ], [ 34.896480714324767, -17.307140191205693 ], [ 34.896616573737617, -17.30728997392773 ], [ 34.896744086534312, -17.307446381371953 ], [ 34.89686290320622, -17.307608984853228 ], [ 34.89697269807661, -17.30777733870335 ], [ 34.897073170193366, -17.307950981492414 ], [ 34.897164044153996, -17.308129437293385 ], [ 34.897245070860698, -17.308312216986412 ], [ 34.897316028203313, -17.308498819599276 ], [ 34.897376721668323, -17.308688733680437 ], [ 34.897426984872283, -17.308881438700638 ], [ 34.897466680018177, -17.309076406479587 ], [ 34.897495698273403, -17.309273102633544 ], [ 34.897496240357995, -17.309278976679899 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.1", "pivot_quadrant": "5.1B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.893567231271753, -17.309696371939275 ], [ 34.889644280205616, -17.310113123629545 ], [ 34.889628573425647, -17.309942846620235 ], [ 34.889621126585517, -17.309744313228641 ], [ 34.889624506870462, -17.309545677544772 ], [ 34.889638704980335, -17.309347484018105 ], [ 34.889663681964102, -17.309150275884431 ], [ 34.88969936932687, -17.308954593676912 ], [ 34.889745669218065, -17.308760973744466 ], [ 34.889802454699968, -17.308569946781756 ], [ 34.889869570096032, -17.308382036374624 ], [ 34.889946831417923, -17.308197757564983 ], [ 34.890034026870126, -17.308017615439326 ], [ 34.890130917430803, -17.307842103744292 ], [ 34.890237237507151, -17.307671703533526 ], [ 34.890352695663665, -17.307506881849253 ], [ 34.890476975421151, -17.307348090442296 ], [ 34.890609736124361, -17.307195764533997 ], [ 34.890750613875788, -17.3070503216235 ], [ 34.890899222533278, -17.306912160343522 ], [ 34.891055154768431, -17.306781659367985 ], [ 34.891217983183068, -17.306659176374215 ], [ 34.891387261480766, -17.306545047062802 ], [ 34.891562525690006, -17.306439584237634 ], [ 34.891743295435781, -17.306343076948679 ], [ 34.891929075256186, -17.306255789699943 ], [ 34.892119355960247, -17.306177961724611 ], [ 34.892313616023394, -17.306109806329552 ], [ 34.892511323016663, -17.306051510310741 ], [ 34.892711935065812, -17.30600323344148 ], [ 34.892914902336223, -17.305965108034528 ], [ 34.893002323669023, -17.305953209660426 ], [ 34.893567231271753, -17.309696371939275 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.3", "pivot_quadrant": "5.3C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.88655044353051, -17.30082027669599 ], [ 34.887065228066767, -17.304559537671949 ], [ 34.883138407553353, -17.304967747142655 ], [ 34.883124499512981, -17.304816903162319 ], [ 34.883117060422094, -17.30461836873225 ], [ 34.883120448196905, -17.304419732390357 ], [ 34.883134653516784, -17.304221538587896 ], [ 34.883159637410927, -17.304024330561418 ], [ 34.883195331365513, -17.303828648843769 ], [ 34.883241637511922, -17.303635029782509 ], [ 34.883298428895301, -17.303444004069913 ], [ 34.883365549822955, -17.303256095288376 ], [ 34.883442816291399, -17.30307181847537 ], [ 34.883530016491029, -17.302891678711884 ], [ 34.883626911387026, -17.302716169738098 ], [ 34.883733235374699, -17.30254577260019 ], [ 34.883848697007878, -17.302380954331959 ], [ 34.883972979797818, -17.302222166674863 ], [ 34.884105743080994, -17.302069844839973 ], [ 34.884246622952844, -17.301924406315258 ], [ 34.88439523326543, -17.301786249721427 ], [ 34.88455116668581, -17.301655753719565 ], [ 34.884713995812575, -17.301533275973377 ], [ 34.884883274347381, -17.301419152169071 ], [ 34.885058538318042, -17.301313695095438 ], [ 34.885239307350204, -17.301217193786709 ], [ 34.885425085983954, -17.301129912730506 ], [ 34.885615365031562, -17.301052091143053 ], [ 34.885809622973014, -17.30098394231371 ], [ 34.886007327385144, -17.300925653020485 ], [ 34.88620793640078, -17.30087738301825 ], [ 34.886410900193646, -17.30083926460097 ], [ 34.88655044353051, -17.30082027669599 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.3", "pivot_quadrant": "5.3A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.887585923201613, -17.308341731698718 ], [ 34.887065228066767, -17.304559537671949 ], [ 34.890991820206963, -17.304151351941599 ], [ 34.891009712544758, -17.30434532014915 ], [ 34.891017160039745, -17.304543853465603 ], [ 34.891013780776646, -17.304742489111405 ], [ 34.890999583982811, -17.304940682642922 ], [ 34.890974608535664, -17.305137890826575 ], [ 34.890938922856463, -17.305333573127797 ], [ 34.890892624723172, -17.305527193192621 ], [ 34.89083584100284, -17.305718220317804 ], [ 34.890768727304206, -17.305906130905438 ], [ 34.890691467551548, -17.306090409898285 ], [ 34.890604273480889, -17.306270552191478 ], [ 34.890507384059916, -17.306446064017113 ], [ 34.890401064833291, -17.306616464297758 ], [ 34.890285607195082, -17.306781285965204 ], [ 34.890161327590214, -17.306940077240721 ], [ 34.890028566647352, -17.307092402873621 ], [ 34.889887688245388, -17.307237845334313 ], [ 34.889739078516179, -17.307376005958961 ], [ 34.889583144786272, -17.307506506042298 ], [ 34.889420314460438, -17.307628987875948 ], [ 34.889251033850186, -17.307743115728897 ], [ 34.889075766950455, -17.307848576767977 ], [ 34.888894994167643, -17.307945081915541 ], [ 34.888709211002805, -17.3080323666419 ], [ 34.888518926693266, -17.308110191690613 ], [ 34.888324662816736, -17.308178343734379 ], [ 34.888126951861395, -17.308236635960007 ], [ 34.887926335766082, -17.308284908580482 ], [ 34.887723364434663, -17.308323029273154 ], [ 34.887585923201613, -17.308341731698718 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.3", "pivot_quadrant": "5.3D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.887065228066767, -17.304559537671949 ], [ 34.88655044353051, -17.30082027669599 ], [ 34.886615662485013, -17.300811402239216 ], [ 34.886821662068201, -17.300793872293969 ], [ 34.88702833434634, -17.300786722807359 ], [ 34.887235112879623, -17.30078997337106 ], [ 34.887441430937386, -17.300803615072628 ], [ 34.887646723051198, -17.300827610519995 ], [ 34.88785042656432, -17.30086189394396 ], [ 34.888051983173575, -17.300906371378414 ], [ 34.888250840459207, -17.300960920917966 ], [ 34.888446453398686, -17.301025393051869 ], [ 34.888638285860232, -17.301099611073905 ], [ 34.888825812071993, -17.301183371566594 ], [ 34.889008518062795, -17.301276444958631 ], [ 34.889185903070754, -17.301378576154015 ], [ 34.889357480915407, -17.301489485231148 ], [ 34.889522781330243, -17.301608868209907 ], [ 34.889681351251404, -17.301736397884714 ], [ 34.889832756059356, -17.301871724721188 ], [ 34.88997658077011, -17.302014477814012 ], [ 34.89011243117254, -17.302164265903457 ], [ 34.890239934908863, -17.302320678447551 ], [ 34.890358742495273, -17.302483286747144 ], [ 34.890468528279946, -17.302651645120829 ], [ 34.890568991335634, -17.3028252921263 ], [ 34.890659856284707, -17.303003751824949 ], [ 34.890740874054046, -17.303186535086216 ], [ 34.890811822557978, -17.303373140928109 ], [ 34.890872507307208, -17.303563057890219 ], [ 34.890922761942207, -17.303755765435376 ], [ 34.890962448689429, -17.303950735376358 ], [ 34.890991458739279, -17.304147433323465 ], [ 34.890991820206963, -17.304151351941599 ], [ 34.887065228066767, -17.304559537671949 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.2", "pivot_quadrant": "5.2A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.8969126991338, -17.302747852699646 ], [ 34.900876176680299, -17.302893796550027 ], [ 34.900862215681485, -17.303088843323266 ], [ 34.900837250927268, -17.303286051715396 ], [ 34.900801576024612, -17.303481734749649 ], [ 34.900755288721975, -17.303675356070045 ], [ 34.900698515856696, -17.303866384969915 ], [ 34.900631413007766, -17.30405429784653 ], [ 34.900554164069703, -17.304238579636362 ], [ 34.900466980748888, -17.30441872522692 ], [ 34.900370101983533, -17.304594240841258 ], [ 34.900263793289071, -17.304764645391586 ], [ 34.900148346030669, -17.30492947179798 ], [ 34.900024076624817, -17.305088268268765 ], [ 34.899891325672165, -17.305240599538983 ], [ 34.899750457024226, -17.305386048063617 ], [ 34.899601856786099, -17.305524215162226 ], [ 34.899445932258295, -17.305654722111793 ], [ 34.899283110820335, -17.305777211185095 ], [ 34.899113838759355, -17.305891346631288 ], [ 34.898938580046824, -17.305996815596405 ], [ 34.898757815066695, -17.306093328981046 ], [ 34.898572039298578, -17.30618062223294 ], [ 34.898381761959563, -17.306258456072264 ], [ 34.898187504608195, -17.30632661714764 ], [ 34.89798979971475, -17.306384918621077 ], [ 34.89778918920144, -17.306433200680189 ], [ 34.897586222956839, -17.306471330976475 ], [ 34.897381457328272, -17.306499204988068 ], [ 34.89717545359661, -17.306516746306354 ], [ 34.896968776437447, -17.306523906845566 ], [ 34.896848733623173, -17.306522026027363 ], [ 34.8969126991338, -17.302747852699646 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.2", "pivot_quadrant": "5.2C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.8969126991338, -17.302747852699646 ], [ 34.892982579947684, -17.30260313717654 ], [ 34.892983172682968, -17.302568275889897 ], [ 34.892997367422488, -17.302370082399289 ], [ 34.893022340623894, -17.302172874159623 ], [ 34.893058023802681, -17.301977191704324 ], [ 34.89310431911975, -17.301783571383027 ], [ 34.893161099649916, -17.301592543891452 ], [ 34.893228209730253, -17.301404632816908 ], [ 34.89330546538698, -17.301220353203167 ], [ 34.893392654840142, -17.301040210138897 ], [ 34.8934895390843, -17.300864697373338 ], [ 34.893595852544017, -17.300694295963083 ], [ 34.893711303801894, -17.300529472953652 ], [ 34.893835576397656, -17.300370680099508 ], [ 34.893968329695682, -17.300218352625976 ], [ 34.894109199818764, -17.30007290803648 ], [ 34.894257800645626, -17.299934744968354 ], [ 34.894413724869359, -17.299804242100432 ], [ 34.894576545113729, -17.299681757115238 ], [ 34.894745815104677, -17.299567625718822 ], [ 34.894921070893432, -17.299462160720779 ], [ 34.89510183212807, -17.299365651177041 ], [ 34.895287603369994, -17.299278361597814 ], [ 34.895477875451739, -17.29920053122266 ], [ 34.895672126872348, -17.299132373365019 ], [ 34.895869825226519, -17.299074074827637 ], [ 34.896070428663677, -17.299025795390687 ], [ 34.896273387372787, -17.298987667373979 ], [ 34.896478145089084, -17.298959795274413 ], [ 34.89668414061839, -17.29894225547962 ], [ 34.896890809374973, -17.298935096058699 ], [ 34.8969772955911, -17.298936451464556 ], [ 34.8969126991338, -17.302747852699646 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.2", "pivot_quadrant": "5.2D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.900876176680299, -17.302893796550027 ], [ 34.8969126991338, -17.302747852699646 ], [ 34.8969772955911, -17.298936451464556 ], [ 34.897097584928609, -17.298938336630535 ], [ 34.897303900556857, -17.298951968310067 ], [ 34.897509190797912, -17.298975953732672 ], [ 34.89771289300019, -17.299010227156604 ], [ 34.897914448864078, -17.299054694643154 ], [ 34.898113305971897, -17.299109234314148 ], [ 34.898308919301599, -17.299173696685894 ], [ 34.898500752720359, -17.299247905078936 ], [ 34.898688280453683, -17.299331656102137 ], [ 34.898870988526284, -17.299424720210141 ], [ 34.899048376170541, -17.299526842332384 ], [ 34.899219957198824, -17.299637742572131 ], [ 34.899385261335887, -17.299757116973481 ], [ 34.899543835507686, -17.299884638354321 ], [ 34.899695245083088, -17.300019957203023 ], [ 34.899839075065046, -17.300162702636175 ], [ 34.899974931227973, -17.300312483415023 ], [ 34.900102441198349, -17.30046888901763 ], [ 34.900221255475309, -17.300631490763884 ], [ 34.900331048388715, -17.300799842990351 ], [ 34.900431518991795, -17.300973484271562 ], [ 34.900522391886227, -17.301151938684619 ], [ 34.900603417977173, -17.301334717113466 ], [ 34.90067437515615, -17.301521318589351 ], [ 34.900735068910123, -17.301711231663859 ], [ 34.900785332854859, -17.301903935810486 ], [ 34.900825029191338, -17.302098902851345 ], [ 34.900854049083712, -17.302295598404701 ], [ 34.900872312957986, -17.302493483349586 ], [ 34.900879770720429, -17.302692015303364 ], [ 34.900876401895346, -17.302890650108349 ], [ 34.900876176680299, -17.302893796550027 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "5.4", "pivot_quadrant": "5.4B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.894017157017068, -17.294410311809727 ], [ 34.89693731592709, -17.294573580994058 ], [ 34.896864188941137, -17.297331505303269 ], [ 34.896805931020118, -17.297330592199042 ], [ 34.896653651768069, -17.297320530228568 ], [ 34.896502129402165, -17.297302825932473 ], [ 34.896351779253607, -17.297277527837316 ], [ 34.896203013440193, -17.297244705284744 ], [ 34.896056239736616, -17.297204448241324 ], [ 34.89591186045655, -17.297156867051939 ], [ 34.895770271349726, -17.297102092137393 ], [ 34.895631860517078, -17.29704027363676 ], [ 34.895497007346798, -17.296971580995908 ], [ 34.895366081474315, -17.296896202502978 ], [ 34.895239441768993, -17.296814344772198 ], [ 34.8951174353504, -17.296726232177512 ], [ 34.895000396636796, -17.296632106237524 ], [ 34.894888646428399, -17.296532224953381 ], [ 34.894782491028053, -17.296426862101541 ], [ 34.894682221401673, -17.296316306483291 ], [ 34.894588112380617, -17.296200861132984 ], [ 34.894500421908518, -17.296080842487484 ], [ 34.894419390334207, -17.295956579518617 ], [ 34.894345239753093, -17.295828412831394 ], [ 34.894278173398355, -17.295696693730406 ], [ 34.894218375084108, -17.295561783256755 ], [ 34.894166008701575, -17.295424051198424 ], [ 34.89412121777012, -17.295283875076617 ], [ 34.89408412504396, -17.295141639110881 ], [ 34.894054832175833, -17.294997733166007 ], [ 34.894033419438607, -17.294852551683256 ], [ 34.894019945505391, -17.294706492599275 ], [ 34.894014447288981, -17.294559956255252 ], [ 34.894016939840789, -17.294413344299628 ], [ 34.894017157017068, -17.294410311809727 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "5.4", "pivot_quadrant": "5.4A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.89693731592709, -17.294573580994058 ], [ 34.89983659573803, -17.294735682805793 ], [ 34.899832163531997, -17.294797598243601 ], [ 34.899822899654588, -17.294870775272294 ], [ 34.899813736479395, -17.294943156836158 ], [ 34.899787404689512, -17.295087589492788 ], [ 34.899753240317445, -17.295230500332377 ], [ 34.899711336987437, -17.29537149764397 ], [ 34.89966180953644, -17.29551019496061 ], [ 34.899604793699602, -17.295646212118569 ], [ 34.89954044573831, -17.295779176299387 ], [ 34.89946894201217, -17.295908723051863 ], [ 34.899390478495619, -17.296034497290957 ], [ 34.899305270241072, -17.296156154271213 ], [ 34.899213550789469, -17.29627336053171 ], [ 34.899115571530331, -17.296385794810135 ], [ 34.899011601012702, -17.296493148923457 ], [ 34.898901924209291, -17.296595128612708 ], [ 34.898786841735244, -17.296691454349638 ], [ 34.898666669024301, -17.296781862102957 ], [ 34.898541735464178, -17.296866104062158 ], [ 34.898412383493714, -17.296943949316809 ], [ 34.898278967664204, -17.297015184489627 ], [ 34.898141853667532, -17.297079614321344 ], [ 34.898001417333766, -17.297137062206048 ], [ 34.89785804360087, -17.297187370675346 ], [ 34.897712125459591, -17.297230401829999 ], [ 34.897564062875993, -17.297266037718053 ], [ 34.897414261695189, -17.297294180658142 ], [ 34.89726313252865, -17.297314753507322 ], [ 34.897111089628602, -17.29732769987255 ], [ 34.896958549752426, -17.297332984265342 ], [ 34.896864188941137, -17.297331505303269 ], [ 34.89693731592709, -17.294573580994058 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "5.4", "pivot_quadrant": "5.4C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.89693731592709, -17.294573580994058 ], [ 34.894017157017068, -17.294410311809727 ], [ 34.894027416309868, -17.294267058587142 ], [ 34.894045847961912, -17.294121500077392 ], [ 34.894072184258114, -17.293977067735781 ], [ 34.894089624499351, -17.293904124152515 ], [ 34.894106352994037, -17.293834157440013 ], [ 34.894148260497595, -17.293693160895057 ], [ 34.894197791886107, -17.293554464559477 ], [ 34.89425481138133, -17.293418448586269 ], [ 34.894319162681754, -17.293285485780885 ], [ 34.894390669391221, -17.293155940579478 ], [ 34.894469135502568, -17.293030168050077 ], [ 34.894554345934992, -17.292908512919421 ], [ 34.894646067123652, -17.292791308628154 ], [ 34.894744047660041, -17.292678876417035 ], [ 34.894848018981065, -17.292571524446419 ], [ 34.894957696105273, -17.292469546951811 ], [ 34.895072778413969, -17.292373223437412 ], [ 34.89519295047522, -17.292282817910166 ], [ 34.895317882908451, -17.292198578156203 ], [ 34.89544723328715, -17.292120735061754 ], [ 34.89558064707748, -17.292049501980475 ], [ 34.895717758609869, -17.291985074148698 ], [ 34.89585819208127, -17.291927628150439 ], [ 34.896001562585077, -17.291877321433407 ], [ 34.89614747716594, -17.291834291877638 ], [ 34.896295535896762, -17.291798657417591 ], [ 34.896445332974679, -17.29177051571898 ], [ 34.896596457833176, -17.291749943911135 ], [ 34.896748496267172, -17.291736998375693 ], [ 34.896901031568262, -17.291731714592061 ], [ 34.897012622272264, -17.291733463938773 ], [ 34.896942313597627, -17.29438509794787 ], [ 34.89693731592709, -17.294573580994058 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "5.4", "pivot_quadrant": "5.4D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.89983659573803, -17.294735682805793 ], [ 34.89693731592709, -17.294573580994058 ], [ 34.896942313597627, -17.29438509794787 ], [ 34.897012622272264, -17.291733463938773 ], [ 34.897053645666574, -17.291734107040188 ], [ 34.897205920276505, -17.291744169161014 ], [ 34.897357438042967, -17.29176187337432 ], [ 34.897507783685214, -17.291787171154436 ], [ 34.89765654513478, -17.291819993163191 ], [ 34.897803314664799, -17.291860249439978 ], [ 34.897947690007349, -17.291907829648292 ], [ 34.898089275455796, -17.291962603378103 ], [ 34.89822768294929, -17.292024420503296 ], [ 34.898362533136257, -17.292093111593083 ], [ 34.898493456413945, -17.292168488376308 ], [ 34.898620093941389, -17.2922503442575 ], [ 34.898742098622918, -17.292338454882941 ], [ 34.898859136059286, -17.292432578755633 ], [ 34.898970885464273, -17.292532457897078 ], [ 34.899077040543823, -17.292637818554272 ], [ 34.899177310335574, -17.29274837194999 ], [ 34.899271420006308, -17.29286381507422 ], [ 34.8993591116053, -17.292983831514487 ], [ 34.899440144771376, -17.293108092323138 ], [ 34.899514297391676, -17.293236256918828 ], [ 34.899581366210683, -17.293367974019876 ], [ 34.899641167387308, -17.29350288260709 ], [ 34.899693536998917, -17.293640612913151 ], [ 34.899738331490795, -17.293780787436059 ], [ 34.899775428069709, -17.293923021973789 ], [ 34.899804725040731, -17.294066926677193 ], [ 34.899826142086027, -17.294212107118611 ], [ 34.899839620485281, -17.294358165372817 ], [ 34.899845123276762, -17.29450470110768 ], [ 34.899842635358958, -17.294651312681466 ], [ 34.89983659573803, -17.294735682805793 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 32.0, "radius": null, "pivot": "DL1.3", "pivot_quadrant": "DL1.3" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.947451385514611, -17.321753599029073 ], [ 34.947298927757849, -17.321663500672134 ], [ 34.947001852567226, -17.32100637178991 ], [ 34.947092750341952, -17.318710743453458 ], [ 34.94828268484742, -17.317606307231124 ], [ 34.948861125232021, -17.317077753261884 ], [ 34.949299087237506, -17.316123196719229 ], [ 34.950715487823011, -17.316226521400374 ], [ 34.951786380891292, -17.316304641732966 ], [ 34.953480384874766, -17.317416974640771 ], [ 34.953265535589061, -17.317724640001025 ], [ 34.953133320644007, -17.318048082516636 ], [ 34.953034159435212, -17.318442523838343 ], [ 34.952968051962692, -17.318884297113428 ], [ 34.952968051962692, -17.319373402000465 ], [ 34.953092003473678, -17.319909838121443 ], [ 34.952794519847309, -17.321448138900415 ], [ 34.952108654819853, -17.321661133377713 ], [ 34.950066988602522, -17.321701668718116 ], [ 34.947451385514611, -17.321753599029073 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 277.0, "radius": 297, "pivot": "1.18", "pivot_quadrant": "1.18C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.961301964672387, -17.313838203379714 ], [ 34.963291039141012, -17.311973548628245 ], [ 34.963318548862773, -17.312000830743248 ], [ 34.963414658522524, -17.312106712348005 ], [ 34.963504867652226, -17.312217280413027 ], [ 34.963588928992536, -17.312332231887332 ], [ 34.963666612132982, -17.31245125170528 ], [ 34.963737704143533, -17.312574013649993 ], [ 34.963802010158297, -17.312700181247447 ], [ 34.963859353909704, -17.312829408688614 ], [ 34.963909578211776, -17.312961341777211 ], [ 34.963952545391066, -17.313095618900494 ], [ 34.963988137664089, -17.313231872020292 ], [ 34.964016257460422, -17.3133697276817 ], [ 34.964036827690187, -17.313508808036687 ], [ 34.964049791955574, -17.313648731879656 ], [ 34.964055114705573, -17.313789115692281 ], [ 34.964052781333649, -17.313929574694654 ], [ 34.964042798217903, -17.314069723899909 ], [ 34.964025192703858, -17.314209179169463 ], [ 34.964000013029583, -17.314347558265844 ], [ 34.963967328193803, -17.314484481900458 ], [ 34.963927227766852, -17.314619574773129 ], [ 34.963879821645449, -17.314752466600854 ], [ 34.96382523975155, -17.314882793132711 ], [ 34.963763631676478, -17.315010197148315 ], [ 34.963695166271002, -17.315134329436955 ], [ 34.963620031182742, -17.315254849754851 ], [ 34.963538432341863, -17.315371427757743 ], [ 34.963450593396857, -17.315483743906491 ], [ 34.963356755101515, -17.3155914903429 ], [ 34.96325717465519, -17.315694371733709 ], [ 34.963152124997862, -17.315792106080078 ], [ 34.963115666188799, -17.315822640664031 ], [ 34.961301964672387, -17.313838203379714 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 277.0, "radius": 297, "pivot": "1.18", "pivot_quadrant": "1.18A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.961301964672387, -17.313838203379714 ], [ 34.959294104555354, -17.315720468707916 ], [ 34.959205111423216, -17.315632210383061 ], [ 34.959109001898497, -17.315526326733945 ], [ 34.959018793349316, -17.315415756619789 ], [ 34.95893473302857, -17.315300803113992 ], [ 34.958857051335606, -17.315181781304474 ], [ 34.958785961184603, -17.315059017429945 ], [ 34.958721657421044, -17.314932847985528 ], [ 34.958664316287852, -17.314803618800539 ], [ 34.958614094942313, -17.314671684090325 ], [ 34.958571131025515, -17.314537405485428 ], [ 34.958535542285148, -17.314401151040233 ], [ 34.958507426252964, -17.314263294224176 ], [ 34.958486859977597, -17.31412421289793 ], [ 34.958473899813526, -17.313984288277727 ], [ 34.958468581266821, -17.313843903890437 ], [ 34.958470918897959, -17.313703444522226 ], [ 34.958480906282176, -17.313563295164005 ], [ 34.958498516027234, -17.31342383995602 ], [ 34.95852369984862, -17.313285461135049 ], [ 34.958556388702249, -17.313148537986695 ], [ 34.958596492973705, -17.31301344580578 ], [ 34.958643902724212, -17.312880554867768 ], [ 34.958698487991995, -17.31275022941379 ], [ 34.958760099148805, -17.312622826652447 ], [ 34.958828567310086, -17.312498695780704 ], [ 34.958903704798047, -17.312378177026815 ], [ 34.958985305656192, -17.3122616007179 ], [ 34.959073146213981, -17.312149286374552 ], [ 34.959166985699902, -17.31204154183515 ], [ 34.95926656690159, -17.311938662412228 ], [ 34.959371616870783, -17.311840930083029 ], [ 34.959431043918748, -17.311791160431401 ], [ 34.961301964672387, -17.313838203379714 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 277.0, "radius": 297, "pivot": "1.18", "pivot_quadrant": "1.18B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.963291039141012, -17.311973548628245 ], [ 34.961301964672387, -17.313838203379714 ], [ 34.959431043918748, -17.311791160431401 ], [ 34.959481847671512, -17.311748612716794 ], [ 34.95959695716941, -17.311661963340608 ], [ 34.959716629859727, -17.311581219445991 ], [ 34.959840537732092, -17.311506602337992 ], [ 34.95996834116962, -17.311438316528729 ], [ 34.960099689879613, -17.311376549176956 ], [ 34.960234223853597, -17.311321469575088 ], [ 34.960371574354085, -17.311273228685337 ], [ 34.960511364925047, -17.311231958725969 ], [ 34.960653212423622, -17.311197772808992 ], [ 34.9607967280702, -17.31117076463017 ], [ 34.960941518513806, -17.311151008212327 ], [ 34.961087186910177, -17.311138557702407 ], [ 34.961233334009165, -17.311133447223234 ], [ 34.961379559249025, -17.31113569077991 ], [ 34.961525461854002, -17.311145282221496 ], [ 34.961670641932749, -17.311162195257861 ], [ 34.96181470157412, -17.311186383531847 ], [ 34.96195724593769, -17.311217780746176 ], [ 34.962097884335776, -17.311256300845265 ], [ 34.962236231304082, -17.311301838251062 ], [ 34.962371907658095, -17.311354268152318 ], [ 34.962504541532205, -17.311413446846771 ], [ 34.962633769398863, -17.311479212134888 ], [ 34.962759237064759, -17.311551383764364 ], [ 34.962880600641611, -17.31162976392423 ], [ 34.962997527488582, -17.311714137786886 ], [ 34.96310969712394, -17.311804274096819 ], [ 34.96321680210341, -17.311899925804482 ], [ 34.963291039141012, -17.311973548628245 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 20.0, "radius": null, "pivot": "DL1.1", "pivot_quadrant": "DL1.1" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.973316494728564, -17.333251794475164 ], [ 34.973346256561562, -17.333419673334269 ], [ 34.973237698645903, -17.333332450175927 ], [ 34.973316494728564, -17.333251794475164 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 20.0, "radius": null, "pivot": "DL1.1", "pivot_quadrant": "DL1.1" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.973346256561562, -17.333419673334269 ], [ 34.973316494728564, -17.333251794475164 ], [ 34.974847423373653, -17.331684735320394 ], [ 34.975486037377962, -17.331031049777948 ], [ 34.976506367806572, -17.330987952117045 ], [ 34.97768922874593, -17.331936098320032 ], [ 34.978068466604348, -17.332608417206025 ], [ 34.977245857001407, -17.333467640564528 ], [ 34.975576332106158, -17.335211474799472 ], [ 34.973346256561562, -17.333419673334269 ] ] ] } } +] +} diff --git a/python_app/.gitignore b/python_app/.gitignore new file mode 100644 index 0000000..7c3d9f1 --- /dev/null +++ b/python_app/.gitignore @@ -0,0 +1,43 @@ +# .gitignore + +# Ignore the virtual environment directory +myenv/ + +# Byte-compiled / optimized files +__pycache__/ +*.py[cod] +*$py.class + +# Ignore all .pyc files in any directory +**/*.pyc + +# Ignore pip wheel metadata +pip-wheel-metadata/ + +# Ignore the `dist/` directory used for package distributions +dist/ + +# Ignore Python egg metadata, regenerated from source files by setuptools +*.egg-info/ +*.egg-info/* +*.egg/ + +# Ignore Jupyter Notebook +.ipynb_checkpoints + +# Ignore VSCode directory +.vscode/ + +# Ignore JetBrains IDEs directory +.idea/ + +# Ignore MacOS directory +.DS_Store + +# Ignore other unwanted file +*.log +*.bak +*.swp +*.swo +*.swp + diff --git a/python_app/Chemba_download.ipynb b/python_app/Chemba_download.ipynb new file mode 100644 index 0000000..e86e00a --- /dev/null +++ b/python_app/Chemba_download.ipynb @@ -0,0 +1,1031 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "b7ca7102-5fd9-481f-90cd-3ba60e288649", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# $ pip install sentinelhub\n", + "# pip install gdal\n", + "\n", + "import os\n", + "import datetime\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from pathlib import Path\n", + "from osgeo import gdal\n", + "\n", + "from sentinelhub import MimeType, CRS, BBox, SentinelHubRequest, SentinelHubDownloadClient, \\\n", + " DataCollection, bbox_to_dimensions, DownloadRequest, SHConfig, BBoxSplitter, read_data\n", + "\n", + "config = SHConfig()\n", + "\n", + "import time" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "330c967c-2742-4a7a-9a61-28bfdaf8eeca", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "#pip install pipreqs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8f2ec814-76b2-47e6-b74b-a4ffddd908f1", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "49f8496a-a267-4b74-9500-a168e031ed68", + "metadata": {}, + "outputs": [], + "source": [ + "#import pipreqs\n", + "#pipreqs Resilience BV/4002 CMD App - General/4002 CMD Team/4002 TechnicalData/04 WP2 technical/python/Chemba_download.ipynb" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5491a840-779c-4f0c-8164-c3de738b3298", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "config.sh_client_id = '6e542a89-b040-40ca-8352-8b979ee3067a'\n", + "config.sh_client_secret = 'PiNaFQfP<.)59]rS.*}OF+hlrrzf#k~uqlhy-_F%'" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "eb1fb662-0e25-4ca9-8317-c6953290842b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "collection_id = 'c691479f-358c-46b1-b0f0-e12b70a9856c'\n", + "byoc = DataCollection.define_byoc(\n", + " collection_id,\n", + " name='planet_data2',\n", + " is_timeless=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "244b5752-4f02-4347-9278-f6a0a46b88f4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\"\"\"\n", + "Utilities used by example notebooks\n", + "\"\"\"\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "\n", + "def plot_image(image, factor=1.0, clip_range=None, **kwargs):\n", + " \"\"\"\n", + " Utility function for plotting RGB images.\n", + " \"\"\"\n", + " fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(15, 15))\n", + " if clip_range is not None:\n", + " ax.imshow(np.clip(image * factor, *clip_range), **kwargs)\n", + " else:\n", + " ax.imshow(image * factor, **kwargs)\n", + " ax.set_xticks([])\n", + " ax.set_yticks([]) \n", + "\n", + "\n", + "#evalscript_true_color = \"\"\"\n", + "# //VERSION=3\n", + "#\n", + "# function setup() {\n", + "# return {\n", + "# input: [{\n", + "# bands: [\"B1\", \"B2\", \"B3\", \"B4\", \"UDM\"]\n", + "# }],\n", + "# output: {\n", + "# bands: 5\n", + "# }\n", + "# };\n", + "# }\n", + "#\n", + "# function evaluatePixel(sample) {\n", + "# return [2.5 * sample.B1 / 10000, 2.5 * sample.B2 / 10000, 2.5 * sample.B3 / 10000, 2.5 * sample.B4 / 10000, sample.UDM];\n", + "# }\n", + "#\"\"\"\n", + "\n", + "evalscript_true_color = \"\"\"\n", + " //VERSION=3\n", + "\n", + " function setup() {\n", + " return {\n", + " input: [{\n", + " bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n", + " }],\n", + " output: {\n", + " bands: 5\n", + " }\n", + " };\n", + " }\n", + "\n", + " function evaluatePixel(sample) {\n", + " return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n", + " }\n", + "\"\"\"\n", + "BASE_PATH_SINGLE_IMAGES = Path('../laravel_app/storage/app/chemba/single_images')\n", + "BASE_PATH_WEEKLY = Path('../laravel_app/storage/app/chemba/weekly_img')\n", + "\n", + "def get_true_color_request(time_interval): \n", + " return SentinelHubRequest(\n", + " evalscript=evalscript_true_color,\n", + " input_data=[\n", + " SentinelHubRequest.input_data(\n", + " data_collection=DataCollection.planet_data2,\n", + " time_interval=time_interval\n", + " )\n", + " ],\n", + " responses=[\n", + " SentinelHubRequest.output_response('default', MimeType.TIFF)\n", + " ],\n", + " bbox=chemba_bbox,\n", + " size=chemba_size,\n", + " config=config,\n", + " data_folder=str(BASE_PATH_SINGLE_IMAGES / date),\n", + "\n", + " )\n", + "\n", + "def get_true_color_request_day_east(time_interval):\n", + " base_path = '../laravel_app/storage/app/chemba/single_images/'\n", + " \n", + " return SentinelHubRequest(\n", + " evalscript=evalscript_true_color,\n", + " input_data=[\n", + " SentinelHubRequest.input_data(\n", + " data_collection=DataCollection.planet_data2,\n", + " time_interval=(time_interval, time_interval)\n", + " )\n", + " ],\n", + " responses=[\n", + " SentinelHubRequest.output_response('default', MimeType.TIFF)\n", + " ],\n", + " bbox=chemba_bbox_east,\n", + " size=chemba_size_east,\n", + " config=config,\n", + " data_folder=str(BASE_PATH_SINGLE_IMAGES / time_interval),\n", + "\n", + " )\n", + "\n", + "def get_true_color_request_day_west(time_interval):\n", + " base_path = '../laravel_app/storage/app/chemba/single_images/'\n", + " return SentinelHubRequest(\n", + " evalscript=evalscript_true_color,\n", + " input_data=[\n", + " SentinelHubRequest.input_data(\n", + " data_collection=DataCollection.planet_data2,\n", + " time_interval=(time_interval, time_interval)\n", + " )\n", + " ],\n", + " responses=[\n", + " SentinelHubRequest.output_response('default', MimeType.TIFF)\n", + " ],\n", + " bbox=chemba_bbox_west,\n", + " size=chemba_size_west,\n", + " config=config,\n", + " data_folder=str(BASE_PATH_SINGLE_IMAGES / time_interval),\n", + "\n", + " )\n", + "\n", + "def get_true_color_request_week(time_interval):\n", + " base_path = '../laravel_app/storage/app/chemba/weekly_img/'\n", + " return SentinelHubRequest(\n", + " evalscript=evalscript_true_color,\n", + " input_data=[\n", + " SentinelHubRequest.input_data(\n", + " data_collection=DataCollection.planet_data2,\n", + " time_interval=time_interval\n", + " )\n", + " ],\n", + " responses=[\n", + " SentinelHubRequest.output_response('default', MimeType.TIFF)\n", + " ],\n", + " bbox=chemba_bbox,\n", + " size=chemba_size,\n", + " config=config,\n", + " data_folder=str(BASE_PATH_SINGLE_IMAGES / date),\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "5abb2cc0-5e2f-46cd-9676-3093d07b0624", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "#end = datetime.date.today() - datetime.timedelta(days=1)\n", + "#start = end - datetime.timedelta(days=6)\n", + "\n", + "#end = datetime.date(2022, 7, 1)\n", + "#start = datetime.date(2022, 7, 21)\n", + "\n", + "#n_chunks = start - end\n", + "#n_chunks.days\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a4937240-27f9-44c3-ad9c-cec6f2ffe4c8", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Monthly time windows:\n", + "\n", + "2023-09-30\n", + "2023-10-01\n", + "2023-10-02\n", + "2023-10-03\n", + "2023-10-04\n", + "2023-10-05\n", + "2023-10-06\n" + ] + } + ], + "source": [ + "#end = datetime.date(2022, 8, 4)\n", + "#start = datetime.date(2023, 3, 1)\n", + "days_needed = 6\n", + "\n", + "end = datetime.date.today() - datetime.timedelta(days=days_needed - 1)\n", + "start = end - datetime.timedelta(days=1)\n", + "\n", + "\n", + "n_chunks = days_needed + 1\n", + "tdelta = datetime.timedelta(days=1)\n", + "edges = [(start + i*tdelta).isoformat() for i in range(n_chunks)]\n", + "#slots = [(edges[i], edges[i]) for i in range(len(edges))]\n", + "slots = [(edges[i]) for i in range(len(edges))]\n", + "\n", + "#date = start.strftime(\"%Y-%m-%d\")\n", + "\n", + "print('Monthly time windows:\\n')\n", + "for slot in slots:\n", + " print(slot)" + ] + }, + { + "cell_type": "markdown", + "id": "0c18e312-8421-47d7-84f9-ed7d5e47e7ee", + "metadata": {}, + "source": [ + "### Chemba east side" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "2335139b-dfb1-4371-ae2c-c2b9c8cbf10c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "chemba_east = [34.8830, -17.3516, 34.9380, -17.2917]\n", + "resolution = 3\n", + "chemba_bbox_east = BBox(bbox=chemba_east, crs=CRS.WGS84)\n", + "chemba_size_east = bbox_to_dimensions(chemba_bbox_east, resolution=resolution)\n", + "\n", + "chemba_west = [34.9460, -17.3500, 34.9839, -17.3110]\n", + "chemba_bbox_west = BBox(bbox=chemba_west, crs=CRS.WGS84)\n", + "chemba_size_west = bbox_to_dimensions(chemba_bbox_west, resolution=resolution)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "77513576-2fed-4d17-a665-d11267b42390", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def download_function(slot):\n", + " ### Chemba east side\n", + " # create a list of requests \n", + " list_of_requests = [get_true_color_request_day_east(slot)]\n", + " list_of_requests = [request.download_list[0] for request in list_of_requests]\n", + "\n", + " # download data chemba east with multiple threads\n", + " data = SentinelHubDownloadClient(config=config).download(list_of_requests, max_threads=15)\n", + " print(f' East downloaded ' +slot)\n", + "\n", + " ### Chemba west side\n", + " # create a list of requests\n", + " list_of_requests = [get_true_color_request_day_west(slot)]\n", + " list_of_requests = [request.download_list[0] for request in list_of_requests]\n", + "\n", + " # download data chemba west with multiple threads\n", + " data = SentinelHubDownloadClient(config=config).download(list_of_requests, max_threads=15)\n", + " print(f' West downloaded ' +slot)\n", + " \n", + " time.sleep(.5)\n", + "\n", + "def merge_files(slot):\n", + " base_path = Path('../laravel_app/storage/app/chemba')\n", + " # List the downloaded Tiffs in the different subfolders with pathlib (native library)\n", + " file_list = [f\"{x}/response.tiff\" for x in Path(base_path / 'single_images' / slot).iterdir()]\n", + " print(file_list)\n", + "\n", + " folder_for_merged_tifs = str(base_path / 'merged_tif' / f\"{slot}.tif\")\n", + " folder_for_virtual_raster = str(base_path / 'merged_virtual' / f\"merged{slot}.vrt\")\n", + "\n", + " # Create a virtual raster\n", + " vrt_all = gdal.BuildVRT(folder_for_virtual_raster, file_list)\n", + " vrt_all = gdal.BuildVRT(folder_for_virtual_raster, file_list)\n", + "\n", + " # Convert to JPEG\n", + " gdal.Translate(folder_for_merged_tifs,folder_for_virtual_raster)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "d5830b6e-da0a-416f-867e-cbca4bd434f5", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " East downloaded 2023-09-30\n", + " West downloaded 2023-09-30\n", + " East downloaded 2023-10-01\n", + " West downloaded 2023-10-01\n", + " East downloaded 2023-10-02\n", + " West downloaded 2023-10-02\n", + " East downloaded 2023-10-03\n", + " West downloaded 2023-10-03\n", + " East downloaded 2023-10-04\n", + " West downloaded 2023-10-04\n", + " East downloaded 2023-10-05\n", + " West downloaded 2023-10-05\n", + " East downloaded 2023-10-06\n", + " West downloaded 2023-10-06\n" + ] + } + ], + "source": [ + "for slot in slots:\n", + " download_function(slot)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "68db3c15-6f94-432e-b315-c329e4251b21", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['chemba_single_images/2023-09-30/369e30117c87ea5a93d4b1fdc1e200f5/response.tiff', 'chemba_single_images/2023-09-30/19f952f0b4dc03e82b31ddda504eca37/response.tiff']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning 1: chemba_single_images/2023-09-30/369e30117c87ea5a93d4b1fdc1e200f5/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-09-30/19f952f0b4dc03e82b31ddda504eca37/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-09-30/369e30117c87ea5a93d4b1fdc1e200f5/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-09-30/19f952f0b4dc03e82b31ddda504eca37/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-09-30/369e30117c87ea5a93d4b1fdc1e200f5/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-09-30/19f952f0b4dc03e82b31ddda504eca37/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['chemba_single_images/2023-10-01/52579ecea6e4c674f3f15a70692b2470/response.tiff', 'chemba_single_images/2023-10-01/199af70a0a9bdf56a6938888f8ad073c/response.tiff']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning 1: chemba_single_images/2023-10-01/52579ecea6e4c674f3f15a70692b2470/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-01/199af70a0a9bdf56a6938888f8ad073c/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-01/52579ecea6e4c674f3f15a70692b2470/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-01/199af70a0a9bdf56a6938888f8ad073c/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-01/52579ecea6e4c674f3f15a70692b2470/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-01/199af70a0a9bdf56a6938888f8ad073c/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['chemba_single_images/2023-10-02/131056d1de92580e74203e14cda16072/response.tiff', 'chemba_single_images/2023-10-02/f16e88a64ddff761b1c5b534c18588c5/response.tiff']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning 1: chemba_single_images/2023-10-02/131056d1de92580e74203e14cda16072/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-02/f16e88a64ddff761b1c5b534c18588c5/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-02/131056d1de92580e74203e14cda16072/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-02/f16e88a64ddff761b1c5b534c18588c5/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-02/131056d1de92580e74203e14cda16072/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-02/f16e88a64ddff761b1c5b534c18588c5/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['chemba_single_images/2023-10-03/7a15a778f1bef721f997fc4c7071a022/response.tiff', 'chemba_single_images/2023-10-03/0cf952e5d972cd1b001c3ca1e0f286fc/response.tiff']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning 1: chemba_single_images/2023-10-03/7a15a778f1bef721f997fc4c7071a022/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-03/0cf952e5d972cd1b001c3ca1e0f286fc/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-03/7a15a778f1bef721f997fc4c7071a022/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-03/0cf952e5d972cd1b001c3ca1e0f286fc/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-03/7a15a778f1bef721f997fc4c7071a022/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-03/0cf952e5d972cd1b001c3ca1e0f286fc/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['chemba_single_images/2023-10-04/37292b2973437bbcd8164d4b0cb5ce09/response.tiff', 'chemba_single_images/2023-10-04/a3957aa1c1478fed498c3f1e94b8703a/response.tiff']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning 1: chemba_single_images/2023-10-04/37292b2973437bbcd8164d4b0cb5ce09/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-04/a3957aa1c1478fed498c3f1e94b8703a/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-04/37292b2973437bbcd8164d4b0cb5ce09/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-04/a3957aa1c1478fed498c3f1e94b8703a/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-04/37292b2973437bbcd8164d4b0cb5ce09/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-04/a3957aa1c1478fed498c3f1e94b8703a/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['chemba_single_images/2023-10-05/1ab274c42d49578ad25c592bc16c5c17/response.tiff', 'chemba_single_images/2023-10-05/ca219fceac18e287d129aaca803998f0/response.tiff']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning 1: chemba_single_images/2023-10-05/1ab274c42d49578ad25c592bc16c5c17/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-05/ca219fceac18e287d129aaca803998f0/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-05/1ab274c42d49578ad25c592bc16c5c17/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-05/ca219fceac18e287d129aaca803998f0/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-05/1ab274c42d49578ad25c592bc16c5c17/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-05/ca219fceac18e287d129aaca803998f0/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['chemba_single_images/2023-10-06/a1c4a82635c5b3379cac01c44428a46c/response.tiff', 'chemba_single_images/2023-10-06/cae35e70e26ce81aff15dcea89246b07/response.tiff']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning 1: chemba_single_images/2023-10-06/a1c4a82635c5b3379cac01c44428a46c/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-06/cae35e70e26ce81aff15dcea89246b07/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-06/a1c4a82635c5b3379cac01c44428a46c/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-06/cae35e70e26ce81aff15dcea89246b07/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-06/a1c4a82635c5b3379cac01c44428a46c/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-06/cae35e70e26ce81aff15dcea89246b07/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n" + ] + } + ], + "source": [ + "for slot in slots:\n", + " merge_files(slot)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "4f80e84e-95b5-41dc-83d8-720cd699a79a", + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (4067800170.py, line 1)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m Cell \u001b[0;32mIn[13], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m stop here\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "raise SystemExit(\"Stop right there!\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a8d367da-3eb5-419a-9a8a-d315f8ae8d89", + "metadata": {}, + "outputs": [], + "source": [ + "days = 1\n", + "start = datetime.datetime(2021,3,12)\n", + "end = start + datetime.timedelta(days=days)\n", + "n_chunks = 1\n", + "tdelta = (end - start) / n_chunks\n", + "edges = [(start + i*tdelta).date().isoformat() for i in range(n_chunks)]\n", + "#slots = [(edges[i], edges[i]) for i in range(len(edges))]\n", + "slots = [(edges[i], edges[i]) for i in range(len(edges))]\n", + "\n", + "date = start.strftime(\"%Y-%m-%d\")\n", + "\n", + "print('Monthly time windows:\\n')\n", + "for slot in slots:\n", + " print(slot)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "461cc3fa-4b7a-48aa-abee-25eb97689707", + "metadata": {}, + "outputs": [], + "source": [ + "days = 1\n", + "start = datetime.datetime(2022,4,27)\n", + "end = start + datetime.timedelta(days=days)\n", + "n_chunks = 1\n", + "tdelta = (end - start) / n_chunks\n", + "edges = [(start + i*tdelta).date().isoformat() for i in range(n_chunks)]\n", + "#slots = [(edges[i], edges[i]) for i in range(len(edges))]\n", + "slots = [(edges[i], edges[i]) for i in range(len(edges))]\n", + "\n", + "date = start.strftime(\"%Y-%m-%d\")\n", + "\n", + "### Chemba east side\n", + "chemba_east = [34.8830, -17.3516, 34.9380, -17.2917]\n", + "resolution = 3\n", + "chemba_bbox = BBox(bbox=chemba_east, crs=CRS.WGS84)\n", + "chemba_size = bbox_to_dimensions(chemba_bbox, resolution=resolution)\n", + "\n", + "# create a list of requests \n", + "list_of_requests = [get_true_color_request(slot) for slot in slots]\n", + "list_of_requests = [request.download_list[0] for request in list_of_requests]\n", + "\n", + "# download data with multiple threads\n", + "data = SentinelHubDownloadClient(config=config).download(list_of_requests, max_threads=15)\n", + "\n", + "\n", + "\n", + "### Chemba west side\n", + "chemba_west = [34.9460, -17.3500, 34.9839, -17.3110]\n", + "chemba_bbox = BBox(bbox=chemba_west, crs=CRS.WGS84)\n", + "chemba_size = bbox_to_dimensions(chemba_bbox, resolution=resolution)\n", + "\n", + "print(f'Image shape at {resolution} m resolution: {chemba_size} pixels')\n", + "\n", + "# create a list of requests\n", + "list_of_requests = [get_true_color_request(slot) for slot in slots]\n", + "list_of_requests = [request.download_list[0] for request in list_of_requests]\n", + "\n", + "# download data with multiple threads\n", + "data = SentinelHubDownloadClient(config=config).download(list_of_requests, max_threads=15)\n", + "print(f'data downloaded')\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "52b5f742-3db0-4290-a467-688f8aec36d5", + "metadata": {}, + "source": [ + "### Chemba west side" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d14b7a1e-87a6-4344-859c-5e602bd2e006", + "metadata": {}, + "outputs": [], + "source": [ + "a" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e9daf5c9-39f6-44ea-92dd-dee355669b19", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b7f42def-21c2-439c-9e96-a24ca1eb2176", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6c5d6f71-e7af-450f-b6c2-151810220159", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5e6f8a1d-bb36-4e96-b06d-6967ea8f3d98", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4a3c9cc9-ad37-405a-b8bf-996fd474540e", + "metadata": {}, + "outputs": [], + "source": [ + "a " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d2c127e0-eaf6-46b8-af5d-6f8000bf3df3", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "3432ffcf-606f-4c34-8f8c-a21bee6326b4", + "metadata": {}, + "source": [ + "## Visualise the image" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0d6b8db8-a33b-45bc-80a9-877ee1b8b80c", + "metadata": {}, + "outputs": [], + "source": [ + "evalscript_true_color_png = \"\"\"\n", + " //VERSION=3\n", + "\n", + " function setup() {\n", + " return {\n", + " input: [{\n", + " bands: [\"B1\", \"B2\", \"B3\", \"UDM\"]\n", + " }],\n", + " output: {\n", + " bands: 3\n", + " }\n", + " };\n", + " }\n", + "\n", + " function evaluatePixel(sample) {\n", + " return [2.5 * sample.B1 / 10000, 2.5 * sample.B2 / 10000, 2.5 * sample.B3 / 10000, sample.UDM];\n", + " }\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e498acb8-8e14-41f4-84cd-54f4648c1716", + "metadata": {}, + "outputs": [], + "source": [ + "def get_true_color_request_png(time_interval):\n", + " return SentinelHubRequest(\n", + " evalscript=evalscript_true_color_png,\n", + " input_data=[\n", + " SentinelHubRequest.input_data(\n", + " data_collection=DataCollection.planet_data,\n", + " time_interval=('2022-02-10', '2022-02-17')\n", + " )\n", + " ],\n", + " responses=[\n", + " SentinelHubRequest.output_response('default', MimeType.PNG)\n", + " ],\n", + " bbox=chemba_bbox,\n", + " size=chemba_size,\n", + " config=config\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19fd091a-dd67-484f-a1a7-3bce61bc9517", + "metadata": {}, + "outputs": [], + "source": [ + "# create a list of requests\n", + "list_of_requests_png = [get_true_color_request_png(slot) for slot in slots]\n", + "list_of_requests_png = [request.download_list[0] for request in list_of_requests_png]\n", + "\n", + "# download data with multiple threads\n", + "data_png = SentinelHubDownloadClient(config=config).download(list_of_requests_png, max_threads=5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6d8abc2e-e245-490a-83eb-36f6a5ec0418", + "metadata": {}, + "outputs": [], + "source": [ + "# some stuff for pretty plots\n", + "ncols = 4\n", + "nrows = 7\n", + "aspect_ratio = chemba_size[0] / chemba_size[1]\n", + "subplot_kw = {'xticks': [], 'yticks': [], 'frame_on': False}\n", + "\n", + "fig, axs = plt.subplots(ncols=ncols, nrows=nrows, figsize=(5 * ncols * aspect_ratio, 5 * nrows),\n", + " subplot_kw=subplot_kw)\n", + "\n", + "for idx, image in enumerate(data_png):\n", + " ax = axs[idx // ncols][idx % ncols]\n", + " ax.imshow(np.clip(image * 2.5/255, 0, 1))\n", + " ax.set_title(f'{slots[idx][0]} ', fontsize=10)\n", + "\n", + "plt.tight_layout()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7803cfac-ce53-4461-8702-88b872ef64aa", + "metadata": {}, + "outputs": [], + "source": [ + "evalscript_true_color = \"\"\"\n", + " //VERSION=3\n", + "\n", + " function setup() {\n", + " return {\n", + " input: [{\n", + " bands: [\"B1\", \"B2\", \"B3\"]\n", + " }],\n", + " output: {\n", + " bands: 3\n", + " }\n", + " };\n", + " }\n", + "\n", + " function evaluatePixel(sample) {\n", + " return [sample.B04, sample.B03, sample.B02];\n", + " }\n", + "\"\"\"\n", + "\n", + "request_true_color = SentinelHubRequest(\n", + " evalscript=evalscript_true_color,\n", + " input_data=[\n", + " SentinelHubRequest.input_data(\n", + " data_collection=DataCollection.planet_data2,\n", + " time_interval=('2022-02-01', '2022-02-10'),\n", + " )\n", + " ],\n", + " responses=[\n", + " SentinelHubRequest.output_response('default', MimeType.PNG)\n", + " ],\n", + " bbox=chemba_bbox,\n", + " size=chemba_size,\n", + " config=config\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ab26df2a-f780-4f6b-8d09-0eead9d6db2b", + "metadata": {}, + "outputs": [], + "source": [ + "true_color_imgs = request_true_color.get_data()\n" + ] + }, + { + "cell_type": "markdown", + "id": "a51f41f5-f5e1-4fa7-aef2-53371d1386ce", + "metadata": {}, + "source": [ + "## change file name\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "49a52f5b-2626-4dd2-9e57-6b44691f9952", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import glob\n", + "import json\n", + "import datetime as dt\n", + "from urllib.parse import unquote\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b3720a99-2906-41d9-ac1b-9c9993cd8308", + "metadata": {}, + "outputs": [], + "source": [ + "def get_request_dt(request_file):\n", + " with open(request_file, 'r') as req:\n", + " request = json.load(req)\n", + " url = unquote(request['url'])\n", + " time_parameter = [t for t in url.split('&') if t.startswith('TIME=')][0]\n", + " time = time_parameter.split('TIME=')[1].split('/')[0]\n", + " return dt.datetime.strptime(time, \"%Y-%m-%dT%H:%M:%S\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1f4e5844-34bc-4cb9-9365-46356b1db552", + "metadata": {}, + "outputs": [], + "source": [ + "if __name__ == \"__main__\":\n", + " folders = glob.glob('.\\\\test_dir2\\\\*')\n", + " dates = [get_request_dt(f'{folder}/request.json') for folder in folders]\n", + " df = pd.DataFrame(zip(folders, dates), columns=['folder', 'datetime'])\n", + " df.sort_values(by='datetime', ascending=True, inplace=True)\n", + " print(df.head().to_markdown())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4319580b-f0b7-4370-91f4-bc4fcf068bc3", + "metadata": {}, + "outputs": [], + "source": [ + "def get_request_dt(request_file):\n", + " with open(request_file, 'r') as req:\n", + " request = json.load(req)\n", + " url = unquote(request['url'])\n", + " return url.split('/')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "87580f26-0ccc-4061-a460-52d941a90b6a", + "metadata": {}, + "outputs": [], + "source": [ + "folders = glob.glob('.\\\\test_dir2\\\\*')\n", + "[get_request_dt(f'{folder}/request.json') for folder in folders]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6569956e-91c5-42c9-acfa-74fde22ee1ce", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "folders = glob.glob('.\\\\test_dir2\\\\*')\n", + "dates = [get_request_dt(f'{folder}/request.json') for folder in folders]\n", + "dates" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2608ac51-fa24-4fd6-8758-cf27bda8860e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/python_app/chemba_single_images/2023-10-04/37292b2973437bbcd8164d4b0cb5ce09/request.json b/python_app/chemba_single_images/2023-10-04/37292b2973437bbcd8164d4b0cb5ce09/request.json new file mode 100644 index 0000000..2891121 --- /dev/null +++ b/python_app/chemba_single_images/2023-10-04/37292b2973437bbcd8164d4b0cb5ce09/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.946, + -17.35, + 34.9839, + -17.311 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-04T00:00:00Z", + "to": "2023-10-04T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 1425, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1358 + } + }, + "timestamp": "2023-10-10T11:45:04.511299", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 3.275736, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:04 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "12.303352062622253" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-04/a3957aa1c1478fed498c3f1e94b8703a/request.json b/python_app/chemba_single_images/2023-10-04/a3957aa1c1478fed498c3f1e94b8703a/request.json new file mode 100644 index 0000000..94f717d --- /dev/null +++ b/python_app/chemba_single_images/2023-10-04/a3957aa1c1478fed498c3f1e94b8703a/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.883, + -17.3516, + 34.938, + -17.2917 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-04T00:00:00Z", + "to": "2023-10-04T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 2191, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1971 + } + }, + "timestamp": "2023-10-10T11:45:01.042605", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 5.668425, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:00 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "27.456034959410772" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-05/1ab274c42d49578ad25c592bc16c5c17/request.json b/python_app/chemba_single_images/2023-10-05/1ab274c42d49578ad25c592bc16c5c17/request.json new file mode 100644 index 0000000..af9a1f6 --- /dev/null +++ b/python_app/chemba_single_images/2023-10-05/1ab274c42d49578ad25c592bc16c5c17/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.946, + -17.35, + 34.9839, + -17.311 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-05T00:00:00Z", + "to": "2023-10-05T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 1425, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1358 + } + }, + "timestamp": "2023-10-10T11:45:13.161955", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 2.723803, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:13 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "12.303352062622253" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-05/ca219fceac18e287d129aaca803998f0/request.json b/python_app/chemba_single_images/2023-10-05/ca219fceac18e287d129aaca803998f0/request.json new file mode 100644 index 0000000..653cc8a --- /dev/null +++ b/python_app/chemba_single_images/2023-10-05/ca219fceac18e287d129aaca803998f0/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.883, + -17.3516, + 34.938, + -17.2917 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-05T00:00:00Z", + "to": "2023-10-05T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 2191, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1971 + } + }, + "timestamp": "2023-10-10T11:45:10.248784", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 5.010186, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:10 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "27.456034959410772" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-06/a1c4a82635c5b3379cac01c44428a46c/request.json b/python_app/chemba_single_images/2023-10-06/a1c4a82635c5b3379cac01c44428a46c/request.json new file mode 100644 index 0000000..53a1fe1 --- /dev/null +++ b/python_app/chemba_single_images/2023-10-06/a1c4a82635c5b3379cac01c44428a46c/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.946, + -17.35, + 34.9839, + -17.311 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-06T00:00:00Z", + "to": "2023-10-06T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 1425, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1358 + } + }, + "timestamp": "2023-10-10T11:45:22.861847", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 3.398991, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:22 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "12.303352062622253" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-06/cae35e70e26ce81aff15dcea89246b07/request.json b/python_app/chemba_single_images/2023-10-06/cae35e70e26ce81aff15dcea89246b07/request.json new file mode 100644 index 0000000..885637d --- /dev/null +++ b/python_app/chemba_single_images/2023-10-06/cae35e70e26ce81aff15dcea89246b07/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.883, + -17.3516, + 34.938, + -17.2917 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-06T00:00:00Z", + "to": "2023-10-06T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 2191, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1971 + } + }, + "timestamp": "2023-10-10T11:45:19.247047", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 5.512139, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:19 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "27.456034959410772" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-07/3a899f894dfc9421c0454963e781ee50/request.json b/python_app/chemba_single_images/2023-10-07/3a899f894dfc9421c0454963e781ee50/request.json new file mode 100644 index 0000000..e8262bf --- /dev/null +++ b/python_app/chemba_single_images/2023-10-07/3a899f894dfc9421c0454963e781ee50/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.946, + -17.35, + 34.9839, + -17.311 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-07T00:00:00Z", + "to": "2023-10-07T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 1425, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1358 + } + }, + "timestamp": "2023-10-10T11:45:28.996066", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 1.55439, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:29 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "12.303352062622253" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-07/55237fa25a668d6bb2a5d64d3e15a25e/request.json b/python_app/chemba_single_images/2023-10-07/55237fa25a668d6bb2a5d64d3e15a25e/request.json new file mode 100644 index 0000000..c6ab74d --- /dev/null +++ b/python_app/chemba_single_images/2023-10-07/55237fa25a668d6bb2a5d64d3e15a25e/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.883, + -17.3516, + 34.938, + -17.2917 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-07T00:00:00Z", + "to": "2023-10-07T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 2191, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1971 + } + }, + "timestamp": "2023-10-10T11:45:27.401614", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 4.002806, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:27 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "27.456034959410772" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-08/667654d090d9d364ba2503be89efd0e5/request.json b/python_app/chemba_single_images/2023-10-08/667654d090d9d364ba2503be89efd0e5/request.json new file mode 100644 index 0000000..514cad1 --- /dev/null +++ b/python_app/chemba_single_images/2023-10-08/667654d090d9d364ba2503be89efd0e5/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.946, + -17.35, + 34.9839, + -17.311 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-08T00:00:00Z", + "to": "2023-10-08T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 1425, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1358 + } + }, + "timestamp": "2023-10-10T11:45:36.491864", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 3.551305, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:36 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "12.303352062622253" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-08/e529f48ef19175c434efd2631a2369e6/request.json b/python_app/chemba_single_images/2023-10-08/e529f48ef19175c434efd2631a2369e6/request.json new file mode 100644 index 0000000..abe10f8 --- /dev/null +++ b/python_app/chemba_single_images/2023-10-08/e529f48ef19175c434efd2631a2369e6/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.883, + -17.3516, + 34.938, + -17.2917 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-08T00:00:00Z", + "to": "2023-10-08T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 2191, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1971 + } + }, + "timestamp": "2023-10-10T11:45:32.725291", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 3.128947, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:32 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "27.456034959410772" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-09/52f91750075843995f2e04edfd234270/request.json b/python_app/chemba_single_images/2023-10-09/52f91750075843995f2e04edfd234270/request.json new file mode 100644 index 0000000..a238ca2 --- /dev/null +++ b/python_app/chemba_single_images/2023-10-09/52f91750075843995f2e04edfd234270/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.946, + -17.35, + 34.9839, + -17.311 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-09T00:00:00Z", + "to": "2023-10-09T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 1425, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1358 + } + }, + "timestamp": "2023-10-10T11:45:46.392453", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 3.275898, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:46 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "12.303352062622253" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-09/eb72f49b53caed085e0fb6b5e38b11aa/request.json b/python_app/chemba_single_images/2023-10-09/eb72f49b53caed085e0fb6b5e38b11aa/request.json new file mode 100644 index 0000000..a615271 --- /dev/null +++ b/python_app/chemba_single_images/2023-10-09/eb72f49b53caed085e0fb6b5e38b11aa/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.883, + -17.3516, + 34.938, + -17.2917 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-09T00:00:00Z", + "to": "2023-10-09T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 2191, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1971 + } + }, + "timestamp": "2023-10-10T11:45:42.824171", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 5.59089, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:42 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "27.456034959410772" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-10/7f67b5dfc2f37c26b0307e14259610ce/request.json b/python_app/chemba_single_images/2023-10-10/7f67b5dfc2f37c26b0307e14259610ce/request.json new file mode 100644 index 0000000..9c2eaca --- /dev/null +++ b/python_app/chemba_single_images/2023-10-10/7f67b5dfc2f37c26b0307e14259610ce/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.946, + -17.35, + 34.9839, + -17.311 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-10T00:00:00Z", + "to": "2023-10-10T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 1425, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1358 + } + }, + "timestamp": "2023-10-10T11:45:51.259003", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 1.552932, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:51 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "12.303352062622253" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-10/86fab75f716b316a0de019f95a7cf713/request.json b/python_app/chemba_single_images/2023-10-10/86fab75f716b316a0de019f95a7cf713/request.json new file mode 100644 index 0000000..b4f5ffe --- /dev/null +++ b/python_app/chemba_single_images/2023-10-10/86fab75f716b316a0de019f95a7cf713/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.883, + -17.3516, + 34.938, + -17.2917 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-10T00:00:00Z", + "to": "2023-10-10T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 2191, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1971 + } + }, + "timestamp": "2023-10-10T11:45:49.667010", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 2.734391, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:49 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "27.456034959410772" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/r_app/.Rprofile b/r_app/.Rprofile new file mode 100644 index 0000000..81b960f --- /dev/null +++ b/r_app/.Rprofile @@ -0,0 +1 @@ +source("renv/activate.R") diff --git a/r_app/.gitignore b/r_app/.gitignore new file mode 100644 index 0000000..2241998 --- /dev/null +++ b/r_app/.gitignore @@ -0,0 +1,18 @@ +# .gitignore + +# Ignore renv binary cache +renv/cache/ + +# Ignore temporary files +*.tmp +*.swp +*.save + +# Ignore files related to Rproj +.Rproj.user/ +.Rhistory +.RData + +# Ignore OSX files +.DS_Store + diff --git a/r_app/1_harvest_data_EcoFarm_v2.R b/r_app/1_harvest_data_EcoFarm_v2.R new file mode 100644 index 0000000..80cb946 --- /dev/null +++ b/r_app/1_harvest_data_EcoFarm_v2.R @@ -0,0 +1,178 @@ +#download excel with planting dates +library(googledrive) +library(here) +library(tidyverse) +library(lubridate) +library(readxl) + +#create directory +storage_dir <- here("laravel_app/storage/app") +data_dir <- here(storage_dir, "Data") +harvest_dir <- here(data_dir, "HarvestData") + +dir.create(file.path(data_dir)) +dir.create(file.path(harvest_dir)) + + +week = ymd(Sys.Date()) +file_name <- here(harvest_dir, paste("Data", week, ".xlsx")) +# yield_file_path <- here("Data", "HarvestData", paste("Current - Pivots planting date and harvesting data.xlsx")) + +#Check its existence +if (file.exists(file_name)) { + #Delete file if it exists + file.remove(file_name) + print("File deleted") +} + +#options(gargle_oauth_email = "henkpoldergraaf@gmail.com") + +#folder_url <- "https://docs.google.com/spreadsheets/d/1KPOPHvlzTBDvgFCYQetss0yoafeZeoNW/edit?rtpof=true#gid=1683410275" +#folder <- drive_get(as_id(folder_url)) + +#drive_download(folder, file_name, overwrite = T) + +excel_file_name = here(storage_dir,"harvesting_data", "Current - Pivots planting date and harevsting data.xlsx") + +# library(googlesheets4) +# read_sheet(folder_url) +#get dates in same column + +dates <- read_excel(excel_file_name, + skip=1, + col_types = c("text", "numeric", "text", "date", "numeric", "numeric", "numeric", + "date", "numeric", "skip", "skip", "numeric", "numeric", "numeric","skip", #2020 harvesting data + "date", "numeric", "skip", "skip", "numeric", "numeric", "numeric","skip", #2021 harvesting data + "date", "numeric", "skip", "skip", "numeric", "skip", "numeric","skip", #2022 harvesting data + "date", "numeric", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "numeric", "numeric","numeric","skip", #2023 + "skip", "skip", "skip", "skip", "skip", "skip","skip", "skip")) %>% #empty columns + rename(pivot_quadrant = PIVOT, + planting_date = `Date planted`, + Age = `Age (WEEK)`, + Year_replanted = `Year replanted`, + Harvesting_date_2020 = `2020 Harvest data`, + Harvesting_age_2020 = `...9`, + MT_weight_2020 = `...10`, + Tcha_2020 = `...11`, + Tchm_2020 = `...12`, + Harvesting_date_2021 = `2021/2022 Harvest data`, + Harvesting_age_2021 = `...14`, + MT_weight_2021 = `...15`, + Tcha_2021 = `...16`, + Tchm_2021 = `...17`, + Harvesting_date_2022 = `2022/2023 Harvest data`, + Harvesting_age_2022 = `...19`, + MT_weight_2022 = `...20`, + Tcha_2022 = `...21`) %>% + + slice(-1) %>% #select(-age) %>% + filter(pivot_quadrant != "Total") %>% #drop_na(pivot_quadrant) %>% + mutate(planting_date = ymd(planting_date ), + Harvesting_date_2020 = ymd(Harvesting_date_2020), + Harvesting_date_2021 = ymd(Harvesting_date_2021), + Harvesting_date_2022= ymd(Harvesting_date_2022), + Age = round(Age,0)) %>% filter(pivot_quadrant != "Total/Average") + +#copy each row and add ABCD +quadrants <- dates %>% slice(rep(1:n(), each=4)) %>% + group_by(pivot_quadrant) %>% + mutate(pivot_quadrant = paste0(pivot_quadrant, c("A", "B", "C", "D"))) %>% + filter(pivot_quadrant != "P1.8D" & pivot_quadrant != "P1.8 Q.DA"& pivot_quadrant != "P1.8 Q.DB"& pivot_quadrant != "P1.8 Q.DC") %>% + mutate(pivot_quadrant = case_when(pivot_quadrant == "P1.3 ABA" ~ "P1.3A", + pivot_quadrant == "P1.3 ABB" ~ "1.3B", + pivot_quadrant == "P1.3 ABC" ~ "1.3A", + pivot_quadrant == "P1.3 ABD" ~ "1.3A", + pivot_quadrant == "P1.3 CDA" ~ "1.3C", + pivot_quadrant == "P1.3 CDB" ~ "1.3D", + pivot_quadrant == "P1.3 CDC" ~ "1.3C", + pivot_quadrant == "P1.3 CDD" ~ "1.3C", + + pivot_quadrant == "P1.8 Q.DD" ~ "1.8D", + + pivot_quadrant == "P1.9.ABA" ~ "1.9A", + pivot_quadrant == "P1.9.ABB" ~ "1.9B", + pivot_quadrant == "P1.9.ABC" ~ "1.9A", + pivot_quadrant == "P1.9.ABD" ~ "1.9A", + pivot_quadrant == "P1.9.CDA" ~ "1.9C", + pivot_quadrant == "P1.9.CDB" ~ "1.9D", + pivot_quadrant == "P1.9.CDC" ~ "1.9C", + pivot_quadrant == "P1.9.CDD" ~ "1.9C", + + pivot_quadrant == "P2.3AA" ~ "2.3A", + pivot_quadrant == "P2.3AB" ~ "2.3A", + pivot_quadrant == "P2.3AC" ~ "2.3A", + pivot_quadrant == "P2.3AD" ~ "2.3A", + pivot_quadrant == "P2.3DA" ~ "2.3D", + pivot_quadrant == "P2.3DB" ~ "2.3D", + pivot_quadrant == "P2.3DC" ~ "2.3D", + pivot_quadrant == "P2.3DD" ~ "2.3D", + pivot_quadrant == "P2.3BCA" ~ "2.3B", + pivot_quadrant == "P2.3BCB" ~ "2.3B", + pivot_quadrant == "P2.3BCC" ~ "2.3C", + pivot_quadrant == "P2.3BCD" ~ "2.3C", + + pivot_quadrant == "P2.5 ABA" ~ "2.5A", + pivot_quadrant == "P2.5 ABB" ~ "2.5B", + pivot_quadrant == "P2.5 ABC" ~ "2.5A", + pivot_quadrant == "P2.5 ABD" ~ "2.5A", + pivot_quadrant == "P2.5 CDA" ~ "2.5C", + pivot_quadrant == "P2.5 CDB" ~ "2.5D", + pivot_quadrant == "P2.5 CDC" ~ "2.5C", + pivot_quadrant == "P2.5 CDD" ~ "2.5C", + + pivot_quadrant == "P3.1ABA" ~ "3.1A", + pivot_quadrant == "P3.1ABB" ~ "3.1B", + pivot_quadrant == "P3.1ABC" ~ "3.1A", + pivot_quadrant == "P3.1ABD" ~ "3.1A", + pivot_quadrant == "P3.1CDA" ~ "3.1C", + pivot_quadrant == "P3.1CDB" ~ "3.1D", + pivot_quadrant == "P3.1CDC" ~ "3.1C", + pivot_quadrant == "P3.1CDD" ~ "3.1C", + + pivot_quadrant == "P3.2 ABA" ~ "3.2A", + pivot_quadrant == "P3.2 ABB" ~ "3.2B", + pivot_quadrant == "P3.2 ABC" ~ "3.2A", + pivot_quadrant == "P3.2 ABD" ~ "3.2A", + pivot_quadrant == "P3.2 CDA" ~ "3.2C", + pivot_quadrant == "P3.2 CDB" ~ "3.2D", + pivot_quadrant == "P3.2 CDC" ~ "3.2C", + pivot_quadrant == "P3.2 CDD" ~ "3.2C", + + pivot_quadrant == "DL 1.3A" ~ "DL1.3", + pivot_quadrant == "DL 1.3B" ~ "DL1.3", + pivot_quadrant == "DL 1.3C" ~ "DL1.3", + pivot_quadrant == "DL 1.3D" ~ "DL1.3", + + pivot_quadrant == "DL 1.1A" ~ "DL1.1", + pivot_quadrant == "DL 1.1B" ~ "DL1.1", + pivot_quadrant == "DL 1.1C" ~ "DL1.1", + pivot_quadrant == "DL 1.1D" ~ "DL1.1", + + TRUE ~ pivot_quadrant) ) %>% unique() %>% + mutate_at("pivot_quadrant", str_replace, "P", "") %>% + mutate(pivot = pivot_quadrant) %>% + mutate_at("pivot",str_replace, "[ABCD]", "") %>% + mutate(pivot = case_when(pivot == "L1.1"~"DL1.1", + pivot == "L1.3" ~"DL1.3", + TRUE ~ pivot)) + +quadrants2 <- quadrants %>% + mutate( + season_start_2021 = case_when(!is.na(Harvesting_date_2021) ~ Harvesting_date_2021 - (Harvesting_age_2021 * 30)) , + season_end_2021 = case_when(!is.na(Harvesting_date_2021) ~ Harvesting_date_2021), + + season_start_2022 = case_when(is.na(Harvesting_date_2021) & !is.na(Harvesting_date_2022) ~ Harvesting_date_2022 - (Harvesting_age_2022 * 30), + !is.na(Harvesting_date_2021) & !is.na(Harvesting_date_2022) ~ Harvesting_date_2021 + ), + season_end_2022 = case_when(!is.na(Harvesting_date_2022) & !is.na(season_start_2022) ~ Harvesting_date_2022), + + season_start_2023 = case_when(Ratoons == 0 ~ planting_date, + TRUE ~ Harvesting_date_2022), + season_start_2023 = case_when(is.na(Harvesting_date_2022) ~ Harvesting_date_2021, + TRUE ~ season_start_2023), + season_end_2023 = case_when(!is.na(season_start_2023) ~ ymd(Sys.Date())) + + ) + +saveRDS(quadrants2, here(harvest_dir, "harvest_data_new")) + diff --git a/r_app/2_CI_data_prep.R b/r_app/2_CI_data_prep.R new file mode 100644 index 0000000..33975a3 --- /dev/null +++ b/r_app/2_CI_data_prep.R @@ -0,0 +1,218 @@ +library(here) +library(sf) +library(tidyverse) +library(lubridate) +library(terra) +library(exactextractr) + +library(CIprep) + + +laravel_storage_dir <- here("laravel_app/storage/app") +#preparing directories +planet_tif_folder <- here(laravel_storage_dir, "chemba/merged_tif") + +data_dir <- here(laravel_storage_dir, "Data") +extracted_CI_dir <- here(data_dir, "extracted_CI") +daily_CI_vals_dir <- here(extracted_CI_dir, "daily_vals") +cumulative_CI_vals_dir <- here(extracted_CI_dir, "cumulative_vals") + +weekly_CI_mosaic <- here(data_dir, "weekly_mosaic") +harvest_dir <- here(data_dir, "HarvestData") + +dir.create(here(extracted_CI_dir)) +dir.create(here(daily_CI_vals_dir)) +dir.create(here(cumulative_CI_vals_dir)) +dir.create(here(weekly_CI_mosaic)) + + + + +# Creating weekly mosaic +dates <- date_list(0) + +#load pivot geojson +pivot_sf_q <- st_read(here(geojson_dir, "pivot_20210625.geojson")) %>% dplyr::select(pivot, pivot_quadrant) %>% vect() + +#load and filter raster files +raster_files <- list.files(planet_tif_folder,full.names = T, pattern = ".tif") #use pattern = '.tif$' or something else if you have multiple files in this folder +filtered_files <- map(dates$days_filter, ~ raster_files[grepl(pattern = .x, x = raster_files)]) %>% + compact() %>% + flatten_chr() + +rasters_masked <- map(filtered_files, mask_raster, fields = pivot_sf_q) %>% set_names(filtered_files) + +rasters_masked[sapply(rasters_masked, is.null)] <- NULL + +rasters_masked <- setNames(rasters_masked, map_chr(names(rasters_masked), date_extract)) + +total_pix_area <- rast(filtered_files[1]) %>% terra::subset(1) %>% + crop(pivot_sf_q, mask = TRUE) %>% + global(., fun="notNA") #%>% +# as.matrix() %>% +# `[`(1, 1) + +total_pix_area <- rast(filtered_files[1]) %>% subset(1) %>% crop(pivot_sf_q, mask = TRUE) %>% freq(., usenames = TRUE) + + + +layer_5_list <- purrr::map(rasters_masked, function(spatraster) { + spatraster[[5]] +}) %>% rast() + +cloud_perc_list <- freq(layer_5_list, usenames = TRUE) %>% + mutate(cloud_perc = (100 -((count/sum(total_pix_area$count))*100)), + cloud_thres_5perc = as.integer(cloud_perc < 5), + cloud_thres_40perc = as.integer(cloud_perc < 40)) %>% + rename(Date = layer) %>% select(-value, -count) + +cloud_index_5perc <- which(cloud_perc_list$cloud_thres_5perc == max(cloud_perc_list$cloud_thres_5perc)) +cloud_index_40perc <- which(cloud_perc_list$cloud_thres_40perc == max(cloud_perc_list$cloud_thres_40perc)) + +## Create mosaic + +if(sum(cloud_perc_list$cloud_thres_5perc)>1){ + message("More than 1 raster without clouds (<5%), max composite made") + + cloudy_rasters_list <- rasters_masked[cloud_index_5perc] + raster_list_subset <- lapply(cloudy_rasters_list, function(r) { + subset(r, 6)}) + + rsrc <- sprc(raster_list_subset) + x <- mosaic(rsrc, fun = "max") + + # x <- rast(rasters_masked[cloud_index_5perc[1]]) + names(x) <- "CI" + # writeRaster(x, here(weekly_CI_mosaic ,paste0("week_", dates$week, "_", dates$year, ".tif")), overwrite=TRUE) + # message("raster exported") + +}else if(sum(cloud_perc_list$cloud_thres_5perc)==1){ + message("Only 1 raster without clouds (<5%)") + + x <- rast(rasters_masked[cloud_index_5perc[1]]) + names(x) <- c("red", "green", "blue","nir", "cloud" ,"CI") + + rsrc <- sprc(raster_list_subset) + x <- mosaic(rsrc, fun = "max") + + # x <- rast(rasters_masked[cloud_index_5perc[1]]) + names(x) <- "CI" + # writeRaster(x, here(weekly_CI_mosaic ,paste0("week_", dates$week, "_", dates$year, ".tif")), overwrite=TRUE) + # message("raster exported") + +}else if(sum(cloud_perc_list$cloud_thres_40perc)>1){ + message("More than 1 image contains clouds, composite made of <40% cloud cover images") + + cloudy_rasters_list <- rasters_masked[cloud_index_40perc] + raster_list_subset <- lapply(cloudy_rasters_list, function(r) { + subset(r, 6) + }) + + rsrc <- sprc(raster_list_subset) + x <- mosaic(rsrc, fun = "max") + names(x) <- "CI" + # writeRaster(x, here(weekly_CI_mosaic ,paste0("week_", dates$week, "_", dates$year, ".tif")), overwrite=TRUE) + # message("raster exported") + +}else{ + message("No cloud free images available") + x <- rast(rasters_masked[1]) + x[x] <- NA + names(x) <- c("red", "green", "blue","nir", "cloud" ,"CI") + # writeRaster(x, here(weekly_CI_mosaic ,paste0("week_", dates$week, "_", dates$year, ".tif")), overwrite=TRUE) + # message("raster exported") + +} + +plot(x$CI, main = paste("CI map", dates$week)) +#plotRGB(x, main = paste("RGB image week", dates$week)) + +# writeRaster(x, here(weekly_CI_mosaic ,paste0("week_", dates$week, "_", dates$year, ".tif")), overwrite=TRUE) +writeRaster(x, here(weekly_CI_mosaic ,paste0("week_", dates$week, "_", dates$year, ".tif")), overwrite=TRUE) + + + +# Extracting CI + +# pivot_sf_q <- st_read(here("..", "Data", "pivot_20210625.geojson")) %>% dplyr::select(pivot, pivot_quadrant) %>% vect() +pivot_sf <- st_read(here(data_dir, "pivot_20210625.geojson")) %>% dplyr::select(pivot, pivot_quadrant) %>% group_by(pivot) %>% summarise() %>% vect() + +walk(filtered_files, extract_rasters_daily, field_geojson= pivot_sf_q, quadrants = TRUE, daily_CI_vals_dir) + +pivots_dates0 <- readRDS(here(harvest_dir, "harvest_data_new")) %>% filter( + pivot %in% c("1.1", "1.2", "1.3", "1.4", "1.6", "1.7", "1.8", "1.9", "1.10", "1.11", "1.12", "1.13", + "1.14" , "1.16" , "1.17" , "1.18" ,"2.1", "2.2", "2.3" , "2.4", "2.5", "3.1", "3.2", "3.3", + "4.1", "4.2", "4.3", "4.4", "4.5", "4.6", "5.1" ,"5.2", "5.3", "5.4", "6.1", "6.2", "DL1.1", "DL1.3") +) + +# pivots_dates_long <- pivots_dates0 %>% +# select(c("pivot_quadrant", "season_start_2021", "season_end_2021", "season_start_2022", "season_end_2022", "season_start_2023", "season_end_2023")) %>% +# pivot_longer(cols = c("season_start_2021", "season_end_2021", "season_start_2022", "season_end_2022", "season_start_2023", "season_end_2023")) %>% +# separate(pivot_quadrant, into = c("name", "Year"), sep = "\\.") + +harvesting_data <- pivots_dates0 %>% + select(c("pivot_quadrant", "season_start_2021", "season_end_2021", "season_start_2022", "season_end_2022", "season_start_2023", "season_end_2023")) %>% + pivot_longer(cols = starts_with("season"), names_to = "Year", values_to = "value") %>% + separate(Year, into = c("name", "Year"), sep = "(?<=season_start|season_end)\\_", remove = FALSE) %>% + mutate(name = str_to_title(name)) %>% + pivot_wider(names_from = name, values_from = value) %>% + rename(Field = pivot_quadrant) +# extracted_values <- list.files("C:\\Users\\timon\\Resilience BV\\4002 CMD App - General\\4002 CMD Team\\4002 TechnicalData\\04 WP2 technical\\DetectingSpotsR\\EcoFarm\\planet\\extracted", +# pattern ="_quadrant", full.names = TRUE) +extracted_values <- list.files(here(daily_CI_vals_dir), full.names = TRUE) + +head(extracted_values) + +pivot_stats <- extracted_values %>% + map_dfr(readRDS) %>% + group_by(pivot_quadrant) %>% + summarise(across(everything(), ~ first(na.omit(.)))) + +pivots_data_present <- unique(pivots_dates0$pivot_quadrant) +quadrant_list <- pivots_data_present + +# gather data into long format for easier calculation and visualisation +pivot_stats_long <- pivot_stats %>% + tidyr::gather("Date", value, -pivot_quadrant, -pivot ) %>% + mutate(Date = right(Date, 8), + Date = lubridate::ymd(Date) + ) %>% + drop_na(c("value","Date")) %>% + mutate(value = as.numeric(value))%>% + filter_all(all_vars(!is.infinite(.)))%>% + rename(Field = pivot_quadrant) + +# #2021 +pivots_dates_Data_2021 <- pivots_dates0 %>% filter(!is.na(season_start_2021)) +pivot_select_model_Data_2021 <- unique(pivots_dates_Data_2021$pivot_quadrant) + +# #2022 +pivots_dates_Data_2022 <- pivots_dates0 %>% filter(!is.na(season_end_2022)) +pivot_select_model_Data_2022 <- unique(pivots_dates_Data_2022$pivot_quadrant ) +# #2023 +pivots_dates_Data_2023 <- pivots_dates0 %>% filter(!is.na(season_start_2023)) +pivot_select_model_Data_2023 <- unique(pivots_dates_Data_2023$pivot_quadrant) +# #2024 +#pivots_dates_Data_2024 <- pivots_dates0 %>% filter(!is.na(season_start_2024)) +#pivot_select_model_Data_2024 <- unique(pivots_dates_Data_2024$pivot_quadrant) + + +## Extracting the correct CI values + +Data_2021 <- map_dfr(pivot_select_model_Data_2021, ~ extract_CI_data(.x, harvesting_data = harvesting_data, field_CI_data = pivot_stats_long, season = 2021)) +Data_2022 <- map_dfr(pivot_select_model_Data_2022, ~ extract_CI_data(.x, harvesting_data = harvesting_data, field_CI_data = pivot_stats_long, season = 2022)) +Data_2023 <- map_dfr(pivot_select_model_Data_2023, ~ extract_CI_data(.x, harvesting_data = harvesting_data, field_CI_data = pivot_stats_long, season = 2023)) +#Data_2024 <- map_dfr(pivot_select_model_Data_2024, ~ extract_CI_data(.x, harvesting_data = harvesting_data, field_CI_data = pivot_stats_long, season = 2024)) + + +CI_all <- rbind(Data_2021, Data_2022, Data_2023) + +CI_all <- CI_all %>% group_by(model) %>% mutate(CI_per_day = FitData - lag(FitData), + cumulative_CI = cumsum(FitData)) + +head(CI_all) + + +saveRDS(CI_all, here(cumulative_CI_vals_dir,"All_pivots_Cumulative_CI_quadrant_year_v2.rds")) + + diff --git a/r_app/CI_report_dashboard_planet.Rmd b/r_app/CI_report_dashboard_planet.Rmd new file mode 100644 index 0000000..88b489a --- /dev/null +++ b/r_app/CI_report_dashboard_planet.Rmd @@ -0,0 +1,513 @@ +--- +# title: paste0("CI report week ", week, " - all pivots from ", last_tuesday, " to ", today) +output: + word_document: + reference_docx: word-styles-reference-03.docx + # toc: true +editor_options: + chunk_output_type: console +--- + + +```{r libraries, message=FALSE, warning=FALSE, include=FALSE} +library(here) +library(sf) +library(tidyverse) +library(tmap) +library(lubridate) +library(exactextractr) +library(zoo) +library(raster) + +library(rsample) +library(caret) +library(CAST) +``` + +```{r directories, message=FALSE, warning=FALSE, include=FALSE} +laravel_storage_dir <- here("laravel_app/storage/app") +data_dir <- here(laravel_storage_dir, "Data") +extracted_CI_dir <- here(data_dir, "extracted_CI") +daily_CI_vals_dir <- here(extracted_CI_dir, "daily_vals") +cumulative_CI_vals_dir <- here(extracted_CI_dir, "cumulative_vals") +harvest_dir <- here(data_dir, "HarvestData") + +weekly_CI_mosaic <- here(data_dir, "weekly_mosaic") + +s2_dir <- "C:/Users/timon/Resilience BV/4002 CMD App - General/4002 CMD Team/4002 TechnicalData/04 WP2 technical/python/chemba_S2/" +``` + + +```{r week, message=FALSE, warning=FALSE, include=FALSE} +# week <- 5 +# today = "2023-02-02" +# week <- week(today) +# today = "2022-08-18" +# +today = as.character(Sys.Date()) +week = lubridate::week(Sys.time()) +# week = 26 +title_var <- paste0("CI dashboard week ", week, " - all pivots dashboard using 3x3 meter resolution") +``` + +--- +title: `r title_var` +--- + +This PDF-dashboard shows the status of your fields on a weekly basis. We will show this in different ways: + +1) The first way is with a general overview of field heterogeneity using ‘variation’ – a higher number indicates more differences between plants in the same field. +2) The second map shows a normal image of the latest week in colour, of the demo fields. +3) Then come the maps per field, which show the status for three weeks ago, two weeks ago, last week, and this week, as well as a percentage difference map between last week and this week. The percentage difference maps shows the relative difference in growth over the last week, with positive numbers showing growth, and negative numbers showing decline. +4) Below the maps are graphs that show how each pivot quadrant is doing, measured through the chlorophyll index. + + + +```{r data, message=FALSE, warning=FALSE, include=FALSE} +# get latest CI index +week_minus_1 <- as.numeric(week) -1 +week_minus_2 <- as.numeric(week) -2 +week_minus_3 <- as.numeric(week) -3 + +today_minus_1 <- as.character(ymd(today) - 7) +today_minus_2 <- as.character(ymd(today) - 14) +today_minus_3 <- as.character(ymd(today) - 21) + +# remove_pivots <- c("1.1", "1.12", "1.8", "1.9", "1.11", "1.14") +CI_quadrant <- readRDS(here(cumulative_CI_vals_dir,"All_pivots_Cumulative_CI_quadrant_year_v2.rds")) %>% + rename(pivot_quadrant = Field) + +message("STOP - check ci name in layer") +CI <- brick(here(weekly_CI_mosaic, paste0("week_",week, "_2023.tif"))) %>% subset("CI") +CI_m1 <- brick(here(weekly_CI_mosaic, paste0("week_",week_minus_1, "_2023.tif"))) %>% subset("CI") #%>% subset("CI") +CI_m2 <- brick(here(weekly_CI_mosaic, paste0("week_",week_minus_2, "_2023.tif"))) %>% subset(6) #%>% subset("CI") +CI_m3 <- brick(here(weekly_CI_mosaic, paste0("week_",week_minus_3, "_2023.tif"))) %>% subset(6) #%>% subset("CI") + +last_week_dif_raster <- ((CI - CI_m1) / CI_m1) * 100 +last_week_dif_raster_abs <- (CI - CI_m1) +two_week_dif_raster_abs <- (CI - CI_m2) + + +AllPivots0 <-st_read(here(data_dir, "pivot_20210625.geojson")) +joined_spans <-st_read(here(data_dir, "spans2.geojson")) %>% st_transform(crs(AllPivots0)) + +pivots_dates <- readRDS(here(harvest_dir, "harvest_data_new")) %>% filter( + pivot %in% c("1.1", "1.2", "1.3", "1.4", "1.7", "1.8", "1.9", "1.10", "1.11", "1.12", "1.13", + "1.14" , "1.16" , "1.17" , "1.18" ,"2.1", "2.2", "2.3" , "2.4", "2.5", "3.1", "3.2", "3.3", + "4.1", "4.2", "4.3", "4.4", "4.5", "4.6", "5.1" ,"5.2", "5.3", "5.4", "6.1", "6.2", "DL1.1", "DL1.3") #without 1.6 +) +AllPivots <- merge(AllPivots0, pivots_dates, by = "pivot_quadrant") %>% + rename(pivot = pivot.x) #%>% select(-pivot.y) + +AllPivots_merged <- AllPivots %>% + group_by(pivot) %>% summarise() + +AllPivots_merged <- st_transform(AllPivots_merged, crs = proj4string(CI)) + +AllPivots_merged$pivot <- as.factor(AllPivots_merged$pivot) +AllPivots_merged$pivot <- ordered(AllPivots_merged$pivot, levels = c("1.1", "1.2", "1.3", "1.4", "1.6", "1.7", "1.8", "1.9", "1.10", "1.11", "1.12", "1.13", "1.14" , "1.16" , "1.17" , "1.18" ,"2.1", "2.2", "2.3" , "2.4", "2.5", "3.1", "3.2", "3.3", "4.1", "4.2", "4.3", "4.4", "4.5", "4.6", "5.1" ,"5.2", "5.3", "5.4", "6.1", "6.2", "DL1.1", "DL1.3")) + +pivot_names <- unique(CI_quadrant$pivot) + +``` + + +```{r eval=FALSE, include=FALSE} +pivot_stats_q <- cbind(AllPivots0, round(exact_extract(CI, AllPivots0, c("coefficient_of_variation", "mean"), default_value = -9999),2)) %>% + st_drop_geometry() %>% as_tibble() + +hetero_pivots0 <- merge(AllPivots, pivot_stats_q %>% dplyr::select(-hectares, -radius, -pivot), by = "pivot_quadrant") + +hetero_pivots <- hetero_pivots0 %>% #dplyr::filter(variable %in% "CV") %>% + mutate(class = case_when(coefficient_of_variation <= 0.001 ~ "Missing data", + coefficient_of_variation >= 0.002 & coefficient_of_variation < 0.1 ~ "Homogeneous", + coefficient_of_variation >= 0.1 & coefficient_of_variation < 0.2~ "Somewhat Homogeneous", + coefficient_of_variation >= 0.2 & coefficient_of_variation < 0.4 ~ "Somewhat Heterogeneous", + coefficient_of_variation >= 0.4 ~ "Heterogeneous")) %>% + mutate(class = as.factor(class)) +# hetero_pivots %>% filter(pivot == "1.3") +hetero_pivots$class <- factor(hetero_pivots$class, levels = c("Missing data", "Homogeneous","Somewhat Homogeneous", "Somewhat Heterogeneous", "Heterogeneous" )) +# hetero_pivots %>% select(pivot_quadrant, class, Age, coefficient_of_variation , mean) %>% view() + +# hetero_pivots %>% filter(class == "Somewhat Heterogeneous" ) %>% select(pivot_quadrant, class, Age, coefficient_of_variation , mean) + + + +Mypal <- c('#dcdcdc', '#008000','#8db600','#FFC300','#F22222') + +hetero_plot <- function(data){ + # map <- + tm_shape(data) + tm_polygons(col = "class", palette=Mypal) + + tm_text("pivot_quadrant", size = 1/2) + + tm_layout(main.title=paste0("Homogeneity of pivot quadrants, week ", week, " 2022"),main.title.position = "center")+ + tm_compass(position = c("center", "top")) + + tm_scale_bar(position = c("center", "top")) + + # print(map, width = 20, units = "cm") + +} + +``` +\newpage +```{r eval=FALSE, fig.height=7, fig.width=10, message=FALSE, warning=FALSE, include=FALSE} +hetero_plot(hetero_pivots) +``` + + +```{r function, message=FALSE, warning=FALSE, include=FALSE} + +subchunkify <- function(g, fig_height=7, fig_width=5) { + g_deparsed <- paste0(deparse( + function() {g} + ), collapse = '') + + sub_chunk <- paste0(" + `","``{r sub_chunk_", floor(runif(1) * 10000), ", fig.height=", fig_height, ", fig.width=", fig_width, ", echo=FALSE}", + "\n(", + g_deparsed + , ")()", + "\n`","`` + ") + + cat(knitr::knit(text = knitr::knit_expand(text = sub_chunk), quiet = TRUE)) +} + + + +ci_plot <- function(pivotName){ + # pivotName = "2.1" + pivotShape <- AllPivots_merged %>% terra::subset(pivot %in% pivotName) %>% st_transform(crs(CI)) + age <- AllPivots %>% dplyr::filter(pivot %in% pivotName) %>% st_drop_geometry() %>% dplyr::select(Age) %>% unique() + + AllPivots2 <- AllPivots %>% dplyr::filter(pivot %in% pivotName) + + singlePivot <- CI %>% crop(., pivotShape) %>% mask(., pivotShape) + + singlePivot_m1 <- CI_m1 %>% crop(., pivotShape) %>% mask(., pivotShape) + singlePivot_m2 <- CI_m2 %>% crop(., pivotShape) %>% mask(., pivotShape) + singlePivot_m3 <- CI_m3 %>% crop(., pivotShape) %>% mask(., pivotShape) + + abs_CI_last_week <- last_week_dif_raster_abs %>% crop(., pivotShape) %>% mask(., pivotShape) + abs_CI_two_week <- two_week_dif_raster_abs %>% crop(., pivotShape) %>% mask(., pivotShape) + + planting_date <- pivots_dates %>% dplyr::filter(pivot %in% pivotName) %>% ungroup() %>% dplyr::select(planting_date) %>% unique() + + joined_spans2 <- joined_spans %>% st_transform(crs(pivotShape)) %>% dplyr::filter(pivot %in% pivotName) %>% st_crop(., pivotShape) + + CImap_m2 <- create_CI_map(singlePivot_m2, AllPivots2, joined_spans2, show_legend= T, legend_is_portrait = T, week = week_minus_2, age = age -2) + CImap_m1 <- create_CI_map(singlePivot_m1, AllPivots2, joined_spans2, show_legend= F, legend_is_portrait = F, week = week_minus_1, age = age -1) + CImap <- create_CI_map(singlePivot_m1, AllPivots2, joined_spans2, show_legend= F, legend_is_portrait = F, week = week_minus_1, age = age ) + + + CI_max_abs_last_week <- create_CI_diff_map(abs_CI_last_week,AllPivots2, joined_spans2, show_legend = T, legend_is_portrait = T, week_1 = week, week_2 = week_minus_1, age = age) + CI_max_abs_two_week <- create_CI_diff_map(abs_CI_last_week, AllPivots2, joined_spans2, show_legend = T, legend_is_portrait = T, week_1 = week, week_2 = week_minus_2, age = age) + + tst <- tmap_arrange(CImap_m2, CImap_m1, CImap,CI_max_abs_last_week, CI_max_abs_two_week, nrow = 1) + + cat('

Pivot', pivotName, '- week', week, '-', age$Age, 'weeks after planting/harvest

') + + print(tst) + +} + + +create_CI_map <- function(pivot_raster, pivot_shape, pivot_spans, show_legend = F, legend_is_portrait = F, week, age){ + tm_shape(pivot_raster, unit = "m")+ + tm_raster(breaks = c(0,0.5,1,2,3,4,5,6,7,Inf), palette = "RdYlGn",legend.is.portrait = legend_is_portrait ,midpoint = NA) + + tm_layout(main.title = paste0("\nMax CI week ", week,"\n", age, " weeks old"), + main.title.size = 0.7, legend.show = show_legend) + + tm_shape(pivot_shape) + + tm_borders(lwd = 3) + tm_text("pivot_quadrant", size = 1/2) + + tm_shape(pivot_spans) + tm_borders(lwd = 0.5, alpha=0.5) +} + +create_CI_diff_map <- function(pivot_raster, pivot_shape, pivot_spans, show_legend = F, legend_is_portrait = F, week_1, week_2, age){ + tm_shape(pivot_raster, unit = "m")+ + tm_raster(breaks = c(-3,-2,-1,0,1,2, 3), palette = "RdYlGn",legend.is.portrait = legend_is_portrait ,midpoint = 0, title = "CI difference") + + tm_layout(main.title = paste0("CI change week ", week_1, "- week ",week_2, "\n", age," weeks old"), + main.title.size = 0.7, legend.show = show_legend) + + tm_shape(pivot_shape) + + tm_borders(lwd = 3) + tm_text("pivot_quadrant", size = 1/2) + + tm_shape(pivot_spans) + tm_borders(lwd = 0.5, alpha=0.5) +} + + +cum_ci_plot <- function(pivotName){ + + # pivotName = "1.17" + data_ci <- CI_quadrant %>% filter(pivot == pivotName) + data_ci2 <- data_ci %>% mutate(CI_rate = cumulative_CI/DOY, + week = week(Date))%>% group_by(pivot_quadrant) %>% + mutate(mean_rolling10 = rollapplyr(CI_rate , width = 10, FUN = mean, partial = TRUE)) #%>% + + date_preperation_perfect_pivot <- data_ci2 %>% group_by(season) %>% summarise(min_date = min(Date), + max_date = max(Date), + days = max_date - min_date) + + perfect_pivot_raw <- CI_quadrant %>% group_by(pivot) %>% filter(pivot == "5.1" & season == "2022") %>% + group_by(DOY) %>% summarise(cumulative_CI = mean(cumulative_CI)) %>% mutate(CI_rate = cumulative_CI/DOY) %>% + mutate(mean_rolling10 = rollapplyr(CI_rate , width = 10, FUN = mean, partial = TRUE)) + + unique_seasons <- unique(date_preperation_perfect_pivot$season) + + if(length(unique_seasons) == 3) { + unique_seasons <- unique_seasons[c(2,3)] + } else { + unique_seasons <- unique_seasons + } + + perfect_pivot <- perfect_pivot_raw + + for (s in unique_seasons) { + season_dates <- seq(from = date_preperation_perfect_pivot$min_date[date_preperation_perfect_pivot$season == s], + to = date_preperation_perfect_pivot$min_date[date_preperation_perfect_pivot$season == s] + nrow(perfect_pivot_raw) - 1, + by = "1 day") + col_name <- as.character(s) + perfect_pivot <- dplyr::bind_cols(perfect_pivot, tibble(!!col_name := season_dates)) + } + + perfect_pivot <- perfect_pivot %>% + pivot_longer(cols = -c("DOY", "cumulative_CI", "CI_rate", "mean_rolling10"), + names_to = "season", values_to = "Date") + + g <- ggplot() + + facet_wrap(~season, scales = "free_x") + + geom_line(data= data_ci2 %>% filter(season %in% unique_seasons), aes(Date, mean_rolling10, col = pivot_quadrant)) + + geom_line(data= perfect_pivot, aes(Date , mean_rolling10, col = "Model CI (p5.1 Data 2022, \n date x axis is fictive)"), lty="11",size=1) + + labs(title = paste("14 day rolling MEAN CI rate - Pivot ", pivotName))+ + # scale_y_continuous(limits=c(0.5,3), breaks = seq(0.5, 3, 0.5))+ + scale_x_date(date_breaks = "1 month", date_labels = "%m-%Y") + + theme(axis.text.x = element_text(angle = 60, hjust = 1)) + # options(repr.plot.width = 2, repr.plot.height = 2) + subchunkify(g, 3.2, 10) + +} + +``` + +```{r eval=FALSE, fig.height=7.2, fig.width=10, message=FALSE, warning=FALSE, include=FALSE} + RGB_raster <- list.files(paste0(s2_dir,week),full.names = T, pattern = ".tiff", recursive = TRUE)[1] #use pattern = '.tif$' or something else if you have multiple files in this folder + + +RGB_raster <- brick(RGB_raster) +# RGB_raster <- brick(here("planet", paste0("week_",week, ".tif"))) +tm_shape(RGB_raster, unit = "m") + tm_rgb(r=1, g=2, b=3, max.value = 255) + + tm_layout(main.title = paste0("RGB image of the fields - week ", week), + main.title.position = 'center') + + tm_scale_bar(position = c("right", "top"), text.color = "white") + + + tm_compass(position = c("right", "top"), text.color = "white") + + tm_shape(AllPivots)+ tm_borders( col = "white") + + tm_text("pivot_quadrant", size = .6, col = "white") + +``` +\newpage + +```{r eval=FALSE, fig.height=7.2, fig.width=10, message=FALSE, warning=FALSE, include=FALSE} +tm_shape(CI, unit = "m")+ + tm_raster(breaks = c(0,0.5,1,2,3,4,5,6,7,Inf), palette = "RdYlGn", midpoint = NA,legend.is.portrait = F) + + tm_layout(legend.outside = TRUE,legend.outside.position = "bottom",legend.show = T, main.title = "Overview all fields (CI)")+ + tm_scale_bar(position = c("right", "top"), text.color = "black") + + + tm_compass(position = c("right", "top"), text.color = "black") + + tm_shape(AllPivots)+ tm_borders( col = "black") + + tm_text("pivot_quadrant", size = .6, col = "black") + + + +tm_shape(last_week_dif_raster_abs, unit = "m")+ + tm_raster(breaks = c(-3,-2,-1,0,1,2, 3), palette = "RdYlGn", midpoint = NA,legend.is.portrait = F) + + tm_layout(legend.outside = TRUE,legend.outside.position = "bottom",legend.show = F, main.title = "Overview all fields - CI difference")+ + tm_scale_bar(position = c("right", "top"), text.color = "black") + + + tm_compass(position = c("right", "top"), text.color = "black") + + tm_shape(AllPivots)+ tm_borders( col = "black") + + tm_text("pivot_quadrant", size = .6, col = "black") + + + +tm_shape(last_week_dif_raster, unit = "m")+ + tm_raster(breaks = c(-Inf,-50,-25,-5,5,25, Inf), palette = "RdYlGn", midpoint = NA,legend.is.portrait = T) + + tm_layout(legend.outside = TRUE,legend.outside.position = "right",legend.show = F, main.title = "Overview all fields - CI difference %")+ + tm_scale_bar(position = c("right", "top"), text.color = "black") + + + tm_compass(position = c("right", "top"), text.color = "black") + + tm_shape(AllPivots)+ tm_borders( col = "black") + + tm_text("pivot_quadrant", size = .6, col = "black") +``` + + +```{r plots_ci, echo=FALSE, fig.height=3.7, fig.width=10, message=FALSE, warning=FALSE, results='asis'} + # ci_plot("1.17") +# cum_ci_plot("1.17") +# x = 1 +# for(j in x){ +# coops <- Chemba_pivot_owners %>% filter(`OWNER update 18/6/2022` %in% c("chapo", "Lambane", "Canhinbe" )) +pivots <- AllPivots_merged %>% filter(pivot != "1.17") + +#%>% filter(pivot %in% c( "2.1", "2.2", "2.3", "2.4", "3.1", "3.2", "3.3", "4.4", "4.6" , "4.3", "4.5", "4.2", "4.1", "5.1", "5.2", "5.3", "5.4", "7.1", "7.2", "7.3" , "7.4", "7.5", "7.6" )) + +for(i in pivots$pivot) { + ci_plot(i) + cum_ci_plot(i) + } + +# lapply(pivots, function(pivot) { +# ci_plot(pivot) +# cum_ci_plot(pivot) +# }) + + #cat("\\newpage") +# } +``` + +```{r eval=FALSE, fig.height=10, fig.width=14, include=FALSE} +CI_all2 <- readRDS(here(cumulative_CI_vals_dir, "All_pivots_Cumulative_CI_whole_pivot_year.rds")) %>% + mutate(#line = substr(pivot, 1 , 1), + season = as.factor(season)) + +pivots_dates <- readRDS(here(harvest_dir, "harvest_data_new")) #%>% + +pvt_age <- pivots_dates %>% ungroup() %>% select(pivot, Age) %>% unique() +CI_all2 <- left_join(CI_all2, pvt_age , by = "pivot") %>% mutate(month = plyr::round_any((Age/4),2)) %>% + mutate(month = case_when(month > 16 ~ 18, + TRUE ~month)) %>% + group_by(pivot) %>% filter(Age == max(Age)) %>% ungroup() + +CI_all2$season <- ordered(CI_all2$season, levels = c("Data_2021", "Data_2022")) +# CI_all2 <- CI_all2 %>% mutate(season_order = as.integer(season)) +latest_model <- CI_all2 %>% group_by(pivot) %>% filter(season =="Data_2022") +# latest_model <- CI_all2 %>% group_by(pivot) %>% arrange(season, desc(DOY)) %>% slice(1) + +# CI_all2 <- CI_all %>% group_by(pivot, DOY ) %>% mutate(pivot_cumulative_CI = mean(cumulative_CI)) +# label_data <- CI_all2 %>% group_by(pivot) %>% arrange(season, desc(cumulative_CI)) %>% slice(1) %>% mutate(label = paste(pivot, " - ", round(cumulative_CI))) +label_data <- latest_model %>% arrange(season, desc(cumulative_CI)) %>% slice(1) %>% mutate(label = paste(pivot, " - ", round(cumulative_CI))) + +max_day <- label_data %>% group_by(pivot) %>% summarise(max_day = max(DOY)) + +ggplot(data= CI_all2%>% filter(season =="Data_2022"), aes(DOY, cumulative_CI, col = pivot)) + + facet_wrap(~month) + + geom_line() + + # scale_y_continuous(breaks = seq(0, max(label_data$cumulative_CI) + 100, by = 100)) + + labs(title = "Cumulative CI values over the year per pivot, split per 2-month age (rounded down)", x = "Days after harvest/planting (scale is per 2 weeks)", y = "Cumulative CI value", + color = "Line") + + geom_label_repel(data = label_data %>% filter(model %in% latest_model$model), aes(DOY, cumulative_CI, label = label), box.padding = 1, + # ylim = c(1300, NA), + max.overlaps = Inf + # segment.linetype = 4, + + # segment.curvature = -1e-20, + # arrow = arrow(length = unit(0.015, "npc")) + ) + + theme(legend.position="right", legend.text = element_text(size=8), legend.title = element_text(size = 8), + plot.title = element_text(size=19)) + + # geom_smooth()+ + guides(fill = guide_legend(nrow=2,byrow=TRUE)) + + scale_y_continuous(breaks=seq(0,max(label_data$cumulative_CI),100)) + + scale_x_continuous(breaks=seq(0,max(max_day$max_day),30)) + theme(axis.text.x = element_text(angle = 90)) + + labs(x = "Weeks")+ + theme(legend.position = "none") + +``` + +The below table shows estimates of the biomass if you would harvest them now. +```{r eval=FALSE, message=FALSE, warning=FALSE, include=FALSE} +CI_quadrant <- readRDS(here(cumulative_CI_vals_dir,"All_pivots_Cumulative_CI_quadrant_year_v2.rds")) %>% + rename( pivot_quadrant = Field)#All_pivots_Cumulative_CI.rds + +pivots_dates0 <- readRDS(here(harvest_dir, "harvest_data_new")) %>% ungroup() %>% unique() %>% + dplyr::select(pivot, pivot_quadrant, Tcha_2021, Tcha_2022 ) %>% + pivot_longer(cols = c("Tcha_2021", "Tcha_2022"), names_to = "Tcha_Year", values_to = "Tcha") %>% + filter(Tcha > 50) + +CI_and_yield <- left_join(CI_quadrant , pivots_dates0, by = c("pivot", "pivot_quadrant")) %>% filter(!is.na(Tcha)) %>% + group_by(pivot_quadrant) %>% slice(which.max(DOY)) %>% + dplyr::select(pivot, pivot_quadrant, Tcha_Year, Tcha, cumulative_CI, DOY) %>% + mutate(CI_per_day = cumulative_CI/ DOY) + +set.seed(20) +CI_and_yield_split <- initial_split(CI_and_yield, prop = 0.75, weight = pivot_quadrant) +CI_and_yield_test <- training(CI_and_yield_split) +CI_and_yield_validation <- testing(CI_and_yield_split) + + +predictors <- c( "cumulative_CI" , "DOY" ,"CI_per_day" ) +response <- "Tcha" +CI_and_yield_test <- as.data.frame(CI_and_yield_test) + +ctrl <- trainControl(method="cv", + savePredictions = TRUE, + allowParallel= TRUE, + number = 5, + verboseIter = TRUE) + +set.seed(202) +model_ffs_rf <- ffs( CI_and_yield_test[,predictors], + CI_and_yield_test[,response], + method="rf" , + trControl=ctrl, + importance=TRUE, + withinSE = TRUE, + tuneLength = 5, + na.rm = TRUE +) + +pred_ffs_rf <- + predict(model_ffs_rf, newdata = CI_and_yield_validation) %>% as.data.frame() %>% rename(predicted_Tcha = ".") %>% mutate( + pivot_quadrant = CI_and_yield_validation$pivot_quadrant, + pivot = CI_and_yield_validation$pivot, + Age_days = CI_and_yield_validation$DOY, + total_CI = round(CI_and_yield_validation$cumulative_CI, 0), + predicted_Tcha = round(predicted_Tcha, 0) + ) %>% dplyr::select(pivot , pivot_quadrant, Age_days, total_CI, predicted_Tcha) %>% + left_join(., CI_and_yield_validation, by = c("pivot", "pivot_quadrant")) %>% + filter(Age_days > 250) + +ggplot(pred_ffs_rf, aes(y = predicted_Tcha , x = Tcha , col = pivot )) + + geom_point() +geom_abline() + + scale_x_continuous(limits = c(50, 160))+ + scale_y_continuous(limits = c(50, 160)) + + labs(title = "Model trained and tested on historical results - RF") + +prediction_2023 <- CI_quadrant %>% filter(season == "Data_2023") %>% group_by(pivot_quadrant) %>% slice(which.max(DOY))%>% + mutate(CI_per_day = cumulative_CI/ DOY) + +pred_rf_2023 <- predict(model_ffs_rf, newdata=prediction_2023) %>% + as.data.frame() %>% rename(predicted_Tcha_2023 = ".") %>% mutate(pivot_quadrant = prediction_2023$pivot_quadrant, + pivot = prediction_2023$pivot, + Age_days = prediction_2023$DOY, + total_CI = round(prediction_2023$cumulative_CI,0), + predicted_Tcha_2023 = round(predicted_Tcha_2023, 0)) %>% + filter(Age_days > 300) %>% + dplyr::select(pivot ,pivot_quadrant, Age_days, total_CI, predicted_Tcha_2023)%>% + mutate(CI_per_day = round(total_CI/ Age_days, 1)) + +ggplot(pred_rf_2023, aes(total_CI , predicted_Tcha_2023 , col = pivot )) + + geom_point() + labs(title = "2023 data (still to be harvested) - Fields over 300 days old") +knitr::kable(pred_rf_2023) + +``` + +```{r eval=FALSE, include=FALSE} + +model_CI <-lm( + formula = cumulative_CI ~ DOY , + data = CI_and_yield_test +) +pivot_ = "4.4" +df4 = data.frame(pivot_, 365, NA) +names(df4)=c("pivot", "DOY", "cumulative_CI") +a <- CI_all %>% filter(season == "Data_2022", pivot == pivot_) %>% ungroup() %>% select(pivot, DOY, cumulative_CI) %>% + complete(DOY = seq.int(max(DOY), 365, 1), pivot = pivot_) %>% arrange(DOY) # complete(DOY = seq.int(max(DOY), 365, 1)) # rbind(.,df4) + +b <- predict(model_CI, a) %>% + as.data.frame() %>% slice(which.max(.)) %>% rename(cumulative_CI = ".") %>% mutate(DOY = 365) + +pred_CI_2022 <- predict(model, newdata=b ) %>% + as.data.frame() %>% rename(predicted_Tcha_365 = ".") %>% mutate(pivot = df4$pivot, + predicted_Tcha_365 = round(predicted_Tcha_365, 0), + Age_days = df4$DOY) + +pred_CI_2022 +``` + diff --git a/r_app/renv.lock b/r_app/renv.lock new file mode 100644 index 0000000..d93c94d --- /dev/null +++ b/r_app/renv.lock @@ -0,0 +1,2052 @@ +{ + "R": { + "Version": "4.1.2", + "Repositories": [ + { + "Name": "CRAN", + "URL": "https://cran.rstudio.com" + } + ] + }, + "Packages": { + "DBI": { + "Package": "DBI", + "Version": "1.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "dcd1743af4336156873e3ce3c950b8b9" + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-20", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats" + ], + "Hash": "8dcfa99b14c296bc9f1fd64d52fd3ce7" + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-55", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "methods", + "stats", + "utils" + ], + "Hash": "c5232ffb549f6d7a04a152c34ca1353d" + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.4-0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "graphics", + "grid", + "lattice", + "methods", + "stats", + "utils" + ], + "Hash": "130c0caba175739d98f2963c6a407cf6" + }, + "R6": { + "Package": "R6", + "Version": "2.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "470851b6d5d0ac559e9d01bb352b4021" + }, + "RColorBrewer": { + "Package": "RColorBrewer", + "Version": "1.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "45f0398006e83a5b10b72a90663d8d8c" + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.8", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "methods", + "utils" + ], + "Hash": "22b546dd7e337f6c0c58a39983a496bc" + }, + "XML": { + "Package": "XML", + "Version": "3.99-0.9", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods", + "utils" + ], + "Hash": "6e75b3884423e21eda89b424a98e091d" + }, + "abind": { + "Package": "abind", + "Version": "1.4-5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods", + "utils" + ], + "Hash": "4f57884290cc75ab22f4af9e9d4ca862" + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "sys" + ], + "Hash": "e8a22846fff485f0be3770c2da758713" + }, + "backports": { + "Package": "backports", + "Version": "1.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "c39fbec8a30d23e721980b8afb31984c" + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "543776ae6848fde2f48ff3816d0628bc" + }, + "bit": { + "Package": "bit", + "Version": "4.0.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "f36715f14d94678eea9933af927bc15d" + }, + "bit64": { + "Package": "bit64", + "Version": "4.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "bit", + "methods", + "stats", + "utils" + ], + "Hash": "9fe98599ca456d6552421db0d6772d8f" + }, + "blob": { + "Package": "blob", + "Version": "1.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "methods", + "rlang", + "vctrs" + ], + "Hash": "dc5f7a6598bb025d20d66bb758f12879" + }, + "broom": { + "Package": "broom", + "Version": "1.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "backports", + "dplyr", + "ellipsis", + "generics", + "glue", + "lifecycle", + "purrr", + "rlang", + "stringr", + "tibble", + "tidyr" + ], + "Hash": "fd25391c3c4f6ecf0fa95f1e6d15378c" + }, + "bslib": { + "Package": "bslib", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "htmltools", + "jquerylib", + "jsonlite", + "rlang", + "sass" + ], + "Hash": "56ae7e1987b340186a8a5a157c2ec358" + }, + "cachem": { + "Package": "cachem", + "Version": "1.0.8", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "fastmap", + "rlang" + ], + "Hash": "c35768291560ce302c0a6589f92e837d" + }, + "callr": { + "Package": "callr", + "Version": "3.7.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "processx", + "utils" + ], + "Hash": "9b2191ede20fa29828139b9900922e51" + }, + "cellranger": { + "Package": "cellranger", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "rematch", + "tibble" + ], + "Hash": "f61dbaec772ccd2e17705c1e872e9e7c" + }, + "class": { + "Package": "class", + "Version": "7.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "MASS", + "R", + "stats", + "utils" + ], + "Hash": "da09d82223e669d270e47ed24ac8686e" + }, + "classInt": { + "Package": "classInt", + "Version": "0.4-9", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "KernSmooth", + "R", + "class", + "e1071", + "grDevices", + "graphics", + "stats" + ], + "Hash": "bee651a42a89633eccb36dca9d9ab413" + }, + "cli": { + "Package": "cli", + "Version": "3.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "3177a5a16c243adc199ba33117bd9657" + }, + "clipr": { + "Package": "clipr", + "Version": "0.8.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "utils" + ], + "Hash": "3f038e5ac7f41d4ac41ce658c85e3042" + }, + "colorspace": { + "Package": "colorspace", + "Version": "2.0-2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "methods", + "stats" + ], + "Hash": "6baccb763ee83c0bd313460fdb8b8a84" + }, + "conflicted": { + "Package": "conflicted", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "memoise", + "rlang" + ], + "Hash": "bb097fccb22d156624fd07cd2894ddb6" + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed588261931ee3be2c700d22e94a29ab" + }, + "crayon": { + "Package": "crayon", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "grDevices", + "methods", + "utils" + ], + "Hash": "8dc45fd8a1ee067a92b85ef274e66d6a" + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R6", + "htmltools", + "jsonlite", + "lazyeval" + ], + "Hash": "6aa54f69598c32177e920eb3402e8293" + }, + "curl": { + "Package": "curl", + "Version": "4.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "022c42d49c28e95d69ca60446dbabf88" + }, + "data.table": { + "Package": "data.table", + "Version": "1.14.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "36b67b5adf57b292923f5659f5f0c853" + }, + "dbplyr": { + "Package": "dbplyr", + "Version": "2.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "DBI", + "R", + "R6", + "blob", + "cli", + "dplyr", + "glue", + "lifecycle", + "magrittr", + "methods", + "pillar", + "purrr", + "rlang", + "tibble", + "tidyr", + "tidyselect", + "utils", + "vctrs", + "withr" + ], + "Hash": "d24305b92db333726aed162a2c23a147" + }, + "dichromat": { + "Package": "dichromat", + "Version": "2.0-0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats" + ], + "Hash": "16e66f2a483e124af5fc6582d26005f7" + }, + "digest": { + "Package": "digest", + "Version": "0.6.29", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "cf6b206a045a684728c3267ef7596190" + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "cli", + "generics", + "glue", + "lifecycle", + "magrittr", + "methods", + "pillar", + "rlang", + "tibble", + "tidyselect", + "utils", + "vctrs" + ], + "Hash": "dea6970ff715ca541c387de363ff405e" + }, + "dtplyr": { + "Package": "dtplyr", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "data.table", + "dplyr", + "glue", + "lifecycle", + "rlang", + "tibble", + "tidyselect", + "vctrs" + ], + "Hash": "54ed3ea01b11e81a86544faaecfef8e2" + }, + "e1071": { + "Package": "e1071", + "Version": "1.7-9", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "class", + "grDevices", + "graphics", + "methods", + "proxy", + "stats", + "utils" + ], + "Hash": "32885be243a29301c90d33db37c3aad8" + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "rlang" + ], + "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077" + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.15", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "699a7a93d08c962d9f8950b2d7a227f1" + }, + "exactextractr": { + "Package": "exactextractr", + "Version": "0.9.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "methods", + "raster", + "sf" + ], + "Hash": "146d8a90d297c46e9ac4b9cad4643124" + }, + "fansi": { + "Package": "fansi", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "utils" + ], + "Hash": "f28149c2d7a1342a834b314e95e67260" + }, + "farver": { + "Package": "farver", + "Version": "2.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c98eb5133d9cb9e1622b8691487f11bb" + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f7736a18de97dea803bde0a2daaafb27" + }, + "forcats": { + "Package": "forcats", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "magrittr", + "rlang", + "tibble" + ], + "Hash": "1a0a9a3d5083d0d573c4214576f1e690" + }, + "fs": { + "Package": "fs", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "7c89603d81793f0d5486d91ab1fc6f1d" + }, + "gargle": { + "Package": "gargle", + "Version": "1.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "fs", + "glue", + "httr", + "jsonlite", + "rappdirs", + "rlang", + "rstudioapi", + "stats", + "utils", + "withr" + ], + "Hash": "cca71329ad88e21267f09255d3f008c2" + }, + "generics": { + "Package": "generics", + "Version": "0.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "177475892cf4a55865868527654a7741" + }, + "geojsonsf": { + "Package": "geojsonsf", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "geometries", + "jsonify", + "rapidjsonr", + "sfheaders" + ], + "Hash": "8d077646c6713838233e8710910ef92e" + }, + "geometries": { + "Package": "geometries", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "Rcpp" + ], + "Hash": "be29054e97e756ade56d13a89c6d5243" + }, + "ggplot2": { + "Package": "ggplot2", + "Version": "3.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "MASS", + "R", + "cli", + "glue", + "grDevices", + "grid", + "gtable", + "isoband", + "lifecycle", + "mgcv", + "rlang", + "scales", + "stats", + "tibble", + "vctrs", + "withr" + ], + "Hash": "3a147ee02e85a8941aad9909f1b43b7b" + }, + "glue": { + "Package": "glue", + "Version": "1.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e" + }, + "googledrive": { + "Package": "googledrive", + "Version": "2.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "gargle", + "glue", + "httr", + "jsonlite", + "lifecycle", + "magrittr", + "pillar", + "purrr", + "rlang", + "tibble", + "utils", + "uuid", + "vctrs", + "withr" + ], + "Hash": "c3a25adbbfbb03f12e6f88c5fb1f3024" + }, + "googlesheets4": { + "Package": "googlesheets4", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cellranger", + "cli", + "curl", + "gargle", + "glue", + "googledrive", + "httr", + "ids", + "magrittr", + "methods", + "purrr", + "rematch2", + "rlang", + "tibble", + "utils", + "vctrs" + ], + "Hash": "3b449d5292327880fc6cb61d0b2e9063" + }, + "gridExtra": { + "Package": "gridExtra", + "Version": "2.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "grDevices", + "graphics", + "grid", + "gtable", + "utils" + ], + "Hash": "7d7f283939f563670a697165b2cf5560" + }, + "gtable": { + "Package": "gtable", + "Version": "0.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grid" + ], + "Hash": "ac5c6baf7822ce8732b343f14c072c4d" + }, + "haven": { + "Package": "haven", + "Version": "2.5.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "cpp11", + "forcats", + "hms", + "lifecycle", + "methods", + "readr", + "rlang", + "tibble", + "tidyselect", + "vctrs" + ], + "Hash": "9b302fe352f9cfc5dcf0a4139af3a565" + }, + "here": { + "Package": "here", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "rprojroot" + ], + "Hash": "24b224366f9c2e7534d2344d10d59211" + }, + "highr": { + "Package": "highr", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "xfun" + ], + "Hash": "8eb36c8125038e648e5d111c0d7b2ed4" + }, + "hms": { + "Package": "hms", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "lifecycle", + "methods", + "pkgconfig", + "rlang", + "vctrs" + ], + "Hash": "b59377caa7ed00fa41808342002138f9" + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "base64enc", + "digest", + "ellipsis", + "fastmap", + "grDevices", + "rlang", + "utils" + ], + "Hash": "ba0240784ad50a62165058a27459304a" + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "grDevices", + "htmltools", + "jsonlite", + "yaml" + ], + "Hash": "76147821cd3fcd8c4b04e1ef0498e7fb" + }, + "httr": { + "Package": "httr", + "Version": "1.4.6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ], + "Hash": "7e5e3cbd2a7bc07880c94e22348fb661" + }, + "ids": { + "Package": "ids", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "openssl", + "uuid" + ], + "Hash": "99df65cfef20e525ed38c3d2577f7190" + }, + "isoband": { + "Package": "isoband", + "Version": "0.2.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "grid", + "utils" + ], + "Hash": "7ab57a6de7f48a8dc84910d1eca42883" + }, + "jquerylib": { + "Package": "jquerylib", + "Version": "0.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "htmltools" + ], + "Hash": "5aab57a3bd297eee1c1d862735972182" + }, + "jsonify": { + "Package": "jsonify", + "Version": "1.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "rapidjsonr" + ], + "Hash": "f435875f0eb7de52ade944ed82ee9089" + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.8.7", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "methods" + ], + "Hash": "266a20443ca13c65688b2116d5220f76" + }, + "knitr": { + "Package": "knitr", + "Version": "1.39", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "evaluate", + "highr", + "methods", + "stringr", + "tools", + "xfun", + "yaml" + ], + "Hash": "029ab7c4badd3cf8af69016b2ba27493" + }, + "labeling": { + "Package": "labeling", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "graphics", + "stats" + ], + "Hash": "3d5108641f47470611a32d0bdf357a72" + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-45", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "grid", + "stats", + "utils" + ], + "Hash": "b64cdbb2b340437c4ee047a1f4c4377b" + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "d908914ae53b04d4c0c0fd72ecc35370" + }, + "leafem": { + "Package": "leafem", + "Version": "0.2.0", + "Source": "GitHub", + "RemoteType": "github", + "RemoteHost": "api.github.com", + "RemoteRepo": "leafem", + "RemoteUsername": "r-spatial", + "RemoteRef": "HEAD", + "RemoteSha": "0eaf8f4c2efcc59041b1e942f7cfe1b6d46ffc9b", + "Requirements": [ + "R", + "base64enc", + "geojsonsf", + "htmltools", + "htmlwidgets", + "leaflet", + "methods", + "png", + "raster", + "sf" + ], + "Hash": "9d9384e19965b9aa1bc2b68c9d9ebe7b" + }, + "leaflet": { + "Package": "leaflet", + "Version": "2.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "RColorBrewer", + "base64enc", + "crosstalk", + "htmltools", + "htmlwidgets", + "leaflet.providers", + "magrittr", + "markdown", + "methods", + "png", + "raster", + "scales", + "sp", + "stats", + "viridis" + ], + "Hash": "97fadb60ef6eb8524b9f6e2c4a69ee93" + }, + "leaflet.providers": { + "Package": "leaflet.providers", + "Version": "1.9.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "d3082a7beac4a1aeb96100ff06265d7e" + }, + "leafsync": { + "Package": "leafsync", + "Version": "0.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "htmltools", + "htmlwidgets", + "leaflet", + "methods" + ], + "Hash": "819d7169c7d39f0f952473e943375da1" + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "rlang" + ], + "Hash": "001cecbeac1cff9301bdc3775ee46a86" + }, + "lubridate": { + "Package": "lubridate", + "Version": "1.9.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "generics", + "methods", + "timechange" + ], + "Hash": "e25f18436e3efd42c7c590a1c4c15390" + }, + "lwgeom": { + "Package": "lwgeom", + "Version": "0.2-8", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "sf", + "units" + ], + "Hash": "68b7afe010f5ddc3d5a5c8113018bb39" + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "7ce2733a9826b3aeb1775d56fd305472" + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "mime", + "utils", + "xfun" + ], + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95" + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "cachem", + "rlang" + ], + "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c" + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-38", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "Matrix", + "R", + "graphics", + "methods", + "nlme", + "splines", + "stats", + "utils" + ], + "Hash": "be3c61ffbb1e3d3b3df214d192ac5444" + }, + "mime": { + "Package": "mime", + "Version": "0.12", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "tools" + ], + "Hash": "18e9c28c1d3ca1560ce30658b22ce104" + }, + "modelr": { + "Package": "modelr", + "Version": "0.1.11", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "broom", + "magrittr", + "purrr", + "rlang", + "tibble", + "tidyr", + "tidyselect", + "vctrs" + ], + "Hash": "4f50122dc256b1b6996a4703fecea821" + }, + "munsell": { + "Package": "munsell", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "colorspace", + "methods" + ], + "Hash": "6dfe8bf774944bd5595785e3229d8771" + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-155", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "graphics", + "lattice", + "stats", + "utils" + ], + "Hash": "74ad940dccc9e977189a5afe5fcdb7ba" + }, + "openssl": { + "Package": "openssl", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "askpass" + ], + "Hash": "6d3bef2e305f55c705c674653c7d7d3d" + }, + "pillar": { + "Package": "pillar", + "Version": "1.9.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "cli", + "fansi", + "glue", + "lifecycle", + "rlang", + "utf8", + "utils", + "vctrs" + ], + "Hash": "15da5a8412f317beeee6175fbc76f4bb" + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "utils" + ], + "Hash": "01f28d4278f15c76cddbea05899c5d6f" + }, + "png": { + "Package": "png", + "Version": "0.1-7", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "03b7076c234cb3331288919983326c55" + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "95ef9167b75dde9d2ccc3c7528393e7e" + }, + "processx": { + "Package": "processx", + "Version": "3.8.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "ps", + "utils" + ], + "Hash": "a33ee2d9bf07564efb888ad98410da84" + }, + "progress": { + "Package": "progress", + "Version": "1.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R6", + "crayon", + "hms", + "prettyunits" + ], + "Hash": "14dc9f7a3c91ebb14ec5bb9208a07061" + }, + "proxy": { + "Package": "proxy", + "Version": "0.4-26", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats", + "utils" + ], + "Hash": "50b405c6419e921b9e9360cc9ebbcf2d" + }, + "ps": { + "Package": "ps", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "eef74b13f32cae6bb0d495e53317c44c" + }, + "purrr": { + "Package": "purrr", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "lifecycle", + "magrittr", + "rlang", + "vctrs" + ], + "Hash": "d71c815267c640f17ddbf7f16144b4bb" + }, + "ragg": { + "Package": "ragg", + "Version": "1.2.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "systemfonts", + "textshaping" + ], + "Hash": "690bc058ea2b1b8a407d3cfe3dce3ef9" + }, + "rapidjsonr": { + "Package": "rapidjsonr", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "88b9f48c93d17cdb811b54079a6a414f" + }, + "rappdirs": { + "Package": "rappdirs", + "Version": "0.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "5e3c5dc0b071b21fa128676560dbe94d" + }, + "raster": { + "Package": "raster", + "Version": "3.5-15", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "methods", + "sp", + "terra" + ], + "Hash": "70cf51235e017702ed77427797572ef0" + }, + "readr": { + "Package": "readr", + "Version": "2.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "cli", + "clipr", + "cpp11", + "crayon", + "hms", + "lifecycle", + "methods", + "rlang", + "tibble", + "tzdb", + "utils", + "vroom" + ], + "Hash": "b5047343b3825f37ad9d3b5d89aa1078" + }, + "readxl": { + "Package": "readxl", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cellranger", + "cpp11", + "progress", + "tibble", + "utils" + ], + "Hash": "2e6020b1399d95f947ed867045e9ca17" + }, + "rematch": { + "Package": "rematch", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c66b930d20bb6d858cd18e1cebcfae5c" + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "tibble" + ], + "Hash": "76c9e04c712a05848ae7a23d2f170a40" + }, + "renv": { + "Package": "renv", + "Version": "0.17.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "utils" + ], + "Hash": "4543b8cd233ae25c6aba8548be9e747e" + }, + "reprex": { + "Package": "reprex", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "callr", + "cli", + "clipr", + "fs", + "glue", + "knitr", + "lifecycle", + "rlang", + "rmarkdown", + "rstudioapi", + "utils", + "withr" + ], + "Hash": "d66fe009d4c20b7ab1927eb405db9ee2" + }, + "rlang": { + "Package": "rlang", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "a85c767b55f0bf9b7ad16c6d7baee5bb" + }, + "rmarkdown": { + "Package": "rmarkdown", + "Version": "2.14", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "bslib", + "evaluate", + "htmltools", + "jquerylib", + "jsonlite", + "knitr", + "methods", + "stringr", + "tinytex", + "tools", + "utils", + "xfun", + "yaml" + ], + "Hash": "31b60a882fabfabf6785b8599ffeb8ba" + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "1de7ab598047a87bba48434ba35d497d" + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "690bd2acc42a9166ce34845884459320" + }, + "rvest": { + "Package": "rvest", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "httr", + "lifecycle", + "magrittr", + "rlang", + "selectr", + "tibble", + "withr", + "xml2" + ], + "Hash": "a4a5ac819a467808c60e36e92ddf195e" + }, + "s2": { + "Package": "s2", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "wk" + ], + "Hash": "f1cbe03bb3346f8e817518ffa20f9f5a" + }, + "sass": { + "Package": "sass", + "Version": "0.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R6", + "fs", + "htmltools", + "rappdirs", + "rlang" + ], + "Hash": "f37c0028d720bab3c513fd65d28c7234" + }, + "scales": { + "Package": "scales", + "Version": "1.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "RColorBrewer", + "farver", + "labeling", + "lifecycle", + "munsell", + "rlang", + "viridisLite" + ], + "Hash": "906cb23d2f1c5680b8ce439b44c6fa63" + }, + "selectr": { + "Package": "selectr", + "Version": "0.4-2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "methods", + "stringr" + ], + "Hash": "3838071b66e0c566d55cc26bd6e27bf4" + }, + "sf": { + "Package": "sf", + "Version": "1.0-13", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "DBI", + "R", + "Rcpp", + "classInt", + "grDevices", + "graphics", + "grid", + "magrittr", + "methods", + "s2", + "stats", + "tools", + "units", + "utils" + ], + "Hash": "8fb4839843abc03528ff9f86424d6acd" + }, + "sfheaders": { + "Package": "sfheaders", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "Rcpp", + "geometries" + ], + "Hash": "c1bd5fbd6bed3c16a20df15d9bc20c55" + }, + "sp": { + "Package": "sp", + "Version": "1.4-6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "grid", + "lattice", + "methods", + "stats", + "utils" + ], + "Hash": "ce8613f4e8c84ef4da9eba65b874ebe9" + }, + "stars": { + "Package": "stars", + "Version": "0.5-5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "abind", + "classInt", + "lwgeom", + "methods", + "parallel", + "rlang", + "sf", + "units" + ], + "Hash": "b116254371e0d6681ab063bae82f0ece" + }, + "stringi": { + "Package": "stringi", + "Version": "1.7.6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats", + "tools", + "utils" + ], + "Hash": "bba431031d30789535745a9627ac9271" + }, + "stringr": { + "Package": "stringr", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "magrittr", + "rlang", + "stringi", + "vctrs" + ], + "Hash": "671a4d384ae9d32fc47a14e98bfa3dc8" + }, + "sys": { + "Package": "sys", + "Version": "3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b227d13e29222b4574486cfcbde077fa" + }, + "systemfonts": { + "Package": "systemfonts", + "Version": "1.0.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cpp11" + ], + "Hash": "90b28393209827327de889f49935140a" + }, + "terra": { + "Package": "terra", + "Version": "1.5-17", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "methods" + ], + "Hash": "6c9f036bad848c41d12be5071b72fa53" + }, + "textshaping": { + "Package": "textshaping", + "Version": "0.3.6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cpp11", + "systemfonts" + ], + "Hash": "1ab6223d3670fac7143202cb6a2d43d5" + }, + "tibble": { + "Package": "tibble", + "Version": "3.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "fansi", + "lifecycle", + "magrittr", + "methods", + "pillar", + "pkgconfig", + "rlang", + "utils", + "vctrs" + ], + "Hash": "a84e2cc86d07289b3b6f5069df7a004c" + }, + "tidyr": { + "Package": "tidyr", + "Version": "1.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "cpp11", + "dplyr", + "glue", + "lifecycle", + "magrittr", + "purrr", + "rlang", + "stringr", + "tibble", + "tidyselect", + "utils", + "vctrs" + ], + "Hash": "e47debdc7ce599b070c8e78e8ac0cfcf" + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "rlang", + "vctrs", + "withr" + ], + "Hash": "79540e5fcd9e0435af547d885f184fd5" + }, + "tidyverse": { + "Package": "tidyverse", + "Version": "2.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "broom", + "cli", + "conflicted", + "dbplyr", + "dplyr", + "dtplyr", + "forcats", + "ggplot2", + "googledrive", + "googlesheets4", + "haven", + "hms", + "httr", + "jsonlite", + "lubridate", + "magrittr", + "modelr", + "pillar", + "purrr", + "ragg", + "readr", + "readxl", + "reprex", + "rlang", + "rstudioapi", + "rvest", + "stringr", + "tibble", + "tidyr", + "xml2" + ], + "Hash": "c328568cd14ea89a83bd4ca7f54ae07e" + }, + "timechange": { + "Package": "timechange", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cpp11" + ], + "Hash": "8548b44f79a35ba1791308b61e6012d7" + }, + "tinytex": { + "Package": "tinytex", + "Version": "0.39", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "xfun" + ], + "Hash": "29f67ab15405b390b90e56ff22198ead" + }, + "tmap": { + "Package": "tmap", + "Version": "3.3-3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "RColorBrewer", + "abind", + "classInt", + "grid", + "htmltools", + "htmlwidgets", + "leafem", + "leaflet", + "leafsync", + "methods", + "rlang", + "sf", + "stars", + "stats", + "tmaptools", + "units", + "utils", + "viridisLite", + "widgetframe" + ], + "Hash": "7c1c0624e51105988b579d77289cea7b" + }, + "tmaptools": { + "Package": "tmaptools", + "Version": "3.1-1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "RColorBrewer", + "XML", + "dichromat", + "grid", + "lwgeom", + "magrittr", + "methods", + "sf", + "stars", + "stats", + "units", + "viridisLite" + ], + "Hash": "dfcb77371df343b663d6668d2d63ac35" + }, + "tzdb": { + "Package": "tzdb", + "Version": "0.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cpp11" + ], + "Hash": "b2e1cbce7c903eaf23ec05c58e59fb5e" + }, + "units": { + "Package": "units", + "Version": "0.8-0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp" + ], + "Hash": "6c374b265ba437f8d384ec7a313edd96" + }, + "utf8": { + "Package": "utf8", + "Version": "1.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "c9c462b759a5cc844ae25b5942654d13" + }, + "uuid": { + "Package": "uuid", + "Version": "1.1-0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "f1cb46c157d080b729159d407be83496" + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.6.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "rlang" + ], + "Hash": "d0ef2856b83dc33ea6e255caf6229ee2" + }, + "viridis": { + "Package": "viridis", + "Version": "0.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "ggplot2", + "gridExtra", + "stats", + "viridisLite" + ], + "Hash": "ee96aee95a7a563e5496f8991e9fde4b" + }, + "viridisLite": { + "Package": "viridisLite", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "55e157e2aa88161bdb0754218470d204" + }, + "vroom": { + "Package": "vroom", + "Version": "1.6.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "bit64", + "cli", + "cpp11", + "crayon", + "glue", + "hms", + "lifecycle", + "methods", + "progress", + "rlang", + "stats", + "tibble", + "tidyselect", + "tzdb", + "vctrs", + "withr" + ], + "Hash": "8318e64ffb3a70e652494017ec455561" + }, + "widgetframe": { + "Package": "widgetframe", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "htmltools", + "htmlwidgets", + "magrittr", + "purrr", + "tools", + "utils" + ], + "Hash": "0ee89e6cb58182d39b30a5b506e04808" + }, + "withr": { + "Package": "withr", + "Version": "2.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "stats" + ], + "Hash": "c0e49a9760983e81e55cdd9be92e7182" + }, + "wk": { + "Package": "wk", + "Version": "0.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d6bc0432436a0aefbf29d5de8588b876" + }, + "xfun": { + "Package": "xfun", + "Version": "0.31", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "stats", + "tools" + ], + "Hash": "a318c6f752b8dcfe9fb74d897418ab2b" + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "40682ed6a969ea5abfd351eb67833adc" + }, + "yaml": { + "Package": "yaml", + "Version": "2.3.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "458bb38374d73bf83b1bb85e353da200" + }, + "zoo": { + "Package": "zoo", + "Version": "1.8-12", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "lattice", + "stats", + "utils" + ], + "Hash": "5c715954112b45499fb1dadc6ee6ee3e" + } + } +} diff --git a/r_app/renv/.gitignore b/r_app/renv/.gitignore new file mode 100644 index 0000000..0ec0cbb --- /dev/null +++ b/r_app/renv/.gitignore @@ -0,0 +1,7 @@ +library/ +local/ +cellar/ +lock/ +python/ +sandbox/ +staging/ diff --git a/r_app/renv/activate.R b/r_app/renv/activate.R new file mode 100644 index 0000000..c5d5405 --- /dev/null +++ b/r_app/renv/activate.R @@ -0,0 +1,1180 @@ + +local({ + + # the requested version of renv + version <- "0.17.3" + attr(version, "sha") <- NULL + + # the project directory + project <- getwd() + + # use start-up diagnostics if enabled + diagnostics <- Sys.getenv("RENV_STARTUP_DIAGNOSTICS", unset = "FALSE") + if (diagnostics) { + start <- Sys.time() + profile <- tempfile("renv-startup-", fileext = ".Rprof") + utils::Rprof(profile) + on.exit({ + utils::Rprof(NULL) + elapsed <- signif(difftime(Sys.time(), start, units = "auto"), digits = 2L) + writeLines(sprintf("- renv took %s to run the autoloader.", format(elapsed))) + writeLines(sprintf("- Profile: %s", profile)) + print(utils::summaryRprof(profile)) + }, add = TRUE) + } + + # figure out whether the autoloader is enabled + enabled <- local({ + + # first, check config option + override <- getOption("renv.config.autoloader.enabled") + if (!is.null(override)) + return(override) + + # next, check environment variables + # TODO: prefer using the configuration one in the future + envvars <- c( + "RENV_CONFIG_AUTOLOADER_ENABLED", + "RENV_AUTOLOADER_ENABLED", + "RENV_ACTIVATE_PROJECT" + ) + + for (envvar in envvars) { + envval <- Sys.getenv(envvar, unset = NA) + if (!is.na(envval)) + return(tolower(envval) %in% c("true", "t", "1")) + } + + # enable by default + TRUE + + }) + + if (!enabled) + return(FALSE) + + # avoid recursion + if (identical(getOption("renv.autoloader.running"), TRUE)) { + warning("ignoring recursive attempt to run renv autoloader") + return(invisible(TRUE)) + } + + # signal that we're loading renv during R startup + options(renv.autoloader.running = TRUE) + on.exit(options(renv.autoloader.running = NULL), add = TRUE) + + # signal that we've consented to use renv + options(renv.consent = TRUE) + + # load the 'utils' package eagerly -- this ensures that renv shims, which + # mask 'utils' packages, will come first on the search path + library(utils, lib.loc = .Library) + + # unload renv if it's already been loaded + if ("renv" %in% loadedNamespaces()) + unloadNamespace("renv") + + # load bootstrap tools + `%||%` <- function(x, y) { + if (is.null(x)) y else x + } + + catf <- function(fmt, ..., appendLF = TRUE) { + + quiet <- getOption("renv.bootstrap.quiet", default = FALSE) + if (quiet) + return(invisible()) + + msg <- sprintf(fmt, ...) + cat(msg, file = stdout(), sep = if (appendLF) "\n" else "") + + invisible(msg) + + } + + header <- function(label, + ..., + prefix = "#", + suffix = "-", + n = min(getOption("width"), 78)) + { + label <- sprintf(label, ...) + n <- max(n - nchar(label) - nchar(prefix) - 2L, 8L) + if (n <= 0) + return(paste(prefix, label)) + + tail <- paste(rep.int(suffix, n), collapse = "") + paste0(prefix, " ", label, " ", tail) + + } + + startswith <- function(string, prefix) { + substring(string, 1, nchar(prefix)) == prefix + } + + bootstrap <- function(version, library) { + + friendly <- renv_bootstrap_version_friendly(version) + section <- header(sprintf("Bootstrapping renv %s", friendly)) + catf(section) + + # attempt to download renv + catf("- Downloading renv ... ", appendLF = FALSE) + withCallingHandlers( + tarball <- renv_bootstrap_download(version), + error = function(err) { + catf("FAILED") + stop("failed to download:\n", conditionMessage(err)) + } + ) + catf("OK") + on.exit(unlink(tarball), add = TRUE) + + # now attempt to install + catf("- Installing renv ... ", appendLF = FALSE) + withCallingHandlers( + status <- renv_bootstrap_install(version, tarball, library), + error = function(err) { + catf("FAILED") + stop("failed to install:\n", conditionMessage(err)) + } + ) + catf("OK") + + # add empty line to break up bootstrapping from normal output + catf("") + + return(invisible()) + } + + renv_bootstrap_tests_running <- function() { + getOption("renv.tests.running", default = FALSE) + } + + renv_bootstrap_repos <- function() { + + # get CRAN repository + cran <- getOption("renv.repos.cran", "https://cloud.r-project.org") + + # check for repos override + repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) + if (!is.na(repos)) { + + # check for RSPM; if set, use a fallback repository for renv + rspm <- Sys.getenv("RSPM", unset = NA) + if (identical(rspm, repos)) + repos <- c(RSPM = rspm, CRAN = cran) + + return(repos) + + } + + # check for lockfile repositories + repos <- tryCatch(renv_bootstrap_repos_lockfile(), error = identity) + if (!inherits(repos, "error") && length(repos)) + return(repos) + + # retrieve current repos + repos <- getOption("repos") + + # ensure @CRAN@ entries are resolved + repos[repos == "@CRAN@"] <- cran + + # add in renv.bootstrap.repos if set + default <- c(FALLBACK = "https://cloud.r-project.org") + extra <- getOption("renv.bootstrap.repos", default = default) + repos <- c(repos, extra) + + # remove duplicates that might've snuck in + dupes <- duplicated(repos) | duplicated(names(repos)) + repos[!dupes] + + } + + renv_bootstrap_repos_lockfile <- function() { + + lockpath <- Sys.getenv("RENV_PATHS_LOCKFILE", unset = "renv.lock") + if (!file.exists(lockpath)) + return(NULL) + + lockfile <- tryCatch(renv_json_read(lockpath), error = identity) + if (inherits(lockfile, "error")) { + warning(lockfile) + return(NULL) + } + + repos <- lockfile$R$Repositories + if (length(repos) == 0) + return(NULL) + + keys <- vapply(repos, `[[`, "Name", FUN.VALUE = character(1)) + vals <- vapply(repos, `[[`, "URL", FUN.VALUE = character(1)) + names(vals) <- keys + + return(vals) + + } + + renv_bootstrap_download <- function(version) { + + sha <- attr(version, "sha", exact = TRUE) + + methods <- if (!is.null(sha)) { + + # attempting to bootstrap a development version of renv + c( + function() renv_bootstrap_download_tarball(sha), + function() renv_bootstrap_download_github(sha) + ) + + } else { + + # attempting to bootstrap a release version of renv + c( + function() renv_bootstrap_download_tarball(version), + function() renv_bootstrap_download_cran_latest(version), + function() renv_bootstrap_download_cran_archive(version) + ) + + } + + for (method in methods) { + path <- tryCatch(method(), error = identity) + if (is.character(path) && file.exists(path)) + return(path) + } + + stop("All download methods failed") + + } + + renv_bootstrap_download_impl <- function(url, destfile) { + + mode <- "wb" + + # https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17715 + fixup <- + Sys.info()[["sysname"]] == "Windows" && + substring(url, 1L, 5L) == "file:" + + if (fixup) + mode <- "w+b" + + args <- list( + url = url, + destfile = destfile, + mode = mode, + quiet = TRUE + ) + + if ("headers" %in% names(formals(utils::download.file))) + args$headers <- renv_bootstrap_download_custom_headers(url) + + do.call(utils::download.file, args) + + } + + renv_bootstrap_download_custom_headers <- function(url) { + + headers <- getOption("renv.download.headers") + if (is.null(headers)) + return(character()) + + if (!is.function(headers)) + stopf("'renv.download.headers' is not a function") + + headers <- headers(url) + if (length(headers) == 0L) + return(character()) + + if (is.list(headers)) + headers <- unlist(headers, recursive = FALSE, use.names = TRUE) + + ok <- + is.character(headers) && + is.character(names(headers)) && + all(nzchar(names(headers))) + + if (!ok) + stop("invocation of 'renv.download.headers' did not return a named character vector") + + headers + + } + + renv_bootstrap_download_cran_latest <- function(version) { + + spec <- renv_bootstrap_download_cran_latest_find(version) + type <- spec$type + repos <- spec$repos + + baseurl <- utils::contrib.url(repos = repos, type = type) + ext <- if (identical(type, "source")) + ".tar.gz" + else if (Sys.info()[["sysname"]] == "Windows") + ".zip" + else + ".tgz" + name <- sprintf("renv_%s%s", version, ext) + url <- paste(baseurl, name, sep = "/") + + destfile <- file.path(tempdir(), name) + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (inherits(status, "condition")) + return(FALSE) + + # report success and return + destfile + + } + + renv_bootstrap_download_cran_latest_find <- function(version) { + + # check whether binaries are supported on this system + binary <- + getOption("renv.bootstrap.binary", default = TRUE) && + !identical(.Platform$pkgType, "source") && + !identical(getOption("pkgType"), "source") && + Sys.info()[["sysname"]] %in% c("Darwin", "Windows") + + types <- c(if (binary) "binary", "source") + + # iterate over types + repositories + for (type in types) { + for (repos in renv_bootstrap_repos()) { + + # retrieve package database + db <- tryCatch( + as.data.frame( + utils::available.packages(type = type, repos = repos), + stringsAsFactors = FALSE + ), + error = identity + ) + + if (inherits(db, "error")) + next + + # check for compatible entry + entry <- db[db$Package %in% "renv" & db$Version %in% version, ] + if (nrow(entry) == 0) + next + + # found it; return spec to caller + spec <- list(entry = entry, type = type, repos = repos) + return(spec) + + } + } + + # if we got here, we failed to find renv + fmt <- "renv %s is not available from your declared package repositories" + stop(sprintf(fmt, version)) + + } + + renv_bootstrap_download_cran_archive <- function(version) { + + name <- sprintf("renv_%s.tar.gz", version) + repos <- renv_bootstrap_repos() + urls <- file.path(repos, "src/contrib/Archive/renv", name) + destfile <- file.path(tempdir(), name) + + for (url in urls) { + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (identical(status, 0L)) + return(destfile) + + } + + return(FALSE) + + } + + renv_bootstrap_download_tarball <- function(version) { + + # if the user has provided the path to a tarball via + # an environment variable, then use it + tarball <- Sys.getenv("RENV_BOOTSTRAP_TARBALL", unset = NA) + if (is.na(tarball)) + return() + + # allow directories + if (dir.exists(tarball)) { + name <- sprintf("renv_%s.tar.gz", version) + tarball <- file.path(tarball, name) + } + + # bail if it doesn't exist + if (!file.exists(tarball)) { + + # let the user know we weren't able to honour their request + fmt <- "- RENV_BOOTSTRAP_TARBALL is set (%s) but does not exist." + msg <- sprintf(fmt, tarball) + warning(msg) + + # bail + return() + + } + + catf("- Using local tarball '%s'.", tarball) + tarball + + } + + renv_bootstrap_download_github <- function(version) { + + enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") + if (!identical(enabled, "TRUE")) + return(FALSE) + + # prepare download options + pat <- Sys.getenv("GITHUB_PAT") + if (nzchar(Sys.which("curl")) && nzchar(pat)) { + fmt <- "--location --fail --header \"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "curl", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } else if (nzchar(Sys.which("wget")) && nzchar(pat)) { + fmt <- "--header=\"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "wget", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } + + url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version) + name <- sprintf("renv_%s.tar.gz", version) + destfile <- file.path(tempdir(), name) + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (!identical(status, 0L)) + return(FALSE) + + renv_bootstrap_download_augment(destfile) + + return(destfile) + + } + + # Add Sha to DESCRIPTION. This is stop gap until #890, after which we + # can use renv::install() to fully capture metadata. + renv_bootstrap_download_augment <- function(destfile) { + sha <- renv_bootstrap_git_extract_sha1_tar(destfile) + if (is.null(sha)) { + return() + } + + # Untar + tempdir <- tempfile("renv-github-") + on.exit(unlink(tempdir, recursive = TRUE), add = TRUE) + untar(destfile, exdir = tempdir) + pkgdir <- dir(tempdir, full.names = TRUE)[[1]] + + # Modify description + desc_path <- file.path(pkgdir, "DESCRIPTION") + desc_lines <- readLines(desc_path) + remotes_fields <- c( + "RemoteType: github", + "RemoteHost: api.github.com", + "RemoteRepo: renv", + "RemoteUsername: rstudio", + "RemotePkgRef: rstudio/renv", + paste("RemoteRef: ", sha), + paste("RemoteSha: ", sha) + ) + writeLines(c(desc_lines[desc_lines != ""], remotes_fields), con = desc_path) + + # Re-tar + local({ + old <- setwd(tempdir) + on.exit(setwd(old), add = TRUE) + + tar(destfile, compression = "gzip") + }) + invisible() + } + + # Extract the commit hash from a git archive. Git archives include the SHA1 + # hash as the comment field of the tarball pax extended header + # (see https://www.kernel.org/pub/software/scm/git/docs/git-archive.html) + # For GitHub archives this should be the first header after the default one + # (512 byte) header. + renv_bootstrap_git_extract_sha1_tar <- function(bundle) { + + # open the bundle for reading + # We use gzcon for everything because (from ?gzcon) + # > Reading from a connection which does not supply a 'gzip' magic + # > header is equivalent to reading from the original connection + conn <- gzcon(file(bundle, open = "rb", raw = TRUE)) + on.exit(close(conn)) + + # The default pax header is 512 bytes long and the first pax extended header + # with the comment should be 51 bytes long + # `52 comment=` (11 chars) + 40 byte SHA1 hash + len <- 0x200 + 0x33 + res <- rawToChar(readBin(conn, "raw", n = len)[0x201:len]) + + if (grepl("^52 comment=", res)) { + sub("52 comment=", "", res) + } else { + NULL + } + } + + renv_bootstrap_install <- function(version, tarball, library) { + + # attempt to install it into project library + dir.create(library, showWarnings = FALSE, recursive = TRUE) + output <- renv_bootstrap_install_impl(library, tarball) + + # check for successful install + status <- attr(output, "status") + if (is.null(status) || identical(status, 0L)) + return(status) + + # an error occurred; report it + header <- "installation of renv failed" + lines <- paste(rep.int("=", nchar(header)), collapse = "") + text <- paste(c(header, lines, output), collapse = "\n") + stop(text) + + } + + renv_bootstrap_install_impl <- function(library, tarball) { + + # invoke using system2 so we can capture and report output + bin <- R.home("bin") + exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R" + R <- file.path(bin, exe) + + args <- c( + "--vanilla", "CMD", "INSTALL", "--no-multiarch", + "-l", shQuote(path.expand(library)), + shQuote(path.expand(tarball)) + ) + + system2(R, args, stdout = TRUE, stderr = TRUE) + + } + + renv_bootstrap_platform_prefix <- function() { + + # construct version prefix + version <- paste(R.version$major, R.version$minor, sep = ".") + prefix <- paste("R", numeric_version(version)[1, 1:2], sep = "-") + + # include SVN revision for development versions of R + # (to avoid sharing platform-specific artefacts with released versions of R) + devel <- + identical(R.version[["status"]], "Under development (unstable)") || + identical(R.version[["nickname"]], "Unsuffered Consequences") + + if (devel) + prefix <- paste(prefix, R.version[["svn rev"]], sep = "-r") + + # build list of path components + components <- c(prefix, R.version$platform) + + # include prefix if provided by user + prefix <- renv_bootstrap_platform_prefix_impl() + if (!is.na(prefix) && nzchar(prefix)) + components <- c(prefix, components) + + # build prefix + paste(components, collapse = "/") + + } + + renv_bootstrap_platform_prefix_impl <- function() { + + # if an explicit prefix has been supplied, use it + prefix <- Sys.getenv("RENV_PATHS_PREFIX", unset = NA) + if (!is.na(prefix)) + return(prefix) + + # if the user has requested an automatic prefix, generate it + auto <- Sys.getenv("RENV_PATHS_PREFIX_AUTO", unset = NA) + if (auto %in% c("TRUE", "True", "true", "1")) + return(renv_bootstrap_platform_prefix_auto()) + + # empty string on failure + "" + + } + + renv_bootstrap_platform_prefix_auto <- function() { + + prefix <- tryCatch(renv_bootstrap_platform_os(), error = identity) + if (inherits(prefix, "error") || prefix %in% "unknown") { + + msg <- paste( + "failed to infer current operating system", + "please file a bug report at https://github.com/rstudio/renv/issues", + sep = "; " + ) + + warning(msg) + + } + + prefix + + } + + renv_bootstrap_platform_os <- function() { + + sysinfo <- Sys.info() + sysname <- sysinfo[["sysname"]] + + # handle Windows + macOS up front + if (sysname == "Windows") + return("windows") + else if (sysname == "Darwin") + return("macos") + + # check for os-release files + for (file in c("/etc/os-release", "/usr/lib/os-release")) + if (file.exists(file)) + return(renv_bootstrap_platform_os_via_os_release(file, sysinfo)) + + # check for redhat-release files + if (file.exists("/etc/redhat-release")) + return(renv_bootstrap_platform_os_via_redhat_release()) + + "unknown" + + } + + renv_bootstrap_platform_os_via_os_release <- function(file, sysinfo) { + + # read /etc/os-release + release <- utils::read.table( + file = file, + sep = "=", + quote = c("\"", "'"), + col.names = c("Key", "Value"), + comment.char = "#", + stringsAsFactors = FALSE + ) + + vars <- as.list(release$Value) + names(vars) <- release$Key + + # get os name + os <- tolower(sysinfo[["sysname"]]) + + # read id + id <- "unknown" + for (field in c("ID", "ID_LIKE")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + id <- vars[[field]] + break + } + } + + # read version + version <- "unknown" + for (field in c("UBUNTU_CODENAME", "VERSION_CODENAME", "VERSION_ID", "BUILD_ID")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + version <- vars[[field]] + break + } + } + + # join together + paste(c(os, id, version), collapse = "-") + + } + + renv_bootstrap_platform_os_via_redhat_release <- function() { + + # read /etc/redhat-release + contents <- readLines("/etc/redhat-release", warn = FALSE) + + # infer id + id <- if (grepl("centos", contents, ignore.case = TRUE)) + "centos" + else if (grepl("redhat", contents, ignore.case = TRUE)) + "redhat" + else + "unknown" + + # try to find a version component (very hacky) + version <- "unknown" + + parts <- strsplit(contents, "[[:space:]]")[[1L]] + for (part in parts) { + + nv <- tryCatch(numeric_version(part), error = identity) + if (inherits(nv, "error")) + next + + version <- nv[1, 1] + break + + } + + paste(c("linux", id, version), collapse = "-") + + } + + renv_bootstrap_library_root_name <- function(project) { + + # use project name as-is if requested + asis <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT_ASIS", unset = "FALSE") + if (asis) + return(basename(project)) + + # otherwise, disambiguate based on project's path + id <- substring(renv_bootstrap_hash_text(project), 1L, 8L) + paste(basename(project), id, sep = "-") + + } + + renv_bootstrap_library_root <- function(project) { + + prefix <- renv_bootstrap_profile_prefix() + + path <- Sys.getenv("RENV_PATHS_LIBRARY", unset = NA) + if (!is.na(path)) + return(paste(c(path, prefix), collapse = "/")) + + path <- renv_bootstrap_library_root_impl(project) + if (!is.null(path)) { + name <- renv_bootstrap_library_root_name(project) + return(paste(c(path, prefix, name), collapse = "/")) + } + + renv_bootstrap_paths_renv("library", project = project) + + } + + renv_bootstrap_library_root_impl <- function(project) { + + root <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) + if (!is.na(root)) + return(root) + + type <- renv_bootstrap_project_type(project) + if (identical(type, "package")) { + userdir <- renv_bootstrap_user_dir() + return(file.path(userdir, "library")) + } + + } + + renv_bootstrap_validate_version <- function(version, description = NULL) { + + # resolve description file + # + # avoid passing lib.loc to `packageDescription()` below, since R will + # use the loaded version of the package by default anyhow. note that + # this function should only be called after 'renv' is loaded + # https://github.com/rstudio/renv/issues/1625 + description <- description %||% packageDescription("renv") + + # check whether requested version 'version' matches loaded version of renv + sha <- attr(version, "sha", exact = TRUE) + valid <- if (!is.null(sha)) + renv_bootstrap_validate_version_dev(sha, description) + else + renv_bootstrap_validate_version_release(version, description) + + if (valid) + return(TRUE) + + # the loaded version of renv doesn't match the requested version; + # give the user instructions on how to proceed + remote <- if (!is.null(description[["RemoteSha"]])) { + paste("rstudio/renv", description[["RemoteSha"]], sep = "@") + } else { + paste("renv", description[["Version"]], sep = "@") + } + + # display both loaded version + sha if available + friendly <- renv_bootstrap_version_friendly( + version = description[["Version"]], + sha = description[["RemoteSha"]] + ) + + fmt <- paste( + "renv %1$s was loaded from project library, but this project is configured to use renv %2$s.", + "- Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile.", + "- Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library.", + sep = "\n" + ) + catf(fmt, friendly, renv_bootstrap_version_friendly(version), remote) + + FALSE + + } + + renv_bootstrap_validate_version_dev <- function(version, description) { + expected <- description[["RemoteSha"]] + is.character(expected) && startswith(expected, version) + } + + renv_bootstrap_validate_version_release <- function(version, description) { + expected <- description[["Version"]] + is.character(expected) && identical(expected, version) + } + + renv_bootstrap_hash_text <- function(text) { + + hashfile <- tempfile("renv-hash-") + on.exit(unlink(hashfile), add = TRUE) + + writeLines(text, con = hashfile) + tools::md5sum(hashfile) + + } + + renv_bootstrap_load <- function(project, libpath, version) { + + # try to load renv from the project library + if (!requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) + return(FALSE) + + # warn if the version of renv loaded does not match + renv_bootstrap_validate_version(version) + + # execute renv load hooks, if any + hooks <- getHook("renv::autoload") + for (hook in hooks) + if (is.function(hook)) + tryCatch(hook(), error = warnify) + + # load the project + renv::load(project) + + TRUE + + } + + renv_bootstrap_profile_load <- function(project) { + + # if RENV_PROFILE is already set, just use that + profile <- Sys.getenv("RENV_PROFILE", unset = NA) + if (!is.na(profile) && nzchar(profile)) + return(profile) + + # check for a profile file (nothing to do if it doesn't exist) + path <- renv_bootstrap_paths_renv("profile", profile = FALSE, project = project) + if (!file.exists(path)) + return(NULL) + + # read the profile, and set it if it exists + contents <- readLines(path, warn = FALSE) + if (length(contents) == 0L) + return(NULL) + + # set RENV_PROFILE + profile <- contents[[1L]] + if (!profile %in% c("", "default")) + Sys.setenv(RENV_PROFILE = profile) + + profile + + } + + renv_bootstrap_profile_prefix <- function() { + profile <- renv_bootstrap_profile_get() + if (!is.null(profile)) + return(file.path("profiles", profile, "renv")) + } + + renv_bootstrap_profile_get <- function() { + profile <- Sys.getenv("RENV_PROFILE", unset = "") + renv_bootstrap_profile_normalize(profile) + } + + renv_bootstrap_profile_set <- function(profile) { + profile <- renv_bootstrap_profile_normalize(profile) + if (is.null(profile)) + Sys.unsetenv("RENV_PROFILE") + else + Sys.setenv(RENV_PROFILE = profile) + } + + renv_bootstrap_profile_normalize <- function(profile) { + + if (is.null(profile) || profile %in% c("", "default")) + return(NULL) + + profile + + } + + renv_bootstrap_path_absolute <- function(path) { + + substr(path, 1L, 1L) %in% c("~", "/", "\\") || ( + substr(path, 1L, 1L) %in% c(letters, LETTERS) && + substr(path, 2L, 3L) %in% c(":/", ":\\") + ) + + } + + renv_bootstrap_paths_renv <- function(..., profile = TRUE, project = NULL) { + renv <- Sys.getenv("RENV_PATHS_RENV", unset = "renv") + root <- if (renv_bootstrap_path_absolute(renv)) NULL else project + prefix <- if (profile) renv_bootstrap_profile_prefix() + components <- c(root, renv, prefix, ...) + paste(components, collapse = "/") + } + + renv_bootstrap_project_type <- function(path) { + + descpath <- file.path(path, "DESCRIPTION") + if (!file.exists(descpath)) + return("unknown") + + desc <- tryCatch( + read.dcf(descpath, all = TRUE), + error = identity + ) + + if (inherits(desc, "error")) + return("unknown") + + type <- desc$Type + if (!is.null(type)) + return(tolower(type)) + + package <- desc$Package + if (!is.null(package)) + return("package") + + "unknown" + + } + + renv_bootstrap_user_dir <- function() { + dir <- renv_bootstrap_user_dir_impl() + path.expand(chartr("\\", "/", dir)) + } + + renv_bootstrap_user_dir_impl <- function() { + + # use local override if set + override <- getOption("renv.userdir.override") + if (!is.null(override)) + return(override) + + # use R_user_dir if available + tools <- asNamespace("tools") + if (is.function(tools$R_user_dir)) + return(tools$R_user_dir("renv", "cache")) + + # try using our own backfill for older versions of R + envvars <- c("R_USER_CACHE_DIR", "XDG_CACHE_HOME") + for (envvar in envvars) { + root <- Sys.getenv(envvar, unset = NA) + if (!is.na(root)) + return(file.path(root, "R/renv")) + } + + # use platform-specific default fallbacks + if (Sys.info()[["sysname"]] == "Windows") + file.path(Sys.getenv("LOCALAPPDATA"), "R/cache/R/renv") + else if (Sys.info()[["sysname"]] == "Darwin") + "~/Library/Caches/org.R-project.R/R/renv" + else + "~/.cache/R/renv" + + } + + renv_bootstrap_version_friendly <- function(version, shafmt = NULL, sha = NULL) { + sha <- sha %||% attr(version, "sha", exact = TRUE) + parts <- c(version, sprintf(shafmt %||% " [sha: %s]", substring(sha, 1L, 7L))) + paste(parts, collapse = "") + } + + renv_bootstrap_exec <- function(project, libpath, version) { + if (!renv_bootstrap_load(project, libpath, version)) + renv_bootstrap_run(version, libpath) + } + + renv_bootstrap_run <- function(version, libpath) { + + # perform bootstrap + bootstrap(version, libpath) + + # exit early if we're just testing bootstrap + if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) + return(TRUE) + + # try again to load + if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { + return(renv::load(project = getwd())) + } + + # failed to download or load renv; warn the user + msg <- c( + "Failed to find an renv installation: the project will not be loaded.", + "Use `renv::activate()` to re-initialize the project." + ) + + warning(paste(msg, collapse = "\n"), call. = FALSE) + + } + + renv_json_read <- function(file = NULL, text = NULL) { + + jlerr <- NULL + + # if jsonlite is loaded, use that instead + if ("jsonlite" %in% loadedNamespaces()) { + + json <- catch(renv_json_read_jsonlite(file, text)) + if (!inherits(json, "error")) + return(json) + + jlerr <- json + + } + + # otherwise, fall back to the default JSON reader + json <- catch(renv_json_read_default(file, text)) + if (!inherits(json, "error")) + return(json) + + # report an error + if (!is.null(jlerr)) + stop(jlerr) + else + stop(json) + + } + + renv_json_read_jsonlite <- function(file = NULL, text = NULL) { + text <- paste(text %||% read(file), collapse = "\n") + jsonlite::fromJSON(txt = text, simplifyVector = FALSE) + } + + renv_json_read_default <- function(file = NULL, text = NULL) { + + # find strings in the JSON + text <- paste(text %||% read(file), collapse = "\n") + pattern <- '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + locs <- gregexpr(pattern, text, perl = TRUE)[[1]] + + # if any are found, replace them with placeholders + replaced <- text + strings <- character() + replacements <- character() + + if (!identical(c(locs), -1L)) { + + # get the string values + starts <- locs + ends <- locs + attr(locs, "match.length") - 1L + strings <- substring(text, starts, ends) + + # only keep those requiring escaping + strings <- grep("[[\\]{}:]", strings, perl = TRUE, value = TRUE) + + # compute replacements + replacements <- sprintf('"\032%i\032"', seq_along(strings)) + + # replace the strings + mapply(function(string, replacement) { + replaced <<- sub(string, replacement, replaced, fixed = TRUE) + }, strings, replacements) + + } + + # transform the JSON into something the R parser understands + transformed <- replaced + transformed <- gsub("{}", "`names<-`(list(), character())", transformed, fixed = TRUE) + transformed <- gsub("[[{]", "list(", transformed, perl = TRUE) + transformed <- gsub("[]}]", ")", transformed, perl = TRUE) + transformed <- gsub(":", "=", transformed, fixed = TRUE) + text <- paste(transformed, collapse = "\n") + + # parse it + json <- parse(text = text, keep.source = FALSE, srcfile = NULL)[[1L]] + + # construct map between source strings, replaced strings + map <- as.character(parse(text = strings)) + names(map) <- as.character(parse(text = replacements)) + + # convert to list + map <- as.list(map) + + # remap strings in object + remapped <- renv_json_remap(json, map) + + # evaluate + eval(remapped, envir = baseenv()) + + } + + renv_json_remap <- function(json, map) { + + # fix names + if (!is.null(names(json))) { + lhs <- match(names(json), names(map), nomatch = 0L) + rhs <- match(names(map), names(json), nomatch = 0L) + names(json)[rhs] <- map[lhs] + } + + # fix values + if (is.character(json)) + return(map[[json]] %||% json) + + # handle true, false, null + if (is.name(json)) { + text <- as.character(json) + if (text == "true") + return(TRUE) + else if (text == "false") + return(FALSE) + else if (text == "null") + return(NULL) + } + + # recurse + if (is.recursive(json)) { + for (i in seq_along(json)) { + json[i] <- list(renv_json_remap(json[[i]], map)) + } + } + + json + + } + + # load the renv profile, if any + renv_bootstrap_profile_load(project) + + # construct path to library root + root <- renv_bootstrap_library_root(project) + + # construct library prefix for platform + prefix <- renv_bootstrap_platform_prefix() + + # construct full libpath + libpath <- file.path(root, prefix) + + # run bootstrap code + renv_bootstrap_exec(project, libpath, version) + + invisible() + +}) diff --git a/smartcane.sh b/smartcane.sh new file mode 100755 index 0000000..0bddccf --- /dev/null +++ b/smartcane.sh @@ -0,0 +1,38 @@ +#!/bin/bash + + +# Definieer de directories die aangemaakt moeten worden +#declare -a dirs=( + #"laravel_app/storage/app/extracted_ci/cumulative_vals" + #"laravel_app/storage/app/chemba/merged_tif" + #"laravel_app/storage/app/chemba/merged_virtual" + #"laravel_app/storage/app/chemba/single_images" +#) +# +## Loop door de directories en maak ze aan als ze nog niet bestaan, +## of maak ze leeg als ze al bestaan +#for dir in "${dirs[@]}"; do + #if [ ! -d "$dir" ]; then + #mkdir -p "$dir" + #chmod -R 775 "$dir" + #echo "Directory $dir is aangemaakt en bijgewerkt." + #else + ## Verwijder alle inhoud binnen de bestaande directory + #find "$dir" -mindepth 1 -delete + #echo "Inhoud van directory $dir is verwijderd." + #fi +#done +## Runnen van Jupyter Notebook +#jupyter nbconvert --execute --to script --stdout python_app/Chemba_download.ipynb +## Runnen van R scripts +# Kopieer de excel file met harvesting data en maak directory aan indien nodig +#mkdir -p laravel_app/storage/app/harvesting_data +#cp "Current - Pivots planting date and harevsting data.xlsx" "laravel_app/storage/app/harvesting_data/" +#Rscript r_app/1_harvest_data_EcoFarm_v2.R +#cp "pivot_20210625.geojson" "laravel_app/storage/app/Data" +#Rscript r_app/2_CI_data_prep.R +# +## Runnen van Rmd bestand +# -e betekent "evalueren" en -i specificeert de input file +Rscript -e "rmarkdown::render('r_app/CI_Report_dashboard_planet.Rmd', 'all')" +