setup wizard update

This commit is contained in:
carodej
2020-07-02 12:31:14 +02:00
parent a98625876d
commit 2764fd6dd5
18 changed files with 521 additions and 327 deletions

View File

@@ -119,7 +119,7 @@ class FileManagerFile extends Model
// Get thumbnail from s3
if ($this->attributes['thumbnail'] && is_storage_driver(['s3', 'spaces'])) {
return Storage::temporaryUrl('file-manager/' . $this->attributes['thumbnail'], now()->addDay());
return Storage::temporaryUrl('file-manager/' . $this->attributes['thumbnail'], now()->addHour());
}
// Get thumbnail from local storage

View File

@@ -42,6 +42,7 @@ class InvoiceController extends Controller
public function show($customer, $token)
{
$settings = json_decode(Setting::all()->pluck('value', 'name')->toJson());
$invoice = $this->stripe->getUserInvoice($customer, $token);
return view('vuefilemanager.invoice')

View File

@@ -2,10 +2,13 @@
namespace App\Http\Controllers;
use App\Setting;
use Doctrine\DBAL\Driver\PDOException;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use Response;
use Symfony\Component\HttpKernel\Exception\HttpException;
class AppFunctionsController extends Controller
{
@@ -16,6 +19,31 @@ class AppFunctionsController extends Controller
*/
public function index()
{
return view("index");
try {
$connection = $this->get_setup_status();
$settings = json_decode(Setting::all()->pluck('value', 'name')->toJson());
} catch (PDOException $e) {
$connection = 'setup-database';
$settings = null;
}
return view("index")
->with('settings', $settings)
->with('installation', $connection);
}
/**
* @return string
*/
private function get_setup_status(): string
{
\DB::getPdo();
$setup_success = Setting::where('name', 'setup_wizard_success')->first();
$connection = $setup_success ? 'setup-done' : 'setup-disclaimer';
return $connection;
}
}

View File

@@ -43,17 +43,11 @@ class SetupWizardController extends Controller
*/
public function verify_purchase_code(Request $request)
{
// Author API token
$token = 'X3kPkRnIHqauwE7vle3Gvhx6PTY9bvLr';
// e3420e63-ce6f-4d04-9b3e-f7f5cc6af7c6
// Verify purchase code
$response = Http::withHeaders([
'Authorization' => 'Bearer ' . $token
])->get('https://api.envato.com/v3/market/author/sale?code=' . $request->purchaseCode);
$response = Http::get('https://verify.vuefilemanager.com/api/verify-code/' . $request->purchaseCode);
if ($response->successful()) {
return $response['license'];
return $response;
}
return response('Purchase code is invalid.', 400);
@@ -67,16 +61,16 @@ class SetupWizardController extends Controller
*/
public function setup_database(StoreDatabaseCredentialsRequest $request)
{
// Set temporary database connection
config(['database.connections.test.driver' => $request->connection]);
config(['database.connections.test.host' => $request->host]);
config(['database.connections.test.port' => $request->port]);
config(['database.connections.test.database' => $request->name]);
config(['database.connections.test.username' => $request->username]);
config(['database.connections.test.password' => $request->password]);
// Test database connection
try {
// Set temporary database connection
config(['database.connections.test.driver' => $request->connection]);
config(['database.connections.test.host' => $request->host]);
config(['database.connections.test.port' => $request->port]);
config(['database.connections.test.database' => $request->name]);
config(['database.connections.test.username' => $request->username]);
config(['database.connections.test.password' => $request->password]);
// Test connection
\DB::connection('test')->getPdo();
} catch (PDOException $e) {
@@ -115,9 +109,23 @@ class SetupWizardController extends Controller
$this->setEnvironmentValue($col['name'], $col['value']);
});
// Set database connection
config(['database.connections.mysql.driver' => $request->connection]);
config(['database.connections.mysql.host' => $request->host]);
config(['database.connections.mysql.port' => $request->port]);
config(['database.connections.mysql.database' => $request->name]);
config(['database.connections.mysql.username' => $request->username]);
config(['database.connections.mysql.password' => $request->password]);
// Set up application
$this->set_up_application();
// Store setup wizard progress
Setting::create([
'name' => 'setup_wizard_database',
'value' => 1,
]);
return response('Done', 200);
}
@@ -126,10 +134,6 @@ class SetupWizardController extends Controller
*/
private function set_up_application()
{
// Clear Cache
Artisan::call('cache:clear');
Artisan::call('config:clear');
// Generate app key
Artisan::call('key:generate');
@@ -159,6 +163,10 @@ class SetupWizardController extends Controller
// Set passport client to .env
$this->setEnvironmentValue('PASSPORT_CLIENT_ID', $client->id);
$this->setEnvironmentValue('PASSPORT_CLIENT_SECRET', $client->secret);
// Clear cache
Artisan::call('config:clear');
//Artisan::call('config:cache');
}
/**
@@ -210,6 +218,10 @@ class SetupWizardController extends Controller
Setting::updateOrCreate(['name' => $col['name']], $col);
});
// Clear cache
Artisan::call('config:clear');
//Artisan::call('config:cache');
return response('Done', 200);
}
@@ -262,6 +274,10 @@ class SetupWizardController extends Controller
Setting::updateOrCreate(['name' => $col['name']], $col);
});
// Clear cache
Artisan::call('config:clear');
//Artisan::call('config:cache');
return response('Done', 200);
}
@@ -447,6 +463,10 @@ class SetupWizardController extends Controller
$this->setEnvironmentValue($col['name'], $col['value']);
});
// Clear cache
Artisan::call('config:clear');
//Artisan::call('config:cache');
return response('Done', 200);
}
@@ -545,11 +565,19 @@ class SetupWizardController extends Controller
'password' => Hash::make($request->password),
]);
// Get default storage capacity
$storage_capacity = Setting::where('name', 'storage_default')->first();
// Create settings
// TODO: set default storage capacity
UserSettings::create([
'user_id' => $user->id,
'storage_capacity' => 1,
'storage_capacity' => $storage_capacity->value,
]);
// Store setup wizard progress
Setting::create([
'name' => 'setup_wizard_success',
'value' => 1,
]);
// Retrieve access token

View File

@@ -18,9 +18,7 @@ class StripeService
*/
public function __construct()
{
dd(config('stripe.secret'));
$this->stripe = Stripe::make(env('STRIPE_SECRET'), '2020-03-02');
$this->stripe = Stripe::make(config('cashier.secret'), '2020-03-02');
}
/**

129
config/cashier.php Normal file
View File

@@ -0,0 +1,129 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Stripe Keys
|--------------------------------------------------------------------------
|
| The Stripe publishable key and secret key give you access to Stripe's
| API. The "publishable" key is typically used when interacting with
| Stripe.js while the "secret" key accesses private API endpoints.
|
*/
'key' => env('STRIPE_KEY'),
'secret' => env('STRIPE_SECRET'),
/*
|--------------------------------------------------------------------------
| Cashier Path
|--------------------------------------------------------------------------
|
| This is the base URI path where Cashier's views, such as the payment
| verification screen, will be available from. You're free to tweak
| this path according to your preferences and application design.
|
*/
'path' => env('CASHIER_PATH', 'stripe'),
/*
|--------------------------------------------------------------------------
| Stripe Webhooks
|--------------------------------------------------------------------------
|
| Your Stripe webhook secret is used to prevent unauthorized requests to
| your Stripe webhook handling controllers. The tolerance setting will
| check the drift between the current time and the signed request's.
|
*/
'webhook' => [
'secret' => env('STRIPE_WEBHOOK_SECRET'),
'tolerance' => env('STRIPE_WEBHOOK_TOLERANCE', 300),
],
/*
|--------------------------------------------------------------------------
| Cashier Model
|--------------------------------------------------------------------------
|
| This is the model in your application that implements the Billable trait
| provided by Cashier. It will serve as the primary model you use while
| interacting with Cashier related methods, subscriptions, and so on.
|
*/
'model' => env('CASHIER_MODEL', App\User::class),
/*
|--------------------------------------------------------------------------
| Currency
|--------------------------------------------------------------------------
|
| This is the default currency that will be used when generating charges
| from your application. Of course, you are welcome to use any of the
| various world currencies that are currently supported via Stripe.
|
*/
'currency' => env('CASHIER_CURRENCY', 'usd'),
/*
|--------------------------------------------------------------------------
| Currency Locale
|--------------------------------------------------------------------------
|
| This is the default locale in which your money values are formatted in
| for display. To utilize other locales besides the default en locale
| verify you have the "intl" PHP extension installed on the system.
|
*/
'currency_locale' => env('CASHIER_CURRENCY_LOCALE', 'en'),
/*
|--------------------------------------------------------------------------
| Payment Confirmation Notification
|--------------------------------------------------------------------------
|
| If this setting is enabled, Cashier will automatically notify customers
| whose payments require additional verification. You should listen to
| Stripe's webhooks in order for this feature to function correctly.
|
*/
'payment_notification' => env('CASHIER_PAYMENT_NOTIFICATION'),
/*
|--------------------------------------------------------------------------
| Invoice Paper Size
|--------------------------------------------------------------------------
|
| This option is the default paper size for all invoices generated using
| Cashier. You are free to customize this settings based on the usual
| paper size used by the customers using your Laravel applications.
|
| Supported sizes: 'letter', 'legal', 'A4'
|
*/
'paper' => env('CASHIER_PAPER', 'letter'),
/*
|--------------------------------------------------------------------------
| Stripe Logger
|--------------------------------------------------------------------------
|
| This setting defines which logging channel will be used by the Stripe
| library to write log messages. You are free to specify any of your
| logging channels listed inside the "logging" configuration file.
|
*/
'logger' => env('CASHIER_LOGGER'),
];

View File

@@ -1,285 +1,81 @@
{
"/js/main.js": "/js/main.js",
"/css/app.css": "/css/app.css",
"/js/main.9ba0fd35b08aa42bd5d6.hot-update.js": "/js/main.9ba0fd35b08aa42bd5d6.hot-update.js",
"/js/main.94e18393347a6c30c466.hot-update.js": "/js/main.94e18393347a6c30c466.hot-update.js",
"/js/main.1a0cdd9eb7456b334686.hot-update.js": "/js/main.1a0cdd9eb7456b334686.hot-update.js",
"/js/main.9cfbf58cb9183626fbd9.hot-update.js": "/js/main.9cfbf58cb9183626fbd9.hot-update.js",
"/js/main.947538899b32463304d1.hot-update.js": "/js/main.947538899b32463304d1.hot-update.js",
"/js/main.388bcd39ccfc575df3dc.hot-update.js": "/js/main.388bcd39ccfc575df3dc.hot-update.js",
"/js/main.ec4459f3993385a8ffb0.hot-update.js": "/js/main.ec4459f3993385a8ffb0.hot-update.js",
"/js/main.4aa483cf186b82e6f133.hot-update.js": "/js/main.4aa483cf186b82e6f133.hot-update.js",
"/js/main.0b62890fe58f6191cff2.hot-update.js": "/js/main.0b62890fe58f6191cff2.hot-update.js",
"/js/main.8f85a1128dbc59267b4d.hot-update.js": "/js/main.8f85a1128dbc59267b4d.hot-update.js",
"/js/main.f57c08e4f6453554eef7.hot-update.js": "/js/main.f57c08e4f6453554eef7.hot-update.js",
"/js/main.49806237173f17d9145e.hot-update.js": "/js/main.49806237173f17d9145e.hot-update.js",
"/js/main.a66ef529551f3908fa83.hot-update.js": "/js/main.a66ef529551f3908fa83.hot-update.js",
"/js/main.d250bde2dfd0cb83ead1.hot-update.js": "/js/main.d250bde2dfd0cb83ead1.hot-update.js",
"/js/main.86c738013294c543bf9f.hot-update.js": "/js/main.86c738013294c543bf9f.hot-update.js",
"/js/main.7d5ddf17e4f5ac5d7774.hot-update.js": "/js/main.7d5ddf17e4f5ac5d7774.hot-update.js",
"/js/main.ac3441b3dd689cf2a474.hot-update.js": "/js/main.ac3441b3dd689cf2a474.hot-update.js",
"/js/main.c17831922217a8e0ca69.hot-update.js": "/js/main.c17831922217a8e0ca69.hot-update.js",
"/js/main.047d29a9f0934470628c.hot-update.js": "/js/main.047d29a9f0934470628c.hot-update.js",
"/js/main.a12c2cbb9d4f587cb915.hot-update.js": "/js/main.a12c2cbb9d4f587cb915.hot-update.js",
"/js/main.eb91f9aef7a46fc4d97d.hot-update.js": "/js/main.eb91f9aef7a46fc4d97d.hot-update.js",
"/js/main.8950f2c1f965b34c67c8.hot-update.js": "/js/main.8950f2c1f965b34c67c8.hot-update.js",
"/js/main.c181b6f235365cc77806.hot-update.js": "/js/main.c181b6f235365cc77806.hot-update.js",
"/js/main.432d249065d06227b881.hot-update.js": "/js/main.432d249065d06227b881.hot-update.js",
"/js/main.6ab44d447ea09576bf79.hot-update.js": "/js/main.6ab44d447ea09576bf79.hot-update.js",
"/js/main.f877b4f51fa54d34a703.hot-update.js": "/js/main.f877b4f51fa54d34a703.hot-update.js",
"/js/main.bfb7a5ed9a7a787bf1b1.hot-update.js": "/js/main.bfb7a5ed9a7a787bf1b1.hot-update.js",
"/js/main.7f79a324bd9f3e34330e.hot-update.js": "/js/main.7f79a324bd9f3e34330e.hot-update.js",
"/js/main.7ab0530f4fa616fd6479.hot-update.js": "/js/main.7ab0530f4fa616fd6479.hot-update.js",
"/js/main.10376c1cb6a085c800d6.hot-update.js": "/js/main.10376c1cb6a085c800d6.hot-update.js",
"/js/main.c5c07ed33eaae7e74bb0.hot-update.js": "/js/main.c5c07ed33eaae7e74bb0.hot-update.js",
"/js/main.b3898569822a4bea728a.hot-update.js": "/js/main.b3898569822a4bea728a.hot-update.js",
"/js/main.cb3e97b7379bb2690e80.hot-update.js": "/js/main.cb3e97b7379bb2690e80.hot-update.js",
"/js/main.3907d0c494c707a2e526.hot-update.js": "/js/main.3907d0c494c707a2e526.hot-update.js",
"/js/main.30c46b47c913c6750487.hot-update.js": "/js/main.30c46b47c913c6750487.hot-update.js",
"/js/main.63ac156900e0c0a6a163.hot-update.js": "/js/main.63ac156900e0c0a6a163.hot-update.js",
"/js/main.b0b834bae1baf11b7d2e.hot-update.js": "/js/main.b0b834bae1baf11b7d2e.hot-update.js",
"/js/main.ddb0da2f7522ea677587.hot-update.js": "/js/main.ddb0da2f7522ea677587.hot-update.js",
"/js/main.6b767b34769556b6f22e.hot-update.js": "/js/main.6b767b34769556b6f22e.hot-update.js",
"/js/main.388c60436fa8234d3415.hot-update.js": "/js/main.388c60436fa8234d3415.hot-update.js",
"/js/main.3c144c24f3ae3943bc90.hot-update.js": "/js/main.3c144c24f3ae3943bc90.hot-update.js",
"/js/main.bf2d7c2fb972e7d888cc.hot-update.js": "/js/main.bf2d7c2fb972e7d888cc.hot-update.js",
"/js/main.a1260c2810a8264c42e2.hot-update.js": "/js/main.a1260c2810a8264c42e2.hot-update.js",
"/js/main.d4e8446c38a1548413bb.hot-update.js": "/js/main.d4e8446c38a1548413bb.hot-update.js",
"/js/main.129032d6ff4ea189d691.hot-update.js": "/js/main.129032d6ff4ea189d691.hot-update.js",
"/js/main.bdff6b7e32d4e63268a9.hot-update.js": "/js/main.bdff6b7e32d4e63268a9.hot-update.js",
"/js/main.bb35fbbacbb8cc6a21be.hot-update.js": "/js/main.bb35fbbacbb8cc6a21be.hot-update.js",
"/js/main.f49adc3a4f0766e49fb8.hot-update.js": "/js/main.f49adc3a4f0766e49fb8.hot-update.js",
"/js/main.57e0a8a6d1694937d714.hot-update.js": "/js/main.57e0a8a6d1694937d714.hot-update.js",
"/js/main.62cbda0a1a4c8c1e7ddb.hot-update.js": "/js/main.62cbda0a1a4c8c1e7ddb.hot-update.js",
"/js/main.bfe07da70f88cbc00a18.hot-update.js": "/js/main.bfe07da70f88cbc00a18.hot-update.js",
"/js/main.1fc88be6d6fc7818d38c.hot-update.js": "/js/main.1fc88be6d6fc7818d38c.hot-update.js",
"/js/main.6575481131214e9c2891.hot-update.js": "/js/main.6575481131214e9c2891.hot-update.js",
"/js/main.c99aec40c2c3ee3eac0d.hot-update.js": "/js/main.c99aec40c2c3ee3eac0d.hot-update.js",
"/js/main.e525917a75cbb76c8b26.hot-update.js": "/js/main.e525917a75cbb76c8b26.hot-update.js",
"/js/main.22c20ab0c219852049ad.hot-update.js": "/js/main.22c20ab0c219852049ad.hot-update.js",
"/js/main.df5b1efd5e4b9c9bac80.hot-update.js": "/js/main.df5b1efd5e4b9c9bac80.hot-update.js",
"/js/main.26a5f721dbce5fad22f7.hot-update.js": "/js/main.26a5f721dbce5fad22f7.hot-update.js",
"/js/main.0d520a66a47c10f5f5e2.hot-update.js": "/js/main.0d520a66a47c10f5f5e2.hot-update.js",
"/js/main.e3d18eca82e2431524f8.hot-update.js": "/js/main.e3d18eca82e2431524f8.hot-update.js",
"/js/main.3f7d42db34a8638638f5.hot-update.js": "/js/main.3f7d42db34a8638638f5.hot-update.js",
"/js/main.12b18448bcb03190696e.hot-update.js": "/js/main.12b18448bcb03190696e.hot-update.js",
"/js/main.f1bdbd6d4e1b6125a751.hot-update.js": "/js/main.f1bdbd6d4e1b6125a751.hot-update.js",
"/js/main.7f954acdffdef3ba1b4e.hot-update.js": "/js/main.7f954acdffdef3ba1b4e.hot-update.js",
"/js/main.8af19bb7c91195200c83.hot-update.js": "/js/main.8af19bb7c91195200c83.hot-update.js",
"/js/main.83950ac988f7d52fd4db.hot-update.js": "/js/main.83950ac988f7d52fd4db.hot-update.js",
"/js/main.2668f11eaec9054d4f85.hot-update.js": "/js/main.2668f11eaec9054d4f85.hot-update.js",
"/js/main.0cb7453215e2457e963d.hot-update.js": "/js/main.0cb7453215e2457e963d.hot-update.js",
"/js/main.628d6b45839c0bd50ffa.hot-update.js": "/js/main.628d6b45839c0bd50ffa.hot-update.js",
"/js/main.494744531adf85766dd7.hot-update.js": "/js/main.494744531adf85766dd7.hot-update.js",
"/js/main.e234521251663454e5bb.hot-update.js": "/js/main.e234521251663454e5bb.hot-update.js",
"/js/main.0f8aceea8e819824f7f4.hot-update.js": "/js/main.0f8aceea8e819824f7f4.hot-update.js",
"/js/main.1c4b31ce03bd281c7af0.hot-update.js": "/js/main.1c4b31ce03bd281c7af0.hot-update.js",
"/js/main.23395410004c25e9e752.hot-update.js": "/js/main.23395410004c25e9e752.hot-update.js",
"/js/main.dec2f01b8b3413b07cce.hot-update.js": "/js/main.dec2f01b8b3413b07cce.hot-update.js",
"/js/main.90d5738c7eca52e99fa1.hot-update.js": "/js/main.90d5738c7eca52e99fa1.hot-update.js",
"/js/main.350c381ae5ef35075008.hot-update.js": "/js/main.350c381ae5ef35075008.hot-update.js",
"/js/main.7ff8cd4e0f8129b28020.hot-update.js": "/js/main.7ff8cd4e0f8129b28020.hot-update.js",
"/js/main.36981f38ef6dbe1ad2ef.hot-update.js": "/js/main.36981f38ef6dbe1ad2ef.hot-update.js",
"/js/main.c72e92249cae6c72de71.hot-update.js": "/js/main.c72e92249cae6c72de71.hot-update.js",
"/js/main.8d4d5d88816dfa6a6c3a.hot-update.js": "/js/main.8d4d5d88816dfa6a6c3a.hot-update.js",
"/js/main.6315104b66153dff7594.hot-update.js": "/js/main.6315104b66153dff7594.hot-update.js",
"/js/main.4c5a2605aac797ae5094.hot-update.js": "/js/main.4c5a2605aac797ae5094.hot-update.js",
"/js/main.06385ccc6884270b68f0.hot-update.js": "/js/main.06385ccc6884270b68f0.hot-update.js",
"/js/main.b515044cb3386d6eb38c.hot-update.js": "/js/main.b515044cb3386d6eb38c.hot-update.js",
"/js/main.daf3544f7ebd524ba8b2.hot-update.js": "/js/main.daf3544f7ebd524ba8b2.hot-update.js",
"/js/main.f49dced487020b2401db.hot-update.js": "/js/main.f49dced487020b2401db.hot-update.js",
"/js/main.61e51b120958c98e9b80.hot-update.js": "/js/main.61e51b120958c98e9b80.hot-update.js",
"/js/main.4428c57138139124d638.hot-update.js": "/js/main.4428c57138139124d638.hot-update.js",
"/js/main.2b05f7597b38aa32f3d3.hot-update.js": "/js/main.2b05f7597b38aa32f3d3.hot-update.js",
"/js/main.b6055028d561f898e936.hot-update.js": "/js/main.b6055028d561f898e936.hot-update.js",
"/js/main.78472a4d15e86cf01c4c.hot-update.js": "/js/main.78472a4d15e86cf01c4c.hot-update.js",
"/js/main.210d791d65e133956107.hot-update.js": "/js/main.210d791d65e133956107.hot-update.js",
"/js/main.ffa9b0ac8442e4d2f24b.hot-update.js": "/js/main.ffa9b0ac8442e4d2f24b.hot-update.js",
"/js/main.e2a830fd08baece2fac6.hot-update.js": "/js/main.e2a830fd08baece2fac6.hot-update.js",
"/js/main.d389a917baec2038604b.hot-update.js": "/js/main.d389a917baec2038604b.hot-update.js",
"/js/main.3e0bc14c6d62109be8c1.hot-update.js": "/js/main.3e0bc14c6d62109be8c1.hot-update.js",
"/js/main.f950652035d59e80ba88.hot-update.js": "/js/main.f950652035d59e80ba88.hot-update.js",
"/js/main.f43b68d5594c47aa9da3.hot-update.js": "/js/main.f43b68d5594c47aa9da3.hot-update.js",
"/js/main.e7caa0957bb1286588d4.hot-update.js": "/js/main.e7caa0957bb1286588d4.hot-update.js",
"/js/main.95d769d0027eed99e6c1.hot-update.js": "/js/main.95d769d0027eed99e6c1.hot-update.js",
"/js/main.77762b16026f7742cbfa.hot-update.js": "/js/main.77762b16026f7742cbfa.hot-update.js",
"/js/main.dec59254037d7f896b86.hot-update.js": "/js/main.dec59254037d7f896b86.hot-update.js",
"/js/main.a1cc927c6a50ee0c7c61.hot-update.js": "/js/main.a1cc927c6a50ee0c7c61.hot-update.js",
"/js/main.bac3134e1b5eb0e23fea.hot-update.js": "/js/main.bac3134e1b5eb0e23fea.hot-update.js",
"/js/main.d42c1993753ba7c6d7bc.hot-update.js": "/js/main.d42c1993753ba7c6d7bc.hot-update.js",
"/js/main.fe48b2784aca36a6dfbc.hot-update.js": "/js/main.fe48b2784aca36a6dfbc.hot-update.js",
"/js/main.f952b84184c741f68c44.hot-update.js": "/js/main.f952b84184c741f68c44.hot-update.js",
"/js/main.22f72f1e3bcce35c118d.hot-update.js": "/js/main.22f72f1e3bcce35c118d.hot-update.js",
"/js/main.294962aafc6753ce4207.hot-update.js": "/js/main.294962aafc6753ce4207.hot-update.js",
"/js/main.d36f9a9f6222aa74bc38.hot-update.js": "/js/main.d36f9a9f6222aa74bc38.hot-update.js",
"/js/main.0118b88fb836f75f907c.hot-update.js": "/js/main.0118b88fb836f75f907c.hot-update.js",
"/js/main.a615663568a78691f42f.hot-update.js": "/js/main.a615663568a78691f42f.hot-update.js",
"/js/main.8881ab5062a0b552e57a.hot-update.js": "/js/main.8881ab5062a0b552e57a.hot-update.js",
"/js/main.e49de8f4cfa70d1c4935.hot-update.js": "/js/main.e49de8f4cfa70d1c4935.hot-update.js",
"/js/main.3dfcd8d63417db8974ce.hot-update.js": "/js/main.3dfcd8d63417db8974ce.hot-update.js",
"/js/main.a9ce2ef2a19666a6479c.hot-update.js": "/js/main.a9ce2ef2a19666a6479c.hot-update.js",
"/js/main.2c12c92e2c72d1e41fd0.hot-update.js": "/js/main.2c12c92e2c72d1e41fd0.hot-update.js",
"/js/main.49f0ffdafe50bb99c8d4.hot-update.js": "/js/main.49f0ffdafe50bb99c8d4.hot-update.js",
"/js/main.fa9016e6dd018e588900.hot-update.js": "/js/main.fa9016e6dd018e588900.hot-update.js",
"/js/main.2b915d9e98818d0176a6.hot-update.js": "/js/main.2b915d9e98818d0176a6.hot-update.js",
"/js/main.e87a7bb1c041232220b3.hot-update.js": "/js/main.e87a7bb1c041232220b3.hot-update.js",
"/js/main.cd116661c4a1d6c5d69c.hot-update.js": "/js/main.cd116661c4a1d6c5d69c.hot-update.js",
"/js/main.582a1d128d577aec65b7.hot-update.js": "/js/main.582a1d128d577aec65b7.hot-update.js",
"/js/main.571bd2027b0ad0ac5962.hot-update.js": "/js/main.571bd2027b0ad0ac5962.hot-update.js",
"/js/main.5e91c2e331ccdfd30443.hot-update.js": "/js/main.5e91c2e331ccdfd30443.hot-update.js",
"/js/main.e7e13a6e09678c73939d.hot-update.js": "/js/main.e7e13a6e09678c73939d.hot-update.js",
"/js/main.5116d49d4cfe29bd317c.hot-update.js": "/js/main.5116d49d4cfe29bd317c.hot-update.js",
"/js/main.18894bdbb14cb9e2f4e6.hot-update.js": "/js/main.18894bdbb14cb9e2f4e6.hot-update.js",
"/js/main.4d7deb55af6c2e02cb9f.hot-update.js": "/js/main.4d7deb55af6c2e02cb9f.hot-update.js",
"/js/main.59c52d7a2f19a0cecb7c.hot-update.js": "/js/main.59c52d7a2f19a0cecb7c.hot-update.js",
"/js/main.78c184149bfbc5ca6932.hot-update.js": "/js/main.78c184149bfbc5ca6932.hot-update.js",
"/js/main.51cbbf7dc86f2a2012fa.hot-update.js": "/js/main.51cbbf7dc86f2a2012fa.hot-update.js",
"/js/main.d012d1169cb534877cd0.hot-update.js": "/js/main.d012d1169cb534877cd0.hot-update.js",
"/js/main.994c6d9f812ba73875da.hot-update.js": "/js/main.994c6d9f812ba73875da.hot-update.js",
"/js/main.fb808d6466d2dd3de777.hot-update.js": "/js/main.fb808d6466d2dd3de777.hot-update.js",
"/js/main.96d27c5eba7218a1953c.hot-update.js": "/js/main.96d27c5eba7218a1953c.hot-update.js",
"/js/main.222ebcd0c3e9d30a10a7.hot-update.js": "/js/main.222ebcd0c3e9d30a10a7.hot-update.js",
"/js/main.ec324946af056d4e9e40.hot-update.js": "/js/main.ec324946af056d4e9e40.hot-update.js",
"/js/main.cf59f620f34b75f33d57.hot-update.js": "/js/main.cf59f620f34b75f33d57.hot-update.js",
"/js/main.40983dcc9efdc97efb63.hot-update.js": "/js/main.40983dcc9efdc97efb63.hot-update.js",
"/js/main.c047afe25c97538cd057.hot-update.js": "/js/main.c047afe25c97538cd057.hot-update.js",
"/js/main.22af859fdba4f4884580.hot-update.js": "/js/main.22af859fdba4f4884580.hot-update.js",
"/js/main.2977f19ca914fd5a8b6a.hot-update.js": "/js/main.2977f19ca914fd5a8b6a.hot-update.js",
"/js/main.a5e6c89e84d4ad81c052.hot-update.js": "/js/main.a5e6c89e84d4ad81c052.hot-update.js",
"/js/main.42b8fe8b9a648085bd8e.hot-update.js": "/js/main.42b8fe8b9a648085bd8e.hot-update.js",
"/js/main.f0cfa4545280f946ba4a.hot-update.js": "/js/main.f0cfa4545280f946ba4a.hot-update.js",
"/js/main.85e3c644ebd07ea49ec3.hot-update.js": "/js/main.85e3c644ebd07ea49ec3.hot-update.js",
"/js/main.ece75643d67e9bcbe226.hot-update.js": "/js/main.ece75643d67e9bcbe226.hot-update.js",
"/js/main.6a23a146600381ea9131.hot-update.js": "/js/main.6a23a146600381ea9131.hot-update.js",
"/js/main.bc3bf0a6e8cc685e89a1.hot-update.js": "/js/main.bc3bf0a6e8cc685e89a1.hot-update.js",
"/js/main.afece1ee9777a0f09f92.hot-update.js": "/js/main.afece1ee9777a0f09f92.hot-update.js",
"/js/main.318eeefc5c617a59ee6d.hot-update.js": "/js/main.318eeefc5c617a59ee6d.hot-update.js",
"/js/main.755f6694f38c8c77bd27.hot-update.js": "/js/main.755f6694f38c8c77bd27.hot-update.js",
"/js/main.f18d478e890997d4f4da.hot-update.js": "/js/main.f18d478e890997d4f4da.hot-update.js",
"/js/main.db0f3a4f426d3990e240.hot-update.js": "/js/main.db0f3a4f426d3990e240.hot-update.js",
"/js/main.a405076120f1f39d6d6d.hot-update.js": "/js/main.a405076120f1f39d6d6d.hot-update.js",
"/js/main.6cba9147fd829edb958f.hot-update.js": "/js/main.6cba9147fd829edb958f.hot-update.js",
"/js/main.cd2fe4e3030ca6acc4e1.hot-update.js": "/js/main.cd2fe4e3030ca6acc4e1.hot-update.js",
"/js/main.5cded47a7b477704e2eb.hot-update.js": "/js/main.5cded47a7b477704e2eb.hot-update.js",
"/js/main.c7486336a6790360832d.hot-update.js": "/js/main.c7486336a6790360832d.hot-update.js",
"/js/main.f7016f686c1057bc13e3.hot-update.js": "/js/main.f7016f686c1057bc13e3.hot-update.js",
"/js/main.17c68ee60b815575d2f9.hot-update.js": "/js/main.17c68ee60b815575d2f9.hot-update.js",
"/js/main.86a4ab5670f7d5cabb35.hot-update.js": "/js/main.86a4ab5670f7d5cabb35.hot-update.js",
"/js/main.4dea91e54b0a38bba6e7.hot-update.js": "/js/main.4dea91e54b0a38bba6e7.hot-update.js",
"/js/main.feb31c4f536800f14886.hot-update.js": "/js/main.feb31c4f536800f14886.hot-update.js",
"/js/main.c47820cef3354299e493.hot-update.js": "/js/main.c47820cef3354299e493.hot-update.js",
"/js/main.5a3111773041d077914c.hot-update.js": "/js/main.5a3111773041d077914c.hot-update.js",
"/js/main.6c1dc0ab6b48b7fb8d0f.hot-update.js": "/js/main.6c1dc0ab6b48b7fb8d0f.hot-update.js",
"/js/main.acb7922f38d63ffedb8c.hot-update.js": "/js/main.acb7922f38d63ffedb8c.hot-update.js",
"/js/main.a53e0c7d11808569d268.hot-update.js": "/js/main.a53e0c7d11808569d268.hot-update.js",
"/js/main.a46a827c478e8ab2393e.hot-update.js": "/js/main.a46a827c478e8ab2393e.hot-update.js",
"/js/main.701befe377412289c1e7.hot-update.js": "/js/main.701befe377412289c1e7.hot-update.js",
"/js/main.4b1e0972a8490afd2480.hot-update.js": "/js/main.4b1e0972a8490afd2480.hot-update.js",
"/js/main.a12d0df8441fe0b1b64e.hot-update.js": "/js/main.a12d0df8441fe0b1b64e.hot-update.js",
"/js/main.8a13cdc450f54124a2e8.hot-update.js": "/js/main.8a13cdc450f54124a2e8.hot-update.js",
"/js/main.86ad86b8ab0ac84651d7.hot-update.js": "/js/main.86ad86b8ab0ac84651d7.hot-update.js",
"/js/main.d4311ae5421503ee73ba.hot-update.js": "/js/main.d4311ae5421503ee73ba.hot-update.js",
"/js/main.a12f2b869039233ec7d1.hot-update.js": "/js/main.a12f2b869039233ec7d1.hot-update.js",
"/js/main.4331e216c81ad63d68d2.hot-update.js": "/js/main.4331e216c81ad63d68d2.hot-update.js",
"/js/main.a9f4434e2ef7b9e029f9.hot-update.js": "/js/main.a9f4434e2ef7b9e029f9.hot-update.js",
"/js/main.f4cf1d836ab8fad25b18.hot-update.js": "/js/main.f4cf1d836ab8fad25b18.hot-update.js",
"/js/main.714ab8accd45fca0352c.hot-update.js": "/js/main.714ab8accd45fca0352c.hot-update.js",
"/js/main.f4eb0b9755cffa4dfcc7.hot-update.js": "/js/main.f4eb0b9755cffa4dfcc7.hot-update.js",
"/js/main.e970c4c1f36844c2977f.hot-update.js": "/js/main.e970c4c1f36844c2977f.hot-update.js",
"/js/main.78570685fbf7d85246f2.hot-update.js": "/js/main.78570685fbf7d85246f2.hot-update.js",
"/js/main.fb03325bcaa8d4d98090.hot-update.js": "/js/main.fb03325bcaa8d4d98090.hot-update.js",
"/js/main.4d26215591306c839618.hot-update.js": "/js/main.4d26215591306c839618.hot-update.js",
"/js/main.2d1f539b131e5873a485.hot-update.js": "/js/main.2d1f539b131e5873a485.hot-update.js",
"/js/main.835a770181065c1b9397.hot-update.js": "/js/main.835a770181065c1b9397.hot-update.js",
"/js/main.09f9dab42bcfa1634f4d.hot-update.js": "/js/main.09f9dab42bcfa1634f4d.hot-update.js",
"/js/main.8a70e542c3e3304535a4.hot-update.js": "/js/main.8a70e542c3e3304535a4.hot-update.js",
"/js/main.325adf8cf5e1a83126a5.hot-update.js": "/js/main.325adf8cf5e1a83126a5.hot-update.js",
"/js/main.f961b6e9d077a442035a.hot-update.js": "/js/main.f961b6e9d077a442035a.hot-update.js",
"/js/main.60d318b86ef1942116fc.hot-update.js": "/js/main.60d318b86ef1942116fc.hot-update.js",
"/js/main.fa7aca50202d520eff5c.hot-update.js": "/js/main.fa7aca50202d520eff5c.hot-update.js",
"/js/main.c61bd9bd5f3bd0f7bfaf.hot-update.js": "/js/main.c61bd9bd5f3bd0f7bfaf.hot-update.js",
"/js/main.ebf01927b1c1132074bb.hot-update.js": "/js/main.ebf01927b1c1132074bb.hot-update.js",
"/js/main.73ceb4ddc97dd83e3e9d.hot-update.js": "/js/main.73ceb4ddc97dd83e3e9d.hot-update.js",
"/js/main.d59fcd1a37bfee22bf4f.hot-update.js": "/js/main.d59fcd1a37bfee22bf4f.hot-update.js",
"/js/main.94b332e4c7a0031ed8ef.hot-update.js": "/js/main.94b332e4c7a0031ed8ef.hot-update.js",
"/js/main.578348615f140107a146.hot-update.js": "/js/main.578348615f140107a146.hot-update.js",
"/js/main.4d0d19eb2776ac141cf3.hot-update.js": "/js/main.4d0d19eb2776ac141cf3.hot-update.js",
"/js/main.c6c7699155e707c83638.hot-update.js": "/js/main.c6c7699155e707c83638.hot-update.js",
"/js/main.cc2b80170d644f9fb024.hot-update.js": "/js/main.cc2b80170d644f9fb024.hot-update.js",
"/js/main.7d835be6842b8c9b22ac.hot-update.js": "/js/main.7d835be6842b8c9b22ac.hot-update.js",
"/js/main.c48c478a7083284384b4.hot-update.js": "/js/main.c48c478a7083284384b4.hot-update.js",
"/js/main.0a033e7788ae142bef26.hot-update.js": "/js/main.0a033e7788ae142bef26.hot-update.js",
"/js/main.0b7dfc2f94ca7c20da89.hot-update.js": "/js/main.0b7dfc2f94ca7c20da89.hot-update.js",
"/js/main.321b6748d866ee25e6a0.hot-update.js": "/js/main.321b6748d866ee25e6a0.hot-update.js",
"/js/main.0fc25b4b50854ab03ecb.hot-update.js": "/js/main.0fc25b4b50854ab03ecb.hot-update.js",
"/js/main.d4eb7381630781b7f83b.hot-update.js": "/js/main.d4eb7381630781b7f83b.hot-update.js",
"/js/main.dbf7b9a6b03dd3e764f5.hot-update.js": "/js/main.dbf7b9a6b03dd3e764f5.hot-update.js",
"/js/main.f2d175ee3ad7394744f3.hot-update.js": "/js/main.f2d175ee3ad7394744f3.hot-update.js",
"/js/main.7097f18bafbb2c782e34.hot-update.js": "/js/main.7097f18bafbb2c782e34.hot-update.js",
"/js/main.e74278efede5c77fb59a.hot-update.js": "/js/main.e74278efede5c77fb59a.hot-update.js",
"/js/main.b16252a3f321aa5f638c.hot-update.js": "/js/main.b16252a3f321aa5f638c.hot-update.js",
"/js/main.65d67c907472cea149a2.hot-update.js": "/js/main.65d67c907472cea149a2.hot-update.js",
"/js/main.d32086da1adce30a365c.hot-update.js": "/js/main.d32086da1adce30a365c.hot-update.js",
"/js/main.2abe2dd3690d4223aae6.hot-update.js": "/js/main.2abe2dd3690d4223aae6.hot-update.js",
"/js/main.34d101ff4e9c0f3c9f62.hot-update.js": "/js/main.34d101ff4e9c0f3c9f62.hot-update.js",
"/js/main.db8a2c676ae81a86ac07.hot-update.js": "/js/main.db8a2c676ae81a86ac07.hot-update.js",
"/js/main.3e10515c75b547edbd84.hot-update.js": "/js/main.3e10515c75b547edbd84.hot-update.js",
"/js/main.a21b2c4011d251b159dc.hot-update.js": "/js/main.a21b2c4011d251b159dc.hot-update.js",
"/js/main.29892a9f1673876f812a.hot-update.js": "/js/main.29892a9f1673876f812a.hot-update.js",
"/js/main.90e4e646ca4687f65d71.hot-update.js": "/js/main.90e4e646ca4687f65d71.hot-update.js",
"/js/main.2f329e24c50c195b7655.hot-update.js": "/js/main.2f329e24c50c195b7655.hot-update.js",
"/js/main.a8a8ecc1aa6706cf3eb7.hot-update.js": "/js/main.a8a8ecc1aa6706cf3eb7.hot-update.js",
"/js/main.e03c44a34c09251882cb.hot-update.js": "/js/main.e03c44a34c09251882cb.hot-update.js",
"/js/main.1c1d02f7cd7ffae319bd.hot-update.js": "/js/main.1c1d02f7cd7ffae319bd.hot-update.js",
"/js/main.a1fed26b6036e6849112.hot-update.js": "/js/main.a1fed26b6036e6849112.hot-update.js",
"/js/main.c4018662de1655065788.hot-update.js": "/js/main.c4018662de1655065788.hot-update.js",
"/js/main.330cb26c0bc23a53c884.hot-update.js": "/js/main.330cb26c0bc23a53c884.hot-update.js",
"/js/main.33a43c4c29198be879c5.hot-update.js": "/js/main.33a43c4c29198be879c5.hot-update.js",
"/js/main.60e7443fa7dee86c85d8.hot-update.js": "/js/main.60e7443fa7dee86c85d8.hot-update.js",
"/js/main.3e4d2dc845d6e6fd27a1.hot-update.js": "/js/main.3e4d2dc845d6e6fd27a1.hot-update.js",
"/js/main.c072ce5e1e8ee60ff114.hot-update.js": "/js/main.c072ce5e1e8ee60ff114.hot-update.js",
"/js/main.435a7170ae4c41a507bf.hot-update.js": "/js/main.435a7170ae4c41a507bf.hot-update.js",
"/js/main.3e5be2b0dcd70adc5f07.hot-update.js": "/js/main.3e5be2b0dcd70adc5f07.hot-update.js",
"/js/main.c1e5ceaa30c4a222234b.hot-update.js": "/js/main.c1e5ceaa30c4a222234b.hot-update.js",
"/js/main.430a9eb6b1382f42d8f6.hot-update.js": "/js/main.430a9eb6b1382f42d8f6.hot-update.js",
"/js/main.c962104d9cc0e244dbcf.hot-update.js": "/js/main.c962104d9cc0e244dbcf.hot-update.js",
"/js/main.631a573d0816d40f99b3.hot-update.js": "/js/main.631a573d0816d40f99b3.hot-update.js",
"/js/main.c4966c4a540e5ed0e0fe.hot-update.js": "/js/main.c4966c4a540e5ed0e0fe.hot-update.js",
"/js/main.a7e2cb4059892a5ce2d1.hot-update.js": "/js/main.a7e2cb4059892a5ce2d1.hot-update.js",
"/js/main.c1a278d80d8245b8dbed.hot-update.js": "/js/main.c1a278d80d8245b8dbed.hot-update.js",
"/js/main.6f0d43bf3f52d2c4ac14.hot-update.js": "/js/main.6f0d43bf3f52d2c4ac14.hot-update.js",
"/js/main.e784ffe94b54d5a998ab.hot-update.js": "/js/main.e784ffe94b54d5a998ab.hot-update.js",
"/js/main.dea1f26cd34f991d67e1.hot-update.js": "/js/main.dea1f26cd34f991d67e1.hot-update.js",
"/js/main.061ee62ce1874101ac2a.hot-update.js": "/js/main.061ee62ce1874101ac2a.hot-update.js",
"/js/main.85875fb8da3b6c2c9b22.hot-update.js": "/js/main.85875fb8da3b6c2c9b22.hot-update.js",
"/js/main.db7c288c6b109145c54f.hot-update.js": "/js/main.db7c288c6b109145c54f.hot-update.js",
"/js/main.70d8638e1b3444f4775f.hot-update.js": "/js/main.70d8638e1b3444f4775f.hot-update.js",
"/js/main.0d29c7bec145fcf354fb.hot-update.js": "/js/main.0d29c7bec145fcf354fb.hot-update.js",
"/js/main.9cd13670523ef48d28e6.hot-update.js": "/js/main.9cd13670523ef48d28e6.hot-update.js",
"/js/main.47ee00b321282e6ae987.hot-update.js": "/js/main.47ee00b321282e6ae987.hot-update.js",
"/js/main.5ef029b918e611550c36.hot-update.js": "/js/main.5ef029b918e611550c36.hot-update.js",
"/js/main.f6719ad9576c258cf584.hot-update.js": "/js/main.f6719ad9576c258cf584.hot-update.js",
"/js/main.e7ccbb9786d4116e87e5.hot-update.js": "/js/main.e7ccbb9786d4116e87e5.hot-update.js",
"/js/main.9ca0d30ea69682a73a3f.hot-update.js": "/js/main.9ca0d30ea69682a73a3f.hot-update.js",
"/js/main.aea23c89a4d4cb490f38.hot-update.js": "/js/main.aea23c89a4d4cb490f38.hot-update.js",
"/js/main.2a2df9603b1822c15a5e.hot-update.js": "/js/main.2a2df9603b1822c15a5e.hot-update.js",
"/js/main.489f68ca99fda16cb5d1.hot-update.js": "/js/main.489f68ca99fda16cb5d1.hot-update.js",
"/js/main.597a3d62f124fa4b1495.hot-update.js": "/js/main.597a3d62f124fa4b1495.hot-update.js",
"/js/main.d5392b120f1eb2e4c816.hot-update.js": "/js/main.d5392b120f1eb2e4c816.hot-update.js",
"/js/main.a7ae925207be44232c5c.hot-update.js": "/js/main.a7ae925207be44232c5c.hot-update.js",
"/js/main.bb42904cd41c18389ec8.hot-update.js": "/js/main.bb42904cd41c18389ec8.hot-update.js",
"/js/main.fe643a9998fdca67359e.hot-update.js": "/js/main.fe643a9998fdca67359e.hot-update.js",
"/js/main.daf27f047d4b8810e2cf.hot-update.js": "/js/main.daf27f047d4b8810e2cf.hot-update.js",
"/js/main.986dd7f8fc929c9c0b4f.hot-update.js": "/js/main.986dd7f8fc929c9c0b4f.hot-update.js",
"/js/main.77d2a6871e82cc5d0d09.hot-update.js": "/js/main.77d2a6871e82cc5d0d09.hot-update.js",
"/js/main.49faf863ade9028d0d34.hot-update.js": "/js/main.49faf863ade9028d0d34.hot-update.js",
"/js/main.0ffae012a756027e52bd.hot-update.js": "/js/main.0ffae012a756027e52bd.hot-update.js",
"/js/main.df15a1f233ee639ed364.hot-update.js": "/js/main.df15a1f233ee639ed364.hot-update.js",
"/js/main.3d8a3e25947961464dcc.hot-update.js": "/js/main.3d8a3e25947961464dcc.hot-update.js",
"/js/main.ef757ee6853c9f37b38c.hot-update.js": "/js/main.ef757ee6853c9f37b38c.hot-update.js",
"/js/main.009a2af69a329c5f4ced.hot-update.js": "/js/main.009a2af69a329c5f4ced.hot-update.js",
"/js/main.3eba90d0a4c80f1cc076.hot-update.js": "/js/main.3eba90d0a4c80f1cc076.hot-update.js",
"/js/main.530a0e768d44eaffc432.hot-update.js": "/js/main.530a0e768d44eaffc432.hot-update.js",
"/js/main.2e446e138db18ddc31a6.hot-update.js": "/js/main.2e446e138db18ddc31a6.hot-update.js",
"/js/main.d53c4114c93122303427.hot-update.js": "/js/main.d53c4114c93122303427.hot-update.js"
"/js/main.2b4bb4d99d313abb310d.hot-update.js": "/js/main.2b4bb4d99d313abb310d.hot-update.js",
"/js/main.6dd6cfe2a5cb8f596d3a.hot-update.js": "/js/main.6dd6cfe2a5cb8f596d3a.hot-update.js",
"/js/main.0d03ffbf637ac02637d9.hot-update.js": "/js/main.0d03ffbf637ac02637d9.hot-update.js",
"/js/main.439df684f963a4dc614f.hot-update.js": "/js/main.439df684f963a4dc614f.hot-update.js",
"/js/main.b9170431b4e69c863017.hot-update.js": "/js/main.b9170431b4e69c863017.hot-update.js",
"/js/main.162a889ec078259929f9.hot-update.js": "/js/main.162a889ec078259929f9.hot-update.js",
"/js/main.955b5e5960a8b68b4586.hot-update.js": "/js/main.955b5e5960a8b68b4586.hot-update.js",
"/js/main.e52f88914111f79f4cc8.hot-update.js": "/js/main.e52f88914111f79f4cc8.hot-update.js",
"/js/main.67aa2db2ac2c7576a862.hot-update.js": "/js/main.67aa2db2ac2c7576a862.hot-update.js",
"/js/main.6d146bcfdb1538a6d2aa.hot-update.js": "/js/main.6d146bcfdb1538a6d2aa.hot-update.js",
"/js/main.7bf06c2dce5b584114c1.hot-update.js": "/js/main.7bf06c2dce5b584114c1.hot-update.js",
"/js/main.71ff79f741ef2029e4c6.hot-update.js": "/js/main.71ff79f741ef2029e4c6.hot-update.js",
"/js/main.10c049832e67d2206b1c.hot-update.js": "/js/main.10c049832e67d2206b1c.hot-update.js",
"/js/main.528fc6f35f4be7b7a1ff.hot-update.js": "/js/main.528fc6f35f4be7b7a1ff.hot-update.js",
"/js/main.224d0b4211e44d52fd92.hot-update.js": "/js/main.224d0b4211e44d52fd92.hot-update.js",
"/js/main.b4c1915ed2cd0241accc.hot-update.js": "/js/main.b4c1915ed2cd0241accc.hot-update.js",
"/js/main.be734f2633b5adb83302.hot-update.js": "/js/main.be734f2633b5adb83302.hot-update.js",
"/js/main.e9dd260335f97d12c38b.hot-update.js": "/js/main.e9dd260335f97d12c38b.hot-update.js",
"/js/main.3c5364511bc10ddbc754.hot-update.js": "/js/main.3c5364511bc10ddbc754.hot-update.js",
"/js/main.ec57dec31b0298d8824e.hot-update.js": "/js/main.ec57dec31b0298d8824e.hot-update.js",
"/js/main.75e8d1805a8f6e921e09.hot-update.js": "/js/main.75e8d1805a8f6e921e09.hot-update.js",
"/js/main.abe64316d68e84615a78.hot-update.js": "/js/main.abe64316d68e84615a78.hot-update.js",
"/js/main.e0f7dea8bb17545cc080.hot-update.js": "/js/main.e0f7dea8bb17545cc080.hot-update.js",
"/js/main.bb6424b72c3c3e77fcf9.hot-update.js": "/js/main.bb6424b72c3c3e77fcf9.hot-update.js",
"/js/main.6e87a11ef3e5847e5401.hot-update.js": "/js/main.6e87a11ef3e5847e5401.hot-update.js",
"/js/main.e3eac4c8ef625941e57b.hot-update.js": "/js/main.e3eac4c8ef625941e57b.hot-update.js",
"/js/main.43f0c0703d82f04a9c6d.hot-update.js": "/js/main.43f0c0703d82f04a9c6d.hot-update.js",
"/js/main.167e5c9f171d25413acd.hot-update.js": "/js/main.167e5c9f171d25413acd.hot-update.js",
"/js/main.0d29f8d51b39927ddb8f.hot-update.js": "/js/main.0d29f8d51b39927ddb8f.hot-update.js",
"/js/main.d884ad1680e0523ea6be.hot-update.js": "/js/main.d884ad1680e0523ea6be.hot-update.js",
"/js/main.cc2d7cd6643e90e6d858.hot-update.js": "/js/main.cc2d7cd6643e90e6d858.hot-update.js",
"/js/main.0141bb019014fbaa13d7.hot-update.js": "/js/main.0141bb019014fbaa13d7.hot-update.js",
"/js/main.896e8fe543c99edb1713.hot-update.js": "/js/main.896e8fe543c99edb1713.hot-update.js",
"/js/main.8e2748d60065ed49c366.hot-update.js": "/js/main.8e2748d60065ed49c366.hot-update.js",
"/js/main.68ea4c5fd1912666eccb.hot-update.js": "/js/main.68ea4c5fd1912666eccb.hot-update.js",
"/js/main.8cc61cea63b58eec2e4d.hot-update.js": "/js/main.8cc61cea63b58eec2e4d.hot-update.js",
"/js/main.8dcc79a5742eb491bc6d.hot-update.js": "/js/main.8dcc79a5742eb491bc6d.hot-update.js",
"/js/main.87b09a4fac5307f6208b.hot-update.js": "/js/main.87b09a4fac5307f6208b.hot-update.js",
"/js/main.cecef9bfc470f0349e94.hot-update.js": "/js/main.cecef9bfc470f0349e94.hot-update.js",
"/js/main.89172d9ba3f171c3990a.hot-update.js": "/js/main.89172d9ba3f171c3990a.hot-update.js",
"/js/main.321c02be962d10fb69d5.hot-update.js": "/js/main.321c02be962d10fb69d5.hot-update.js",
"/js/main.f89fee618b1a267d982b.hot-update.js": "/js/main.f89fee618b1a267d982b.hot-update.js",
"/js/main.c076cee9ac7f4fb433dd.hot-update.js": "/js/main.c076cee9ac7f4fb433dd.hot-update.js",
"/js/main.58ae786c829a267a138e.hot-update.js": "/js/main.58ae786c829a267a138e.hot-update.js",
"/js/main.dbcc8d4649d98fa50c5b.hot-update.js": "/js/main.dbcc8d4649d98fa50c5b.hot-update.js",
"/js/main.92e0302fdc247bc1ddd4.hot-update.js": "/js/main.92e0302fdc247bc1ddd4.hot-update.js",
"/js/main.09880d5bdbb9c9e76485.hot-update.js": "/js/main.09880d5bdbb9c9e76485.hot-update.js",
"/js/main.27d918da0c9f1cce51a0.hot-update.js": "/js/main.27d918da0c9f1cce51a0.hot-update.js",
"/js/main.ab5dea68c5e95ec6561a.hot-update.js": "/js/main.ab5dea68c5e95ec6561a.hot-update.js",
"/js/main.bdeb41f2e84dc7000c96.hot-update.js": "/js/main.bdeb41f2e84dc7000c96.hot-update.js",
"/js/main.df781024158bba6c17b3.hot-update.js": "/js/main.df781024158bba6c17b3.hot-update.js",
"/js/main.c599581002db16a66284.hot-update.js": "/js/main.c599581002db16a66284.hot-update.js",
"/js/main.560eacdd784642f47610.hot-update.js": "/js/main.560eacdd784642f47610.hot-update.js",
"/js/main.e878150fdbe51e947a64.hot-update.js": "/js/main.e878150fdbe51e947a64.hot-update.js",
"/js/main.79a1a48d0735af9aff73.hot-update.js": "/js/main.79a1a48d0735af9aff73.hot-update.js",
"/js/main.542e1d182685c54fcbc7.hot-update.js": "/js/main.542e1d182685c54fcbc7.hot-update.js",
"/js/main.96330bea02daf63eacdc.hot-update.js": "/js/main.96330bea02daf63eacdc.hot-update.js",
"/js/main.b2c0c1edaccffff34e7a.hot-update.js": "/js/main.b2c0c1edaccffff34e7a.hot-update.js",
"/js/main.afa8f877bb9d835142d9.hot-update.js": "/js/main.afa8f877bb9d835142d9.hot-update.js",
"/js/main.1a90b8f53ca99a31026f.hot-update.js": "/js/main.1a90b8f53ca99a31026f.hot-update.js",
"/js/main.69fcc023073e725606ae.hot-update.js": "/js/main.69fcc023073e725606ae.hot-update.js",
"/js/main.0f20ac44727cfd2cf9df.hot-update.js": "/js/main.0f20ac44727cfd2cf9df.hot-update.js",
"/js/main.03d5652417c82f6f1e60.hot-update.js": "/js/main.03d5652417c82f6f1e60.hot-update.js",
"/js/main.420c65ad1885894b79ed.hot-update.js": "/js/main.420c65ad1885894b79ed.hot-update.js",
"/js/main.2ce81a1c124857c4e8e7.hot-update.js": "/js/main.2ce81a1c124857c4e8e7.hot-update.js",
"/js/main.fe15909c2da16647e1ba.hot-update.js": "/js/main.fe15909c2da16647e1ba.hot-update.js",
"/js/main.0a9c77ea49d579a71cca.hot-update.js": "/js/main.0a9c77ea49d579a71cca.hot-update.js",
"/js/main.949bd581170ecd3ea3dc.hot-update.js": "/js/main.949bd581170ecd3ea3dc.hot-update.js",
"/js/main.0258efa0a901be4ca9f6.hot-update.js": "/js/main.0258efa0a901be4ca9f6.hot-update.js",
"/js/main.cd45cfd1b36066691720.hot-update.js": "/js/main.cd45cfd1b36066691720.hot-update.js",
"/js/main.57f358dda4963c5cde2c.hot-update.js": "/js/main.57f358dda4963c5cde2c.hot-update.js",
"/js/main.8c62efd2d89e1ec1196f.hot-update.js": "/js/main.8c62efd2d89e1ec1196f.hot-update.js",
"/js/main.a36f418799039d7889af.hot-update.js": "/js/main.a36f418799039d7889af.hot-update.js",
"/js/main.95f2eda8c8f6eddf91c4.hot-update.js": "/js/main.95f2eda8c8f6eddf91c4.hot-update.js",
"/js/main.c6d99369d738f4a74fe5.hot-update.js": "/js/main.c6d99369d738f4a74fe5.hot-update.js",
"/js/main.1cf2639585cda2d389ca.hot-update.js": "/js/main.1cf2639585cda2d389ca.hot-update.js",
"/js/main.4597a7e63646bbbda998.hot-update.js": "/js/main.4597a7e63646bbbda998.hot-update.js"
}

View File

@@ -74,7 +74,7 @@
'isLogged', 'isGuest'
]),
layout() {
if (includes(['AdminAccount', 'PurchaseCode', 'SubscriptionService', 'StripeCredentials', 'AppSetup', 'EnvironmentSetup', 'BillingsDetail', 'SubscriptionPlans', 'Database', 'VerifyByPassword', 'SharedPage', 'NotFoundShared', 'SignIn', 'SignUp', 'ForgottenPassword', 'CreateNewPassword'], this.$route.name)) {
if (includes(['InstallationDisclaimer', 'AdminAccount', 'PurchaseCode', 'SubscriptionService', 'StripeCredentials', 'AppSetup', 'EnvironmentSetup', 'BillingsDetail', 'SubscriptionPlans', 'Database', 'VerifyByPassword', 'SharedPage', 'NotFoundShared', 'SignIn', 'SignUp', 'ForgottenPassword', 'CreateNewPassword'], this.$route.name)) {
return 'unauthorized'
}
@@ -98,6 +98,18 @@
unique_id: 0,
}
})
// Get installation state
let installation = this.$root.$data.config.installation
// Redirect to database verify code
if ( installation === 'setup-database') {
this.$router.push({name: 'PurchaseCode'})
// Redirect to starting installation process
} else if ( installation === 'setup-disclaimer' ) {
this.$router.push({name: 'InstallationDisclaimer'})
}
},
mounted() {
// Handle mobile navigation scale animation

View File

@@ -65,6 +65,7 @@ import EnvironmentSetup from './views/SetupWizard/EnvironmentSetup'
import StripeCredentials from './views/SetupWizard/StripeCredentials'
import SubscriptionPlans from './views/SetupWizard/SubscriptionPlans'
import SubscriptionService from './views/SetupWizard/SubscriptionService'
import InstallationDisclaimer from './views/SetupWizard/InstallationDisclaimer'
Vue.use(Router)
@@ -445,7 +446,7 @@ const routesUser = [
const routesMaintenance = [
{
name: 'SetupWizard',
path: '/setup-wizard',
path: '/install',
component: SetupWizard,
meta: {
requiresAuth: false
@@ -467,6 +468,14 @@ const routesMaintenance = [
requiresAuth: false,
},
},
{
name: 'InstallationDisclaimer',
path: '/setup-wizard/installation-disclaimer',
component: InstallationDisclaimer,
meta: {
requiresAuth: false,
},
},
{
name: 'SubscriptionService',
path: '/setup-wizard/subscription-service',

View File

@@ -113,7 +113,7 @@
},
computed: {
submitButtonText() {
return this.isLoading ? 'Testing Database Connection' : 'Test your Connection and Continue'
return this.isLoading ? 'Testing and Installing Database' : 'Test Connection and Install Database'
}
},
data() {
@@ -170,7 +170,7 @@
this.isLoading = false
// Redirect to next step
this.$router.push({name: 'SubscriptionService'})
this.$router.push({name: 'InstallationDisclaimer'})
})
.catch(error => {

View File

@@ -0,0 +1,165 @@
<template>
<AuthContentWrapper ref="auth">
<!--Database Credentials-->
<AuthContent name="database-credentials" :visible="true">
<div class="content-headline">
<settings-icon size="40" class="title-icon"></settings-icon>
<h1>Setup Wizard</h1>
<h2>Database was installed successfully. Let's set up application, Make sure you have these informations before continue:</h2>
</div>
<div id="loader" v-if="isLoading">
<Spinner></Spinner>
</div>
<div class="form block-form" v-if="! isLoading">
<InfoBox>
<ul v-if="isExtended" style="margin-top: 0" class="information-list">
<li>
1. Stripe API Credentials
</li>
<li>
2. Billing details for Stripe Subscription Service
</li>
<li>
3. You will create your subscription plans
</li>
<li>
4. Email Account Credentials for sending emails to your users
</li>
<li>
5. If you use external storage service, then you will need set your API credentials
</li>
<li>
6. Some general settings for VueFileManager like Google Analytics, logo, favicon and application name
</li>
<li>
7. You will create admin account
</li>
</ul>
<ul v-else style="margin-top: 0" class="information-list">
<li>
1. Email Account Credentials for sending emails to your users
</li>
<li>
2. If you use external storage service, then you will need set your API credentials
</li>
<li>
3. Some general settings for VueFileManager like Google Analytics, logo, favicon and application name
</li>
<li>
4. You will create admin account
</li>
</ul>
</InfoBox>
<router-link v-if="isExtended" :to="{name: 'SubscriptionService'}" tag="div" class="submit-wrapper">
<AuthButton icon="chevron-right" text="I Get It! Let's Set Up Application" :loading="isLoading" :disabled="isLoading"/>
</router-link>
<router-link v-if="! isExtended" :to="{name: 'EnvironmentSetup'}" tag="div" class="submit-wrapper">
<AuthButton icon="chevron-right" text="I Get It! Let's Set Up Application" :loading="isLoading" :disabled="isLoading"/>
</router-link>
</div>
</AuthContent>
</AuthContentWrapper>
</template>
<script>
import {ValidationProvider, ValidationObserver} from 'vee-validate/dist/vee-validate.full'
import AuthContentWrapper from '@/components/Auth/AuthContentWrapper'
import SelectInput from '@/components/Others/Forms/SelectInput'
import FormLabel from '@/components/Others/Forms/FormLabel'
import InfoBox from '@/components/Others/Forms/InfoBox'
import AuthContent from '@/components/Auth/AuthContent'
import AuthButton from '@/components/Auth/AuthButton'
import Spinner from '@/components/FilesView/Spinner'
import { SettingsIcon } from 'vue-feather-icons'
import {required} from 'vee-validate/dist/rules'
import {mapGetters} from 'vuex'
import axios from 'axios'
export default {
name: 'InstallationDisclaimer',
components: {
AuthContentWrapper,
ValidationProvider,
ValidationObserver,
SettingsIcon,
SelectInput,
AuthContent,
AuthButton,
FormLabel,
required,
Spinner,
InfoBox,
},
data() {
return {
isLoading: true,
isError: false,
isExtended: undefined
}
},
created() {
// Send request to get verify account
axios
.post('/api/setup/purchase-code', {
purchaseCode: localStorage.getItem('purchase_code'),
})
.then(response => {
var container = document.getElementById('vue-file-manager')
container.scrollTop = 0
// End loading
this.isLoading = false
if (response.data === 'b6896a44017217c36f4a6fdc56699728') {
this.isExtended = true
} else {
this.isExtended = false
}
})
.catch(error => {
// End loading
this.isLoading = false
if (error.response.status == 400) {
this.$router.push({name: 'PurchaseCode'})
}
})
}
}
</script>
<style scoped lang="scss">
//@import '@assets/vue-file-manager/_auth-form';
@import '@assets/vue-file-manager/_forms';
@import '@assets/vue-file-manager/_auth';
@import '@assets/vue-file-manager/_setup_wizard';
#loader {
position: relative;
margin-top: 80px;
}
.information-list {
li {
padding: 8px 0;
@include font-size(17);
font-weight: 600;
&:first-child {
padding-top: 0;
}
&:last-child {
padding-bottom: 0;
}
}
}
</style>

View File

@@ -7,7 +7,7 @@
<div class="content-headline">
<settings-icon size="40" class="title-icon"></settings-icon>
<h1>Setup Wizard</h1>
<h2>Please verify your purchase code before continue to set up your application.</h2>
<h2>Please set your purchase code before continue to set up your application.</h2>
</div>
<ValidationObserver @submit.prevent="verifyPurchaseCode" ref="verifyPurchaseCode" v-slot="{ invalid }" tag="form" class="form inline-form">
@@ -56,7 +56,7 @@
data() {
return {
isLoading: false,
purchaseCode: 'e3420e63-ce6f-4d04-9b3e-f7f5cc6af7c6'
purchaseCode: 'e3420e63-ce6f-4d04-9b3e-f7f5cc6af7c6',
}
},
methods: {
@@ -80,6 +80,8 @@
// End loading
this.isLoading = false
localStorage.setItem('purchase_code', this.purchaseCode)
// Redirect to next step
this.$router.push({name: 'Database'})
})

View File

@@ -662,10 +662,10 @@
},
],
stripeCredentials: {
key: '',
secret: '',
webhookSecret: '',
currency: '',
key: 'pk_test_51GsACaCBETHMUxzVsYkeApHtqb85paMuye7G77PDDQ28kXqDJ5HTmqLi13aM6xee81OQK1fhkTZ7vmDiWLStU9160061Yb2MtL',
secret: 'sk_test_51GsACaCBETHMUxzVviYCrv0CeZMyWAOfBPe4uH5rkKJcJxrXhIciWQTr7UB1sgw9geoJMkNDVSWBQW36tuAsVznd00zhNHXhok',
webhookSecret: 'whsec_eKrDhqtpbMUXOKqrUHf78SrZxHHYOdrf',
currency: 'USD',
}
}
},

View File

@@ -6,44 +6,66 @@
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<meta name="description" content="{{ __('vuefilemanager.app_description') }}">
<title>{{ config('vuefilemanager.app_name') }} | {{ __('vuefilemanager.app_description') }}</title>
<title>{{ isset($settings->app_title) && $settings->app_title ? $settings->app_title : 'VueFileManager' }} | {{ isset($settings->app_description) && $settings->app_description ? $settings->app_description : 'Your self-hosted storage cloud software powered by Laravel and Vue' }}</title>
<link rel="icon" href="{{ asset('favicon.png') }}?v={{ get_version() }}">
{{--StyleSheet--}}
<link href="{{ asset('css/app.css') }}?v={{ get_version() }}" rel="stylesheet">
{{-- Apple Mobile Web App--}}
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="white">
<meta name="apple-mobile-web-app-title" content="{{ config('vuefilemanager.app_name') }}">
<meta name="apple-mobile-web-app-title" content="{{ isset($settings->app_title) && $settings->app_title ? $settings->app_title : 'VueFileManager' }}">
{{--Icons--}}
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="{{ asset('assets/images/app-icon.png') }}">
<link rel="icon" href="{{ isset($settings->app_favicon) && $settings->app_favicon ? $settings->app_favicon : asset('favicon.png') }}?v={{ get_version() }}">
{{--Format Detection--}}
<meta name="format-detection" content="telephone=no">
<meta name="format-detection" content="address=no">
</head>
<body>
<div id="app"></div>
<script src="https://js.stripe.com/v3/"></script>
<script>
let config = {
locale: '{{ \Illuminate\Support\Facades\App::getLocale() }}',
app_name: '{{ config('vuefilemanager.app_name') }}',
app_logo: '{{ asset(config('vuefilemanager.app_logo')) }}',
app_name: '{{ isset($settings->app_title) && $settings->app_title ? $settings->app_title : 'VueFileManager' }}',
app_description: '{{ isset($settings->app_description) && $settings->app_description ? $settings->app_description : 'Your self-hosted storage cloud software powered by Laravel and Vue' }}',
app_logo: '{{ isset($settings->app_logo) && $settings->app_logo ? $settings->app_logo : asset(config('vuefilemanager.app_logo')) }}',
host: '{{ url('/') }}',
api: '{{ url('/api') }}',
userRegistration: {{ isset($settings->registration) ? $settings->registration : 1 }},
storageLimit: {{ isset($settings->storage_limitation) ? $settings->storage_limitation : 1 }},
hasAuthCookie: {{ Cookie::has('token') ? 1 : 0 }},
userRegistration: {{ config('vuefilemanager.registration') ? 1 : 0 }},
storageLimit: {{ config('vuefilemanager.limit_storage_by_capacity') ? 1 : 0 }},
isSaaS: 1,
isDemo: {{ env('APP_DEMO') ? 1 : 0 }},
installation: '{{ $installation }}',
}
</script>
@if(env('APP_ENV') !== 'local')
{{--Application production script--}}
<script src="{{ asset('js/main.js') }}?v={{ get_version() }}"></script>
{{--Global site tag (gtag.js) - Google Analytics--}}
@if(isset($settings->google_analytics) && $settings->google_analytics)
<script async src="https://www.googletagmanager.com/gtag/js?id={{ $settings->google_analytics }}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{ $settings->google_analytics }}');
</script>
@endif
@else
{{--Application development script--}}
<script src="{{ mix('js/main.js') }}"></script>
@endif
</body>

View File

@@ -0,0 +1 @@
9999999999a:2:{i:0;a:2:{s:4:"plan";a:20:{s:2:"id";s:17:"professional-pack";s:6:"object";s:4:"plan";s:6:"active";b:1;s:15:"aggregate_usage";N;s:6:"amount";i:2000;s:14:"amount_decimal";s:4:"2000";s:14:"billing_scheme";s:8:"per_unit";s:7:"created";i:1593685392;s:8:"currency";s:3:"usd";s:8:"interval";s:5:"month";s:14:"interval_count";i:1;s:8:"livemode";b:0;s:8:"metadata";a:0:{}s:8:"nickname";N;s:7:"product";s:19:"prod_HZYg39TNtwkP8e";s:5:"tiers";N;s:10:"tiers_mode";N;s:15:"transform_usage";N;s:17:"trial_period_days";N;s:10:"usage_type";s:8:"licensed";}s:7:"product";a:14:{s:2:"id";s:19:"prod_HZYg39TNtwkP8e";s:6:"object";s:7:"product";s:6:"active";b:1;s:10:"attributes";a:0:{}s:7:"created";i:1593685390;s:11:"description";s:17:"for real tru mans";s:6:"images";a:0:{}s:8:"livemode";b:0;s:8:"metadata";a:1:{s:8:"capacity";s:3:"999";}s:4:"name";s:17:"Professional Pack";s:20:"statement_descriptor";N;s:4:"type";s:7:"service";s:10:"unit_label";N;s:7:"updated";i:1593685392;}}i:1;a:2:{s:4:"plan";a:20:{s:2:"id";s:6:"fdsfds";s:6:"object";s:4:"plan";s:6:"active";b:1;s:15:"aggregate_usage";N;s:6:"amount";i:2200;s:14:"amount_decimal";s:4:"2200";s:14:"billing_scheme";s:8:"per_unit";s:7:"created";i:1593616395;s:8:"currency";s:3:"usd";s:8:"interval";s:5:"month";s:14:"interval_count";i:1;s:8:"livemode";b:0;s:8:"metadata";a:0:{}s:8:"nickname";N;s:7:"product";s:19:"prod_HZG82OMrPXyWyA";s:5:"tiers";N;s:10:"tiers_mode";N;s:15:"transform_usage";N;s:17:"trial_period_days";N;s:10:"usage_type";s:8:"licensed";}s:7:"product";a:14:{s:2:"id";s:19:"prod_HZG82OMrPXyWyA";s:6:"object";s:7:"product";s:6:"active";b:1;s:10:"attributes";a:0:{}s:7:"created";i:1593616395;s:11:"description";s:6:"fdsfsd";s:6:"images";a:0:{}s:8:"livemode";b:0;s:8:"metadata";a:1:{s:8:"capacity";s:2:"22";}s:4:"name";s:6:"fdsfds";s:20:"statement_descriptor";N;s:4:"type";s:7:"service";s:10:"unit_label";N;s:7:"updated";i:1593616395;}}}

View File

@@ -0,0 +1 @@
1593685585i:1593685585;

View File

@@ -0,0 +1 @@
9999999999a:2:{s:4:"plan";a:20:{s:2:"id";s:17:"professional-pack";s:6:"object";s:4:"plan";s:6:"active";b:1;s:15:"aggregate_usage";N;s:6:"amount";i:2000;s:14:"amount_decimal";s:4:"2000";s:14:"billing_scheme";s:8:"per_unit";s:7:"created";i:1593685392;s:8:"currency";s:3:"usd";s:8:"interval";s:5:"month";s:14:"interval_count";i:1;s:8:"livemode";b:0;s:8:"metadata";a:0:{}s:8:"nickname";N;s:7:"product";s:19:"prod_HZYg39TNtwkP8e";s:5:"tiers";N;s:10:"tiers_mode";N;s:15:"transform_usage";N;s:17:"trial_period_days";N;s:10:"usage_type";s:8:"licensed";}s:7:"product";a:14:{s:2:"id";s:19:"prod_HZYg39TNtwkP8e";s:6:"object";s:7:"product";s:6:"active";b:1;s:10:"attributes";a:0:{}s:7:"created";i:1593685390;s:11:"description";s:17:"for real tru mans";s:6:"images";a:0:{}s:8:"livemode";b:0;s:8:"metadata";a:1:{s:8:"capacity";s:3:"999";}s:4:"name";s:17:"Professional Pack";s:20:"statement_descriptor";N;s:4:"type";s:7:"service";s:10:"unit_label";N;s:7:"updated";i:1593685392;}}

View File

@@ -0,0 +1 @@
1593685585i:1;