From 478de96d81315e053d45952c738daabcfc285810 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Wed, 1 Nov 2017 21:22:29 +0200 Subject: [PATCH] Request for fail2ban log support and two factor authentication support (2FA) #1657 --- app/Http/Controllers/AccountApiController.php | 3 +- app/Http/Controllers/AccountController.php | 9 + app/Http/Controllers/Auth/AuthController.php | 69 ++++- .../Controllers/Auth/PasswordController.php | 20 +- app/Http/Controllers/Google2FAController.php | 37 +++ app/Http/Kernel.php | 1 + .../Requests/ValidateTwoFactorRequest.php | 78 ++++++ app/Http/routes.php | 4 + app/Listeners/HandleUserLoggedIn.php | 8 +- app/Models/User.php | 10 +- app/Services/AuthService.php | 11 +- composer.json | 10 +- composer.lock | 247 +++++++++++++++++- config/app.php | 4 + config/google2fa.php | 68 +++++ .../2017_10_17_083846_add_default_rates.php | 8 + database/setup.sql | 15 +- resources/lang/en/texts.php | 8 + .../views/accounts/user_details.blade.php | 19 +- resources/views/auth/password.blade.php | 5 + resources/views/auth/two_factor.blade.php | 41 +++ resources/views/clientauth/password.blade.php | 11 +- resources/views/users/two_factor.blade.php | 31 +++ 23 files changed, 682 insertions(+), 35 deletions(-) create mode 100644 app/Http/Controllers/Google2FAController.php create mode 100644 app/Http/Requests/ValidateTwoFactorRequest.php create mode 100644 config/google2fa.php create mode 100644 resources/views/auth/two_factor.blade.php create mode 100644 resources/views/users/two_factor.blade.php diff --git a/app/Http/Controllers/AccountApiController.php b/app/Http/Controllers/AccountApiController.php index 5aa905d63e..cf6b364755 100644 --- a/app/Http/Controllers/AccountApiController.php +++ b/app/Http/Controllers/AccountApiController.php @@ -47,7 +47,7 @@ class AccountApiController extends BaseAPIController $account = $this->accountRepo->create($request->first_name, $request->last_name, $request->email, $request->password); $user = $account->users()->first(); - Auth::login($user, true); + Auth::login($user); event(new UserSignedUp()); return $this->processLogin($request); @@ -69,6 +69,7 @@ class AccountApiController extends BaseAPIController } return $this->processLogin($request); } else { + error_log('login failed'); if ($user) { $user->failed_logins = $user->failed_logins + 1; $user->save(); diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index f03eb9e65f..04d3e57d01 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -1123,6 +1123,11 @@ class AccountController extends BaseController } $rules = ['email' => 'email|required|unique:users,email,'.$user->id.',id']; + + if ($user->google_2fa_secret) { + $rules['phone'] = 'required'; + } + $validator = Validator::make(Input::all(), $rules); if ($validator->fails()) { @@ -1144,6 +1149,10 @@ class AccountController extends BaseController $user->notify_approved = Input::get('notify_approved'); } + if ($user->google_2fa_secret && ! Input::get('enable_two_factor')) { + $user->google_2fa_secret = null; + } + if (Utils::isNinja()) { if (Input::get('referral_code') && ! $user->referral_code) { $user->referral_code = strtolower(str_random(RANDOM_KEY_LENGTH)); diff --git a/app/Http/Controllers/Auth/AuthController.php b/app/Http/Controllers/Auth/AuthController.php index 9f7660e329..7403ce9b29 100644 --- a/app/Http/Controllers/Auth/AuthController.php +++ b/app/Http/Controllers/Auth/AuthController.php @@ -14,6 +14,9 @@ use Illuminate\Http\Request; use Lang; use Session; use Utils; +use Cache; +use Illuminate\Contracts\Auth\Authenticatable; +use App\Http\Requests\ValidateTwoFactorRequest; class AuthController extends Controller { @@ -151,20 +154,12 @@ class AuthController extends Controller if ($user && $user->failed_logins >= MAX_FAILED_LOGINS) { Session::flash('error', trans('texts.invalid_credentials')); - return redirect()->to('login'); } $response = self::postLogin($request); if (Auth::check()) { - if ($user && $user->failed_logins > 0) { - $user->failed_logins = 0; - $user->save(); - } - - Event::fire(new UserLoggedIn()); - /* $users = false; // we're linking a new account @@ -176,10 +171,8 @@ class AuthController extends Controller $users = $this->accountRepo->loadAccounts(Auth::user()->id); } */ - - $users = $this->accountRepo->loadAccounts(Auth::user()->id); - Session::put(SESSION_USER_ACCOUNTS, $users); } elseif ($user) { + error_log('login failed'); $user->failed_logins = $user->failed_logins + 1; $user->save(); } @@ -187,6 +180,60 @@ class AuthController extends Controller return $response; } + /** + * Send the post-authentication response. + * + * @param \Illuminate\Http\Request $request + * @param \Illuminate\Contracts\Auth\Authenticatable $user + * @return \Illuminate\Http\Response + */ + private function authenticated(Request $request, Authenticatable $user) + { + if ($user->google_2fa_secret) { + Auth::logout(); + $request->session()->put('2fa:user:id', $user->id); + return redirect('/validate_two_factor/' . $user->account->account_key); + } + + Event::fire(new UserLoggedIn()); + + return redirect()->intended($this->redirectTo); + } + + /** + * + * @return \Illuminate\Http\Response + */ + public function getValidateToken() + { + if (session('2fa:user:id')) { + return view('auth.two_factor'); + } + + return redirect('login'); + } + + /** + * + * @param App\Http\Requests\ValidateSecretRequest $request + * @return \Illuminate\Http\Response + */ + public function postValidateToken(ValidateTwoFactorRequest $request) + { + //get user id and create cache key + $userId = $request->session()->pull('2fa:user:id'); + $key = $userId . ':' . $request->totp; + + //use cache to store token to blacklist + Cache::add($key, true, 4); + + //login and redirect user + Auth::loginUsingId($userId); + Event::fire(new UserLoggedIn()); + + return redirect()->intended($this->redirectTo); + } + /** * @return \Illuminate\Http\Response */ diff --git a/app/Http/Controllers/Auth/PasswordController.php b/app/Http/Controllers/Auth/PasswordController.php index 97e84eb586..189f736fcf 100644 --- a/app/Http/Controllers/Auth/PasswordController.php +++ b/app/Http/Controllers/Auth/PasswordController.php @@ -2,6 +2,8 @@ namespace App\Http\Controllers\Auth; +use Event; +use App\Events\UserLoggedIn; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\ResetsPasswords; @@ -18,7 +20,9 @@ class PasswordController extends Controller | */ - use ResetsPasswords; + use ResetsPasswords { + getResetSuccessResponse as protected traitGetResetSuccessResponse; + } /** * @var string @@ -49,4 +53,18 @@ class PasswordController extends Controller return $this->getEmail(); } + + protected function getResetSuccessResponse($response) + { + $user = auth()->user(); + + if ($user->google_2fa_secret) { + auth()->logout(); + session(['2fa:user:id' => $user->id]); + return redirect('/validate_two_factor/' . $user->account->account_key); + } else { + Event::fire(new UserLoggedIn()); + return $this->traitGetResetSuccessResponse($response); + } + } } diff --git a/app/Http/Controllers/Google2FAController.php b/app/Http/Controllers/Google2FAController.php new file mode 100644 index 0000000000..665309e7f5 --- /dev/null +++ b/app/Http/Controllers/Google2FAController.php @@ -0,0 +1,37 @@ +user(); + + if ($user->google_2fa_secret) { + return redirect('/settings/user_details'); + } + + $google2fa = new Google2FA(); + $secret = $google2fa->generateSecretKey(); + + $user->google_2fa_secret = Crypt::encrypt($secret); + $user->save(); + + $qrCode = $google2fa->getQRCodeGoogleUrl( + APP_NAME, + $user->email, + $secret + ); + + $data = [ + 'secret' => $secret, + 'qrCode' => $qrCode, + ]; + + return view('users.two_factor', $data); + } +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 49133b82d7..c19fce2245 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -36,5 +36,6 @@ class Kernel extends HttpKernel 'guest' => 'App\Http\Middleware\RedirectIfAuthenticated', 'api' => 'App\Http\Middleware\ApiCheck', 'cors' => '\Barryvdh\Cors\HandleCors', + 'throttle' => 'Illuminate\Routing\Middleware\ThrottleRequests', ]; } diff --git a/app/Http/Requests/ValidateTwoFactorRequest.php b/app/Http/Requests/ValidateTwoFactorRequest.php new file mode 100644 index 0000000000..3996a7be35 --- /dev/null +++ b/app/Http/Requests/ValidateTwoFactorRequest.php @@ -0,0 +1,78 @@ +extend( + 'valid_token', + function ($attribute, $value, $parameters, $validator) { + $secret = Crypt::decrypt($this->user->google_2fa_secret); + + return Google2FA::verifyKey($secret, $value); + }, + trans('texts.invalid_code') + ); + + $factory->extend( + 'used_token', + function ($attribute, $value, $parameters, $validator) { + $key = $this->user->id . ':' . $value; + + return !Cache::has($key); + }, + trans('texts.invalid_code') + ); + } + + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + try { + $this->user = User::findOrFail( + session('2fa:user:id') + ); + } catch (Exception $exc) { + return false; + } + + return true; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'totp' => 'bail|required|digits:6|valid_token|used_token', + ]; + } +} diff --git a/app/Http/routes.php b/app/Http/routes.php index 615fcac7a9..b1564052c9 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -79,6 +79,8 @@ Route::group(['middleware' => 'lookup:postmark'], function () { Route::group(['middleware' => 'lookup:account'], function () { Route::post('/payment_hook/{account_key}/{gateway_id}', 'OnlinePaymentController@handlePaymentWebhook'); Route::match(['GET', 'POST', 'OPTIONS'], '/buy_now/{gateway_type?}', 'OnlinePaymentController@handleBuyNow'); + Route::get('validate_two_factor/{account_key}', 'Auth\AuthController@getValidateToken'); + Route::post('validate_two_factor/{account_key}', ['middleware' => 'throttle:5', 'uses' => 'Auth\AuthController@postValidateToken']); }); //Route::post('/hook/bot/{platform?}', 'BotController@handleMessage'); @@ -141,6 +143,8 @@ Route::group(['middleware' => ['lookup:user', 'auth:user']], function () { Route::post('settings/user_details', 'AccountController@saveUserDetails'); Route::post('settings/payment_gateway_limits', 'AccountGatewayController@savePaymentGatewayLimits'); Route::post('users/change_password', 'UserController@changePassword'); + Route::get('settings/enable_two_factor', 'Google2FAController@enableTwoFactor'); + Route::get('settings/disable_two_factor', 'Google2FAController@disableTwoFactor'); Route::resource('clients', 'ClientController'); Route::get('api/clients', 'ClientController@getDatatable'); diff --git a/app/Listeners/HandleUserLoggedIn.php b/app/Listeners/HandleUserLoggedIn.php index 030d73251e..9ac0c2f235 100644 --- a/app/Listeners/HandleUserLoggedIn.php +++ b/app/Listeners/HandleUserLoggedIn.php @@ -41,7 +41,8 @@ class HandleUserLoggedIn */ public function handle(UserLoggedIn $event) { - $account = Auth::user()->account; + $user = auth()->user(); + $account = $user->account; if (! Utils::isNinja() && empty($account->last_login)) { event(new UserSignedUp()); @@ -50,6 +51,11 @@ class HandleUserLoggedIn $account->last_login = Carbon::now()->toDateTimeString(); $account->save(); + if ($user->failed_logins > 0) { + $user->failed_logins = 0; + $user->save(); + } + $users = $this->accountRepo->loadAccounts(Auth::user()->id); Session::put(SESSION_USER_ACCOUNTS, $users); HistoryUtils::loadHistory($users ?: Auth::user()->id); diff --git a/app/Models/User.php b/app/Models/User.php index ad185d3ffd..bdc21dcdcf 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -59,7 +59,15 @@ class User extends Authenticatable * * @var array */ - protected $hidden = ['password', 'remember_token', 'confirmation_code']; + protected $hidden = [ + 'password', + 'remember_token', + 'confirmation_code', + 'oauth_user_id', + 'oauth_provider_id', + 'google_2fa_secret', + 'google_2fa_phone', + ]; /** * @var array diff --git a/app/Services/AuthService.php b/app/Services/AuthService.php index 8490c0f163..e5a5576716 100644 --- a/app/Services/AuthService.php +++ b/app/Services/AuthService.php @@ -83,10 +83,15 @@ class AuthService } } else { LookupUser::setServerByField('oauth_user_key', $providerId . '-' . $oauthUserId); - + \Log::info("Find user: $providerId, $oauthUserId"); if ($user = $this->accountRepo->findUserByOauth($providerId, $oauthUserId)) { - Auth::login($user, true); - event(new UserLoggedIn()); + if ($user->google_2fa_secret) { + session(['2fa:user:id' => $user->id]); + return redirect('/validate_two_factor/' . $user->account->account_key); + } else { + Auth::login($user); + event(new UserLoggedIn()); + } } else { Session::flash('error', trans('texts.invalid_credentials')); diff --git a/composer.json b/composer.json index d9a1b4575e..92eb142a79 100644 --- a/composer.json +++ b/composer.json @@ -17,11 +17,13 @@ "ext-gd": "*", "ext-gmp": "*", "Dwolla/omnipay-dwolla": "dev-master", + "abdala/omnipay-pagseguro": "0.2", "agmscode/omnipay-agms": "~1.0", "alfaproject/omnipay-skrill": "dev-master", "anahkiasen/former": "4.0.*@dev", "andreas22/omnipay-fasapay": "1.*", "asgrim/ofxparser": "^1.1", + "bacon/bacon-qr-code": "^1.0", "barracudanetworks/archivestream-php": "^1.0", "barryvdh/laravel-cors": "^0.9.1", "barryvdh/laravel-debugbar": "~2.2", @@ -70,6 +72,7 @@ "mpdf/mpdf": "6.1.3", "nwidart/laravel-modules": "^1.14", "omnipay/2checkout": "dev-master#e9c079c2dde0d7ba461903b3b7bd5caf6dee1248", + "omnipay/authorizenet": "dev-solution-id as 2.5.0", "omnipay/bitpay": "dev-master", "omnipay/braintree": "~2.0@dev", "omnipay/gocardless": "dev-master", @@ -77,6 +80,7 @@ "omnipay/omnipay": "~2.3", "omnipay/stripe": "dev-master", "patricktalmadge/bootstrapper": "5.5.x", + "pragmarx/google2fa-laravel": "^0.1.2", "predis/predis": "^1.1", "simshaun/recurr": "dev-master", "softcommerce/omnipay-paytrace": "~1.0", @@ -86,10 +90,8 @@ "webpatser/laravel-countries": "dev-master", "websight/l5-google-cloud-storage": "dev-master", "wepay/php-sdk": "^0.2", - "wildbit/laravel-postmark-provider": "3.0", - "abdala/omnipay-pagseguro": "0.2", - "omnipay/authorizenet": "dev-solution-id as 2.5.0" - }, + "wildbit/laravel-postmark-provider": "3.0" + }, "require-dev": { "codeception/c3": "~2.0", "codeception/codeception": "2.3.3", diff --git a/composer.lock b/composer.lock index 646c7df5d4..bfef2b142e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "13e8b7032220fe1181aed50719a55a11", - "content-hash": "eb01266703f4233d8fa703516a43bba8", + "hash": "80f6d3f1c26c0eb84d0d9ee5aa88aaa1", + "content-hash": "0891783210a35e9c83addbcdbb691993", "packages": [ { "name": "abdala/omnipay-pagseguro", @@ -458,6 +458,52 @@ ], "time": "2017-10-17 19:51:40" }, + { + "name": "bacon/bacon-qr-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/Bacon/BaconQrCode.git", + "reference": "5a91b62b9d37cee635bbf8d553f4546057250bee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/5a91b62b9d37cee635bbf8d553f4546057250bee", + "reference": "5a91b62b9d37cee635bbf8d553f4546057250bee", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": "^5.4|^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8" + }, + "suggest": { + "ext-gd": "to generate QR code images" + }, + "type": "library", + "autoload": { + "psr-0": { + "BaconQrCode": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Ben Scholzen 'DASPRiD'", + "email": "mail@dasprids.de", + "homepage": "http://www.dasprids.de", + "role": "Developer" + } + ], + "description": "BaconQrCode is a QR code generator for PHP.", + "homepage": "https://github.com/Bacon/BaconQrCode", + "time": "2017-10-17 09:59:25" + }, { "name": "barracudanetworks/archivestream-php", "version": "1.0.5", @@ -7181,6 +7227,68 @@ ], "time": "2017-06-15 07:04:25" }, + { + "name": "paragonie/constant_time_encoding", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "9e7d88e6e4015c2f06a3fa22f06e1d5faa77e6c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/9e7d88e6e4015c2f06a3fa22f06e1d5faa77e6c4", + "reference": "9e7d88e6e4015c2f06a3fa22f06e1d5faa77e6c4", + "shasum": "" + }, + "require": { + "php": "^7" + }, + "require-dev": { + "phpunit/phpunit": "^6", + "vimeo/psalm": "^0.3|^1" + }, + "type": "library", + "autoload": { + "psr-4": { + "ParagonIE\\ConstantTime\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" + }, + { + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" + } + ], + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", + "keywords": [ + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" + ], + "time": "2017-09-22 14:55:37" + }, { "name": "paragonie/random_compat", "version": "v1.4.2", @@ -7437,6 +7545,137 @@ ], "time": "2017-06-05 06:31:10" }, + { + "name": "pragmarx/google2fa", + "version": "v2.0.6", + "source": { + "type": "git", + "url": "https://github.com/antonioribeiro/google2fa.git", + "reference": "bc2d654305e4d09254125f8cd390a7fbc4742d46" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/bc2d654305e4d09254125f8cd390a7fbc4742d46", + "reference": "bc2d654305e4d09254125f8cd390a7fbc4742d46", + "shasum": "" + }, + "require": { + "paragonie/constant_time_encoding": "~1.0|~2.0", + "paragonie/random_compat": "~1.4|~2.0", + "php": ">=5.4", + "symfony/polyfill-php56": "~1.2" + }, + "require-dev": { + "bacon/bacon-qr-code": "~1.0", + "phpspec/phpspec": "~2.1", + "phpunit/phpunit": "~4" + }, + "suggest": { + "bacon/bacon-qr-code": "Required to generate inline QR Codes." + }, + "type": "library", + "extra": { + "component": "package", + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "PragmaRX\\Google2FA\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Antonio Carlos Ribeiro", + "email": "acr@antoniocarlosribeiro.com", + "role": "Creator & Designer" + } + ], + "description": "A One Time Password Authentication package, compatible with Google Authenticator.", + "keywords": [ + "2fa", + "Authentication", + "Two Factor Authentication", + "google2fa", + "laravel" + ], + "time": "2017-09-12 06:55:05" + }, + { + "name": "pragmarx/google2fa-laravel", + "version": "v0.1.2", + "source": { + "type": "git", + "url": "https://github.com/antonioribeiro/google2fa-laravel.git", + "reference": "ebc24520bea1f1ef5659e39d4024a3275ce49a49" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/antonioribeiro/google2fa-laravel/zipball/ebc24520bea1f1ef5659e39d4024a3275ce49a49", + "reference": "ebc24520bea1f1ef5659e39d4024a3275ce49a49", + "shasum": "" + }, + "require": { + "laravel/framework": "~5", + "php": ">=5.4", + "pragmarx/google2fa": "~2.0" + }, + "require-dev": { + "benconstable/phpspec-laravel": "~3.0", + "phpspec/phpspec": "~3" + }, + "suggest": { + "bacon/bacon-qr-code": "Required to generate inline QR Codes." + }, + "type": "library", + "extra": { + "component": "package", + "frameworks": [ + "Laravel" + ], + "branch-alias": { + "dev-master": "0.1-dev" + }, + "laravel": { + "providers": [ + "PragmaRX\\Google2FALaravel\\ServiceProvider" + ], + "aliases": { + "Google2FA": "PragmaRX\\Google2FALaravel\\Facade" + } + } + }, + "autoload": { + "psr-4": { + "PragmaRX\\Google2FALaravel\\": "src/", + "spec\\PragmaRX\\Google2FALaravel\\": "tests/spec/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Antonio Carlos Ribeiro", + "email": "acr@antoniocarlosribeiro.com", + "role": "Creator & Designer" + } + ], + "description": "A One Time Password Authentication package, compatible with Google Authenticator.", + "keywords": [ + "Authentication", + "Two Factor Authentication", + "google2fa", + "laravel" + ], + "time": "2017-06-23 00:45:24" + }, { "name": "predis/predis", "version": "v1.1.1", @@ -12192,14 +12431,14 @@ "meebio/omnipay-creditcall": 20, "meebio/omnipay-secure-trading": 20, "omnipay/2checkout": 20, + "omnipay/authorizenet": 20, "omnipay/bitpay": 20, "omnipay/braintree": 20, "omnipay/gocardless": 20, "omnipay/stripe": 20, "simshaun/recurr": 20, "webpatser/laravel-countries": 20, - "websight/l5-google-cloud-storage": 20, - "omnipay/authorizenet": 20 + "websight/l5-google-cloud-storage": 20 }, "prefer-stable": false, "prefer-lowest": false, diff --git a/config/app.php b/config/app.php index 5d11d2331e..6ca5107037 100644 --- a/config/app.php +++ b/config/app.php @@ -158,6 +158,7 @@ return [ Codedge\Updater\UpdaterServiceProvider::class, Nwidart\Modules\LaravelModulesServiceProvider::class, Barryvdh\Cors\ServiceProvider::class, + PragmaRX\Google2FALaravel\ServiceProvider::class, /* * Application Service Providers... @@ -171,6 +172,7 @@ return [ 'Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider', 'Davibennun\LaravelPushNotification\LaravelPushNotificationServiceProvider', + ], /* @@ -266,6 +268,8 @@ return [ 'DateUtils' => App\Libraries\DateUtils::class, 'HTMLUtils' => App\Libraries\HTMLUtils::class, 'Domain' => App\Constants\Domain::class, + 'Google2FA' => PragmaRX\Google2FALaravel\Facade::class, + ], ]; diff --git a/config/google2fa.php b/config/google2fa.php new file mode 100644 index 0000000000..e04f5e0b76 --- /dev/null +++ b/config/google2fa.php @@ -0,0 +1,68 @@ + true, + + /* + * Lifetime in minutes. + * In case you need your users to be asked for a new one time passwords from time to time. + */ + + 'lifetime' => 0, // 0 = eternal + + /* + * Renew lifetime at every new request. + */ + + 'keep_alive' => true, + + /* + * Auth container binding + */ + + 'auth' => 'auth', + + /* + * 2FA verified session var + */ + + 'session_var' => 'google2fa', + + /* + * One Time Password request input name + */ + 'otp_input' => 'one_time_password', + + /* + * One Time Password Window + */ + 'window' => 1, + + /* + * Forbid user to reuse One Time Passwords. + */ + 'forbid_old_passwords' => false, + + /* + * User's table column for google2fa secret + */ + 'otp_secret_column' => 'google2fa_secret', + + /* + * One Time Password View + */ + 'view' => 'google2fa.index', + + /* + * One Time Password error message + */ + 'error_messages' => [ + 'wrong_otp' => "The 'One Time Password' typed was wrong.", + ], + +]; diff --git a/database/migrations/2017_10_17_083846_add_default_rates.php b/database/migrations/2017_10_17_083846_add_default_rates.php index 5fe6eff87b..cf9151799a 100644 --- a/database/migrations/2017_10_17_083846_add_default_rates.php +++ b/database/migrations/2017_10_17_083846_add_default_rates.php @@ -28,6 +28,10 @@ class AddDefaultRates extends Migration $table->date('partial_due_date')->nullable(); }); + Schema::table('users', function ($table) { + $table->string('google_2fa_secret')->nullable(); + }); + // Add 'Four Months' frequency option if (DB::table('frequencies')->count() == 8) { DB::table('frequencies')->where('id', '=', 7)->update(['name' => 'Four months']); @@ -61,5 +65,9 @@ class AddDefaultRates extends Migration Schema::table('invoices', function ($table) { $table->dropColumn('partial_due_date'); }); + + Schema::table('users', function ($table) { + $table->dropColumn('google_2fa_secret'); + }); } } diff --git a/database/setup.sql b/database/setup.sql index c8d5b5359a..e64bb91f34 100644 --- a/database/setup.sql +++ b/database/setup.sql @@ -857,7 +857,7 @@ CREATE TABLE `currencies` ( `code` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `swap_currency_symbol` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=69 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=70 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -866,7 +866,7 @@ CREATE TABLE `currencies` ( LOCK TABLES `currencies` WRITE; /*!40000 ALTER TABLE `currencies` DISABLE KEYS */; -INSERT INTO `currencies` VALUES (1,'US Dollar','$','2',',','.','USD',0),(2,'British Pound','£','2',',','.','GBP',0),(3,'Euro','€','2','.',',','EUR',0),(4,'South African Rand','R','2','.',',','ZAR',0),(5,'Danish Krone','kr','2','.',',','DKK',1),(6,'Israeli Shekel','NIS ','2',',','.','ILS',0),(7,'Swedish Krona','kr','2','.',',','SEK',1),(8,'Kenyan Shilling','KSh ','2',',','.','KES',0),(9,'Canadian Dollar','C$','2',',','.','CAD',0),(10,'Philippine Peso','P ','2',',','.','PHP',0),(11,'Indian Rupee','Rs. ','2',',','.','INR',0),(12,'Australian Dollar','$','2',',','.','AUD',0),(13,'Singapore Dollar','','2',',','.','SGD',0),(14,'Norske Kroner','kr','2','.',',','NOK',1),(15,'New Zealand Dollar','$','2',',','.','NZD',0),(16,'Vietnamese Dong','','0','.',',','VND',0),(17,'Swiss Franc','','2','\'','.','CHF',0),(18,'Guatemalan Quetzal','Q','2',',','.','GTQ',0),(19,'Malaysian Ringgit','RM','2',',','.','MYR',0),(20,'Brazilian Real','R$','2','.',',','BRL',0),(21,'Thai Baht','','2',',','.','THB',0),(22,'Nigerian Naira','','2',',','.','NGN',0),(23,'Argentine Peso','$','2','.',',','ARS',0),(24,'Bangladeshi Taka','Tk','2',',','.','BDT',0),(25,'United Arab Emirates Dirham','DH ','2',',','.','AED',0),(26,'Hong Kong Dollar','','2',',','.','HKD',0),(27,'Indonesian Rupiah','Rp','2',',','.','IDR',0),(28,'Mexican Peso','$','2',',','.','MXN',0),(29,'Egyptian Pound','E£','2',',','.','EGP',0),(30,'Colombian Peso','$','2','.',',','COP',0),(31,'West African Franc','CFA ','2',',','.','XOF',0),(32,'Chinese Renminbi','RMB ','2',',','.','CNY',0),(33,'Rwandan Franc','RF ','2',',','.','RWF',0),(34,'Tanzanian Shilling','TSh ','2',',','.','TZS',0),(35,'Netherlands Antillean Guilder','','2','.',',','ANG',0),(36,'Trinidad and Tobago Dollar','TT$','2',',','.','TTD',0),(37,'East Caribbean Dollar','EC$','2',',','.','XCD',0),(38,'Ghanaian Cedi','','2',',','.','GHS',0),(39,'Bulgarian Lev','','2',' ','.','BGN',0),(40,'Aruban Florin','Afl. ','2',' ','.','AWG',0),(41,'Turkish Lira','TL ','2','.',',','TRY',0),(42,'Romanian New Leu','','2',',','.','RON',0),(43,'Croatian Kuna','kn','2','.',',','HRK',0),(44,'Saudi Riyal','','2',',','.','SAR',0),(45,'Japanese Yen','¥','0',',','.','JPY',0),(46,'Maldivian Rufiyaa','','2',',','.','MVR',0),(47,'Costa Rican Colón','','2',',','.','CRC',0),(48,'Pakistani Rupee','Rs ','0',',','.','PKR',0),(49,'Polish Zloty','zł','2',' ',',','PLN',1),(50,'Sri Lankan Rupee','LKR','2',',','.','LKR',1),(51,'Czech Koruna','Kč','2',' ',',','CZK',1),(52,'Uruguayan Peso','$','2','.',',','UYU',0),(53,'Namibian Dollar','$','2',',','.','NAD',0),(54,'Tunisian Dinar','','2',',','.','TND',0),(55,'Russian Ruble','','2',',','.','RUB',0),(56,'Mozambican Metical','MT','2','.',',','MZN',1),(57,'Omani Rial','','2',',','.','OMR',0),(58,'Ukrainian Hryvnia','','2',',','.','UAH',0),(59,'Macanese Pataca','MOP$','2',',','.','MOP',0),(60,'Taiwan New Dollar','NT$','2',',','.','TWD',0),(61,'Dominican Peso','RD$','2',',','.','DOP',0),(62,'Chilean Peso','$','0','.',',','CLP',0),(63,'Icelandic Króna','kr','2','.',',','ISK',1),(64,'Papua New Guinean Kina','K','2',',','.','PGK',0),(65,'Jordanian Dinar','','2',',','.','JOD',0),(66,'Myanmar Kyat','K','2',',','.','MMK',0),(67,'Peruvian Sol','S/ ','2',',','.','PEN',0),(68,'Botswana Pula','P','2',',','.','BWP',0); +INSERT INTO `currencies` VALUES (1,'US Dollar','$','2',',','.','USD',0),(2,'British Pound','£','2',',','.','GBP',0),(3,'Euro','€','2','.',',','EUR',0),(4,'South African Rand','R','2','.',',','ZAR',0),(5,'Danish Krone','kr','2','.',',','DKK',1),(6,'Israeli Shekel','NIS ','2',',','.','ILS',0),(7,'Swedish Krona','kr','2','.',',','SEK',1),(8,'Kenyan Shilling','KSh ','2',',','.','KES',0),(9,'Canadian Dollar','C$','2',',','.','CAD',0),(10,'Philippine Peso','P ','2',',','.','PHP',0),(11,'Indian Rupee','Rs. ','2',',','.','INR',0),(12,'Australian Dollar','$','2',',','.','AUD',0),(13,'Singapore Dollar','','2',',','.','SGD',0),(14,'Norske Kroner','kr','2','.',',','NOK',1),(15,'New Zealand Dollar','$','2',',','.','NZD',0),(16,'Vietnamese Dong','','0','.',',','VND',0),(17,'Swiss Franc','','2','\'','.','CHF',0),(18,'Guatemalan Quetzal','Q','2',',','.','GTQ',0),(19,'Malaysian Ringgit','RM','2',',','.','MYR',0),(20,'Brazilian Real','R$','2','.',',','BRL',0),(21,'Thai Baht','','2',',','.','THB',0),(22,'Nigerian Naira','','2',',','.','NGN',0),(23,'Argentine Peso','$','2','.',',','ARS',0),(24,'Bangladeshi Taka','Tk','2',',','.','BDT',0),(25,'United Arab Emirates Dirham','DH ','2',',','.','AED',0),(26,'Hong Kong Dollar','','2',',','.','HKD',0),(27,'Indonesian Rupiah','Rp','2',',','.','IDR',0),(28,'Mexican Peso','$','2',',','.','MXN',0),(29,'Egyptian Pound','E£','2',',','.','EGP',0),(30,'Colombian Peso','$','2','.',',','COP',0),(31,'West African Franc','CFA ','2',',','.','XOF',0),(32,'Chinese Renminbi','RMB ','2',',','.','CNY',0),(33,'Rwandan Franc','RF ','2',',','.','RWF',0),(34,'Tanzanian Shilling','TSh ','2',',','.','TZS',0),(35,'Netherlands Antillean Guilder','','2','.',',','ANG',0),(36,'Trinidad and Tobago Dollar','TT$','2',',','.','TTD',0),(37,'East Caribbean Dollar','EC$','2',',','.','XCD',0),(38,'Ghanaian Cedi','','2',',','.','GHS',0),(39,'Bulgarian Lev','','2',' ','.','BGN',0),(40,'Aruban Florin','Afl. ','2',' ','.','AWG',0),(41,'Turkish Lira','TL ','2','.',',','TRY',0),(42,'Romanian New Leu','','2',',','.','RON',0),(43,'Croatian Kuna','kn','2','.',',','HRK',0),(44,'Saudi Riyal','','2',',','.','SAR',0),(45,'Japanese Yen','¥','0',',','.','JPY',0),(46,'Maldivian Rufiyaa','','2',',','.','MVR',0),(47,'Costa Rican Colón','','2',',','.','CRC',0),(48,'Pakistani Rupee','Rs ','0',',','.','PKR',0),(49,'Polish Zloty','zł','2',' ',',','PLN',1),(50,'Sri Lankan Rupee','LKR','2',',','.','LKR',1),(51,'Czech Koruna','Kč','2',' ',',','CZK',1),(52,'Uruguayan Peso','$','2','.',',','UYU',0),(53,'Namibian Dollar','$','2',',','.','NAD',0),(54,'Tunisian Dinar','','2',',','.','TND',0),(55,'Russian Ruble','','2',',','.','RUB',0),(56,'Mozambican Metical','MT','2','.',',','MZN',1),(57,'Omani Rial','','2',',','.','OMR',0),(58,'Ukrainian Hryvnia','','2',',','.','UAH',0),(59,'Macanese Pataca','MOP$','2',',','.','MOP',0),(60,'Taiwan New Dollar','NT$','2',',','.','TWD',0),(61,'Dominican Peso','RD$','2',',','.','DOP',0),(62,'Chilean Peso','$','0','.',',','CLP',0),(63,'Icelandic Króna','kr','2','.',',','ISK',1),(64,'Papua New Guinean Kina','K','2',',','.','PGK',0),(65,'Jordanian Dinar','','2',',','.','JOD',0),(66,'Myanmar Kyat','K','2',',','.','MMK',0),(67,'Peruvian Sol','S/ ','2',',','.','PEN',0),(68,'Botswana Pula','P','2',',','.','BWP',0),(69,'Hungarian Forint','Ft','0','.',',','HUF',1); /*!40000 ALTER TABLE `currencies` ENABLE KEYS */; UNLOCK TABLES; @@ -1234,7 +1234,7 @@ CREATE TABLE `gateways` ( LOCK TABLES `gateways` WRITE; /*!40000 ALTER TABLE `gateways` DISABLE KEYS */; -INSERT INTO `gateways` VALUES (1,'2017-10-26 04:22:56','2017-10-26 04:22:56','Authorize.Net AIM','AuthorizeNet_AIM',1,1,4,0,NULL,0,0),(2,'2017-10-26 04:22:56','2017-10-26 04:22:56','Authorize.Net SIM','AuthorizeNet_SIM',1,2,10000,0,NULL,0,0),(3,'2017-10-26 04:22:56','2017-10-26 04:22:56','CardSave','CardSave',1,1,10000,0,NULL,0,0),(4,'2017-10-26 04:22:56','2017-10-26 04:22:56','Eway Rapid','Eway_RapidShared',1,1,10000,0,NULL,1,0),(5,'2017-10-26 04:22:56','2017-10-26 04:22:56','FirstData Connect','FirstData_Connect',1,1,10000,0,NULL,0,0),(6,'2017-10-26 04:22:56','2017-10-26 04:22:56','GoCardless','GoCardless',1,2,10000,0,NULL,1,0),(7,'2017-10-26 04:22:56','2017-10-26 04:22:56','Migs ThreeParty','Migs_ThreeParty',1,1,10000,0,NULL,0,0),(8,'2017-10-26 04:22:56','2017-10-26 04:22:56','Migs TwoParty','Migs_TwoParty',1,1,10000,0,NULL,0,0),(9,'2017-10-26 04:22:56','2017-10-26 04:22:56','Mollie','Mollie',1,1,7,0,NULL,1,0),(10,'2017-10-26 04:22:56','2017-10-26 04:22:56','MultiSafepay','MultiSafepay',1,1,10000,0,NULL,0,0),(11,'2017-10-26 04:22:56','2017-10-26 04:22:56','Netaxept','Netaxept',1,1,10000,0,NULL,0,0),(12,'2017-10-26 04:22:56','2017-10-26 04:22:56','NetBanx','NetBanx',1,1,10000,0,NULL,0,0),(13,'2017-10-26 04:22:56','2017-10-26 04:22:56','PayFast','PayFast',1,1,10000,0,NULL,1,0),(14,'2017-10-26 04:22:56','2017-10-26 04:22:56','Payflow Pro','Payflow_Pro',1,1,10000,0,NULL,0,0),(15,'2017-10-26 04:22:56','2017-10-26 04:22:56','PaymentExpress PxPay','PaymentExpress_PxPay',1,1,10000,0,NULL,0,0),(16,'2017-10-26 04:22:56','2017-10-26 04:22:56','PaymentExpress PxPost','PaymentExpress_PxPost',1,1,10000,0,NULL,0,0),(17,'2017-10-26 04:22:56','2017-10-26 04:22:56','PayPal Express','PayPal_Express',1,1,3,0,NULL,1,0),(18,'2017-10-26 04:22:56','2017-10-26 04:22:56','PayPal Pro','PayPal_Pro',1,1,10000,0,NULL,0,0),(19,'2017-10-26 04:22:56','2017-10-26 04:22:56','Pin','Pin',1,1,10000,0,NULL,0,0),(20,'2017-10-26 04:22:56','2017-10-26 04:22:56','SagePay Direct','SagePay_Direct',1,1,10000,0,NULL,0,0),(21,'2017-10-26 04:22:56','2017-10-26 04:22:56','SagePay Server','SagePay_Server',1,1,10000,0,NULL,0,0),(22,'2017-10-26 04:22:56','2017-10-26 04:22:56','SecurePay DirectPost','SecurePay_DirectPost',1,1,10000,0,NULL,0,0),(23,'2017-10-26 04:22:56','2017-10-26 04:22:56','Stripe','Stripe',1,1,1,0,NULL,0,0),(24,'2017-10-26 04:22:56','2017-10-26 04:22:56','TargetPay Direct eBanking','TargetPay_Directebanking',1,1,10000,0,NULL,0,0),(25,'2017-10-26 04:22:56','2017-10-26 04:22:56','TargetPay Ideal','TargetPay_Ideal',1,1,10000,0,NULL,0,0),(26,'2017-10-26 04:22:56','2017-10-26 04:22:56','TargetPay Mr Cash','TargetPay_Mrcash',1,1,10000,0,NULL,0,0),(27,'2017-10-26 04:22:56','2017-10-26 04:22:56','TwoCheckout','TwoCheckout',1,1,10000,0,NULL,1,0),(28,'2017-10-26 04:22:56','2017-10-26 04:22:56','WorldPay','WorldPay',1,1,10000,0,NULL,0,0),(29,'2017-10-26 04:22:56','2017-10-26 04:22:56','BeanStream','BeanStream',1,2,10000,0,NULL,0,0),(30,'2017-10-26 04:22:56','2017-10-26 04:22:56','Psigate','Psigate',1,2,10000,0,NULL,0,0),(31,'2017-10-26 04:22:56','2017-10-26 04:22:56','moolah','AuthorizeNet_AIM',1,1,10000,0,NULL,0,0),(32,'2017-10-26 04:22:56','2017-10-26 04:22:56','Alipay','Alipay_Express',1,1,10000,0,NULL,0,0),(33,'2017-10-26 04:22:56','2017-10-26 04:22:56','Buckaroo','Buckaroo_CreditCard',1,1,10000,0,NULL,0,0),(34,'2017-10-26 04:22:56','2017-10-26 04:22:56','Coinbase','Coinbase',1,1,10000,0,NULL,0,0),(35,'2017-10-26 04:22:56','2017-10-26 04:22:56','DataCash','DataCash',1,1,10000,0,NULL,0,0),(36,'2017-10-26 04:22:56','2017-10-26 04:22:56','Neteller','Neteller',1,2,10000,0,NULL,0,0),(37,'2017-10-26 04:22:56','2017-10-26 04:22:56','Pacnet','Pacnet',1,1,10000,0,NULL,0,0),(38,'2017-10-26 04:22:56','2017-10-26 04:22:56','PaymentSense','PaymentSense',1,2,10000,0,NULL,0,0),(39,'2017-10-26 04:22:56','2017-10-26 04:22:56','Realex','Realex_Remote',1,1,10000,0,NULL,0,0),(40,'2017-10-26 04:22:56','2017-10-26 04:22:56','Sisow','Sisow',1,1,10000,0,NULL,0,0),(41,'2017-10-26 04:22:56','2017-10-26 04:22:56','Skrill','Skrill',1,1,10000,0,NULL,1,0),(42,'2017-10-26 04:22:56','2017-10-26 04:22:56','BitPay','BitPay',1,1,6,0,NULL,1,0),(43,'2017-10-26 04:22:56','2017-10-26 04:22:56','Dwolla','Dwolla',1,1,5,0,NULL,1,0),(44,'2017-10-26 04:22:56','2017-10-26 04:22:56','AGMS','Agms',1,1,10000,0,NULL,0,0),(45,'2017-10-26 04:22:56','2017-10-26 04:22:56','Barclays','BarclaysEpdq\\Essential',1,1,10000,0,NULL,0,0),(46,'2017-10-26 04:22:56','2017-10-26 04:22:56','Cardgate','Cardgate',1,1,10000,0,NULL,0,0),(47,'2017-10-26 04:22:56','2017-10-26 04:22:56','Checkout.com','CheckoutCom',1,1,10000,0,NULL,0,0),(48,'2017-10-26 04:22:56','2017-10-26 04:22:56','Creditcall','Creditcall',1,1,10000,0,NULL,0,0),(49,'2017-10-26 04:22:56','2017-10-26 04:22:56','Cybersource','Cybersource',1,1,10000,0,NULL,0,0),(50,'2017-10-26 04:22:56','2017-10-26 04:22:56','ecoPayz','Ecopayz',1,1,10000,0,NULL,0,0),(51,'2017-10-26 04:22:56','2017-10-26 04:22:56','Fasapay','Fasapay',1,1,10000,0,NULL,0,0),(52,'2017-10-26 04:22:56','2017-10-26 04:22:56','Komoju','Komoju',1,1,10000,0,NULL,0,0),(53,'2017-10-26 04:22:56','2017-10-26 04:22:56','Multicards','Multicards',1,1,10000,0,NULL,0,0),(54,'2017-10-26 04:22:56','2017-10-26 04:22:56','Pagar.Me','Pagarme',1,2,10000,0,NULL,0,0),(55,'2017-10-26 04:22:56','2017-10-26 04:22:56','Paysafecard','Paysafecard',1,1,10000,0,NULL,0,0),(56,'2017-10-26 04:22:56','2017-10-26 04:22:56','Paytrace','Paytrace_CreditCard',1,1,10000,0,NULL,0,0),(57,'2017-10-26 04:22:56','2017-10-26 04:22:56','Secure Trading','SecureTrading',1,1,10000,0,NULL,0,0),(58,'2017-10-26 04:22:56','2017-10-26 04:22:56','SecPay','SecPay',1,1,10000,0,NULL,0,0),(59,'2017-10-26 04:22:56','2017-10-26 04:22:56','WeChat Express','WeChat_Express',1,2,10000,0,NULL,0,0),(60,'2017-10-26 04:22:56','2017-10-26 04:22:56','WePay','WePay',1,1,10000,0,NULL,0,0),(61,'2017-10-26 04:22:56','2017-10-26 04:22:56','Braintree','Braintree',1,1,2,0,NULL,0,0),(62,'2017-10-26 04:22:56','2017-10-26 04:22:56','Custom','Custom',1,1,9,0,NULL,1,0),(63,'2017-10-26 04:22:56','2017-10-26 04:22:56','FirstData Payeezy','FirstData_Payeezy',1,1,10000,0,NULL,0,0),(64,'2017-10-26 04:22:56','2017-10-26 04:22:56','GoCardless','GoCardlessV2\\Redirect',1,1,8,0,NULL,1,0),(65,'2017-10-26 04:22:56','2017-10-26 04:22:56','PagSeguro','PagSeguro',1,1,10000,0,NULL,0,0); +INSERT INTO `gateways` VALUES (1,'2017-10-31 05:57:06','2017-10-31 05:57:06','Authorize.Net AIM','AuthorizeNet_AIM',1,1,4,0,NULL,0,0),(2,'2017-10-31 05:57:06','2017-10-31 05:57:06','Authorize.Net SIM','AuthorizeNet_SIM',1,2,10000,0,NULL,0,0),(3,'2017-10-31 05:57:06','2017-10-31 05:57:06','CardSave','CardSave',1,1,10000,0,NULL,0,0),(4,'2017-10-31 05:57:06','2017-10-31 05:57:06','Eway Rapid','Eway_RapidShared',1,1,10000,0,NULL,1,0),(5,'2017-10-31 05:57:06','2017-10-31 05:57:06','FirstData Connect','FirstData_Connect',1,1,10000,0,NULL,0,0),(6,'2017-10-31 05:57:06','2017-10-31 05:57:06','GoCardless','GoCardless',1,2,10000,0,NULL,1,0),(7,'2017-10-31 05:57:06','2017-10-31 05:57:06','Migs ThreeParty','Migs_ThreeParty',1,1,10000,0,NULL,0,0),(8,'2017-10-31 05:57:06','2017-10-31 05:57:06','Migs TwoParty','Migs_TwoParty',1,1,10000,0,NULL,0,0),(9,'2017-10-31 05:57:06','2017-10-31 05:57:06','Mollie','Mollie',1,1,7,0,NULL,1,0),(10,'2017-10-31 05:57:06','2017-10-31 05:57:06','MultiSafepay','MultiSafepay',1,1,10000,0,NULL,0,0),(11,'2017-10-31 05:57:06','2017-10-31 05:57:06','Netaxept','Netaxept',1,1,10000,0,NULL,0,0),(12,'2017-10-31 05:57:06','2017-10-31 05:57:06','NetBanx','NetBanx',1,1,10000,0,NULL,0,0),(13,'2017-10-31 05:57:06','2017-10-31 05:57:06','PayFast','PayFast',1,1,10000,0,NULL,1,0),(14,'2017-10-31 05:57:06','2017-10-31 05:57:06','Payflow Pro','Payflow_Pro',1,1,10000,0,NULL,0,0),(15,'2017-10-31 05:57:06','2017-10-31 05:57:06','PaymentExpress PxPay','PaymentExpress_PxPay',1,1,10000,0,NULL,0,0),(16,'2017-10-31 05:57:06','2017-10-31 05:57:06','PaymentExpress PxPost','PaymentExpress_PxPost',1,1,10000,0,NULL,0,0),(17,'2017-10-31 05:57:06','2017-10-31 05:57:06','PayPal Express','PayPal_Express',1,1,3,0,NULL,1,0),(18,'2017-10-31 05:57:06','2017-10-31 05:57:06','PayPal Pro','PayPal_Pro',1,1,10000,0,NULL,0,0),(19,'2017-10-31 05:57:06','2017-10-31 05:57:06','Pin','Pin',1,1,10000,0,NULL,0,0),(20,'2017-10-31 05:57:06','2017-10-31 05:57:06','SagePay Direct','SagePay_Direct',1,1,10000,0,NULL,0,0),(21,'2017-10-31 05:57:06','2017-10-31 05:57:06','SagePay Server','SagePay_Server',1,1,10000,0,NULL,0,0),(22,'2017-10-31 05:57:06','2017-10-31 05:57:06','SecurePay DirectPost','SecurePay_DirectPost',1,1,10000,0,NULL,0,0),(23,'2017-10-31 05:57:06','2017-10-31 05:57:06','Stripe','Stripe',1,1,1,0,NULL,0,0),(24,'2017-10-31 05:57:06','2017-10-31 05:57:06','TargetPay Direct eBanking','TargetPay_Directebanking',1,1,10000,0,NULL,0,0),(25,'2017-10-31 05:57:06','2017-10-31 05:57:06','TargetPay Ideal','TargetPay_Ideal',1,1,10000,0,NULL,0,0),(26,'2017-10-31 05:57:06','2017-10-31 05:57:06','TargetPay Mr Cash','TargetPay_Mrcash',1,1,10000,0,NULL,0,0),(27,'2017-10-31 05:57:06','2017-10-31 05:57:06','TwoCheckout','TwoCheckout',1,1,10000,0,NULL,1,0),(28,'2017-10-31 05:57:06','2017-10-31 05:57:06','WorldPay','WorldPay',1,1,10000,0,NULL,0,0),(29,'2017-10-31 05:57:06','2017-10-31 05:57:06','BeanStream','BeanStream',1,2,10000,0,NULL,0,0),(30,'2017-10-31 05:57:06','2017-10-31 05:57:06','Psigate','Psigate',1,2,10000,0,NULL,0,0),(31,'2017-10-31 05:57:06','2017-10-31 05:57:06','moolah','AuthorizeNet_AIM',1,1,10000,0,NULL,0,0),(32,'2017-10-31 05:57:06','2017-10-31 05:57:06','Alipay','Alipay_Express',1,1,10000,0,NULL,0,0),(33,'2017-10-31 05:57:06','2017-10-31 05:57:06','Buckaroo','Buckaroo_CreditCard',1,1,10000,0,NULL,0,0),(34,'2017-10-31 05:57:06','2017-10-31 05:57:06','Coinbase','Coinbase',1,1,10000,0,NULL,0,0),(35,'2017-10-31 05:57:06','2017-10-31 05:57:06','DataCash','DataCash',1,1,10000,0,NULL,0,0),(36,'2017-10-31 05:57:06','2017-10-31 05:57:06','Neteller','Neteller',1,2,10000,0,NULL,0,0),(37,'2017-10-31 05:57:06','2017-10-31 05:57:06','Pacnet','Pacnet',1,1,10000,0,NULL,0,0),(38,'2017-10-31 05:57:06','2017-10-31 05:57:06','PaymentSense','PaymentSense',1,2,10000,0,NULL,0,0),(39,'2017-10-31 05:57:06','2017-10-31 05:57:06','Realex','Realex_Remote',1,1,10000,0,NULL,0,0),(40,'2017-10-31 05:57:06','2017-10-31 05:57:06','Sisow','Sisow',1,1,10000,0,NULL,0,0),(41,'2017-10-31 05:57:06','2017-10-31 05:57:06','Skrill','Skrill',1,1,10000,0,NULL,1,0),(42,'2017-10-31 05:57:06','2017-10-31 05:57:06','BitPay','BitPay',1,1,6,0,NULL,1,0),(43,'2017-10-31 05:57:06','2017-10-31 05:57:06','Dwolla','Dwolla',1,1,5,0,NULL,1,0),(44,'2017-10-31 05:57:06','2017-10-31 05:57:06','AGMS','Agms',1,1,10000,0,NULL,0,0),(45,'2017-10-31 05:57:06','2017-10-31 05:57:06','Barclays','BarclaysEpdq\\Essential',1,1,10000,0,NULL,0,0),(46,'2017-10-31 05:57:06','2017-10-31 05:57:06','Cardgate','Cardgate',1,1,10000,0,NULL,0,0),(47,'2017-10-31 05:57:06','2017-10-31 05:57:06','Checkout.com','CheckoutCom',1,1,10000,0,NULL,0,0),(48,'2017-10-31 05:57:06','2017-10-31 05:57:06','Creditcall','Creditcall',1,1,10000,0,NULL,0,0),(49,'2017-10-31 05:57:06','2017-10-31 05:57:06','Cybersource','Cybersource',1,1,10000,0,NULL,0,0),(50,'2017-10-31 05:57:06','2017-10-31 05:57:06','ecoPayz','Ecopayz',1,1,10000,0,NULL,0,0),(51,'2017-10-31 05:57:06','2017-10-31 05:57:06','Fasapay','Fasapay',1,1,10000,0,NULL,0,0),(52,'2017-10-31 05:57:06','2017-10-31 05:57:06','Komoju','Komoju',1,1,10000,0,NULL,0,0),(53,'2017-10-31 05:57:06','2017-10-31 05:57:06','Multicards','Multicards',1,1,10000,0,NULL,0,0),(54,'2017-10-31 05:57:06','2017-10-31 05:57:06','Pagar.Me','Pagarme',1,2,10000,0,NULL,0,0),(55,'2017-10-31 05:57:06','2017-10-31 05:57:06','Paysafecard','Paysafecard',1,1,10000,0,NULL,0,0),(56,'2017-10-31 05:57:06','2017-10-31 05:57:06','Paytrace','Paytrace_CreditCard',1,1,10000,0,NULL,0,0),(57,'2017-10-31 05:57:06','2017-10-31 05:57:06','Secure Trading','SecureTrading',1,1,10000,0,NULL,0,0),(58,'2017-10-31 05:57:06','2017-10-31 05:57:06','SecPay','SecPay',1,1,10000,0,NULL,0,0),(59,'2017-10-31 05:57:06','2017-10-31 05:57:06','WeChat Express','WeChat_Express',1,2,10000,0,NULL,0,0),(60,'2017-10-31 05:57:06','2017-10-31 05:57:06','WePay','WePay',1,1,10000,0,NULL,0,0),(61,'2017-10-31 05:57:06','2017-10-31 05:57:06','Braintree','Braintree',1,1,2,0,NULL,0,0),(62,'2017-10-31 05:57:06','2017-10-31 05:57:06','Custom','Custom',1,1,9,0,NULL,1,0),(63,'2017-10-31 05:57:06','2017-10-31 05:57:06','FirstData Payeezy','FirstData_Payeezy',1,1,10000,0,NULL,0,0),(64,'2017-10-31 05:57:06','2017-10-31 05:57:06','GoCardless','GoCardlessV2\\Redirect',1,1,8,0,NULL,1,0),(65,'2017-10-31 05:57:06','2017-10-31 05:57:06','PagSeguro','PagSeguro',1,1,10000,0,NULL,0,0); /*!40000 ALTER TABLE `gateways` ENABLE KEYS */; UNLOCK TABLES; @@ -1332,7 +1332,7 @@ CREATE TABLE `invoice_designs` ( LOCK TABLES `invoice_designs` WRITE; /*!40000 ALTER TABLE `invoice_designs` DISABLE KEYS */; -INSERT INTO `invoice_designs` VALUES (1,'Clean','var GlobalY=0;//Y position of line at current page\n\n var client = invoice.client;\n var account = invoice.account;\n var currencyId = client.currency_id;\n\n layout.headerRight = 550;\n layout.rowHeight = 15;\n\n doc.setFontSize(9);\n\n if (invoice.image)\n {\n var left = layout.headerRight - invoice.imageWidth;\n doc.addImage(invoice.image, \'JPEG\', layout.marginLeft, 30);\n }\n \n if (!invoice.is_pro && logoImages.imageLogo1)\n {\n pageHeight=820;\n y=pageHeight-logoImages.imageLogoHeight1;\n doc.addImage(logoImages.imageLogo1, \'JPEG\', layout.marginLeft, y, logoImages.imageLogoWidth1, logoImages.imageLogoHeight1);\n }\n\n doc.setFontSize(9);\n SetPdfColor(\'LightBlue\', doc, \'primary\');\n displayAccount(doc, invoice, 220, layout.accountTop, layout);\n\n SetPdfColor(\'LightBlue\', doc, \'primary\');\n doc.setFontSize(\'11\');\n doc.text(50, layout.headerTop, (invoice.is_quote ? invoiceLabels.quote : invoiceLabels.invoice).toUpperCase());\n\n\n SetPdfColor(\'Black\',doc); //set black color\n doc.setFontSize(9);\n\n var invoiceHeight = displayInvoice(doc, invoice, 50, 170, layout);\n var clientHeight = displayClient(doc, invoice, 220, 170, layout);\n var detailsHeight = Math.max(invoiceHeight, clientHeight);\n layout.tableTop = Math.max(layout.tableTop, layout.headerTop + detailsHeight + (3 * layout.rowHeight));\n \n doc.setLineWidth(0.3); \n doc.setDrawColor(200,200,200);\n doc.line(layout.marginLeft - layout.tablePadding, layout.headerTop + 6, layout.marginRight + layout.tablePadding, layout.headerTop + 6);\n doc.line(layout.marginLeft - layout.tablePadding, layout.headerTop + detailsHeight + 14, layout.marginRight + layout.tablePadding, layout.headerTop + detailsHeight + 14);\n\n doc.setFontSize(10);\n doc.setFontType(\'bold\');\n displayInvoiceHeader(doc, invoice, layout);\n var y = displayInvoiceItems(doc, invoice, layout);\n\n doc.setFontSize(9);\n doc.setFontType(\'bold\');\n\n GlobalY=GlobalY+25;\n\n\n doc.setLineWidth(0.3);\n doc.setDrawColor(241,241,241);\n doc.setFillColor(241,241,241);\n var x1 = layout.marginLeft - 12;\n var y1 = GlobalY-layout.tablePadding;\n\n var w2 = 510 + 24;\n var h2 = doc.internal.getFontSize()*3+layout.tablePadding*2;\n\n if (invoice.discount) {\n h2 += doc.internal.getFontSize()*2;\n }\n if (invoice.tax_amount) {\n h2 += doc.internal.getFontSize()*2;\n }\n\n //doc.rect(x1, y1, w2, h2, \'FD\');\n\n doc.setFontSize(9);\n displayNotesAndTerms(doc, layout, invoice, y);\n y += displaySubtotals(doc, layout, invoice, y, layout.unitCostRight);\n\n\n doc.setFontSize(10);\n Msg = invoice.is_quote ? invoiceLabels.total : invoiceLabels.balance_due;\n var TmpMsgX = layout.unitCostRight-(doc.getStringUnitWidth(Msg) * doc.internal.getFontSize());\n \n doc.text(TmpMsgX, y, Msg);\n\n SetPdfColor(\'LightBlue\', doc, \'primary\');\n AmountText = formatMoney(invoice.balance_amount, currencyId);\n headerLeft=layout.headerRight+400;\n var AmountX = layout.lineTotalRight - (doc.getStringUnitWidth(AmountText) * doc.internal.getFontSize());\n doc.text(AmountX, y, AmountText);','{\n \"content\": [{\n \"columns\": [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80]\n },\n {\n \"stack\": \"$accountDetails\",\n \"margin\": [7, 0, 0, 0]\n },\n {\n \"stack\": \"$accountAddress\"\n }\n ]\n },\n {\n \"text\": \"$entityTypeUC\",\n \"margin\": [8, 30, 8, 5],\n \"style\": \"entityTypeLabel\"\n \n },\n {\n \"table\": {\n \"headerRows\": 1,\n \"widths\": [\"auto\", \"auto\", \"*\"],\n \"body\": [\n [\n {\n \"table\": { \n \"body\": \"$invoiceDetails\"\n },\n \"margin\": [0, 0, 12, 0],\n \"layout\": \"noBorders\"\n }, \n {\n \"stack\": \"$clientDetails\"\n },\n {\n \"text\": \"\"\n }\n ]\n ]\n },\n \"layout\": {\n \"hLineWidth\": \"$firstAndLast:.5\",\n \"vLineWidth\": \"$none\",\n \"hLineColor\": \"#D8D8D8\",\n \"paddingLeft\": \"$amount:8\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:6\", \n \"paddingBottom\": \"$amount:6\"\n }\n },\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$notFirst:.5\",\n \"vLineWidth\": \"$none\",\n \"hLineColor\": \"#D8D8D8\",\n \"paddingLeft\": \"$amount:8\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:14\", \n \"paddingBottom\": \"$amount:14\" \n }\n },\n {\n \"columns\": [ \n \"$notesAndTerms\",\n {\n \"table\": {\n \"widths\": [\"*\", \"40%\"],\n \"body\": \"$subtotals\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:4\", \n \"paddingBottom\": \"$amount:4\" \n }\n }\n ]\n },\n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n ],\n \"defaultStyle\": {\n \"font\": \"$bodyFont\",\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"footer\": {\n \"columns\": [\n {\n \"text\": \"$invoiceFooter\",\n \"alignment\": \"left\"\n }\n ],\n \"margin\": [40, -20, 40, 0]\n },\n \"styles\": {\n \"entityTypeLabel\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"$primaryColor:#37a3c6\"\n },\n \"primaryColor\":{\n \"color\": \"$primaryColor:#37a3c6\"\n },\n \"accountName\": {\n \"color\": \"$primaryColor:#37a3c6\",\n \"bold\": true\n },\n \"invoiceDetails\": {\n \"margin\": [0, 0, 8, 0]\n }, \n \"accountDetails\": {\n \"margin\": [0, 2, 0, 2]\n },\n \"clientDetails\": {\n \"margin\": [0, 2, 0, 2]\n },\n \"notesAndTerms\": {\n \"margin\": [0, 2, 0, 2]\n },\n \"accountAddress\": {\n \"margin\": [0, 2, 0, 2]\n },\n \"odd\": {\n \"fillColor\": \"#fbfbfb\"\n },\n \"productKey\": {\n \"color\": \"$primaryColor:#37a3c6\",\n \"bold\": true\n },\n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLarger\",\n \"color\": \"$primaryColor:#37a3c6\"\n }, \n \"invoiceNumber\": {\n \"bold\": true\n },\n \"tableHeader\": {\n \"bold\": true,\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"taxTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\"\n }, \n \"invoiceLineItemsTable\": {\n \"margin\": [0, 16, 0, 16]\n },\n \"clientName\": {\n \"bold\": true\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\"\n }, \n \"termsLabel\": {\n \"bold\": true\n },\n \"fullheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n },\n \"invoiceDocuments\": {\n \"margin\": [7, 0, 7, 0]\n },\n \"invoiceDocument\": {\n \"margin\": [0, 10, 0, 10]\n }\n },\n \"pageMargins\": [40, 40, 40, 60]\n}\n'),(2,'Bold',' var GlobalY=0;//Y position of line at current page\n\n var client = invoice.client;\n var account = invoice.account;\n var currencyId = client.currency_id;\n\n layout.headerRight = 150;\n layout.rowHeight = 15;\n layout.headerTop = 125;\n layout.tableTop = 300;\n\n doc.setLineWidth(0.5);\n\n if (NINJA.primaryColor) {\n setDocHexFill(doc, NINJA.primaryColor);\n setDocHexDraw(doc, NINJA.primaryColor);\n } else {\n doc.setFillColor(46,43,43);\n } \n\n var x1 =0;\n var y1 = 0;\n var w2 = 595;\n var h2 = 100;\n doc.rect(x1, y1, w2, h2, \'FD\');\n\n if (invoice.image)\n {\n var left = layout.headerRight - invoice.imageWidth;\n doc.addImage(invoice.image, \'JPEG\', layout.marginLeft, 30);\n }\n\n doc.setLineWidth(0.5);\n if (NINJA.primaryColor) {\n setDocHexFill(doc, NINJA.primaryColor);\n setDocHexDraw(doc, NINJA.primaryColor);\n } else {\n doc.setFillColor(46,43,43);\n doc.setDrawColor(46,43,43);\n } \n\n // return doc.setTextColor(240,240,240);//select color Custom Report GRAY Colour\n var x1 = 0;//tableLeft-tablePadding ;\n var y1 = 750;\n var w2 = 596;\n var h2 = 94;//doc.internal.getFontSize()*length+length*1.1;//+h;//+tablePadding;\n\n doc.rect(x1, y1, w2, h2, \'FD\');\n if (!invoice.is_pro && logoImages.imageLogo2)\n {\n pageHeight=820;\n var left = 250;//headerRight ;\n y=pageHeight-logoImages.imageLogoHeight2;\n var headerRight=370;\n\n var left = headerRight - logoImages.imageLogoWidth2;\n doc.addImage(logoImages.imageLogo2, \'JPEG\', left, y, logoImages.imageLogoWidth2, logoImages.imageLogoHeight2);\n }\n\n doc.setFontSize(7);\n doc.setFontType(\'bold\');\n SetPdfColor(\'White\',doc);\n\n displayAccount(doc, invoice, 300, layout.accountTop, layout);\n\n\n var y = layout.accountTop;\n var left = layout.marginLeft;\n var headerY = layout.headerTop;\n\n SetPdfColor(\'GrayLogo\',doc); //set black color\n doc.setFontSize(7);\n\n //show left column\n SetPdfColor(\'Black\',doc); //set black color\n doc.setFontType(\'normal\');\n\n //publish filled box\n doc.setDrawColor(200,200,200);\n\n if (NINJA.secondaryColor) {\n setDocHexFill(doc, NINJA.secondaryColor);\n } else {\n doc.setFillColor(54,164,152); \n } \n\n GlobalY=190;\n doc.setLineWidth(0.5);\n\n var BlockLenght=220;\n var x1 =595-BlockLenght;\n var y1 = GlobalY-12;\n var w2 = BlockLenght;\n var h2 = getInvoiceDetailsHeight(invoice, layout) + layout.tablePadding + 2;\n\n doc.rect(x1, y1, w2, h2, \'FD\');\n\n SetPdfColor(\'SomeGreen\', doc, \'secondary\');\n doc.setFontSize(\'14\');\n doc.setFontType(\'bold\');\n doc.text(50, GlobalY, (invoice.is_quote ? invoiceLabels.your_quote : invoiceLabels.your_invoice).toUpperCase());\n\n\n var z=GlobalY;\n z=z+30;\n\n doc.setFontSize(\'8\'); \n SetPdfColor(\'Black\',doc); \n var clientHeight = displayClient(doc, invoice, layout.marginLeft, z, layout);\n layout.tableTop += Math.max(0, clientHeight - 75);\n marginLeft2=395;\n\n //publish left side information\n SetPdfColor(\'White\',doc);\n doc.setFontSize(\'8\');\n var detailsHeight = displayInvoice(doc, invoice, marginLeft2, z-25, layout) + 75;\n layout.tableTop = Math.max(layout.tableTop, layout.headerTop + detailsHeight + (2 * layout.tablePadding));\n\n y=z+60;\n x = GlobalY + 100;\n doc.setFontType(\'bold\');\n\n doc.setFontSize(12);\n doc.setFontType(\'bold\');\n SetPdfColor(\'Black\',doc);\n displayInvoiceHeader(doc, invoice, layout);\n\n var y = displayInvoiceItems(doc, invoice, layout);\n doc.setLineWidth(0.3);\n displayNotesAndTerms(doc, layout, invoice, y);\n y += displaySubtotals(doc, layout, invoice, y, layout.unitCostRight);\n\n doc.setFontType(\'bold\');\n\n doc.setFontSize(12);\n x += doc.internal.getFontSize()*4;\n Msg = invoice.is_quote ? invoiceLabels.total : invoiceLabels.balance_due;\n var TmpMsgX = layout.unitCostRight-(doc.getStringUnitWidth(Msg) * doc.internal.getFontSize());\n\n doc.text(TmpMsgX, y, Msg);\n\n //SetPdfColor(\'LightBlue\',doc);\n AmountText = formatMoney(invoice.balance_amount , currencyId);\n headerLeft=layout.headerRight+400;\n var AmountX = headerLeft - (doc.getStringUnitWidth(AmountText) * doc.internal.getFontSize());\n SetPdfColor(\'SomeGreen\', doc, \'secondary\');\n doc.text(AmountX, y, AmountText);','{\n \"content\": [\n {\n \"columns\": [\n {\n \"width\": 380,\n \"stack\": [\n {\"text\":\"$yourInvoiceLabelUC\", \"style\": \"yourInvoice\"},\n \"$clientDetails\"\n ],\n \"margin\": [60, 100, 0, 10]\n },\n {\n \"canvas\": [\n { \n \"type\": \"rect\", \n \"x\": 0, \n \"y\": 0, \n \"w\": 225, \n \"h\": \"$invoiceDetailsHeight\",\n \"r\":0, \n \"lineWidth\": 1,\n \"color\": \"$primaryColor:#36a498\"\n }\n ],\n \"width\":10,\n \"margin\":[-10,100,0,10]\n },\n { \n \"table\": { \n \"body\": \"$invoiceDetails\"\n },\n \"layout\": \"noBorders\",\n \"margin\": [0, 110, 0, 0]\n }\n ]\n },\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": [\"22%\", \"*\", \"14%\", \"$quantityWidth\", \"$taxWidth\", \"22%\"],\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:8\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:14\", \n \"paddingBottom\": \"$amount:14\"\n }\n },\n {\n \"columns\": [\n {\n \"width\": 46,\n \"text\": \" \"\n },\n \"$notesAndTerms\",\n {\n \"table\": {\n \"widths\": [\"*\", \"40%\"],\n \"body\": \"$subtotals\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:8\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:4\", \n \"paddingBottom\": \"$amount:4\" \n }\n }]\n },\n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n ],\n \"footer\":\n [\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 0, \"x2\": 600, \"y2\": 0,\"lineWidth\": 100,\"lineColor\":\"$secondaryColor:#292526\"}]},\n {\n \"columns\":\n [\n {\n \"text\": \"$invoiceFooter\",\n \"margin\": [40, -40, 40, 0],\n \"alignment\": \"left\",\n \"color\": \"#FFFFFF\"\n }\n ]\n }\n ],\n \"header\": [\n {\n \"canvas\": [\n {\n \"type\": \"line\",\n \"x1\": 0,\n \"y1\": 0,\n \"x2\": 600,\n \"y2\": 0,\n \"lineWidth\": 200,\n \"lineColor\": \"$secondaryColor:#292526\"\n }\n ],\n \"width\": 10\n },\n {\n \"columns\": [\n { \n \"image\": \"$accountLogo\",\n \"fit\": [120, 60],\n \"margin\": [30, 16, 0, 0]\n },\n {\n \"stack\": \"$accountDetails\",\n \"margin\": [\n 0,\n 16,\n 0,\n 0\n ],\n \"width\": 140\n },\n {\n \"stack\": \"$accountAddress\",\n \"margin\": [\n 20,\n 16,\n 0,\n 0\n ]\n }\n ]\n }\n ],\n \"defaultStyle\": {\n \"font\": \"$bodyFont\",\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"styles\": {\n \"primaryColor\":{\n \"color\": \"$primaryColor:#36a498\"\n },\n \"accountName\": {\n \"bold\": true,\n \"margin\": [4, 2, 4, 1],\n \"color\": \"$primaryColor:#36a498\"\n },\n \"accountDetails\": {\n \"margin\": [4, 2, 4, 1],\n \"color\": \"#FFFFFF\"\n },\n \"accountAddress\": {\n \"margin\": [4, 2, 4, 1],\n \"color\": \"#FFFFFF\"\n },\n \"clientDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"odd\": {\n \"fillColor\": \"#ebebeb\",\n \"margin\": [0,0,0,0]\n },\n \"productKey\": {\n \"color\": \"$primaryColor:#36a498\"\n },\n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"$primaryColor:#36a498\",\n \"bold\": true\n },\n \"invoiceDetails\": {\n \"color\": \"#ffffff\"\n },\n \"invoiceNumber\": {\n \"bold\": true\n },\n \"itemTableHeader\": {\n \"margin\": [40,0,0,0]\n },\n \"totalTableHeader\": {\n \"margin\": [0,0,40,0]\n },\n \"tableHeader\": {\n \"fontSize\": 12,\n \"bold\": true\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"taxTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\",\n \"margin\": [0, 0, 40, 0]\n },\n \"productKey\": {\n \"color\": \"$primaryColor:#36a498\",\n \"margin\": [40,0,0,0],\n \"bold\": true\n },\n \"yourInvoice\": {\n \"font\": \"$headerFont\",\n \"bold\": true, \n \"fontSize\": 14, \n \"color\": \"$primaryColor:#36a498\",\n \"margin\": [0,0,0,8]\n },\n \"invoiceLineItemsTable\": {\n \"margin\": [0, 26, 0, 16]\n },\n \"clientName\": {\n \"bold\": true\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\",\n \"margin\": [0, 0, 40, 0]\n },\n \"subtotals\": {\n \"alignment\": \"right\",\n \"margin\": [0,0,40,0]\n },\n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 0, 0, 4]\n },\n \"fullheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n },\n \"invoiceDocuments\": {\n \"margin\": [47, 0, 47, 0]\n },\n \"invoiceDocument\": {\n \"margin\": [0, 10, 0, 10]\n }\n },\n \"pageMargins\": [0, 80, 0, 40]\n }\n'),(3,'Modern',' var client = invoice.client;\n var account = invoice.account;\n var currencyId = client.currency_id;\n\n layout.headerRight = 400;\n layout.rowHeight = 15;\n\n\n doc.setFontSize(7);\n\n // add header\n doc.setLineWidth(0.5);\n\n if (NINJA.primaryColor) {\n setDocHexFill(doc, NINJA.primaryColor);\n setDocHexDraw(doc, NINJA.primaryColor);\n } else {\n doc.setDrawColor(242,101,34);\n doc.setFillColor(242,101,34);\n } \n\n var x1 =0;\n var y1 = 0;\n var w2 = 595;\n var h2 = Math.max(110, getInvoiceDetailsHeight(invoice, layout) + 30);\n doc.rect(x1, y1, w2, h2, \'FD\');\n\n SetPdfColor(\'White\',doc);\n\n //second column\n doc.setFontType(\'bold\');\n var name = invoice.account.name; \n if (name) {\n doc.setFontSize(\'30\');\n doc.setFontType(\'bold\');\n doc.text(40, 50, name);\n }\n\n if (invoice.image)\n {\n y=130;\n var left = layout.headerRight - invoice.imageWidth;\n doc.addImage(invoice.image, \'JPEG\', layout.marginLeft, y);\n }\n\n // add footer \n doc.setLineWidth(0.5);\n\n if (NINJA.primaryColor) {\n setDocHexFill(doc, NINJA.primaryColor);\n setDocHexDraw(doc, NINJA.primaryColor);\n } else {\n doc.setDrawColor(242,101,34);\n doc.setFillColor(242,101,34);\n } \n\n var x1 = 0;//tableLeft-tablePadding ;\n var y1 = 750;\n var w2 = 596;\n var h2 = 94;//doc.internal.getFontSize()*length+length*1.1;//+h;//+tablePadding;\n\n doc.rect(x1, y1, w2, h2, \'FD\');\n\n if (!invoice.is_pro && logoImages.imageLogo3)\n {\n pageHeight=820;\n // var left = 25;//250;//headerRight ;\n y=pageHeight-logoImages.imageLogoHeight3;\n //var headerRight=370;\n\n //var left = headerRight - invoice.imageLogoWidth3;\n doc.addImage(logoImages.imageLogo3, \'JPEG\', 40, y, logoImages.imageLogoWidth3, logoImages.imageLogoHeight3);\n }\n\n doc.setFontSize(10); \n var marginLeft = 340;\n displayAccount(doc, invoice, marginLeft, 780, layout);\n\n\n SetPdfColor(\'White\',doc); \n doc.setFontSize(\'8\');\n var detailsHeight = displayInvoice(doc, invoice, layout.headerRight, layout.accountTop-10, layout);\n layout.headerTop = Math.max(layout.headerTop, detailsHeight + 50);\n layout.tableTop = Math.max(layout.tableTop, detailsHeight + 150);\n\n SetPdfColor(\'Black\',doc); //set black color\n doc.setFontSize(7);\n doc.setFontType(\'normal\');\n displayClient(doc, invoice, layout.headerRight, layout.headerTop, layout);\n\n\n \n SetPdfColor(\'White\',doc); \n doc.setFontType(\'bold\');\n\n doc.setLineWidth(0.3);\n if (NINJA.secondaryColor) {\n setDocHexFill(doc, NINJA.secondaryColor);\n setDocHexDraw(doc, NINJA.secondaryColor);\n } else {\n doc.setDrawColor(63,60,60);\n doc.setFillColor(63,60,60);\n } \n\n var left = layout.marginLeft - layout.tablePadding;\n var top = layout.tableTop - layout.tablePadding;\n var width = layout.marginRight - (2 * layout.tablePadding);\n var height = 20;\n doc.rect(left, top, width, height, \'FD\');\n \n\n displayInvoiceHeader(doc, invoice, layout);\n SetPdfColor(\'Black\',doc);\n var y = displayInvoiceItems(doc, invoice, layout);\n\n\n var height1 = displayNotesAndTerms(doc, layout, invoice, y);\n var height2 = displaySubtotals(doc, layout, invoice, y, layout.unitCostRight);\n y += Math.max(height1, height2);\n\n\n var left = layout.marginLeft - layout.tablePadding;\n var top = y - layout.tablePadding;\n var width = layout.marginRight - (2 * layout.tablePadding);\n var height = 20;\n if (NINJA.secondaryColor) {\n setDocHexFill(doc, NINJA.secondaryColor);\n setDocHexDraw(doc, NINJA.secondaryColor);\n } else {\n doc.setDrawColor(63,60,60);\n doc.setFillColor(63,60,60);\n } \n doc.rect(left, top, width, height, \'FD\');\n \n doc.setFontType(\'bold\');\n SetPdfColor(\'White\', doc);\n doc.setFontSize(12);\n \n var label = invoice.is_quote ? invoiceLabels.total : invoiceLabels.balance_due;\n var labelX = layout.unitCostRight-(doc.getStringUnitWidth(label) * doc.internal.getFontSize());\n doc.text(labelX, y+2, label);\n\n\n doc.setFontType(\'normal\');\n var amount = formatMoney(invoice.balance_amount , currencyId);\n headerLeft=layout.headerRight+400;\n var amountX = layout.lineTotalRight - (doc.getStringUnitWidth(amount) * doc.internal.getFontSize());\n doc.text(amountX, y+2, amount);','{\n \"content\": [\n {\n \"columns\": [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80],\n \"margin\": [0, 60, 0, 30]\n },\n {\n \"stack\": \"$clientDetails\",\n \"margin\": [0, 60, 0, 0]\n }\n ]\n },\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$notFirst:.5\",\n \"vLineWidth\": \"$notFirstAndLastColumn:.5\",\n \"hLineColor\": \"#888888\",\n \"vLineColor\": \"#FFFFFF\",\n \"paddingLeft\": \"$amount:8\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:8\",\n \"paddingBottom\": \"$amount:8\"\n }\n },\n {\n \"columns\": [\n \"$notesAndTerms\",\n {\n \"table\": {\n \"widths\": [\"*\", \"40%\"],\n \"body\": \"$subtotalsWithoutBalance\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:4\",\n \"paddingBottom\": \"$amount:4\"\n }\n }\n ]\n },\n {\n \"columns\": [\n {\n \"canvas\": [\n {\n \"type\": \"rect\",\n \"x\": 0,\n \"y\": 0,\n \"w\": 515,\n \"h\": 26,\n \"r\": 0,\n \"lineWidth\": 1,\n \"color\": \"$secondaryColor:#403d3d\"\n }\n ],\n \"width\": 10,\n \"margin\": [\n 0,\n 10,\n 0,\n 0\n ]\n },\n {\n \"text\": \"$balanceDueLabel\",\n \"style\": \"subtotalsBalanceDueLabel\",\n \"margin\": [0, 16, 0, 0],\n \"width\": 370\n },\n {\n \"text\": \"$balanceDue\",\n \"style\": \"subtotalsBalanceDue\",\n \"margin\": [0, 16, 8, 0]\n }\n ]\n },\n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n ],\n \"footer\": [\n {\n \"canvas\": [\n {\n \"type\": \"line\", \"x1\": 0, \"y1\": 0, \"x2\": 600, \"y2\": 0,\"lineWidth\": 100,\"lineColor\":\"$primaryColor:#f26621\"\n }]\n ,\"width\":10\n },\n {\n \"columns\": [\n {\n \"width\": 350,\n \"stack\": [\n {\n \"text\": \"$invoiceFooter\",\n \"margin\": [40, -40, 40, 0],\n \"alignment\": \"left\",\n \"color\": \"#FFFFFF\"\n\n }\n ]\n },\n {\n \"stack\": \"$accountDetails\",\n \"margin\": [0, -40, 0, 0],\n \"width\": \"*\"\n },\n {\n \"stack\": \"$accountAddress\",\n \"margin\": [0, -40, 0, 0],\n \"width\": \"*\"\n }\n ]\n }\n ],\n \"header\": [\n {\n \"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 0, \"x2\": 600, \"y2\": 0,\"lineWidth\": 200,\"lineColor\":\"$primaryColor:#f26621\"}],\"width\":10\n },\n {\n \"columns\": [\n {\n \"text\": \"$accountName\", \"bold\": true,\"font\":\"$headerFont\",\"fontSize\":30,\"color\":\"#ffffff\",\"margin\":[40,20,0,0],\"width\":350\n }\n ]\n },\n {\n \"width\": 300,\n \"table\": {\n \"body\": \"$invoiceDetails\"\n },\n \"layout\": \"noBorders\",\n \"margin\": [400, -40, 0, 0]\n }\n ],\n \"defaultStyle\": {\n \"font\": \"$bodyFont\",\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"styles\": {\n \"primaryColor\":{\n \"color\": \"$primaryColor:#299CC2\"\n },\n \"accountName\": {\n \"margin\": [4, 2, 4, 2],\n \"color\": \"$primaryColor:#299CC2\"\n },\n \"accountDetails\": {\n \"margin\": [4, 2, 4, 2],\n \"color\": \"#FFFFFF\"\n },\n \"accountAddress\": {\n \"margin\": [4, 2, 4, 2],\n \"color\": \"#FFFFFF\"\n },\n \"clientDetails\": {\n \"margin\": [0, 2, 4, 2]\n },\n \"invoiceDetails\": {\n \"color\": \"#FFFFFF\"\n },\n \"invoiceLineItemsTable\": {\n \"margin\": [0, 0, 0, 16]\n },\n \"productKey\": {\n \"bold\": true\n },\n \"clientName\": {\n \"bold\": true\n },\n \"tableHeader\": {\n \"bold\": true,\n \"color\": \"#FFFFFF\",\n \"fontSize\": \"$fontSizeLargest\",\n \"fillColor\": \"$secondaryColor:#403d3d\"\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"taxTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\"\n },\n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\":\"#FFFFFF\",\n \"alignment\":\"right\",\n \"bold\": true\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\":\"#FFFFFF\",\n \"bold\": true,\n \"alignment\":\"right\"\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\"\n },\n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 0, 0, 4]\n },\n \"invoiceNumberLabel\": {\n \"bold\": true\n },\n \"invoiceNumber\": {\n \"bold\": true\n },\n \"fullheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n },\n \"invoiceDocuments\": {\n \"margin\": [7, 0, 7, 0]\n },\n \"invoiceDocument\": {\n \"margin\": [0, 10, 0, 10]\n }\n },\n \"pageMargins\": [40, 120, 40, 50]\n}\n'),(4,'Plain',' var client = invoice.client;\n var account = invoice.account;\n var currencyId = client.currency_id; \n \n layout.accountTop += 25;\n layout.headerTop += 25;\n layout.tableTop += 25;\n\n if (invoice.image)\n {\n var left = layout.headerRight - invoice.imageWidth;\n doc.addImage(invoice.image, \'JPEG\', left, 50);\n } \n \n /* table header */\n doc.setDrawColor(200,200,200);\n doc.setFillColor(230,230,230);\n \n var detailsHeight = getInvoiceDetailsHeight(invoice, layout);\n var left = layout.headerLeft - layout.tablePadding;\n var top = layout.headerTop + detailsHeight - layout.rowHeight - layout.tablePadding;\n var width = layout.headerRight - layout.headerLeft + (2 * layout.tablePadding);\n var height = layout.rowHeight + 1;\n doc.rect(left, top, width, height, \'FD\'); \n\n doc.setFontSize(10);\n doc.setFontType(\'normal\');\n\n displayAccount(doc, invoice, layout.marginLeft, layout.accountTop, layout);\n displayClient(doc, invoice, layout.marginLeft, layout.headerTop, layout);\n\n displayInvoice(doc, invoice, layout.headerLeft, layout.headerTop, layout, layout.headerRight);\n layout.tableTop = Math.max(layout.tableTop, layout.headerTop + detailsHeight + (2 * layout.tablePadding));\n\n var headerY = layout.headerTop;\n var total = 0;\n\n doc.setDrawColor(200,200,200);\n doc.setFillColor(230,230,230);\n var left = layout.marginLeft - layout.tablePadding;\n var top = layout.tableTop - layout.tablePadding;\n var width = layout.headerRight - layout.marginLeft + (2 * layout.tablePadding);\n var height = layout.rowHeight + 2;\n doc.rect(left, top, width, height, \'FD\'); \n\n displayInvoiceHeader(doc, invoice, layout);\n var y = displayInvoiceItems(doc, invoice, layout);\n\n doc.setFontSize(10);\n\n displayNotesAndTerms(doc, layout, invoice, y+20);\n\n y += displaySubtotals(doc, layout, invoice, y+20, 480) + 20;\n\n doc.setDrawColor(200,200,200);\n doc.setFillColor(230,230,230);\n \n var left = layout.footerLeft - layout.tablePadding;\n var top = y - layout.tablePadding;\n var width = layout.headerRight - layout.footerLeft + (2 * layout.tablePadding);\n var height = layout.rowHeight + 2;\n doc.rect(left, top, width, height, \'FD\'); \n \n doc.setFontType(\'bold\');\n doc.text(layout.footerLeft, y, invoice.is_quote ? invoiceLabels.total : invoiceLabels.balance_due);\n\n total = formatMoney(invoice.balance_amount, currencyId);\n var totalX = layout.headerRight - (doc.getStringUnitWidth(total) * doc.internal.getFontSize());\n doc.text(totalX, y, total); \n\n if (!invoice.is_pro) {\n doc.setFontType(\'normal\');\n doc.text(layout.marginLeft, 790, \'Created by InvoiceNinja.com\');\n }','{\n \"content\": [\n {\n \"columns\": [\n {\n \"stack\": \"$accountDetails\"\n },\n {\n \"stack\": \"$accountAddress\"\n },\n [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80]\n }\n ] \n ]},\n {\n \"columns\": [\n {\n \"width\": 340,\n \"stack\": \"$clientDetails\",\n \"margin\": [0,40,0,0]\n },\n {\n \"width\":200,\n \"table\": { \n \"body\": \"$invoiceDetails\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"hLineColor\": \"#E6E6E6\",\n \"paddingLeft\": \"$amount:10\", \n \"paddingRight\": \"$amount:10\"\n }\n }\n ]\n }, \n {\n \"canvas\": [{ \"type\": \"rect\", \"x\": 0, \"y\": 0, \"w\": 515, \"h\": 25,\"r\":0, \"lineWidth\": 1,\"color\":\"#e6e6e6\"}],\"width\":10,\"margin\":[0,30,0,-43]\n },\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$notFirst:1\",\n \"vLineWidth\": \"$none\",\n \"hLineColor\": \"#e6e6e6\",\n \"paddingLeft\": \"$amount:8\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:8\", \n \"paddingBottom\": \"$amount:8\" \n }\n },\n {\n \"columns\": [\n \"$notesAndTerms\",\n {\n \"width\": 160,\n \"style\": \"subtotals\",\n \"table\": {\n \"widths\": [60, 60],\n \"body\": \"$subtotals\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:10\", \n \"paddingRight\": \"$amount:10\", \n \"paddingTop\": \"$amount:4\", \n \"paddingBottom\": \"$amount:4\" \n }\n }\n ]\n }, \n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n ],\n \"footer\": {\n \"columns\": [\n {\n \"text\": \"$invoiceFooter\",\n \"alignment\": \"left\",\n \"margin\": [0, 0, 0, 12]\n\n }\n ],\n \"margin\": [40, -20, 40, 40]\n },\n \"defaultStyle\": {\n \"font\": \"$bodyFont\",\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"styles\": {\n \"primaryColor\":{\n \"color\": \"$primaryColor:#299CC2\"\n },\n \"accountDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"accountAddress\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"clientDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"tableHeader\": {\n \"bold\": true\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\"\n }, \n \"invoiceLineItemsTable\": {\n \"margin\": [0, 16, 0, 16]\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\"\n }, \n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 0, 0, 4]\n },\n \"terms\": {\n \"margin\": [0, 0, 20, 0]\n },\n \"invoiceDetailBalanceDueLabel\": {\n \"fillColor\": \"#e6e6e6\"\n },\n \"invoiceDetailBalanceDue\": {\n \"fillColor\": \"#e6e6e6\"\n },\n \"subtotalsBalanceDueLabel\": {\n \"fillColor\": \"#e6e6e6\"\n },\n \"subtotalsBalanceDue\": {\n \"fillColor\": \"#e6e6e6\"\n },\n \"fullheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n },\n \"invoiceDocuments\": {\n \"margin\": [7, 0, 7, 0]\n },\n \"invoiceDocument\": {\n \"margin\": [0, 10, 0, 10]\n }\n },\n \"pageMargins\": [40, 40, 40, 60]\n}\n'),(5,'Business',NULL,'{\n \"content\": [\n {\n \"columns\":\n [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80]\n },\n {\n \"width\": 300,\n \"stack\": \"$accountDetails\",\n \"margin\": [140, 0, 0, 0]\n },\n {\n \"width\": 150,\n \"stack\": \"$accountAddress\"\n }\n ]\n },\n {\n \"columns\": [\n {\n \"width\": 120,\n \"stack\": [\n {\"text\": \"$invoiceIssuedToLabel\", \"style\":\"issuedTo\"},\n \"$clientDetails\"\n ],\n \"margin\": [0, 20, 0, 0]\n },\n {\n \"canvas\": [{ \"type\": \"rect\", \"x\": 20, \"y\": 0, \"w\": 174, \"h\": \"$invoiceDetailsHeight\",\"r\":10, \"lineWidth\": 1,\"color\":\"$primaryColor:#eb792d\"}],\n \"width\":30,\n \"margin\":[200,25,0,0]\n },\n {\n \"table\": {\n \"widths\": [70, 76],\n \"body\": \"$invoiceDetails\"\n },\n \"layout\": \"noBorders\",\n \"margin\": [200, 34, 0, 0]\n }\n ]\n },\n {\"canvas\": [{ \"type\": \"rect\", \"x\": 0, \"y\": 0, \"w\": 515, \"h\": 32,\"r\":8, \"lineWidth\": 1,\"color\":\"$secondaryColor:#374e6b\"}],\"width\":10,\"margin\":[0,20,0,-45]},\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$notFirst:1\",\n \"vLineWidth\": \"$notFirst:.5\",\n \"hLineColor\": \"#FFFFFF\",\n \"vLineColor\": \"#FFFFFF\",\n \"paddingLeft\": \"$amount:8\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:12\",\n \"paddingBottom\": \"$amount:12\"\n }\n },\n {\n \"columns\": [\n \"$notesAndTerms\",\n {\n \"stack\": [\n {\n \"style\": \"subtotals\",\n \"table\": {\n \"widths\": [\"*\", \"35%\"],\n \"body\": \"$subtotalsWithoutBalance\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:4\",\n \"paddingBottom\": \"$amount:4\"\n }\n },\n {\n \"canvas\": [\n {\n \"type\": \"rect\",\n \"x\": 60,\n \"y\": 20,\n \"w\": 198,\n \"h\": 30,\n \"r\": 7,\n \"lineWidth\": 1,\n \"color\": \"$secondaryColor:#374e6b\"\n }\n ]\n },\n {\n \"style\": \"subtotalsBalance\",\n \"table\": {\n \"widths\": [\"*\", \"45%\"],\n \"body\": \"$subtotalsBalance\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:4\",\n \"paddingBottom\": \"$amount:4\"\n }\n }\n ]\n }\n ]\n },\n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n ],\n \"footer\": {\n \"columns\": [\n {\n \"text\": \"$invoiceFooter\",\n \"alignment\": \"left\"\n }\n ],\n \"margin\": [40, -20, 40, 0]\n },\n \"defaultStyle\": {\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"styles\": {\n \"primaryColor\":{\n \"color\": \"$primaryColor:#299CC2\"\n },\n \"accountName\": {\n \"bold\": true\n },\n \"accountDetails\": {\n \"color\": \"#AAA9A9\",\n \"margin\": [0,2,0,1]\n },\n \"accountAddress\": {\n \"color\": \"#AAA9A9\",\n \"margin\": [0,2,0,1]\n },\n \"even\": {\n \"fillColor\":\"#E8E8E8\"\n },\n \"odd\": {\n \"fillColor\":\"#F7F7F7\"\n },\n \"productKey\": {\n \"bold\": true\n },\n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"#ffffff\",\n \"bold\": true\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true,\n \"color\":\"#ffffff\",\n \"alignment\":\"right\",\n \"noWrap\":true\n },\n \"invoiceDetails\": {\n \"color\": \"#ffffff\"\n },\n \"tableHeader\": {\n \"color\": \"#ffffff\",\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"secondTableHeader\": {\n \"color\": \"$secondaryColor:#374e6b\"\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"taxTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\"\n },\n \"issuedTo\": {\n \"margin\": [0,2,0,1],\n \"bold\": true,\n \"color\": \"#374e6b\"\n },\n \"clientDetails\": {\n \"margin\": [0,2,0,1]\n },\n \"clientName\": {\n \"color\": \"$primaryColor:#eb792d\"\n },\n \"invoiceLineItemsTable\": {\n \"margin\": [0, 10, 0, 10]\n },\n \"invoiceDetailsValue\": {\n \"alignment\": \"right\"\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\"\n },\n \"subtotalsBalance\": {\n \"alignment\": \"right\",\n \"margin\": [0, -25, 0, 0]\n },\n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 0, 0, 4]\n },\n \"fullheader\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n }\n },\n \"pageMargins\": [40, 40, 40, 40]\n}\n'),(6,'Creative',NULL,'{\n \"content\": [\n {\n \"columns\": [\n {\n \"stack\": \"$clientDetails\"\n },\n {\n \"stack\": \"$accountDetails\"\n },\n {\n \"stack\": \"$accountAddress\"\n },\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80],\n \"alignment\": \"right\"\n }\n ],\n \"margin\": [0, 0, 0, 20]\n },\n {\n \"columns\": [\n {\"text\":\n [\n {\"text\": \"$entityTypeUC\", \"style\": \"header1\"},\n {\"text\": \" #\", \"style\": \"header2\"},\n {\"text\": \"$invoiceNumber\", \"style\":\"header2\"}\n ],\n \"width\": \"*\"\n },\n {\n \"width\":200,\n \"table\": {\n \"body\": \"$invoiceDetails\"\n },\n \"layout\": \"noBorders\",\n \"margin\": [16, 4, 0, 0]\n }\n ],\n \"margin\": [0, 0, 0, 20]\n },\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 5, \"x2\": 515, \"y2\": 5, \"lineWidth\": 3,\"lineColor\":\"$primaryColor:#AE1E54\"}]},\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"hLineColor\": \"$primaryColor:#E8E8E8\",\n \"paddingLeft\": \"$amount:8\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:8\",\n \"paddingBottom\": \"$amount:8\"\n }\n },\n {\n \"columns\": [\n \"$notesAndTerms\",\n {\n \"style\": \"subtotals\",\n \"table\": {\n \"widths\": [\"*\", \"40%\"],\n \"body\": \"$subtotalsWithoutBalance\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:4\",\n \"paddingBottom\": \"$amount:4\"\n }\n }\n ]\n },\n {\n \"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 20, \"x2\": 515, \"y2\": 20, \"lineWidth\": 3,\"lineColor\":\"$primaryColor:#AE1E54\"}],\n \"margin\": [0, -8, 0, -8]\n },\n {\n \"text\": \"$balanceDueLabel\",\n \"style\": \"subtotalsBalanceDueLabel\"\n },\n {\n \"text\": \"$balanceDue\",\n \"style\": \"subtotalsBalanceDue\"\n },\n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n ],\n \"footer\": {\n \"columns\": [\n {\n \"text\": \"$invoiceFooter\",\n \"alignment\": \"left\"\n }\n ],\n \"margin\": [40, -20, 40, 0]\n },\n \"defaultStyle\": {\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"styles\": {\n \"primaryColor\":{\n \"color\": \"$primaryColor:#AE1E54\"\n },\n \"accountName\": {\n \"margin\": [4, 2, 4, 2],\n \"color\": \"$primaryColor:#AE1E54\",\n \"bold\": true\n },\n \"accountDetails\": {\n \"margin\": [4, 2, 4, 2]\n },\n \"accountAddress\": {\n \"margin\": [4, 2, 4, 2]\n },\n \"odd\": {\n \"fillColor\":\"#F4F4F4\"\n },\n \"productKey\": {\n \"bold\": true\n },\n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"margin\": [320,20,0,0]\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"$primaryColor:#AE1E54\",\n \"bold\": true,\n \"margin\":[0,-10,10,0],\n \"alignment\": \"right\"\n },\n \"invoiceDetailBalanceDue\": {\n \"bold\": true,\n \"color\": \"$primaryColor:#AE1E54\"\n },\n \"invoiceDetailBalanceDueLabel\": {\n \"bold\": true\n },\n \"tableHeader\": {\n \"bold\": true,\n \"color\": \"$primaryColor:#AE1E54\",\n \"fontSize\": \"$fontSizeLargest\"\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"taxTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\"\n },\n \"clientName\": {\n \"bold\": true\n },\n \"clientDetails\": {\n \"margin\": [0,2,0,1]\n },\n \"header1\": {\n \"bold\": true,\n \"margin\": [0, 30, 0, 16],\n \"fontSize\": 42\n },\n \"header2\": {\n \"margin\": [0, 30, 0, 16],\n \"fontSize\": 42,\n \"italics\": true,\n \"color\": \"$primaryColor:#AE1E54\"\n },\n \"invoiceLineItemsTable\": {\n \"margin\": [0, 4, 0, 16]\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\"\n },\n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 0, 0, 4]\n },\n \"fullheader\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n }\n },\n \"pageMargins\": [40, 40, 40, 40]\n}\n'),(7,'Elegant',NULL,'{\n \"content\": [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80],\n \"alignment\": \"center\",\n \"margin\": [0, 0, 0, 30]\n },\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 5, \"x2\": 515, \"y2\": 5, \"lineWidth\": 2}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 3, \"x2\": 515, \"y2\": 3, \"lineWidth\": 1}]},\n {\n \"columns\": [\n {\n \"width\": 120,\n \"stack\": [\n {\"text\": \"$invoiceToLabel\", \"style\": \"header\", \"margin\": [0, 0, 0, 6]},\n \"$clientDetails\"\n ]\n },\n {\n \"width\": 10,\n \"canvas\": [{ \"type\": \"line\", \"x1\": -2, \"y1\": 18, \"x2\": -2, \"y2\": 80, \"lineWidth\": 1,\"dash\": { \"length\": 2 }}]\n },\n {\n \"width\": 120,\n \"stack\": \"$accountDetails\",\n \"margin\": [0, 20, 0, 0]\n },\n {\n \"width\": 110,\n \"stack\": \"$accountAddress\",\n \"margin\": [0, 20, 0, 0]\n },\n {\n \"stack\": [\n {\"text\": \"$detailsLabel\", \"style\": \"header\", \"margin\": [0, 0, 0, 6]},\n {\n \"width\":180,\n \"table\": {\n \"body\": \"$invoiceDetails\"\n },\n \"layout\": \"noBorders\"\n }\n ]\n }],\n \"margin\": [0, 20, 0, 0]\n },\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$notFirst:.5\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:8\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:12\",\n \"paddingBottom\": \"$amount:12\"\n }\n },\n {\n \"columns\": [\n \"$notesAndTerms\",\n {\n \"style\": \"subtotals\",\n \"table\": {\n \"widths\": [\"*\", \"40%\"],\n \"body\": \"$subtotalsWithoutBalance\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:4\",\n \"paddingBottom\": \"$amount:4\"\n }\n }\n ]\n },\n {\n \"canvas\": [{ \"type\": \"line\", \"x1\": 270, \"y1\": 20, \"x2\": 515, \"y2\": 20, \"lineWidth\": 1,\"dash\": { \"length\": 2 }}]\n },\n {\n \"text\": \"$balanceDueLabel\",\n \"style\": \"subtotalsBalanceDueLabel\"\n },\n {\n \"text\": \"$balanceDue\",\n \"style\": \"subtotalsBalanceDue\"\n },\n {\n \"canvas\": [{ \"type\": \"line\", \"x1\": 270, \"y1\": 20, \"x2\": 515, \"y2\": 20, \"lineWidth\": 1,\"dash\": { \"length\": 2 }}]\n },\n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }],\n \"footer\": [\n {\n \"columns\": [\n {\n \"text\": \"$invoiceFooter\",\n \"alignment\": \"left\"\n }\n ],\n \"margin\": [40, -20, 40, 0]\n },\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 35, \"y1\": 5, \"x2\": 555, \"y2\": 5, \"lineWidth\": 2,\"margin\": [30,0,0,0]}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 35, \"y1\": 3, \"x2\": 555, \"y2\": 3, \"lineWidth\": 1,\"margin\": [30,0,0,0]}]}\n ],\n \"defaultStyle\": {\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"styles\": {\n \"accountDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"clientDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"accountAddress\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"clientName\": {\n \"bold\": true\n },\n \"accountName\": {\n \"bold\": true\n },\n \"odd\": {\n },\n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"$primaryColor:#5a7b61\",\n \"margin\": [320,20,0,0]\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"$primaryColor:#5a7b61\",\n \"style\": true,\n \"margin\":[0,-14,8,0],\n \"alignment\":\"right\"\n },\n \"invoiceDetailBalanceDue\": {\n \"color\": \"$primaryColor:#5a7b61\",\n \"bold\": true\n },\n \"fullheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"header\": {\n \"fontSize\": 14,\n \"bold\": true\n },\n \"tableHeader\": {\n \"bold\": true,\n \"color\": \"$primaryColor:#5a7b61\",\n \"fontSize\": \"$fontSizeLargest\"\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"taxTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\"\n },\n \"invoiceLineItemsTable\": {\n \"margin\": [0, 40, 0, 16]\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\"\n },\n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 0, 0, 4]\n },\n \"header\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n }\n },\n \"pageMargins\": [40, 40, 40, 40]\n}\n'),(8,'Hipster',NULL,'{\n \"content\": [\n {\n \"columns\": [\n {\n \"width\":10,\n \"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 0, \"x2\": 0, \"y2\": 75, \"lineWidth\": 0.5}]\n },\n {\n \"width\":120,\n \"stack\": [\n {\"text\": \"$fromLabelUC\", \"style\": \"fromLabel\"}, \n \"$accountDetails\" \n ]\n },\n {\n \"width\":120,\n \"stack\": [\n {\"text\": \" \"},\n \"$accountAddress\"\n ],\n \"margin\": [10, 0, 0, 16]\n },\n {\n \"width\":10,\n \"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 0, \"x2\": 0, \"y2\": 75, \"lineWidth\": 0.5}]\n },\n {\n \"stack\": [\n {\"text\": \"$toLabelUC\", \"style\": \"toLabel\"}, \n \"$clientDetails\"\n ]\n },\n [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80]\n }\n ]\n ]\n },\n {\n \"text\": \"$entityTypeUC\",\n \"margin\": [0, 4, 0, 8],\n \"bold\": \"true\",\n \"fontSize\": 42\n },\n {\n \"columnGap\": 16,\n \"columns\": [\n {\n \"width\":\"auto\",\n \"text\": [\"$invoiceNoLabel\",\" \",\"$invoiceNumberValue\"],\n \"bold\": true,\n \"color\":\"$primaryColor:#bc9f2b\",\n \"fontSize\":10\n },\n {\n \"width\":\"auto\",\n \"text\": [\"$invoiceDateLabel\",\" \",\"$invoiceDateValue\"],\n \"fontSize\":10\n },\n {\n \"width\":\"auto\",\n \"text\": [\"$dueDateLabel?\",\" \",\"$dueDateValue\"],\n \"fontSize\":10\n },\n {\n \"width\":\"*\",\n \"text\": [\"$balanceDueLabel\",\" \",{\"text\":\"$balanceDue\", \"bold\":true, \"color\":\"$primaryColor:#bc9f2b\"}],\n \"fontSize\":10\n }\n ]\n },\n {\n \"margin\": [0, 26, 0, 0],\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$amount:.5\",\n \"paddingLeft\": \"$amount:8\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:8\", \n \"paddingBottom\": \"$amount:8\" \n }\n },\n {\n \"columns\": [\n {\n \"stack\": \"$notesAndTerms\",\n \"width\": \"*\",\n \"margin\": [0, 12, 0, 0]\n },\n {\n \"width\": 200,\n \"style\": \"subtotals\",\n \"table\": {\n \"widths\": [\"*\", \"36%\"],\n \"body\": \"$subtotals\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$notFirst:.5\",\n \"paddingLeft\": \"$amount:8\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:12\", \n \"paddingBottom\": \"$amount:4\" \n }\n }\n ]\n },\n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n ],\n \"footer\": {\n \"columns\": [\n {\n \"text\": \"$invoiceFooter\",\n \"alignment\": \"left\"\n }\n ],\n \"margin\": [40, -20, 40, 0]\n },\n \"defaultStyle\": {\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"styles\": {\n \"accountName\": {\n \"bold\": true\n },\n \"clientName\": {\n \"bold\": true\n },\n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"$primaryColor:#bc9f2b\",\n \"bold\": true\n },\n \"tableHeader\": {\n \"bold\": true,\n \"fontSize\": \"$fontSizeLargest\"\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"taxTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\"\n }, \n \"fromLabel\": {\n \"color\": \"$primaryColor:#bc9f2b\",\n \"bold\": true \n },\n \"toLabel\": {\n \"color\": \"$primaryColor:#bc9f2b\",\n \"bold\": true \n },\n \"accountDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"accountAddress\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"clientDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\"\n }, \n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 16, 0, 4]\n },\n \"fullheader\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n }\n },\n \"pageMargins\": [40, 40, 40, 40]\n}\n'),(9,'Playful',NULL,'{\n \"content\": [\n {\n \"columns\": [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80]\n },\n {\"canvas\": [{ \"type\": \"rect\", \"x\": 0, \"y\": 0, \"w\": 190, \"h\": \"$invoiceDetailsHeight\",\"r\":5, \"lineWidth\": 1,\"color\":\"$primaryColor:#009d91\"}],\"width\":10,\"margin\":[200,0,0,0]},\n {\n \"width\":400,\n \"table\": { \n \"body\": \"$invoiceDetails\"\n },\n \"layout\": \"noBorders\",\n \"margin\": [210, 10, 10, 0]\n }\n ] \n },\n {\n \"margin\": [0, 18, 0, 0],\n \"columnGap\": 50,\n \"columns\": [\n {\n \"width\": 212,\n \"stack\": [\n {\"text\": \"$invoiceToLabel:\", \"style\": \"toLabel\"},\n {\n \"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 4, \"x2\": 150, \"y2\": 4, \"lineWidth\": 1,\"dash\": { \"length\": 3 },\"lineColor\":\"$primaryColor:#009d91\"}],\n \"margin\": [0, 0, 0, 4]\n },\n \"$clientDetails\",\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 9, \"x2\": 150, \"y2\": 9, \"lineWidth\": 1,\"dash\": { \"length\": 3 },\"lineColor\":\"$primaryColor:#009d91\"}]}\n ]\n },\n {\n \"width\": \"*\",\n \"stack\": [\n {\"text\": \"$fromLabel:\", \"style\": \"fromLabel\"},\n {\n \"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 4, \"x2\": 250, \"y2\": 4, \"lineWidth\": 1,\"dash\": { \"length\": 3 },\"lineColor\":\"$primaryColor:#009d91\"}],\n \"margin\": [0, 0, 0, 4]\n },\n {\"columns\":[\n \"$accountDetails\",\n \"$accountAddress\" \n ], \"columnGap\": 4}, \n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 9, \"x2\": 250, \"y2\": 9, \"lineWidth\": 1,\"dash\": { \"length\": 3 },\"lineColor\":\"$primaryColor:#009d91\"}]}\n ]\n }\n ]\n },\n {\"canvas\": [{ \"type\": \"rect\", \"x\": 0, \"y\": 0, \"w\": 515, \"h\": 35,\"r\":6, \"lineWidth\": 1,\"color\":\"$primaryColor:#009d91\"}],\"width\":10,\"margin\":[0,30,0,-30]},\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$notFirst:.5\",\n \"vLineWidth\": \"$none\",\n \"hLineColor\": \"$primaryColor:#009d91\",\n \"paddingLeft\": \"$amount:8\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:8\", \n \"paddingBottom\": \"$amount:8\"\n }\n }, \n {\n \"columns\": [\n \"$notesAndTerms\",\n {\n \"stack\": [\n {\n \"style\": \"subtotals\",\n \"table\": {\n \"widths\": [\"*\", \"35%\"],\n \"body\": \"$subtotalsWithoutBalance\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:4\",\n \"paddingBottom\": \"$amount:4\"\n }\n },\n {\n \"canvas\": [\n {\n \"type\": \"rect\",\n \"x\": 76,\n \"y\": 20,\n \"w\": 182,\n \"h\": 30,\n \"r\": 4,\n \"lineWidth\": 1,\n \"color\": \"$primaryColor:#009d91\"\n }\n ]\n },\n {\n \"style\": \"subtotalsBalance\",\n \"table\": {\n \"widths\": [\"*\", \"35%\"],\n \"body\": \"$subtotalsBalance\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:4\",\n \"paddingBottom\": \"$amount:4\"\n }\n }\n ]\n }\n ]\n }, \n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n], \n \"footer\": [\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 38, \"x2\": 68, \"y2\": 38, \"lineWidth\": 6,\"lineColor\":\"#009d91\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 68, \"y1\": 0, \"x2\": 135, \"y2\": 0, \"lineWidth\": 6,\"lineColor\":\"#1d766f\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 135, \"y1\": 0, \"x2\": 201, \"y2\": 0, \"lineWidth\": 6,\"lineColor\":\"#ffb800\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 201, \"y1\": 0, \"x2\": 267, \"y2\": 0, \"lineWidth\": 6,\"lineColor\":\"#bf9730\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 267, \"y1\": 0, \"x2\": 333, \"y2\": 0, \"lineWidth\": 6,\"lineColor\":\"#ac2b50\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 333, \"y1\": 0, \"x2\": 399, \"y2\": 0, \"lineWidth\": 6,\"lineColor\":\"#e60042\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 399, \"y1\": 0, \"x2\": 465, \"y2\": 0, \"lineWidth\": 6,\"lineColor\":\"#ffb800\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 465, \"y1\": 0, \"x2\": 532, \"y2\": 0, \"lineWidth\": 6,\"lineColor\":\"#009d91\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 532, \"y1\": 0, \"x2\": 600, \"y2\": 0, \"lineWidth\": 6,\"lineColor\":\"#ac2b50\"}]},\n {\n \"text\": \"$invoiceFooter\",\n \"alignment\": \"left\",\n \"margin\": [40, -60, 40, 0]\n }\n ],\n \"header\": [\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 0, \"x2\": 68, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#009d91\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 68, \"y1\": 0, \"x2\": 135, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#1d766f\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 135, \"y1\": 0, \"x2\": 201, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#ffb800\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 201, \"y1\": 0, \"x2\": 267, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#bf9730\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 267, \"y1\": 0, \"x2\": 333, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#ac2b50\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 333, \"y1\": 0, \"x2\": 399, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#e60042\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 399, \"y1\": 0, \"x2\": 465, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#ffb800\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 465, \"y1\": 0, \"x2\": 532, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#009d91\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 532, \"y1\": 0, \"x2\": 600, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#ac2b50\"}]}\n ],\n \"defaultStyle\": {\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"styles\": {\n \"accountName\": {\n \"color\": \"$secondaryColor:#bb3328\"\n },\n \"accountDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"accountAddress\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"clientDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"clientName\": {\n \"color\": \"$secondaryColor:#bb3328\"\n },\n \"even\": {\n \"fillColor\":\"#E8E8E8\"\n },\n \"odd\": {\n \"fillColor\":\"#F7F7F7\"\n },\n \"productKey\": {\n \"color\": \"$secondaryColor:#bb3328\"\n },\n \"lineTotal\": {\n \"bold\": true\n },\n \"tableHeader\": {\n \"bold\": true,\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"#FFFFFF\"\n },\n \"secondTableHeader\": {\n \"color\": \"$primaryColor:#009d91\"\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\"\n }, \n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\":\"#FFFFFF\",\n \"bold\": true\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true,\n \"color\":\"#FFFFFF\",\n \"alignment\":\"right\"\n },\n \"invoiceDetails\": {\n \"color\": \"#FFFFFF\"\n },\n \"invoiceLineItemsTable\": {\n \"margin\": [0, 0, 0, 16]\n },\n \"invoiceDetailBalanceDueLabel\": {\n \"bold\": true\n },\n \"invoiceDetailBalanceDue\": {\n \"bold\": true\n },\n \"fromLabel\": {\n \"color\": \"$primaryColor:#009d91\"\n },\n \"toLabel\": {\n \"color\": \"$primaryColor:#009d91\"\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\"\n }, \n \"subtotalsBalance\": {\n \"alignment\": \"right\",\n \"margin\": [0, -25, 0, 0]\n }, \n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 0, 0, 4]\n },\n \"fullheader\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n }\n },\n \"pageMargins\": [40, 40, 40, 40]\n}\n'),(10,'Photo',NULL,'{\n \"content\": [\n {\n \"columns\": [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80]\n },\n {\n \"text\": \"\",\n \"width\": \"*\"\n },\n {\n \"width\":180,\n \"table\": { \n \"body\": \"$invoiceDetails\"\n },\n \"layout\": \"noBorders\"\n }]\n },\n {\n \"image\": \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAEZA4QDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD0kT6iVJXXdaC++rXH/wAcpY59U+9/bmtED/qKXA/9nqmJuPlOR6Af/XpUuHRCD8o9CM1jqaWL5vb5+usa2p/7C1x/8XUbXOpQddd1pgf+opc//F1Thulx1B57ipzIoH3sfVR/hRqFiy11qP8A0G9aXj/oKXP9Xpst9qLfd1nWSe+dVuP/AIuq6XJjzl/M+rHj86ljuTnlwn4E0ahYkW81HIxretEjqDqtwP8A2pUp1PUFH/Ib1oH/ALCc/wD8XVQyqMmWHavZhhc0PtYDapPsGo1CxpDUtSA+XWdZc/8AYUn/APiqaNX1A5U63q6/9xOY/wDs9Uwcj5WOfRTzUABDHOB7nFGoWNRdQ1Numtaxjrk6jP8A/F1MdX1BYwF1rV947/2hPj/0Os3KvGFUqzemMVD5whbknjjAxj86Wo7I1DrGqj5v7Z1b6nUZ/wD4upY9c1Qr/wAhrVS3p/aE3/xVZJuAU3BcH+8TikS6GQMhpPTg/rRqBr/27qvT+2dVH11GX/4ulGt6sWA/tnVSPX7fN/8AFVlmd8ZZdq+o/wD1UhmV12s42nrRqFkbX9t6mqZOs6kCP+ojPn/0KmnXtVCk/wBs6qR1/wCP+b/4qsXfGg2ocnsN1Kk7KuNu0dTxmlqFjaj8R6mykHVtV3Z6i/l4/wDH6cNd1VcA63qjHt/p8v8A8VWTHdfKQGwKcWZ/u7XHtRqFjXTXdWHXWdT9s30v/wAVTh4k1dQf+JvqLfS/kP8A7NWPG4UESZU9gP8A9VIZPKI4IB/uGjUDZHiPWsYOr6muPW8l/wDiqcvifWG/5jOoJ7fa5ef/AB41lfaUf+IH6U2AomcyIc+wP9aNQNf/AISTWe2taifpdSn+tTnxTrSAY1i+Pt9sf+rVhCYHo3/juKPtYTopJ/2WH+NO4G9/wlmrr11nUfwvW/xpB4z1cMQNX1FuehupB/I1giQMclT+JpWkTHdP8/hSA6H/AIS7WTh/7Zv+ewu34/Wm/wDCW61jP9s354/5+n/xrCVuATkjseaa8odDgk0Aa7+LdcJx/bWoDtn7W/r9aRvF2tgEf2zqAPOD9qf/ABrn2uC7k8dfpmlnkAj5f5T05/SncDpdP8X65HqVp/xOb6U+cnym6cg8jqM9K96/aD8R3mj/AAN8Q3tpPNaXf2TaksUhV1YkDhhyOtfN3hhs+IdOUqWU3CjH1PSvo79pD7LD8C/EMdwuRJbBIwf75I2/ripd7j6H5r+KPiv4yhuXEXivXI8KBhdRm9P96uHk+Lvjdpc/8Jn4gA9Bqs//AMXR4uu/Nu50TAG7FcjtAfB6k4zXSYnaR/Ffxxt/5HLxDk/9RSf/AOLqKT4teOFOP+Ez8QEA/wDQVn/+KrmkxtI7gciopyVYZAz6UAd7afF3xoLQv/wmGvHA5J1Ocn/0Ks+6+LvjdiSvjLXwe/8AxNZ//i65mzkJjkjP3faqsn3zjnnJJoA6j/hbvjk8Hxl4g6f9BWf/AOLqZPiz44BH/FZ+Ic55/wCJpP8A/FVx/Qe3rihW3Px07EDqKAOuf4t+OCWx4z8Q9f8AoKT5/wDQqWL4teOB18ZeIT/3FZ//AIuuTGSrY6Z701pMD/CgDrn+Lfjlj8vjLxBg/wDUUn/+LqM/FnxyOP8AhM/EPoT/AGpPz/4/XKDO4n24BFPJAOcgY6UAdWfiz45C5PjPxD0/6Ck//wAVUY+LPjkgY8Z+IiP+wrPn/wBDrl3dSeB9eajHB657kCgDrf8AhbfjkjA8Z+IQfX+1J/8A4uhvi545PI8Z+If/AAaT8f8Aj9cox44zgU0A4PJIzQB1p+LXjnd/yOniEDH/AEFJ+v8A33TV+Lfjk9PGfiHr/wBBWf8A+LrlACV5GO4xSHIzgZOeMjrQB1Y+Lfjof8zp4h/8Gs//AMXQfi345Rs/8Jn4hPbH9qz+v+/XJ5U89D70jctwQD+lAHW/8Lb8dcZ8Z+Ic+2qT8f8Aj1TRfFvxuUP/ABWfiDP/AGFJ/wD4uuNOCeB26VYt8fN3oA67/hbPjgL/AMjl4hz0z/ak/wD8XSj4s+OWjLDxlr5AOONUn5/8erkJTzgfKB0p9ucQli2MngE0AdQnxX8cs2T408Qge2qTn/2elf4teOFGR4z8Qbv+wpP/APF1yUYLHAPHXk9KkkZQhVdpJoA6T/hbnjndz4y8QdP+grP/APF0J8WvHOB/xWniE/8AcUn/APi65XqT245+tNY7iDnAoA7Fvi545IGPGXiAf9xWf/4unRfFnxwAzHxnr+7/ALCk/wD8XXIrgoDuOAe1IXwRk4oA6g/FzxwW48aeIP8AwaT/APxdMHxb8dcg+M/EOPUapP8A/F1y7LkjHOfzppGAT0xQB1n/AAtvxycf8Vp4h6dP7Vn/APi6T/hbfjr/AKHTxBx/1FZ//iq5Xdkc5U9fSkAHHTHvQB1y/Fzxzjnxn4gBA6/2rP8A/FUjfFvx1/0OniE/9xSf/wCLrk0Hbj8KR2DA9/egDqx8WPHWT/xWniL/AMGs/wD8VS/8Lb8ckf8AI5+Icf8AYVn/APi65LkDvinYIIOcjv7UAdbH8XfHB/5nPxACRk/8TSc/+z00/FzxxuGfGfiHA7f2rP8A/FVyyozPsGc+nep7PT59QvobWCJpZ5nCIiclj0xQB7Jb+OPGFz4UbU/+Eu12Nkh4QapPyemfv+4NeweAdCvPib4o16PW/irrfhwWNrZrDawahKXlZrdCWwXAwD19zXIeNPhxp3gL4F6bcT38n/CRzNsvdKljw1sAepHX0/OvOvFlhp3iDxFcarpvjHTLZJ0iCxytNG64jVSDhO201F77FWsVPG3jnxn4T8Y6no8HxC1nU4bOdoVu4NUn2SgHgjL19O+E/hjfa34M0JLzxz4ntte1XSX1BZX12ZWRgoI2xAkMvIydw9q+SR4CjkYsvifQpGzyTeEZP4qP1rttK8UfEHR9MttO034gWCWVtG0UMKatF8iEYKgt29ulJ3toCaW56D4ff7J8FbHxv4n8eeNla41OSw8vTtSc9AcH5nHTBPWuh8NfD7Ur6+8H6bf/ABI8ZfbfE9pJf20tvfyeVDEBuUPl+WIPOOBXgs2l+LZ/C0Hht9a0y40S3uTdxWi6pblVkIILD5s9zX1Z8OPG3hnwL4V09TrI1OSwtRFbWhuYJbiJmUeYu44CqDnhX6AVMm0tGUrM8z8MeDvEF/a+F4dT+JniuHUPE93Pb6ebW9leOJY2K7pMyc5OOBWX4b+HPxR1S78WSap491/StF8OvPHNqQvbmRZ2jZgREocZPy/rWb4PvviloXkabpwtJbGG6eW0u7kQzNZl8hnjOSUyDkgZrsfjB4f8QWHwz0fwT4WsdR1uWadtR1vVIYnH2i4YfdBOCwySfwFF2na4tDzjxDB4+0fwT4V8RWnj/wAQaiPENxPb29ol9cCQeW+wH7/O7jj3rofFngv4heDtPcaj8VNQt9YjsU1GTTp9SuYzsbqiSM215BkEqKwnn+JK+A9N8L3PgWS4ttL8w2F41lMLm2Z2LMyurAA5xjjsKl8U+PviF4k0iS31XwX5+oS2iWEmpT2E0kpjUAZVWJVHOBllAJxVXYaGp4r8IfFbwh4ZbxLH8Tp9R8O/ZvPXU7PW53jaTgCAc/6wk4x9fSvMdJ+NPxMv7yG1tPGfiKa5lYJHEl/MxZicAAZ5JPFdrB8Z/Fen6Dc+Gr3wZDN4OmtVtn0Y20kaqR/y1V+SJM8lufpXkdhcaj4d16HVNOgnsZ7WcXFvvUs0ZVty/MQM4x1xTV+pLt0PcpvFXx0+HXi7w1Z+K9a8SafBqVwiJFfXL7Jl3AMOT6EZHUZFefeP/il42s/EF7bweLtehtEuJ1gRdTmGEWZ1UZ3c8D9K6ef40+JPjJ4+8F2uvbVjtNSjdVQN8zsy5Y5Pt2ry74hKTrrS7i4leZwCen+kS9Py7U0N+RMfi345PTxn4hA/7Ck5/wDZ6T/hbPjvkf8ACZ+If/BpP/8AF1yu35gPbr0oC7s55BqiTqx8WvHAbB8Z+If/AAaz/wDxVL/wtrxzyf8AhM/EOPQapP8A/F1yjAIOvPpUa5LYxt47CgDrn+LfjkjI8Z+IRz/0FJ//AIqj/hbfjkj/AJHLxBnrj+1Z/wD4uuUjG0+o96kRBu5A5oA6j/ha/joYz408QE/9hSf/AOLpU+LXjoLj/hM/EOR2/tSfn/x6uVnID8Dvio1k/izkfSgDrn+LPjrcSvjLxDt4/wCYpP8A/F0w/Fvx1/0OfiEn/sKz/wDxdc0kvG0qMetRuPn469R2NAHUr8WfHP8A0OniEH/sKz//ABdPX4ueOA4P/CZ+IOf+opP/APF1ybgdsH1NNiBJGT06ZoA7F/ir44wGXxl4hPv/AGrP/wDF0yT4t+OBhf8AhM/EC+/9qz//ABdc2TgKAQv0qvdMxc8g49KAOqT4teOiePGXiDPr/ak//wAXTf8AhbfjoHnxn4h+n9qT/wDxdcxEGI4+maRT8w4yAfXFAHXSfFvxygX/AIrLxCAQef7Un/8Aiqif4t+OOCfGniH3/wCJpP8A/Ff5zXNStuUEkn0AqCT5jkjB9KAOpPxd8dYwfGniH8NVn/8Ai6QfF3xyAD/wmniE8/8AQVn/APiq5PqRn+dKv3s9qAOs/wCFueOjyvjTxCOOB/as/wD8XSD4ueOTjPjPxFgeuqz/APxVcpx0wc0cY5INAHWj4u+OV/5nTxDgk/8AMVn/APi6P+FueOSf+R08Q4x/0FZ//i65IrkcGlPC8gD07GgDqm+LvjpTj/hM/EJ/7is//wAXRXK5UZ3Lk+9FAH22dzj7mffP/wBapYEKxnG4Y9+P5U1CAQPnxnsSRT2jDZKuVx2DYFZGoI28Zyn/AALGakc5HUj6DH8qqr5g/iz75zTstxuYP/vc4oAkgmZt29wcdN3NSEsBgv8AmwqBUOT1P1B/wpvmOB87F/QelAFmWRSq7MK3c1MjBVBZicj1AqtE5J+62KimkdP4QQT0Y0AaQ+f+79aa7YHrz3qiXMigOFAHT/IFSLLIv+7260AWGk3rtGQfYU0u4GCcL7kVHl+pOM/3s4pPM7BVz/fAOP5UAPMrpzuDKOwPNKtyWwC2F/u96rnyw5Zid3pt4pyy7XG1QB6gEGgCwZwjZUN+INAuBM20kDPY5zVaTcZN5II6fNk/pSoCxB+Xb6KMGkBa/wBX0xgejc/lSiZGPKknpzVUsqTD5W+pOTUruGOcZx03LRYCfzI1+QgBj0/yTUgYRAgsqnthg38qqKGdTkLn6UgYx8E4J6Bs0WAtK+8HMu3HtSI2z/VnGeuTiq5fb98Y9Nn9aXz8/ecKe3NFhNliSUqfmcH6im+cX+58nqACM/nVYjd987iO4JGKkBiH3irH/ZH/ANaiwx73ix44x9R/9amC5kUk9j0yMfzqIuT985HbjNRSXRAHU/T5aLAaBnYKCxU/pUQu9rcufpmq6z+YAC2O/HWomuI9xXauR36GgC/9oO3cQwB+vNK04YYwCPXPas03IOQJFwP4Rjio1uc5yQvP5e1FhXNZbr5l54zzzTRMBxwTWclySB0z/P3qUtkk8DsPrRYZ6T8DdPg1bx/YCUKRExkGR3AJH611H7enjE+F/hRptpGdrX16A3OCVVGOPzxWT+zhZC48aCXONkbZPrxjFcp/wU23ReFfBmDhDdTA+n3BUfaB7H5/T3L3Vw8jMTk5OTnrURiB6dj6U215Ygj8KsFsMMHmukyGpCWTLYUD1qvMSzf496mnuCAVHpwMcVTyScdqALEBwpI55596lcAxhiPzpLWLzEYE9TyKLsiMhFbgdRQBAeCcgZPOaarAPjocUEjJzwe1Mxg9MAdKAJy6hc45xTHbdzjBHfNHfPUYzkUmARQAuMlcjnPGacxxxweOtGCF5OSO9R7gR7ZoAGIJHGD3oUgn/Z44H+fpTm4OQcD86Z0Hp9KAFU59fqKX0JAOKavB/wAKCcg55zQAO2M9TntSglsj3pvXtn1ozznGKAAZOTzj1pBwDzu460vO0EDtk0oU9uOfzoAaQec8VZhASJifx4qsefqKsx/Kh5zngUAEmVOeuelA4jGMnrxURbccZJ/z61aVMxrzkA0AIzbUJxzj8qrE/PnJ49RxUsz5AHIXHWmiPoT39BQApGw881GTu6E4qe44Xr254qsCS3PA/nQBLswgP3hTMhScd/xqdiMKecEVGFyRt659PrQAiL16g4710/gf4eav8R9TNjo8AeRV3SSudscY9WY8AVzRIX5VyDjBr2DR/FkXw08FaTaRjf8A2rMLnUERtrvECMICOmcNSY0UPHH7O3ibwNo8OqSta6jasdrPYyF9h9+K8ve2kjJDIy9sEe9fd1h+1z8MrbwjBbRfD4nTI1WJ/N5XdjucHJ964G+8S/AvxVqVrOthdaf50wMsEM+UQE/7QB/I1mpPqiml0Z8qWWm3d9cpBbQSXEzHAjjXcT+VdBq/wy8UaFJHHf6JeWryxiZBJERvQ9xX3d8NtJ+CkfjGCDRZZtN1C2USR37Ou4naCcqwII69PSvcfG/wOsfHVkuq2eqy3WqRxnyJwU2yL12kgcex7Zo59dh8vmfkF/Y90JZIzA4Mf3l2nK/WrWn+G73VZ/ItbeSWb+6q5Nfeup2N18Ilng03w7aaXqFxKZb+41mKO4EyDqUyMY6HINfO3iXxhP478bDUp9NS10Z5yJrLSUFp5qDgMxUHk9faqUmyWrHk7aHp/hmWWLWJ/OukH/HnZkNg/wC1J0HvjNdh8B9F0vV/GSXN9rK+H/scguLZjCJSzAkhcnAH1Net6x+zx8OPGmitfeF/EN/o2tCIvJp2r4kRiBk4kCj26181tDJpG+MyL5schhOw5HHfPcdaaakLY9k+MHxR0XxFqmrypd3OoXl4cTXbxgbwDjgZAA/CvGVTRXBLPMD/ANcx/jWbJM8vyn5s+gqJYJCAdhz24ppWVg3Nd7XQsDFzMoP/AEzz/WnHTtHZsf2gwzxkxniskWrgDCN+VAtpHH3SPTApiNZdL0vzCv8AaYx/eEbU/wDsbTV4GrRg9fuMMn8qp2Oh3mpTpFDbyySMRhUXOa90+Hf7G3jLxeYZr+IaLaSjdvuR+8I9k6/nipcktxpN7HjiaDZkjbrUPT+62P5UsugxwSjydahJznKswxX2PafsHeHNKhRtS1nUbiXIAEISMH8CCaS//Yq8GNEPLv8AVLVscvJNHjP/AAJBWftYl8kj5AjsL1WIi8RopHTFyy/1q1AviNBui8TuvP8ADqLD/wBmr2nx7+xZq+kxLN4f1AaojZIhnHlOfQK33Tn8K+efEfhbVfC2ovZ6nZz2VwpIMcqEfiD3HvVpqWxLTR1BvPGcDDy/FN0c9NupsR/6FUy6v4+Vd6+JLyT6X5b+teds7tnLk+lAkZf4iD6DjNVYk9ETxF8QkZJE1e9aQHKuJQWB9j1pdU+G2u+IbfTZ9P0+7v2jtlSbyk3nzN7u2e/8Qrzr7TKp4kZenAatjRfFOpaLcRTWt5PEwOQVkIwcj0+lFuwEHiDw5eeH7g2+oWclhOqg+VOpQkH2NZC/I3TPHPevqr9p7W7X4l2XgS1mhU+IW8OQ3MdwmA0smSXjb1yoyPcY718qFTFlSCCDgqRzmkndXG1ZiO3y4C8HikVdo4JAx9KHJb2FPQlT2xjpiqEHIz6/SpYiRnI5qPzMr79OKWNjjB7Z6mgBkzAuTjg8c0q44J6E+lI6ZIYgk9eeaAcEKOOcn6UAOGAcZ+XpwaYww2TyPU04Ody4wOajcnK45oAl4fBGM05htXI69qi6kc9KlDl1YAE45oAUPlA2QSO9Qu3PI/KnRjoT1NOuArONuMfWgCOFm4x1p8q54A6/rUPKHJPHQEGpjl413AFSetADS3yAdulRuM5znr2p5wM9gfXmmdAQOCTgYHFADM88YGOc0uMHkhiOSelISc4wKU478H0xQAdMAdR7UcbuvFKOBgc59KUc9B0oAMZABAPamk9dtKWOecfWgn0GT1oAFOB1/KilPXg0UAfcn2MqcBR9QabJD5bAFyp7DOa62TR8Ngj9f/rU3+yEA5Rfq3NYXNTk3tJnGQCQBzzUcMT/ADbAR69v6V1v9lkfdVSO+FoOk89C305xRcDlngc427k+hzmjyHTqG/76rqptKiG3aFTPoKhfSsAYyP8AdWi4rHMPbStxGOffIqbyH2gfMx7gEHH510aaU0hwB09M019J6blP6Ci4zBjj8okhGyetJIrkZbp25NdDHphPBG76DNK2njOAMH0/yaLhY5tY3Q5J+X64/XFOWMh93Dg/w5FdCNNTdyoz7innTDj5Yx7HFFwMEKWXlSAf4dxxUbQMX9I/7o5/Wt4Wwjk2kDI9amWxjcbmA9yRxRcDnDbHblVKj+9/9akFuSOFJfs3T+tdCbFFn4K7Mfwnj8qc+nggsqk+4xSuBzgtCp3OhLDtn/65oa2LvlYiB0rfFi2RlMj1PWpBp6spyM/rTuBzzWzp/wAs8D6A01bZpOQgGP71dLFpaMhOChz0HFL/AGWMEnIPpwc0XA5l4HJGUA+gNJ9lVPu7UPtnmujFgCPmBX8c1GumqP4jID6Y4ouBzxtXbG5yf94EUvlPGOAy59Oa6NNKQZwhb3Apw04t1yfSi4WOSNsFPR1z7VH5BP3uR9K6waNtJ5FMj0vax2BGPei4HNmEoo2oM/7AOagZJQxOQeencV1SaaFdtq5PfcOKa+knO7YCSem00XCxzDx5UHysMOS1RSRMcDGD06V1i6M5OWVQp6Y7VXbRjheGGB0p3CxyyhlySPmJ6elTB9/94Y9q220fC/OvH1pY9Ey/3SPTPcUXEdn8ANSnsviHYpF80coZHAI6YzVn/gpFp6Xfwp8Pzuv7+PVFVGz0BifP8h+Vb3wK0JI/HFrOQp2xsQPf2rnP+Ck+oJF4I8HaeCMz6m8hX1CREf8As4qFrK43sfnH5TWrk54NSIcgsQMe5q1qMaJcFeMA8iqN1KMbVAx3IHIrpMivM+45GeBnOKYvBGeR6inqd2M/dPt+dPKhV7jJoAlsZdhZT355qO4+aX8KbCDvOO1OZgT83A5/CgCEZLd+vA9qV+Ae/wBaVjgDv2zSPgAn37UAJ91cEcdMU+IgAYJx71GPmyTyfSlPAxgCgBztzz0xwabgHHc+lByTnrn09acxxxjJ9hQAHjAOf51Gw3ZPY8c96cCeh60hAzzn0FAAOT0+bvSHgZPPtTycggmmjIYg4PrQAmdo4BFIecg+vel7gZ4pqkb/AJufxoAcFJ4zgYz0oY7gT1U5pq9+Mf0pwIHJGcetABkkjPGBVhV/EjpVZR82R261YjzkDt3oAcYtke48M3Sn2xMybB0J6Ypk7gtjoPWkiPlozZJI7YoASVMyHjg1Iqsyg456CmOfM29QCccVL/qFGep60AVnLMSDz1/Smfdx39sVK5AHDZHtTFwBk9e3FAEo5UYwD3qSIEZJwTkVEZRgjIxShio5PXpmgAb/AFgGM89q9D+K9qirouyPymFqibTxggen415/YWz3l/BEiF2dgB6nmvadVtUvvE1xqmpxK9ppEQQI33WcL8q9x2/SgDgPEjNofg3TNJZNsszfa5SDn733Rj6fzrjAxViwByOhzWl4j1ibXNWubuRi29jt7cfSsxgMkZNAHReGtav5tStAlyEkh4h3nb+Ga+vvgl8dvElloqfZdTeGWFissDgMjYPcYxXxFGMrnPNbmh+LNV8OzB7C+kgA5Kg5U49R3qWrjTsfo34o/aCt9Z0fyPFfh7TdWtEIYRzISN3r/OuY074ieBtWieTSPAGgxyEdie3qBXyr4M+JPiHx54n03SLqa0SKVtru0eBt68847U2L4j3vhnxDqUdilvCIpmSMrHnGDjPJxWfIXzHb/tJfGeS6t7PRNFS10eBlLXdtYWwj3H+H95jJHXgHFfO1hIJo2VhnBLHnnp/9avV9B1ez13wl48utX0yLVNUeFTBfzKpa3JlTlR26np615RbKRJMwwBtJrSOmhDd9SOBlMyYHGO3pV44IIB57VQgx56YyDt6DtV/B7Z/CqEKE3kDbknk10Hhvw/Nrt/BaW0DXEsrhFRFyST0wB1rEi+ZwOeK+yf2NPhhHHHP4pvoSTnyrMyICM4+dunUcAYPXNRKXKrjSu7HqPwR/Z60r4Z2EeoarbQ3uvEbhIp3CH/ZQHq3vXdeN/i5ofw+0432qXUdtGoIMRYF3H8OOMk+3bvXIfGf4p2fw60K41q4YtLGhitbUNhWcg4/HIPPBHzelfnf4++IOsfEHXJ7+/unnmkc4jDHbGD/Co7AZrmjBzd2bykoaI+pPHn7dyTytDo+lOYF5WSWXYT+Azn8a5TTP24dXt7pDdaak0WeQly0ZIz/s4/WvDPC/wa8YeM7c3GlaHd3sI48xY/k9/mPFQ+Kfg94t8IxedqmhXltCp5lMZKD8RxW6jDYycpbn298Nv2nPCXxCuf7PYtpF/ORiC5ChWb/eGFYnjhh+NdX8QvhXoXxE0prbUrNZWCEQyqfnibnleffO05B6gkV+ZVtcSWkoaMkFT696+yf2Ufj1LrLJ4R8Q3QkkCYsLiUnc+P8AliWPfup7EfnnKny+9EuMr6M+evib8NL74fa9LYXkYdcZiuE5SRfUHH5jtXFi1RtxKgem7jFfoX+0F8N4vG/gW+EcGb+BDPaOqDBcDO0E8qHUdB3HPQY/Pm5BimkjZdrA4IPY+lawlzozkrMqi3TB+QDB+lVpl2Soq4UYHvnnrVzgg8gdfWqE5zcgZB6VoSeqfG6/uINY8HKkpjkg0K0CuvVTgkEfQn9K4DxjYl7i11UbVOoIZJEXAKyqxV+nqRu/4FXoHxKtoH8b6RJcspgg06037idoHlj+ua+jfgHZ/BX4rfDu38H+IrW1tvE0ks7x3oUJKQznaVkxxgH7p44qL8qHa58LLjH6U5IwPTHTNejfHr4PX3wS+IV94duX8+EATWl12mhY/K314IPuK85xx7Hoaq9xETsqsQFHPTmkRiox+lNDbpO+Peng/N7ZxxTAeGynHb8qkjiWXOfrioG4HAz7mpoWAYAnBoAjnUI30/SoepAHJPepJypc9jTI8Ejn3oAM7Tg5P1qSKUDoCR796a6ds4BpI1yw7885FAEyxfODk8+tRvgyYUY+lWWXKbhxjqKp53OTg8+lAD5VBAGQD7UoyAAemfpmkcAlc8H1FOY4XGckUAMyNvTtjimB8A8d/WlYDA6/j3ppJA5GfwoATGcYwO9Gfm4HHbJo+7jnHsKCevp/KgBS2M5A6cYNG44yOPWkJOMd+tA9OaAAnt1OfSkY4GdxJ5FKMk49PUUuDg460AAfA5BooyO6hvfGaKAP1AksxtJJfGOmCaqrYKx4RvqT/wDWrrPsYB5O0+gBFNktV3j7xPYjGK4bnVY5SXTiSNrFB6AZzSppaAHPBP8AcGK6z7GT/AW+i002YTrETnuoxRcVjl20raBujK/VhzUi6Sx+7uH14/pXSvY7MY3HPoc/ypfspb+EH60XHY5T+xmBJTAbuc4pr6Gz/fYe3Oa6o2UYz5jYHbApRp4XlSSD0zRzCscf/YzDpGG+tKujeWS21CT2C12n2RIxkuV+nFBslYA9vU0+YLHGDS8HO1RTTphZiuVA9xgV1zWK7j8uR79P0pfsWPuxqvuAaOYLHHtpLDOTlfbOKP7N2oQBkex5rr1swW+YfUYofTkdiAuM980cwWORj01QM7HLe5pTaqW2FWX3B6fpXVf2WoO3AI/EUh0tS2wKQPXGaLhY5gWSqwVcn3LUj2A342BiR1INdQdLEJ4yWH+zx/Kmm1dpAGAXP0FHMFjmf7NIH3WVe+1TilGl7uUIIHXd1/pXUnTdpGN/4Hikex3NnaOP7opXCxy0mnqCNylj2Ix/hQunJz8pH511P2Mt7Un2Be0RH+8MU+YLHLiw8rgLnP8AdWiTTiOkefoa6g6aScjI+vNLNYsxGUQ/Q0rhY5MaZ6qE+oxSrpUjn5cD6viusuLAkLsH5Uw6dgAsD/KnzBY5X+zZ4+3meyij+ynYZEYDd811a6eAeRx6daP7NGSVDH6CjmCxyn9nM2EZQoHc0j6duBJXGB1JrrhpJI6HJ7EVE2k4IGOBz9afMFjipNP+XCx4FA03BUhOQOufrXZS6aDkbcKPbio/7KIOQn0J6mjmCx0PwSsvK8RMzH5whK5PavFv+CmLSR/8IExz5Hm3AyPXCV718OY2t9diwoGeCe4HNeT/APBSKygufh14VlfIuU1U+WB/dMT7v5LVQepMlZH53akwknZuo9h2rLlb94cDAFamoKEHc8dDWd5QlYY6n1rp2MBsRyd3Hp+NSScLuOTxT0tHywI4FDqdpBz16GmBXixux+tSeSzZOPl9+KbCP3ygirVy2IwB24/xoApSHB4+nrTCTxnn6dh70Dk5JxilzkdQcjpQAnBB9+1KCRn68c0mdx7mkwDjGfegBckcfzqQuQRyPY1GQAAQTn0FKOvuT1oAGBDE+tISfpTjnnA7Z5ppOTjjn0oAFUdWA6cUEkEjGM+opSD6Zz7dKTByQc4z270AB9/wpNuRnAz9KP4T0FABBGeOOnpQAm8dj2pQMDPb60dCMDnPQUDOBk8fyoAcvJ46+v8An6VMnLk9hzgdqjhz6DjualtlUAnkc9c/59KAGynGcAjPSlTCwjPQnvTJMNjByM9qmjUNCQfXPtQAsYBQHPH61FLKHbK5YU/cVjxgHng4qJRngYJ6YFACxkbQDgn2phY7jz+tOVcqc4xnFRtwdvb0oAk+Vfm+tKeRjOMGlUDy8cgg8ZphHTj8cUAdF8PLcz+KLV8lVgJmPfAUFv6V2PjzXHtPCVvZ5dLm/me4lLdWU9M/rXO+CIWtLPUb0xsQiCI7e248/oKoeNtYbXNUDbiY4kWNPTgUAZOoKtutukeOYwzH1Y/5/Sqe3cRnrUk1yZooldAxj4B7496iToD2HtigCUJ26ewNKgx0/wD1UB/vEAjk0xiAc/pQBoaRez6dercW7lJEBAYds8f1ok1GWW6kldss7Fi3rnvUdrbXE9ndzxRlooUDSOP4VLAfzIqrvBBB5Y/pQB6Foni60t/h94i04QKtzPEoEv8AEx81D/IGuNhYRGUnvH1HvVCGcpDMnB3AD9RVm5LREKVI+Toe9ICOFgs4boMVeEhx0zxmqEOTOvPUA5xzVsENkk9PU0wNHTwJJkyO4GOa/SjwJp3/AAj3wh0S0skEdy1nCPm3NlnAZs45xyfzr8z9Nm26hExAAyM1+qHw2mj1D4fadJhZF+xRMCwBx8lc9bZGtPqfEH7W/jq41/xydHWTdZ2CL+73ZBkI6/lt/Wqf7K3wXg+Kvjgf2ipOlWQE90BwWXso+pFcD8U5JL3x7rMjsSxuCCc556V9W/sCyRJpviSMAGcmE89Svz1cvdhoStZan1jaaLpejabFZafbRWlnCoVIUXAA9hXJaxoC6oJYJo45rdsh1cZBXnrXVXJ3E549+xrA1KdzbOFBGTjOe1cSZ1WR8FftR/BK18BX8et6TEsWmXR2vboDiJwO3sa8T8M6vcaHq1te2rtFNBIsqOpwQwOc/pX3Z+0zoyah8JtUllkAMQV13gdRXwfbWjQyZweBXdDWOpyyVmfp3pniAeIvBtrqscgCzWyXAUdMsnmDH4rIPbcfSvzx+MGmDR/iR4ghEflA3LSBAQdu/wCYAf8AfX6V9jfs46pcaj8MLC1ljLRw2+xXJz2uD+fP6V8m/tF3Yl+LuujG0oUQ5GOQoHas4aSaKlqkzzgHkj/Jqm2PtQJxncMgcd6kL4YHPHeq6tvuF6/eFdBkd38a74t4yaGMeWgtrf5QcgHyl9a47RdWuNK1O2u4ZSkkLhgVOO+cV0vxfmE/jq86jbHCmT14jWuZ0bT/ALfqNtbL96WQL+ZpdBn0Z+2L4ibxTpfw41OSNSZNNkQTA5ZwChCk+27/AMeNfNG4Ku7nHavZfjjdb/h98P4CAZIYJVVs9RhAf5CvFeoGSQOORSirIHuB5OcfTvTgeMcdacpXAyQCfWpBHGR83BxiqEQkllPb8KdEyj5iTmo3+90zTQCpGS2D+FAD5ARk9ulM4GDjPXjFT7tykYHTFRFmXjHTrxQA8fPnPapNg2ccFj3qEY6Z56YHSnr8yHJ4HPFAErECM7W/A1Vbjg5571NGh689CeT1qNlDM35ZFADx93Jxz2HWo1U5/vHpUikoMZ601lGDzgjgmgBjYK+m3rnmkyNvAzj1oY7cUmM8cHPrQAu3jByO1KAN2OPfPemEAkng0vQnoMc9KAAls8nPFHH0BNGcdCOnOKNu4Afn9aADjGR+vrSkjJ7ZpAuCR2zTsYOOmeaAGnGfu5opdq9yDRQB+vj2QZtxTH4809LUbCAq8/3jzW0lgCMjgehqVLPKkgMAOw6V5h22Oa+xlTgryac1gGPzIDj2roVstxycD6Ch7UcfcOf7v/1xQFjnBZq33F2+uTmhrDI5DfjXRLYqv3g3PqaDZhj8mfzphY53+z8fwk/Wl+yE8DPHbFbz2YAGCzH0TH9TSNaDA+Q575WkFjFXT2TkqSD0701dMy5+TH15/St4225QHUAds5/pSC0TPAP4UwMRtOBGBkGmpprI+5ThvUDn+dbXlEuVBC49qPszg8HcfzpBYxnsmIO4/N6sKQWpC7e3qpNbi22/5Tx64z/hSnTlHRst6YP+FAWMH7ASM7T9Tn+tOXTn25zx/d6GtxbQK2G4/MfoakEJUDaAV9zTAwPsH+zj680osMDorH1HFb32fc2/A/AUpgBGTjPp/kUAYSWTFcAED2JxSrYsoOFU+5Fbf2LzGDbM47jj9Kc8QTjAOR1IxSAwTaMcEqP+Ar/9ehrLzMYLPjru7VuRW4AOwfrmkFuc4ZTzQFjD/s8L0Gc/SnjTdmdij34xW2bHB4+X8RUhsfL6MWz68UAc8tishOE3EetPhtkjY5XcPQtjFbEln5fJAOfTNOWyJzuyw7AHpQBgpZK0jHaG6nC54pDZIGPBHsa3jpoXklgD/d60hsA4wuSfpz+tAGILNuMISvrjik+wAHBUZPQitv7EVBHUjtTfsuc9vw60wMF9PBJHXPWk+w7SOM10C2hK8DP1pGsse/4GgBnhO0EOtROi/lXhv/BQ6bz9D8HW/JP2mdxg8DEYFfQegWxj1GInjPb0rwT/AIKE6YYfB/hXVMk+XftbEf78bHP/AI5j8a1p7mU9j86NZZhcsueecin6LZmU7sZAGeOag1WNmuX4LHPOK2vDcWLdiwxgE8iu05yrqbpECADkce9YryFzjktnvV/Wd0k5ABK881TgtmlKgdDgH2oAIICULuCADjk+9JNLnICnFaN0qQwKgIPviqbQeZjBwM54oArEErgDgDnmkyQOQFHqakLAfLt4HeomJPB5oACOMEc+tA25xyCKB7np2xSjHXIzQAw8DnPPFKGIwcEnvinFc9DzSdwB0HqKAEDHaM/lQBkk9T1NBxjnk+g7Ui8AEflQAoyehIGOlK3IwBjHWms3Unn8KX7vI556CgBAOeeSOvFKCSMDjJznNJ9QfpQuTjGPQUADtjAHP49KQkhSMdKXAI565oUZI46DigB8Y4Y9B6ipYvuMQSOaiTIA4PIp8TDB9zzmgCSCNdzZzxRCS0jDk5pCML1685otm2Ox/Qj+VADpUKRgnrzUKL8o7Zp8jmQ/iaAuAT+FACMpQ4H/AALHeo1U98etOLZPbPrSZZR2oAfjzDinxruOevI5FRq20YOeantY2nmjjQEuzBRigDs9v9m+BhuAV7tvMLnnIHC4FcK24rwT6nvXa+NZhZ21rYB1zCio21uMgVxjctkjp6UAM5yTjoAeKVFywHXnFTQ2slyyxxRmR3bAUAk/lXr3gj9lP4k+NbZbqy8OXNvbsOJbseUD7jdzSbS3GlfY8icBMjr6c9KgKl2AHBPHvX0RffsO/E62tyfsNq5/urcAmvPvE37Pfj3wcjyX+gXBjXkvBiQfpS5k+oWZw9jqcmn6ZqFoqZF5Gsbc9MMrf+y1lgnB7fhVq4hlgZo5o2jdTgq4wR+dViuOf596oQighhjuRWjqLg3TqvZVHH0qvaoC6jA65z3qzqJIvJMjB4I46cCgCGElZjg5OMc8VZU4PrjqKhXHmHJ69ambIQnHbGKAHQt5UofkAc4HWv0M+AHiaLxd8GrFDO/nWkQhmwSpwmQRx1+Qsfwr87w2ZMkfSvdP2XPi+Ph94pOn38mdN1IojFj8sb9mwT781lNcyLg7MwPj/wCFbjw38Q7szR7Euvn3ZyN44b9RkexFbP7PHxim+Efi1Lx0aXT58Q3USgcoT1HuDyK+lPjp8IoPiT4d36c2buMB7WXAYNj+HIGSQOMd1CkZxXw5qejXvhrUJbK/he2uImxiQEdPT1HvTi1NWYO8XofqjoXjLTPGOmRX+jXsV7Yy/ddeo9QR1BFaVrpsd8kjyghB27Cvy38OeNtW8PP5mn6ncWTH+K3mKfng109z8aPFup2j2t34g1CWFxtaM3LhT+AOKxdHszT2h7n+1n8QdLvoI/DOh3ou0WTdeSRn92COiZ7nnnHTpXynNZSTzxW8ILz3DhVVe/Iq7e6qJN29i8mOFU8mvZ/2evg3d6rqsfiPWonRUx9lgI+YnqCB2b0z9TwBnbSETP4mfQvw40RPAfw8gjk+SK2tvMlZjjnbj9f3p/L1r89fiB4hPijxtrmqFt32q7kkBxtyCxxx24xX1/8AtY/FeHwb4TfwrYTh9S1CMrKIiAIk4B9wMDaPYe9fDmSQDnk85zU019pjm+hKhO0jk56ZpsRAmQkHO4fhTsnAHPTkVJp9lNeXsMcUbO7SABVGT1rYzPQvix4Vkmmn8Q2m+4sxcC1upQOIn2KyA9+RkZ/2a5Lwmjwaj9sVf+PWNpRnpnHH86978M/DLx7N4h1VbPwve6jpF0dk1ndQMtvdIR0ycDKnBB6iqF3+zN8RNOub5LTwVf29jO24Rr++KDOQNw6/lUKS7jszzb4sasb7T/C9pni2tXOOvVsf+y155jnnn8K9c+KXwq8Yxa7ufwxq0dpbW8cKyPZSBSQvzHOMdSa85k8ManDIUksriMjgq0bVSaAyGAOfUdeKfk7R/LNaZ8M6nKpKWVwcekTcfpVSW0lhZlkjZG/2lwRTEUFPzcdfWn8lRzux7YpWRkIG04pD83H64xQA9Tngj8ajkyXYj0p6YYc8MOlNbgkAZb0x1oAQHDZ6fpz0qaIgkqx4P/16hK7fQmnQjDgnkZ70ASqdm/bkKOntTIcMTnr1xUszKVJHB9KigfZkD6c0AMUHBOeKDyDkZI70oAXODupmPmH+NACZA/wFABJ9B70ZAJOOvWkZjyBgY5zQAAcdsZoPytjjP6UuFYjsetJjGB6UAIvJyOKXOR79KUHaOOaOgxzj19KADg5/WlXkZ9OKQg7/AMqABngcd6ADax/i/QUU0xljkAkdqKAP2r8puoXKdyc0CEN9w8e2ak4A+6R+VCmJgQcg9twrzDtEEe3g9/Rf/r1G0aRdC3PvViOJdpyyn6ik+6Rzu9+aAK6x5/8Ar5qXYyj5V2/U1OwDfeyPqMfzoxs5P8qAIzE6gFSmT/eP/wBaoPKyT1z3weKu7QevzfX/APXTWyeMqPwoAqvEGUZYcegpoXYfkYZ9xirqgjrIf+BEYpphOSc8f7PNAFIws3JwfoaUrhcbMf7W6rQQZ4x/wI0pRTwFQN6gc0AUvLZuOKkjjMZB4OOw61b8r5ecA+pNG0gYwGHqKAKcsRkfeFwfQjmnJAeCR+fFWzGAvCnPpmgKNmcAH0J5oAqta5O/BGO46UnlAnlVYf3gtXUAKbSgOe+OKaYwGxwoPYHigCqYUz8r49iKcIsg/KG984qw8aIeevoOaEhEwJwVA6hqAKvkIOq4+vNKqLHnBJJ7VO0K/wACKo796WKKNchTj2OaAIj+7GGBXPoM0BC+cBR/unNWRG46BU/HNL5Sxjs+fagCmItx+Y/9881KEJ6Fv+BDNSiLHTA+uaaUGfmJFAEflNn5SM+wxTmjLDHf2NThMD72fr2o2A9Tn2oAqiHJxs/Ekc0nkKMcDJ6VbwD8uwKB/FnrQRg5A5z/ADoApPDxx3zkHpTktxk4xmrDId3T8KXAIJIHsaADTkEF1G/Awe1cZ+1p4Dj8e/BLV4iha408DUbcg8howc/mpYfjXbxEKynqQfpVrxr/AKZ4B1qJcbpLGZeeQMxmtIOxEtT8WvLWfVzGMMGbr7VpXcjwOttbryeGHtTNMVbY3U7AbkYqDnvT9LnEUUt3KSxbODmu85Qlt0gT96AXIrBkuY4nZUGOcetWtT1b7QxIPPTHtWI7fN1Bz60ATvOH78+ppskpIODx+VQA8Y/HNLwf4j0oAQ9cnp+Ypw57ZWkVgByuacsmOSuT6gUAD53L1GTxTRgNnqe/FNLg5GM+9Lx7k0AP4ALHOPamFyQSM9OtLuI6Dj1poxnigBdvCnrnnmg4GcHHqB60hznOMg+1DEdP0H6UALlieDmkZvXn3oC9znn16UDg+g60AAILYJ6dMUvIOM8dPwpvfg9evpQeDjt60ADEg9MelOVx0HWjrjHSkXGSMcnvQBJzt5FLuOMk8j1700sWAwPwoTJPPftmgB8hGM/lSwnlgWz2wKjYkEc9OaIzhhnt1OaAHovz54NPkYqDxknrgUzooIJ4HNNZiy5yc460AIvzMRjJpCMcjsKmWF2ACIWPsCambTLt1O21lIPcIf8AP/6qAKeMHGcexrofBUSnXInbkQgyY9cc1Ss/Dl7PIB9naIY/5aDb+Ndro3h1fD9leX8sgkfy/LAHQZoA5XxPefbNWlccc9qyoYmmfaDkngClupjPPI/Tec8dq9z/AGP/AIRj4nfFC0+0xB9N09lubnK5DAHhT9aTdldjSvofQ/7G/wCyrBbWdl418T2aSyPHvsbSUZAB6SEfyr7S8sImFAVQOg7U2zgis4IoIEWKKNQqIvAUDgCpM88dDxj0rjbvqdCVitNAJEwwGO/Ga4PxxoEV5YygqAcHt1r0dl+Xgg+1YmuaZ9tt3XHOOKhrqNM/Pn46fC6xv5ppzbKkwPyzRDDc+uOtfK+saNJol48ErZIOVYdCK+5Pj5puo+GdWzdRSfY7g/JIq/KfYntXyV41torqORQMvGcqc84rtg7o55bnF2Dr5xJPHqata26yXEZAwAuKylyj8np34qzcztLtbJOO3rVkiwkmZs9hU5bC5IwMc1Wh4kPP4VLg+uQaAHlSw68ds0+NZFcleSvIPcfhVzS9NfUZgiIzbjgYHX6V9m/s5/sWf8JFa2niDxYGt9OcLJFZbSHlHXJz0FS2luNJs439m/4/X8SJ4a8RQTXViFIhvArFkwcgMV5wDzuzkV7N40+E3hj4sRh5FS4mcF47qAjzQxGclSQG7fdIPqpNdx8cdM+HngXwUdPis7bTH/5YwWCKJXb6Dlia+ePB/wAP/iRrkr3Hhuxl0PTXYGN9YkZDICeP3Y/xrn0fvLQ1V1o9Tjdc/ZN1KK8dNM1W3ZhnMNxII3X/AL72H/x2su0/ZV8UNOF1C9s7SAH7/wBojbP0G8V9Z6Z4e8caRbBNU1jTriUDkKHX9DxUd7p/jUh202XSXmYDCyFxt/FR/On7R9w5UeWfD39mTRvDZi1K6L30kbBo5ZvkiBHfkAn6Krf71aHxa+PmifCrS3stHmS91oKYkRV+VB3+gz3ySccnisjWdf8AGGl6/HH44gvbKyZv+PrT1MtqAD/GcBgPevT9T+BXgL4yeCoUVYUvDHm31ayKmVTjjOOGX2P6VLet5DXZH5y+JfEd/wCLNbn1PVJ2ubudixdh0yc4HoKzghcbR2/zzXr/AI//AGY/GPgvxtF4eWwfVJLk7rS5so2aKdPUHHBHGQele9fCf9hiG1FtfeMbo3EzYc6dZ/dB9HbjP0H51u5xSuZKLZ85fCf4I+JPizqHk6VabbWNlE15IcRxA+/c8dBX3p8Gf2WvCvwyjgu2tBqmrquXvblQcN1Oxei/zr0Twx4RtvCljHa2NjFYWUWAkMKBQPw/rXVwlRGPT19a5p1HLY3jBLccjmEKFX5QMcVoWV4TIqt096ypJ0XCscfypqXyRN8rZz71kaWOuRUdScZ7c1UudF0+5bMtlbyMP4niBP5kU6xvFcA542AkVaDBgcHJHb0rW6ZmZ6aPZRcJaxKv+ygFeafFT9mTwJ8W7eZ9S0uOy1VlKpqVmoSVTjALY4YfWvUZ2K5PrVNb1kIBywz371Kdh2ufkD8aPg/rHwZ8XXeh6xHypLQTp92aLJCyD646dQc156sKBSMHOSCK/Wn9p34MQ/Gf4eTtZwQt4h09Gls5HXJcYy0eevPb3r8qNc0e70LVbiyvYGiuoTseN1KlCOoIOOa64S5kc8lZmRKAmcHAHtUagk4ADetLJGxY54HXmmcMccjmtCSUjd69elHcDApFYZxUk6bSpHGe4oAZIxZffpTI8Bj2PQ4p7sVAUnA9qjDbCOM9896AFYAuTxz6U0HJHYHqacxGDzt+lNxt9v60AH8Pt1z60ZCjPHJzmkAz/EM9vSlxkYHNACDJA7++aM4HofTFAAHbvSgY6jA6k0ANxgfX2p643cDPvSE7cEd+lOA5POMUAKELJk8Zpqr6jHHSldjgDpz0FKqluilqADA78ewFFO2SKP4vwFFAH7XINq7VHH5/qKD8pA8wL7ZppuAvVvm9sChLncp5yPVmrzDtJVTcDj5/cdqYFZeFHB9aaZXX7nzL3xQsu4cL9cmgCVk2Ab1LZ/vc0wuvTIH/AAGkE4boAmKR3I6ZP+9QA9DgnOR6YGc099qgE4we5qJHZMlsYx705JFcn5h/wHrQA7IUZyT9OaCN3RQ30GDUYkidiGUcf7WKmQqPuqPxNAAN2MYb6Hn+tMVgJdo4ceuKewJHHyn1BpCUVQTs3dznBoAUtjpnf6gcU5G3L8zc96i8w/eHI7Y5pVIJ3HIb0FAEjAA8fMPbg0g2hs9/TPNNZ167mLf3etKpJIJ3H/ZJH8qABmYvnHye5p2FPzKAT24oLheCMfzpNwPIHHqaAAYkIL4D9gBTzI8fykkE9sVGdx5Vm2jqB0/lR9/nI49DQAKhXOVx+NAwDwfyo80/xAA07AH3QqjvQAoBPcj86bKSCOcfWnMFJBB59uKduY/fz7bcUAMH7vkc59R/9ekRNhJjKsT1p4K+o/nSE47E/pQAhC+mT3FKVYgZYAelPDK3DYSlUhDnJx+FADFRlOT0HIpQhySfwoVsyEc89Of6U9z8oPTNADDHycDAPJGKZs+bkA/hUgOAOp7UoUZ4IoAaEwenJPQ960btFm8PXaMOGgdf/HSKpIm0Y6GrmsyR6Z4Xv7mYiOOK2eR2Y4AAUnk1cSJH5D+I9CXSV1OGX5Cbl8jPoxGK4jUbnyYUhiPycnjvXa/EHWItQhuJyf3s8rygg9ixI/nXmTys3XPXv1rvRyiSuWzk8+tRM2D7HpSswOQST7imkcYIz/OmAAANxgADp70uQ5Ge9Aw56EfWrEFvlgWBGfXtQBDsLKeOvGKCmMZ464xU0jYYqO2ah3HnHPpzQAHI+h74pvOcfhT44zM2Ogz17f55qzPbpbBeQSRgjNAFQqeCelOJCqMgZ6cCgsxzwc9TxQE/dD1HrQAn3uAOD1oMRXGBnjin5AJH3cVJChdwD8vNAEBUsAQuR9elNVDgEAgVdNvxwc9+OamgEMZ2su5gO/0oAz1gfaeDinLbMO+MnvirV1ImdqlTx1BqJYpHXIBJ9cZoArlcE880hUg9unr2qV7Z14ZeT270ht5FXIXdxQAzp9AemKaOckDp/KnEEE8EDpkUsUDzkBELHOMCgABwOnNCKXYKBye2eauwaDe3EoAhdQfUcV3Hh7wUIwJrjCIhy0j8L9KAOV0vw1c37hdpOTxjmuos/CekWMRe9nMsvURRjP4Zq3eaqmxYNNUwQA4aZh8z1mDyBKI2O9jnJFAGvY39ppwZ47eKKPBAz8xxTJvGeFMdtC8hPAITr9KqBraBCoCk9PmOSKgj1SGBj80aKpyMYoASe/1a7bKW4jzyWc4FW9dvJtP8JfZ55d087lmCiqcviSCWRUQNKx6bab8SJPLmtIAwJ8tSVBHBwM/59qAOLDE4Az16HjFfop/wT70C30b4c6jq7Jtub65KbsfwJ/8ArNfnQBk5A9ua/Rn9jTUJbb4MWMhyVF1IpPT0rGr8JpDc+tIrpZOhIz0qyMkHn61xFlr6iQq7j6Z6109tfrNGPmHIHtmuVO2hvY1MBgOSQD1qjeXEUbbCwDsOKp6nq5soAc/M3Ari9f8AGkNtMUbB29CCMihu+wWsbPiDRrPXbKW2vbWC7hY/NFMgYH86+Kvj/wDsmT281xrHg5HlUF3m012BwOv7s/0P4V9Oz+PknmWONixYZYjoBVpNUN/KTwQ/XmhOUHcTSe5+Reo2ktneSQTRvFLGxVo3XDAjsQaVeY2weQc/Sv0D+Pv7LmmfFFH1XSiuma+qn59vyTYBwHA7+9fBOs6Je+GtUu9M1C2ktby2kMckUgIKkGu2ElJHPKLiVI+47H1q5axrM6LjAz8xz27VShbBfJJHcGuk8I6HNr+sWWn2ymSe7mWJEHU5OBx9TVkn1V+xh8AIvFt+PE+uW27RbNisEbdJpRjjHoAcmvrn4nfFH/hE7S20rR7V73Vro+TDbQJ93HU56AAfy4rM0WPSvhH4BttHtJUhh0y3JkaT5CzYy7kH3zzXMfDa1S5S/wDHWpPNO+o7XtLacbTGn8ChfU56981xOV3c6ErKw7Rvhjpmg6k3iTxLPJrmvSqWQ3O0CNe+0fdRR6mub+JP7R+heBQ0F9qIWVgf9DswScdhgYJ+rMo9BivP/wBo/wDaBPhO1nsrKZbnWLkEeYp4Ucjf1+6D90dyM18N6zrd5rF/Nd3k8lxcSsWeWQ5ZietaQp82shOXLoj6g1P9tmW3dk0fw9bR24PDXDLvP1AX+pq34d/bZik1C3Ou+HYpIQwYvauhYH1wy/1FfIhJbqTnPU0u49ug9619nHsZczP0r8J/GjSfikEi0y6tdctijm5srlPJvIuOAiHIYEk5OSAMVPa+FLnwNrltqfhKdI9PvJ1F3YSH5MMTlwP4WHPTg455FfnF4c8Tah4a1OC+0+7ltbuFg8c0TFWUj0P6V9o/B342XPxN0kxrEp8R2Ua/ardCAL2IkDzUHGHDYzyANxNZSg47bGilfc+x9M0xbrbNNmbjueFPsPyroUs4oUUqg2j9K8f8J/FKDyxDNIrTRHZKquCG9xivRLHxRa6haLLbTJMnQ7WBZfqK57W3NdzbuUjnhKNjIGAR2rjLi8aCSSM/IFPH0rVl1+FshJFMnXaDzWHqGo2kS7pZVMh68iluMilvgE67U75NYc2u+VceWDvIPas3W/F1vasVEgz7Yrlr3x3Z2iyTzfdAxzgfzquVibsew6R4jYJvkYKPU8cVv6f4njmOPMDZ6V84+L/iTb6H4Ri1CKcwPM5RU3DLYGSf5V5fp/7RkttMB5ryMxwcN/OqVOXQhzSPu2bVoyhKNuPfmsC61QLLkMeMHHt618/aH8cTfomZTlx8wByRXXaZ4yOr3yMjDbjnP8qlxa3LUk9j2zRdVVx83APGa+b/ANsH9nuDV9Hu/GXh/TUm1KIGa9iRctIoABcD1GBkV7bo8+4REEkBsnA6/wD1q7aBkvLYowDKw5UjjHvTjKzCSTR+QmmyaPqUkUF3YW6lmGHbI/Cq2qeH/C811KkkF5p+GOJI1LKCO/evsT9qz9mrw1Y+Hb/xBoVuul38ObhreL7rnqdo7fhXxj4X8SypcvHcTLvzgLcnCfQmu2MuZXOZqzsUJPht9q+fStShvAeiOdjfkaoXHgbWIEZZrRo9vViQcV6TKIWCvKlowc7gkTFSPTBq/BNhjIjybCn3GO9c0yTw2TR7vzjH5RxnGc1et/C15OoICk9MbhnFezS+HdK1tcvtguQNxaP5c/hXNeIvh/d6bG09nceaijovNAzzTUNCvbFj5sDbem4cis9oJUGChX6iunv9R1KxZobmKRCp6svBFT6RfMxSW6RZIN/zKy9vWmI48q4wSOKltdOnnU+XGXH+eK9abT9F1C1eO2SNpCNwxjmsMwy6QDvg2xDgsRQBxcWi3LAkxEY61N/Ys0zgJGwPof8APtXomi32nagskbpskbOWyOawNVM2m3rqUIj6rIBwfegDIPhi6ihLeSWCjk8UyxgUTFHgwT7ZrsPD3iCCa3ltZG2uw6sRVK9gezV5fLEqZGCgoAzU0i1nb5o9rE/rVR7BbO4ZF6Z5BrZ03ULfK5XkHGO9Z3iO3ltr77TEC0LgE47UAPaxU4IUdOflorNi12WJAuzHsc0UAfsKsyD+ID2IpJJwp+7n3GSKzRcZIPzA+g6U43W4gnj9K8w7S79qB/iA9hxUnn+nH+6f8Kzjdj0z+NMa78zk7xj1wKANYT56/J9VzmmyznA2AE96zDd5+5sHrtANAnUZ2HB7/wCcUAabTMyjAyfrihZMdMj1yTVDzmABUZPsaX7QABzz3GaAL5usfekB9iKd9qjx9/b78is5psAbUOfpmnjlQc/gRQBoG6CqCrkmn7w0YYlgT3LEVnIcN8x49lqUXAYbdpC+uKALokATAy3uOaRZ2U8sAvfJqj5iBsBefU08Nuwc/gOtAF37QM7sjHqOtKXwPMVz/KqYkI+X5j7HrSBsN0T/AHSeaALguAwydrP68GnLLuTaRye3SqbP/FgKB2HIpBIGO4ED2FAF9SI+GH5GnMwz8gBHfIFUkumII2Z9zz/KpI2dkY8YHrkUAWhKP936Gm5Y+h9dtVVnDdvzOaepVDyoXPvQBZTaAcMB9RQsqN0O76D/AOvUDNj7rLj601Zy3I3J+X9KALSzkE9RRGWUk56/3sVX+1GTv0oDM/3WGR14/wDrUAWjIF5JT6f5FOzuwV5J9M1VV2Jxu59uaUOMnK49wKALPmsRtYYA6E//AKqUMGPJIHt3qsZECnao3etSq/HrjtQBYz26EelIoySMZH9ajEmSB360/wAwAt0P1oAs2oDzICc5P5157+1742TwR8A/EE2/ZNfoNOhx/elyP5Zr0SwXfcIOgznNfOf/AAUTnVPhLokDN80urIwX12xSVtTMpn5ueIL95p+G4AwB6Vj7sZHGccjFWb9w0jswwfzNViQvT9a7TnGgDcO+KeqmTG3qamtLMzK0hGI1HJA600uq528dRjFAFiOCNIQ5+Zjxj0pHuSR82AfXiq4uG2lex557U0ZbIX9OgoAQKZn+U5J9K07fS1wTKe/SiygFsGkkGDjjP86iuLwzMQCQueRQBO2yFGCEY74HNZ0hMr7epz19anMchhGASTVm1tlgAeU5J6A0AKtksMGWHzHByRiqLRNPIUjXJyeP5VpX0uUIB6jpSaRZOxL7sKfagCsunMGG8dPSriac+zKrwPUd6uumWCggfpTmjIQKrHgde1AGJO3kZU561S3l2L9j+tXb92MhRh6c1paRpcUkaySKW9j2oAyobFpG3EYXrVz7U0PyRr0yOlaupWvlx4jTBPoO+KlsdMVFDNg4BOD2oA52Q3U0ofysiuj07T/tESh4xkDkYxV2aOIQ7QVQAjsOaii1HznMUJyqgjp3oAiudCsokLMOTxj0rX8PeGPtEyx28Y3d2YcCqtno8+p6jFDFmaaQgAKM4zX0F4T+HR0jThEWRpyoeWQ8Accik3YaOEs/BqW8D3V84isrcbpJQMYFed+KvFf/AAkd4LWwQQWEJ2qFyMj1PvWx8aPH/wBtuJNHsJCtpC+19jf6xh3P0rzGG+S1hZCCXY5JX+VJdwNbUNX8s+UiBUjxgDqTiqlvDqFwWaGNgWH3sVni7leTeqjI5x1ratdWmWE+bNtxwAB2qhCweHbqeUNc3QiGOfm6Vfh8PaSjDzZ5JmB6JyKzH1W2AJLNIx67jgVWbWdvEKDOeCoxQB2eiwWUeqxpBbJGpbq2Oe9cv451A3usP8gG0EfKPcmtHwjHez38l5IreXFEzAMD1IwD+tcrqUxl1CZzk/McUAVkwznP6Gv06/ZD0VB8C9PgkTBuC7k98k9a/MeMb5VXPPYV+sX7L+nNY/CLRISu1hECQfU81hW+E1prUZ4ue88MSJPIjGBcLvHX2NdL4S8Ww6np6zI+8AgZB6V0Ov6DBrVpJbzqCCOvQCvnjWVu/hTrJldHOnSn53jB2dep9DXMkpGzdme761rUFw4G/JUFtoNeQeLZxNK7K2XboKS88Yx3FvHdwymWGaMFWB6Dg4Nefap4gN1PguwQdVB+97ZrSMWiZNNWOy0gJC4Bbcz8swFdxo8zeWMqVyOM8cV5PpWvELgjCL3brXZabrKysqLIOeFFEkJM7p9ZhtVYuV3KNxA54rxb47fBXRfjRpL32myRReIbZGME0ZA83vsf8uD2r23wloMd7ALuZRJCc7VZc+Z/tfT0rXuvB1nIoeJfInH3ZE4P/wCqs0+V3RbVz8htZ0S98O6td6ZqMDW15buUlicYKmvZP2P9FGu/HLw6jr+6tWa6YE9QiFh+oFet/thfBQXWny+J7SELqlqo+0FEOLiIZGf94cfhXkH7IeryaR8Wo54n2v8AZJsfiAP8a7ObmjdHPblkfa/x61W6ubCx0y1EZe7uoYZPNQONjN8xI7jAPFXfHd/D4Y8Kwxq3lRWFtuAAwAxwi/kCx/CvMfiFr66r4w8EveTuhOqqEKqCpYRkAHPTgnnmug/aY1GK28Ba4PJTzmtXMc3n4YMofGE7jBbn3rlStZM2vuz8+viN4tn8ZeKL7VJmwssmIhg4WNeAB+FZmgeHZtduURNqIW2734H1P6VQnXknhua7nwBetp1m52bhICFbH3fp9f6V29DmOv1b4J6bo3h03JvjeXZIC7JAoJ74Xk49zXmep+E7hYZZYI3eGIEsxHQDgn+Vepy6jc31ms7FsF8AuvBqlq73TwfZbdl2SjMjbSO3Q8UkB4sylH5+X3rs/hd4vn8C+NNJ1aIlVimAlTs8ZOHU+oKk1i63oU+lXUSyhMPkqUOc44qKOLymjcjPI6c03sNH398UfDt9ofhW51/SgzPGHlTzHXEqAblxtGFAXdx9PSvEtI/aEu7MxvulgkKgsNzAgYB/qK+jY5GvfBlt5iOUGjRo+4HaGMRPXOOjemeDXBfCj4aWN54HivxLYXUzHi3VBJIowBk55HTI9iK54tWszVraxzI/avURhVu0U456A1iaj+0mtwxL3ikg5zvPT1/nXyvr1omm61f2qMWSCd4gWHUKxGT+VVUB9iORgitlCJnzM+mX/aJ0kzHzrppBnLMsbGuN8WfH8apdotpDJJbx5KhztBPqRXiWTkE8/UU8Eg+vOMCnZCudt4g+KOreJnjNzJ5UUS7Y4kJ2qO/41Fpt/kqXlcswzjFckgJAyckVt6Spk2AHnpmqEeq+FNWukliijctk449K+g/AN5ejyZXH7pHwxzy3r9a8T+EukyTyqz5S3DANnktx/Kvq7w5p9vcaVbQwQhdvPIOGHsR/WsJuyNYq56zoBX7LDJuK5QfKRXbaVLlF4AXtXnugWLSeSgYNCnCc5GOwNeh6dCYwDyOMHk1ydTfocP8AtB+EX8WfDTWBb5F7BbvJHjjIA5Br8k54X0bxIY7kBRHJ8wPIzX7YXUaXFrPC6ho5UKFcdQetfmB+1r8ILjwR4zuZI4G+ySkPC6oQrD6+vrXVTl0MZrqeUpok+pStPY6krhTkLkjb6DmpDYeKbGVQka3BXJDDmsnw5rAtt0bRyBAvzEHAB+tdPZ+JbaNg8F1MNvIUMGx6jBroMTPg8U32nvtvNPkV9mzjuc10mlfEmxQIj7kKsdyyjjmol1r7Y48p4ZnY5/e4BB9Kkkk0u/f/AE7SkiJG1ti9fU5FA0dLdS6b4qtsbYWl2H0IxXPaXowSxljNgDHExAyMllrIbwpaG6L6NqjWZAyI2c4Pt1pun65rXh7V0S8BdJOPNXlX/wDr0CJraKzudSU6cHsryMZNvKMK/ar9pr0N+ZtO1GBYzwMsM4PrXC+MLzUI/E096iyRZIZccY6Ulp4h+1yB7lfnHJcdTQBd8X6VPokqyWiEJvIBXoRWba67fbDHcW5uIewK5xXe+HvFdnJ5dpfhZrd2xl+oPFbGu6DZWUyS6eI2STlVPIOfelcDyHVJ4Comg3wzZ+6elMstW1EsqJLuQno1ehXWh6Zq3nIiLFd44Vu5rjItFk+0yrGuGU7Sc8A0wGas/wBnijlaMxT8E7elRweK5TFsZA+ex6VoXCS2YjjnjE0Trz3AOasQeGrK5t5Wt5FM23cEoAxZNQWVy32BD+FFSLDJHlXjBZeDmigD9Vxc7Tgkfkad9rKcAAjuQM/rVJ3Zm4AwRjGaFQAZIwR0wcV51jtZaN2D0fH0OKXz2fGCGA9TVVCHGWByPpSeYT3xUk3LvnA+h/3ef6Cn+aQeCx+tZpO3+Ld+A4qTzm7HH+9mqsUXo7gysVVeR68U9nPY8jrkVnq4kYjOPUgULJgkB1GPVgKQGgboJ2Vv0pPNyc7gfbPSqaTbSejZ/uqD/MUhmdieQoz2HNIDUS5TACjDeoqRrmTZjgr6FazA5AG45H+yRmk8zYc/Nj6UAaf2k7RjANCynO7Lf0qhHMHIHI9zj+VK0gBwpUn6/wBKANIXHPU7vYUvnbmxjJ/Ws5ZiOCuD/eVaeHYfvNxZfTofyoAvedsOCSn+yaeLjIyrDPpWeJmPzBcD0qRZSULccds0AXfPkYgkFfqDTzO4PKmT3YniqMdxGwzuKHPC461IJdw7D2zQBdNwB/AP+Aj/AApv2nb9xuvrzVQdD1/lSRlkzk7vTOBigC3HOwBy6k+1Sm6DY3YH05/lVJ7hc/Nx9KI5Q2fm/IUAXmudmD0z6nFKJR3P5KKo+dt/iB+oqTzD2cR+7Ec/nQBcEm7ofyp3nMeOmPbFUo5WydzhhTjKFOcBfcc0AXFk55cfTFTLICPU9qzkmG8Y4I7kVMkysMZzgd6ALyOSAc8A8CpY5cE84A4qgk3J7L14qaOQjGCMdaANrSZVNwCTjPSvkX/go7q+3/hD7LfmLFzKVzxnCqD+pr6x0yYG6UZ+h/Cviz/gpRayLqng28jYkGOeMr2/hOa2pbmc9mfDM7HzD9c4qMdTzn+lSSxsGPPP86lsrZppgoUsCcmu05jQuS1rpMUWMeZ82axgpI5PNbGtzGaQIPuooGM8Vn2cBkfr8vf3oAhK9cHOD+dXbNDAxkZeo4461a2QIjdyOhqhPdOcqOmegNAEl5ftMccAD0HFV4UaeUDGQTURbn1Fa2n3aW0GCuW7HFAGhtS2hUHr9KohhNdBc5XP5VWuL1ruQBeAT0NXLLT2gJkdhn60AS3FsqNubJ9Aau6UFkjyeEFZN00k8/lggkgDGc1pMo0+yCFhuI65oAZe3IWbCnIwefzqG2mknTCfO2cBfSsy4uPPZgD1P6Vf02X7Mh3d+mKAGzWReXcfulupNbdkwKARMuFGDxXPXWpFyRkNk9RUukzMBJMzkLjjOaANy8YKpdjj0z3pdKulkVmZQAOOO9YF1fPdXCqCWBOOeTV55l02x8tnBlb5j24oAfqOro6vGikc4FO0lHjiaYoNznj1/Ksyw8u4nMshConOCa9g+BPw4f4l+Isk7dJsyXmkYYHHRaTdlcaVz0D4GfDN0tH17UInWSUBYQRgAd2FXfjn8Srfwl4en0qzYLqFym1sDlV7817X4r1HTvAfhWaZvLht7aEhQOOAOAK/Pb4geLJPFviC5vHclHc4z2HYVlH33cuWhz0kj3ly8jEuznJJqxLEka7QAT1z6mm6dbrPIxJ2KvOT0q55lrEvzRlyOQzHGa2MyrGzNIAnLnoMdasRaPdXbAuNgPcn8qqyXYBzCuw9eO1S298QuHmYA+lAGjFodpESs0uXHbPWtGC1tbYosEAkl5PPGKxBqMEJDRx7245Y5pjajc3Eu2NXJI7f/WoA7O2uG/sfUC4+dQFIjbAA571548mXJIyc569a7bTo7ix8IXrToFMzg5YdgPX8a4g/McjgdARQBueBtHPiLxZpVgn/AC3uFUkdcZ5r9aPgtCtt4Ot4UOAjMo56DNfmZ+zToP8AbvxY0tc5WDdOT/uiv0n+D9yv/CORKcZPPX1rmrM2pnpEiAodvX3rhvG3h6HWbCaKWIOjKVIYcCu5RgehzkfWszUrcyI3AYduMVzbGx8Y+JbC5+FUs8ZR5tCnfevfyWPpz0rJ0/UbPXoftNlPkIeVYEFW9CK+j/HnheDUrOeC8t1e2k6g84r4/wDH3he++GmrSzafKRZSnKEchfZgeorqhLmRjJW1PS7eZ9ixqu8E447e9dHoZMl8kVwzRozBMngEd/0FeE+F/jbZ2l9HbaxE1o+donXlCf6V7hHqFj4jtIprSeJpU+aKRW3AnHqO3anJEpn0DpOtwx2kUEOCqqD8vYe1dDFeC4VCp4XHPrXh3h/xQhAiciKdTh492foR7V3Nt4ph06zeRpQDjI5rlcWbpkXxmu7OLwxdx3IUxiJi5PYEGvz3/Z/sr64+L1tc6XAZ7WFpmnw4ULCVYE8nsOcD0r6+13xr4c8Z6lqWleIdSjt7FbSSQxNKFLkDAUDIJ5PavmH4JWkVt4quE01mjVJnwQ3zeXyBkV001ZWMZu7Vj2P4uag3h2x07VUiScaffQzlpOdqnKsR6HmvV/ixYjxf4SguId7WuoWhXIjXbtlTIYvkEAHPAzn0rgvFmlw+J/DNxZzqW8yMo/tx1A9e9XP2bvGsHibwxd+CNdSObUtAbyxFMc+fCCcEA9cY/I4qXtcpb2Pgyewktbu4s5lZJ4nKFTwQQcEV2HgbVrFNNuNMvF8q5J3202Thj/dPp/8AXr1T9p/4V3aa/d+KtOsDapId11ZxAuVwMebkcc8ZA+teCw+TdkZIWQdVPc10Rd1cxasz1HS74alAsPl/MjAhsDrmvUIfgnNe6Ymp3d7FA7ReaQSFRAAeSe3HNfPekanqmjzJ9ku9hU5AdFfH5iuq1bxv4i8T2iW2p6rLNbKB+5XaienIUDP40NPoGnU5nxBZreavIiTC6hhPlpNg4Ye2ah8P+HpfEfi7SNEtIy81zMkZx2BPJ+gGfyp9/qMVm+xB5twwwqrzj619Ffs6fCafwtbyeJ9cQJqN7EqwwH78UT87T6O+Mf7K5NKUrIErs9m8Ya9daJ4F1QRqrPb2WLaOOPkF9wjXjrhCh/PtXD3caeCvhRql5IqLLa6c6iXHO4JsHP8AvYqz4gvrrxZ4q0/R7M7ra3l+03c6MCrzY+RPXC/exwAFxz24f9sDxfbeH/AemeE7SXF7dus04B5EKDv/ALzY/wC+TWKXQ1Z8dSFpXZnyxPzEtySTTov9YOOcGo/XPXrUsI2tu6ArjmukxK5UtnHFOyAo4yTXefCX4TXnxO1aSOOUWun2xU3M57ZzgAdycVzPirSI/D/iXUtPikMsVtO8aOepAJAov0AoW6FpFBz1rp9J09pZo0TljjHPvXN2OTKMkHH58V6/8M9Bjv8AFxJjI4XI+770gPWPA2mxafo0UIXfOfmz057/AIV9A/Dy/NtpsbSM0UKDp69K8R0m7t7WZIUBcKeVQZaQ17P4L0y91eRJrqPyLZTlLY8EfWsJ6o2ie2+HilxZxSBQdwBJ6c/T8a6y1AEYbbjAA4rktDkEUEabvlAHy11liymMgHgjiuZGzJpc9umPyrgvjR8MdO+J/gq8029T95tLRTL95G9jXoJPPXJxVa5P7iTIG0g8Gq2Efi9daWuh+ItW0W+aUGG4aBwgHQMRmtKX4eWN0c22pshPOJFIHbjNbfx0mW0+NHisxKJI/tr7tvHHf9a5qz1iyuNuI3jbcDlZD0967lqjkK934Q13Sw8sYW6gXpIjAg/h16VmRa1e2DL5sTxuhB4yMV00WuzQyEwXRZXJBilXAGPerkerJeB2uLVJUxtYhQwyaYGFbeLoZ43NwA8rqAMrjac9c1rN4ggm0+GBW3oHx5bHJHuDVe707RL9ZF+z/ZpAQPMQ4x+Fc/q/h240lfOt5zPCh/hPSgDo55TpzpMMXEMy7WEgzt/wrnfEenpZ+VeWqlYJx930PcUy31n7XA0Eny5xz7+9dBaQNqOjy2G9WZW3oT1/A0Ac5Y3rwx73XGMZJGQa7a58Qtqegxi0YGeBhhEBzj0rhLhm02d45VZSQRjHStSzv4007ER2TxfPuXjcPQ0rAdFaXbXqwXGSl3HzKjcHitqXw+l9C91bEeYw3Oi9M96yLXVrbXrFnEfl6hHHu3r/ABgdiKk8N6lviVo7jypF+Voh0b160AYKaq2J7W4QMFJXjqKzdPuJNO1JgMsnrntVfxPBPBrdzIAwVn3Z7VnRXLNjDHcec0wO8Fi9yTIrcMfQUVyUWt3cCBFmIA9DRQB+qcqq8oJOG9l4p+CgOWP0A/xqo0ygEbsD0AqITqrDEhX/AGfWvPOwuCQsRtX8xmpThcc8/WqzXJHt7ZzTFnDfxiP2VhzQItFhJ/GR+FR+bj+Db7//AKqYZ/M6MVx7ZpFuAc5x+NAE8CFmOSF+rAVKNrEj5iR1NVpLjCjbEXPoB/8AWpRK7Dpt9iaTAnLN2fGPTj+tLFhWyo3t35zVUOinLAn6E1KH7kbF7HbQO5Nw7EHKn36UKTu2kYX+9uqJXLnaQsi+meaYjhZyNuzHpSsItYAPA/HinCZQAp2n64NRCVeuDu9dwz+VDO0gwshGexbmiw0yyk3IVQmPTilMoZtnRvZQap7WQbSQT+FGGHIxn3xTsMvhgi8nkdyMUCX5SxIb8KqLIAvzk7vRTR5o+6uQT60rAWknV1J4U+wA/pSCTdyWPHvVYFkB3Zz7Himh9/LEZHT5qANA3oPqv4mgXAlOQ5O314rPZ92MjH0anxTbScdDRYDRMxkzgBvrxUQcHqxX6ZquZwh65+oFOkuy5H3h9TmiwFpbhf4WHvT0n2k7zkdu9Z5mB7Z+lDuuPl/d/TmiwGh54Y4WPHuP/rCnLIM8uD/s9SKzvtHHysQfU05JSpyWHPvRYDSSckkZwO2aUXG3gnNZ32jOMEe5yKe0+BjJwPypAaYn5B/A1KlwDwTgfyrF+04PB5/SpYpzyehAoA37S6CTxljgZ4rx79ubwDbeKfg42r7gt7o0n2mJxzlSCGU/Xj8q9HjuWmKoo+92zXCftcz3Vv8AAHWtjfK6BGx/dNXB2aJlqj8u2O+Tscn06V1kFhHpmjJMMGRwc4xXOabZG5vYlA6mtrW5HitmjDfKp24r0DkOevZvNmY45J6ehpkFx5LAKc54xUErmUn1FIhAkGeRnPHFAFq4mHA/MgYqqCW46fhzSyMHbKjj2NXIrMSxk4yxPXrQBTht2mYbRk1rxadIsIYr+BpdJtxDcEt0Heta6uwI8gcYwOelAHPpGkbnJwRyB6Ul3eSEbQ34VHesGl3KCGx64p9pps93gqCQOS2OKAFsYZZnZ1J6cse1Q3U0gdkMhcA/WtKeA2tqY42w38eD+fFY8qEsdwye2KAJ7EJvLyEcdiKsS3MYTIAzis2MbWwe57VahsZrl8Ipz3PpQAyHa9wNx2qT8xx2rUury2S22QYCgY4FQrpDxhmZcsPeqjwKcKeG9KAEt7lhc5RdzDpVi6tHY75CTIwzg9q1NK0yO1Xz5156qM0s81vK7Nswc9QetAGZpumSX93FbrjMrBRgZr9DPg74Msvht8MLWwQj7bdAS3D9yT2zXy7+zX8PbTxL4q/tK+/48bTDgEcM2eBX1N451+Pw54Pvrpgpt4o9ynODx/kVhUd3yo1hpqfPf7VfxMaa6Tw5aSgxQktMQf4uw/I/rXy+zBz1BOc4FbPizWZtb1e5upZGkeR2YljnqaxEXkY457VrFWVjNu7LvmhLfYhKn+dQTSliec4pNxw/GcU3GByOh9aoQ4MSCP8AJqSCJJZFVmwOp/Kq6jkjPHtUsb7HDY6HNAF+KxgiZurAfjWrbmSNAIo0iU5y7HpWMl+w+VF9Txz/AJ61LGLu7KYBHuxoA73xQv2P4faarOJHn3SMwHuQK8w2jcSGP5V3/j/UHk0XSrPyvJjghjXls7jjJP515+Rgd8elAHv37HVqH8falcFgvk2EmD9cCvtb4N6qr+H7TDhsrjjpxXwH+zdr39k/EGK3dgiXsbQnjocZH8hX2X8F7421pfabIdr2kxUZ646jFc9RbmsGfS1hKSg78etXnhDLk8E9u1c14auxcRqCSQRya6psEAE5/H2rlOg53W9LS7hZSgIOOtfPHxc+HwubKcBN8ZU8NX1Bc26upAGF7YHSuM8ReHUvI3LruJHGeeKafKyWuZH5a+P/AAxJo9xJGyssYY7f6Yrn9A8b634UlDWF9LDsOdhbKn6ivtT4v/CG2v0ncQ75CflP9a+MPHHhK58M37q6Hy8nnFd0ZKSOVqx6Fp37TN7NEiappySzRrhbm2cxuP0o8QftK6rdQeTao6oQMB2I59z3rw+Rdr+oz17VLIpJTuDzVcqC5c1bXL7W9QkurqZ3mfqQxxj0pNE16+8Patb6jp9w9tdQOGWRD6evt14qogyRntx1pGTAwOPWiwj608AftI6L4ht7Cw1SIaZq8jbHkY5hlJ+6Qf4ewwTS+NtG1HTPEUHirwzN9m1mzbeNvCzL/dbH6H3xXyrpE9raapaS3sLXNokqtLCj7S6gjIB7ZHGa+n5Pj54Ku9Xt7awtZtL0q5iRY4ZnMn2f5QpV2PJ6dai1noVc9n8DfEfw78cdHjtbhl03XoWJuNMdtj5HUKTyVPoP/rV5l4//AGUbbWrq7vbM/wBh3eA7bCptpZGJ+VFJBU8Z49cAVka94Gg1iddR0+VrW8A3Q31o+HX056MPr+dbuhfGf4heFojY63Z2njCyRBEGlIhmKD1Pfj3NZ8rT90u6e541ffADx/o1wY47MTrn76ybB09HANXdH/Z38fa7Osd0kenwH70jNvIHriMHNfY3wb1e3+LENzLH4f1Dw1BbnYTLMVVm67UC4z716k3wz01MC5Ml1ERgrLIWGfcEmpdVrRlKCPlf4Y/s66D4MuxqMhfWNVh5jllC7Ub/AGVGVTHqxJHZQa3fFXj/AAzaT4da21DUlISZxJ+6tI2zuYt/E3H1J7dq9S+JHwJ1/wATsi6T4iNjpSJtfTYIvKaQf3RKCcD8K8x1fw5pHwR0ea61e2NhbRvuGELF5MdQTkuxwfmJ/KhO+oWtsJoNvovwm8J3WtahI0Vvbh5WkmfdLI7Hkn1djwB2GBXxL8S/Ht18SPGmo67dqU899sUQORHGOFX8Bj8a6D4x/GPUfidquwB7HRYG/cWe7nP99z3b+VebhTng7T6ZreMbamTd9EIxIU+h55p+evOaaTgcdaFwN3pjp+NWSe8/s6eIo/DvhXxPcOyqd8ZA7n5WrxPxBfHUtcvrs43TTMxx7mr2k+I5dK8O3tjFkG4cMxHQgDisFiXOck59aVtbjLOnjdMiFcljivZ/BWqS2dvHBAm5zwqjjvXjeknddoSO/UfSvffhhp6RyC5mUs+PkXHOaAR7B4F0CPS1S7nHnX0oDM2P9WPQV7j4UivLxI/KCjPU5rzPwT4R1nWnilFs0cDEESScAj6V9C+F/CVzpMEaIVkGOQzc5rkqM6Io1tI8OukaSTXDbuDtTpXSwjyRjg44pthDLsw4AIHQd6nWNgdrdefaskW2SxOXTIOR7dqyPE+orpulXUrsFVELEn6Vsx8R4PY9cYrxn9p3xYvhf4Za7ciTZIINikEAktxV9iT8w/HOrDVfHWtXtwjN9quZHGxucFzVX/hFrSRJHt7mVSMcOnTPvWPqlzJ9ulZslS3BB6irdnrUcCkRrJGeuVk612rRHKTnw9qtmEkglSdTk4DdD6YNVnnv7GX99bSIQckAEc1d/wCEibyok8w5XJBZevetD+2zLCrIyyBzlhnnjrwaYGOviLd5qyAFHG3DDJz/AJNW11e1n0yW2YlS2MOpzRfzWV2pMtr5ZJyDjnHbpWZfaZbwwK8LFT6Z96AM6Qi3nIRty+oNdDouoJtG5skMCQpwQAa52JGjlL9QvJ962NCubOR5Fu0DszBR2IGeTmgDR+IUUJNlPbggMhLZ6k+9cnBdPFE4/hIxmuw8Q20Nx5fkMDCMqoc8j2964ogxsUK9DggUAdD4a1CW2uwI8FjhVLHg5rvbOzhtgZLiBYpsk5AyprymykxdRgHbgjJNehSX93NokkVt/pJkPy47Z9KAI/EOnI92hRlKSjqeRXB3Nm9tdyIcKA2B+fFdRHqP2u3jgaPbLGduD1FN1vT/AD4Wm8vDouOtAHPpCAo+br60VnMXLHacjNFAH6stIWPU01yc8gH3IJpSWU8sT+FJtMxDA4x/eFeedYbt33SPfBzQdqjnH/AqSRWyOn4Jj+dLGRzkE+lADS5Q/wAJ+jVJucDnIHsaQs5++px22nP9KbtlHUYoAsK2QN8jEeivSmbAG5jjt81QCNv4M579TTsnoyn8qALJkV1GGOaEnbOM/lVfp1BYemKU/KMht3+zjpQBbEjn77Ap2HQ/pTVkUPx09zmo4ic5xt98YqZF3tjcT7NgigCQuDFkZ/A01JGyORt9D1oztbZkcds4pdoduX2Z7nkUABcF8HAH1z/OnF1QZIBjHU8//qpohCnht/8AtDpSOiYOVy3ryaAJo50MfyY2/WgzDG0Dr7kmoURcYwAfXbQFCsFyefQUATKWUHPA/wBomhWUgkPjHbFQyx7WGCc4pyA4OcZ7c5pWAd5+ccDPuc0srsCpIwPoR/WmEYHzSc9uKZu3D5izHtimBYS5HOMAe3/6qDMh6Sn8gf5VSCuOx/PFSEB8bwGx0zQO5Y+1beuP1NLKwUAq+0nr1qmJWbrk49TTjISMIMeuOaBFpiQgJJHuBilEoIA3H9aovM7DCtk+gFOBAALZyeuBmgdy39oz8oA4/iz1pzT/ACAbsZqDewj+/kdhmmmTcAMce9KwXLAk+Y5Ofp3qx5vlpgnBIFZyuQeD05yecUplJOCc4HPaiwXNKG5KSqR69e9Zf7SWlt4m+BevQxg5S2MuB/EVBNSrJtKk8EelbN95eseFLyxmO9ZIGQqfcEf1prR3E9UflnoenfZ71h/GBwO9YWrXTtLPE55BJ59a6/xBpdxo3i6+tGUxm3mePbjoATj9K4bWIz9ulJOBuPSvQOQoRKGfDcckcU6VO4454qUQhIwT98mq7sxx6g9qAJrK28wksDtB5rRNwIIwgHA71n2140GMdD1461NPLkIuM/yoAla8JdVBzn0qxeysCIwTzg9elZ6YglVn5A9KtyuLu6LrkFuuO1ADbyycxKwBz1xV/TJZ7XT2LcMeMUTXEaqA3YVSutUJIiQYUGgCvdzsXbqc81W2uwGASOnvTrtsvnBHue1WrAjaS2MKaAIrDyhKEkU9c1stfCCPy7dQo6k1ms8IBOOeearGdnlChsDPftQBpxXkspxkH196qRkpe7niyD2NLZSLFdbWIx0+lX5byG0G4gNIRye1ADL67ik5JIPZR0qjZy+beKin5WYAcVWSczTOTzkE49K7f4L+F08V/ECwt5lBtUYyOD3AGf6Ck3YD6y+FvhuPwP4HtojCHuXUTSgDnJHQ/nXmv7SXjpk0OHTYZCBO4eSHPIA55/SvW9Z1hG09zpfyXUIwY26Nj0r4/wDjD4kuNe8TzPcRiKZQIiB6jviso6u5beh5/JlmyQcHnmmINvXg9qegYAcZpmPmxxu9Sa2IAqW5HTHNNJLA8ZI9BSrlm7jPWrMbKijBwfWgCGFSMkjgilDfvQOPriiSTIPYGmqeQQOT3zQBq2qbR8kYPpxV23cvOikhSSBjOSTWNDNNMNseSo61p6Jpck2qWgZwMzJ0+tAHRfFGJ7Q2FuxBZIlG3uOB1rg2Puev6V2nxRlI1xo2kDlSw4GCPY1xir1HcGgDY8GawdC8VaXfDhYZ0Yn8a+6PDt2lj8Q/PgJa1vo0kGG4/wA81+fpyNpzz3NfWvwX8Zt4g8P6JdPlp7GT7JISe3G39KzmtCo7n2x4UvVNwiKQowMt3NehQ7PKBIAJ6GvKvAyi4eGUDhlBJFekm7SNVzgHtiuLY6iwwVm4APOcmq13arJGRtB69qfBP5nzEgY7U25uRHlQRuPGKGCOB8VeG47uN12Ddyc9K+Ufjj8L1ntJ28vIAYg4/wA96+2LpVnTlN5HpzXmHj/wxFfWsyGIDKkEVcJcrFJXR+U+rWEmmX8tu45U4qCRcBCO4AzjmvVP2g/Br+GfE5kVNsEnKkDvzXlO7hcHgV2p3OXYkQZQjr9aXHGCOPUcmliwq5OSPbrTyAeD0NMREqjgNyuOoprDOe2KlwMZzgH88UjjHTr7GgDo/CPxL1zwXOrWd60luDk205LxHp2zx+FeoaZ+0XY3iBNX0p7diOZLZg65/wB09Pzrwkgjnoev60m0jJPOD2FKyA/Tf9nLxrpus+BrW40qVXhLuGGNrK245yOx6V7pZ3q3CfOd3HOTX5M/Bj4u6p8KvEUVxbTudNkcC6tQflde5x6jsa/SHwL42i17SrXUYG32dxbidHHIKkZ/P2rkqQs7nTCV1Y9Zt5gBlTx0x0qDVtKsNcspbS/s4L22kUh4biJZEYHg5B61i6Beed+9kkBXqB29q1hqkZkKx5xWJpY+Tvjr+wfpeuRXWreBCLDUcb/7JdgIJT3CE/cPXgkj6V8OeKvAmt+CtXn07WtPuNPvIWIaK4Qgn3HqD6iv2WN8h6Nn3/z+Nc34y+HHhT4mRQweJtFg1WKAny2l3K6E+jKQRx2zW0arW5k4X2PxuaJvTB/ummEnoOw9a/RL4j/8E9vD2vSNceEtTbRXbJNreZmj9gHzuX8c147qn/BO/wAeQhza6hpFxjp++ZM/mtdCqRZi4tHyaW4BoHTg19GD9g/4px3sdu2n2Yic/wDHyLxPLXHrzn9K9E0H/gmzr11Cjap4psLMkZIt7d5sH05K0OcV1Dll2PlHwRoc/iDxBb2VtG0ssjYAQZNfe/wT+BDadDFcX67mxkJIAcZ9q6r4M/sWaL8K5nupNRbV9RY/LcNB5e0dMAbj7175p3heOwRAGLAD0xisZzvpE1hG2rM7SPDUVpEoVPlAACgcV0VtYpEBsHC9qkW2NuB049RU8QUsQeW9PWsUtS2x0aBWx0J6UsiZOCMD61JtyeDz9aX765GQB61pYkrs+xGyeOuc18H/ALfXj8rpVto0Tjfd3G4pnkog/wASK+2/EOo/Y9PmbcFbBX6V+UX7V/jMeLvizfxQSebaWGIEx6gfN+uacFeQpaRPLVeK7tNkqlXjbO5TjIpi6fbFsJK4bn3FVPP3KxC4PqfWo0lVWywBAPO3iuswNKbRghQwTiUH14Oahe0u4MN5ZdexXmmwXeGJDEN2ycirsF2w4Do2eMMMYoAoR3k0DMTu56g06TUPtaFXQbs53KOat3Mm9yrKCobJz/Ks2RYnnxHlATj2FADXYhOhJ+uaiH7pweRz2qR1w+3sp49qJ41WP/a6fT3oA2oJ/tVqgZ8iIcZNY18266ckYz6VpaZ5ixuxGVx0IrJm5mYnJ5oAmskV5+u1iODXQ6HrdzZalDb/AHirYwD+lcsh5yOCPQ1bsJCl0G7+vf8Az1oA6HxDayWXiAOilJJiHwfWujS3luLR4yFMrDoG61h6oRqfkTM+5wuAT/hVG31021yRubegwKAK9xarHM6sgVgeQcUVYnjN9IZ8kF+Tg4ooA/UhLJgOV5pG04uwJXHrzXQtYjOec+vWgwopxIVDdge9ebc7LGB/ZwJ4Gfz/AMKebJxjJQfWtxrISEHbtx7U2SzGRkAn3ouFjDl04xgY3c+vFK9tvAAQcepxW29scDcv60SWrADAU/UUXGYZs8gbVGe+DSS2qKi85PfHat1LPP3l3j0Aoe0BAx8n40XFYwktmJ43j60xLc72yhP1X/8AXXQNB5YBywz3pqxjcSRjPf1p3CxifZwOe/pyP6UzyV3nh2PoAP51u/Z1BJAAPsaPsq5zz9SP/rUrhYwzASPlQhvUkH+VKYJfLPH4ZrZMO5tuD9QcUC0DfIVJz6n+tO4zESIqMspB9M04x7hwG3fga1/svlvt2bV9etDQEE7QT7jrSAx/LdWwSQP7pAFBTac7iuOxNaj25OdykN7mmrZR7fmUbv72aaYGdkPyWXPvQVI/hY+68VoLbGJSqcg+9MNs4HUD6DH9aLk2KBgZvvNn680eUYhgKefXmryRNzvYZ7E0zyXXrJuz6/8A1qLhYp7DHwQDn+7xSBdnbb9DirMkCqRuI9sLUjQAj5QU/wB7v+tFwKLljjCq35Cotu0+n+8P8KtNDu+6+KcsYP3g2PXBpgUslDkFT/u//XpGdgPlHP1zVlbVdx4x9KYYtzEZPB6EUBYi8zKAlW3e/FRsxwBVgxFSRuGPaq0w4woJB9KAF8wq3XdT/NJyTgA1XOQRkE4PY0ZLD8KALSyB1wOBn8a2tElxcBHIKt13DisOIcEjn8c/hV+2Vn+bPNJgj5w/bG+E66RdJ4y0eJirDbdwouQfR+K+L7+dZ52YZOfXsa/W++0u28SaXPaXqiZJE8sqx7V+Y/x1+Hj/AA6+IWqaasJisjIZLb/cPOPwziuqlK+jMakbO5575h3jBzTGyCDn6k0nrgHPrTmPGcYPqK3MhVTfk9hyKmB81kI7YqSxj3Jg/wAVSRQBLvPbsCeaANGe1SeFFJGSKda2yW67pHHfAqndTbiOSMcD8KoXN3JLtVzx0BPpQBZvpQxJHQkgc1QcEDdjJB7d6knbIyxyccE1Lp6JJkEemKAK8rmYgnrjqKlT93CGOcnvVk2sSc8j/PSqrzA4GOe4oAikk3Ee/pRGNjhuTjvTC5Bzz9a2tLhglt8P1FAFSyjM0pOCQOc066ZA5GDz1BHWrchhsLVth57j+lZk0xmXdxkmgCMqS2V4yO1e6fs86fBpllf6xcRu05IihGO3GTXhtm652nHPFe9eDNUOmeE7SG2AlJy7L6Z6Gkxo7XxHratBJNDcG3MYJ64IOD1/SvmDxNfyX2qyzyvvldy7MO5Ney+OdXnl8PzTmEZIww7jI6+9eD3blp23ZJFJAy4ZFS0A7nis44bJJ4/nUylplx2XpURU7s9cVQhv3cg05WO0j8Bn0pm0k/N+VPAKqTz9AaAE6DJOKfAR5gB5/rURI9hTlwnPT6UAaMLxRbiQR3wD1rX8JSxz+JdOUkKGmQFnPA56mudjTewLHAxXS+D7WJNdtpGG8pluT7UAM+IEgm8S3TBlYb2+6eOtc0MHpzz6961vEbLJqtw4BALHrx+FZgyMA8AmgACMx6ZA7mvWv2dda+z69faQzcXsRaMFv+Wi8jFeWRDKEA4HPWtHwlr8nhnxVp+qR43QSqzZ6EZ5FJjR+mXwd8WxS6Ukc77ZoQY5AT3Fdrc+JxcXJKvkY4UH+lfK2l+JpIZFv7KTzLS+jWSMD3/rXRad8Smt7t7e6LxkhcFgBnk/41yunrc3Uz6OtfGJCdvVeeamsddGoy7hIQTxn0rx7T9chvBG8c5MoJGM8AYruvCkyhCMg89u3+eaxasaJ3PS4kM0Kgdx1J6e1Z2r6OJIGG0MxBwCKt6fdo2BgBcdhnFa7FZV4wTjqKkZ8e/tI/AHW/HXh6eTS7KKS8iIkiTdtZ8Z4Ga+N9W+CHjbQbYz6j4evbeIE53Rn5cdc1+wU1ukjcDdntUNzpEc8ZUxjaRz71tGq46Gbgmfivc2NxY5E1vJF2y4I5qvuDbuB9c1+jv7QP7OvhPxVY3VybRdP1VvmS7gJB3YONw6GvkrSP2Q/iRrV3KkOlRw2gbal3czKiSL2YDk4/CulTTVzFxaPFfO2jATpz+NTWsEt5KI44ZJJGwAqLuJPsBX1fo3/BPvWp4kfUvElrav1ZYLdpQPxLD+VfRHwf8A2cPDPwogN2xbUtUwMXlxxs9lUcD+dS6sVsNQbPijwF+yv438aosz6edJsyM+ffAoxHsuN354r2PSP2HdLsoBJq+sXdxJgFkt1WNffqCa+sNT8RwWOERdzck7RzXB6/40gDl/ODKOoUcisvaSlsackVueRSfsyeB9DXizedgP+W0uSP6Vp+HPFOl/DFRpkLrFppkz5bSnCepAzx9KxPG/xIuCs8gYKqjG7jtXiN5q/wDaN+91fP50qt8ig8KDz+daqPMtTNtJ6H6Aab4ghudPjltJPMgdco4bOcis7V/GT2MkaBxknJPPSvl/4YfGweHohp92xNmM7Hxnb6/hzXpF541s9aiM8c6srjbGc5BHrWPs7M05z1nSviAl0wDsOeeTXVWfi2E/8tF9znrXzfpurbC7OTGRgY3Z/GtyHxKdoZST6Env9KHAakfSEPii3cDEgUY6A/yq0niCN8AYKn3r58sfE0itGGkIBPUV0en+LJYWG8sIz1J6Y71m4tFKVz26C9WXoc9+K1LaVSikgYI7V5lp3iaOSPzFYhAMk4rptN1lVCqzfP1K+lSnYq1zrlYDjI57VLGwAx+hrBl1RYlWRmHHJ+nrVV/EUSjJPsOevOKvmIsdNMyMjDp/Ws+S68p8jB561mjXreaMtv3bR16ADvWXqviGCFGyVw2RkHnH+f5UnIdjr0vFKltw9atxOGi4/DFeZQeKo48KZQVIzkdO/wD9augtPFdubQtkggZpqVgaPGf2u/i2nw28AXbRSqmp3itBbLnDbmGC2PYc1+W0tzJNO80rNJKxJZnOSSe9e+fto/FAfED4pSWcExe00hWtgpXgS7jvIP5D8K8CeJyFbBwwzmuqmrK5zzd2WBKuR+7XAGeR2p7Jbyvwnl467TiquJMHKHpx7UnnHbyMjvWpBObFN+0ORnmkayZcLvz6mhbpMDcpJ9RUnnxMf4sH3oAhlEyZOcHuQarbypPceueaszyIV+VjjJPNVx6qfm9aAHr1+YHPqan8kTQhRgY71AgLEdWHt61oxNGCFHMuPyoAsWWoeVC0ZwF24JFYTHcxb15xVmUiORlBOP5VXYckZyTQAn8PIIz3605GAkU9KZg4PGVpy/L3O4HigDatNRSBFLcuB0NN1aFGh8+NNuTgmskvuIIyG7/5/GtNJhJppjc9/wA6AC3nPlLkUUzzGhCrhunbFFAH7JLENvzGgQrg45H0oRNyEjr6nihELcsoPvmvMO0Y8WSMKAPTFARewCfj1qV228BtvsDnNEQ3A5Kj2FADHhAxx+XFRxRqxPB/4DUkpZMdVz6ikBEg6gEdytAAYh2wP97NMMBb/a/A1YRCTwdvuvNMcEfeG760AR+Tv4Zzx7UxoAf4Bx39atCJpe/H+yaaY16EdO+KAKT2yDkdfccU1YOe4988VfKoB8gOfejYFXcVIPrgYoAovFlSvG3+9nmmrAwHHT1JNXGIYdMD1oRBjgA/lmgCoV28MCfcYxSeWDzlQPrV9sGPYcken/16idUCFSAo9CaAKLW4L5zn/azmmPbjOS+T7girgRcYUj2xSCPJG5gPUf5NAFD7IrguWPHYGlTAUgA4960TbK6koRt+lMjhXaRtY++f/rUAZ6xAg7gKhe2IK7SD68YrTNmgxhc/QUfZ152AD1oAziACNzMD7U6UCXGBjHoDV5bQc7gx+pqIIrZ+Qt/wL/61AGatugPyqCfalNsHHz7WA6AAjH61daH02j8aSaEMoCjHrxQBnPAOysfYGo2t1Kj5efcVpCJeyFD3IPWoJISzEHIXPBxTuBnyW67SAFB9QOfxqjJH85A5+tbn2Qjnse5WoJbPAyQaLisYq2/zE5I4xz3qYRBgB3HYVa+zkYJ4444p/wBmH3uoHb/P1p3CxWjiKHaQcZq/BE2MgfQYzT4rcEKOOucitGG0wAQMZ9qVwQadFiRQTwTya8S/bP8Ag0nir4fHW7GIvqGnHzmKqMsm07h/X8K98hgOBjGBzV/UbKPWtFuLG4TfFLE0bKRngjFOLs7g1dWPxijty0hVvlPTP4VHJBsYjtjOPevUvj58LZ/hX47vNPdW+zTN5tq/qpPI/CvLixJYNXoJ3VzkatoOjdYY8DqeeKZJcsM8ADGM1E+5SeRn3oGHAOeT2xTETwzNK3JOaY43g7cn6VGoKtkZx705JCHyD+JoAY5LDaxxgYqxZEqjHoMVG/JJYZNIJdoGM47YoAnklZvUjt6VUJzIDgnnt0qyXyvHFRFd4JGD7CgCNzk5wAemBVq2kIi9D1qFYGPGcCn7/JxySOme1ADrgtIMZJB55qJfkXYw6d6d5gIyBgdsUoVGXJIGCOnagBlnEbi6hjGQXYDj3r25FXSoEiSRUdIwAF6HgeleS+HtNN5qsEcPMpYYX3r0mWK4tsJeRSnB70gMXx3qj/YUg858seVB4xXnaL5khzxjjPrXV+Nr6C6aFYySyZyecVycBy/BwM5zQBPhYt3Tnv61C5CtkcD0FOYbzjv0OaTASM7gc8Y4pgM34HPHoTTS+7IAGen9Kdj5SDjFN2AHj8jQAgUZxnFPiQyNk4H1pF+8e49RUokVRgYJz1HrQA/zwuRgE/Suk8CXZbWFjCBnKMAWOAOK5QDc/PI68Cuo8EsDrDr9zELnt0xzQBka07NqlyHOW3kHB4461R2kA9AKs6hhr6ZiAMuSD+NV9uG5PI5wDyKAJGjZ4VYYAzjrzTGhaMks249cd6es2EGclQfpUZdepBx7mgD2/wCBPj3zY4vD14RuiJe2djz2yvP419M6j4DsvFmko6LslAPzIOQa/Puwv5NPvIri3cpKjb1YdjX6Kfs3+J4/H/g6z1Dd+/QmG4XphgP6isammqNIaux5BqDa38Prwpue6tVfG4A5+v6V6h4B+J9teOI3kAlzkqzevtXXfErwtDeqwCc+u3/69fPXiHQ5dDvhd25a3kX5lPZsVKtNaj+E+v8AQPE6SRrhww7HrXbafqnmKVD7uhPPNfKnw78cm/tkhnYR3Cn5lJ78dPb/ABr23SvEkcaIysdzLu4PX68VhKLRspJnqcEo27i3HPfmpnkBjIxgGuT0rXluIEYEshPbuadqfiJbSNcfe67c+1ZlFK+0caz4gM1381lbgFUYZDv2/AVaub2JC0a/Lt444rj9S8bzEOq/cHbvUXhWafxbqhjRzDFHh5HP8Iz0Huaqwro7GXVd8LKmGYDI21zOu6zcW9q4MTqOSeDzXV61qlh4asiltEskmeVJ+ZvfNc1D8SdLvZ3gkHlv91o36g0khnkHi3x1JYRtMGB2xseTj8K8R8S/FFJruSVZMpIuRtbJBr6y8TfDvwz47tXjngClv+WkDFGH5Gvnzx1+xrqFu7TeHtZSeHqlvfDDD23Dg9e4FdMZRMJKR4LrfjSa9iZd4K4/M/nXJal4njhZgG3N6L/n1ra+IHwq8ZeCZiNU0maCDOPtCEPGc/7SkgfjiuSs/DU11Iu4EdyT2rdNdDIrXfiS8ucrGxhXvtJycepp+g+LNY8Pzb7G6lVc8xuxZG+orrtK+HqyAGQHPbI4rp7bwDY2sQZ4wx6e3amBN4O+NE12yQX9u8Up+UToSU/HvXrOm6xHewiaKTdgZ2q3NeQRaXb6cW2xqJDzyOnNTDxJLpXzwybCp7DANS9Que/6NqweVWlwFU9a7O51JWgSKGMSN0J6896+atH+L1lBtjvv3L9mX7p9D0r1TTPHumNYxSxXQl/djDKe/c/nWbiaJnpen+JJbN1WQeXBGN7sc/gP8+lbunfEu3unctKP3as2c9q8P174kwTWEdokokdvmfb/ACrDs/EsdlEyuwKEh3A5zjnaPqQPyqfZ33HzWPoTVvH7vZIm9455Bgq54zxzx9aqR+P5RbrufftByu/pXisnjmMRPNczpAhBOGIGOlcnqnxe0+1hkhtpXmY91yf1/Gj2Yuc+iNT+JqWXyifAAwCHyBXB6l8a5FkZTMNvLY3fdwOnXoeK8FvvGsmoQNIzyPKxykYXAHTrXN3FxeTyMzblycn61apoTmz6b0r4sHUryCJJNw4U4J57/wCFeoa74+i8EfC/VfEl22RDCdiZ++/RQP8AgRr59+B3wy1vxJcQ3UkH2axUhjNKcDGOw9eap/ti/E62toLP4f6QQUtCJrxweM7cqn65/KpcU5WRSbSuz5a1bUZdZ1a5vrg7prmVpXPuxyf501DtTbuXHfnpTIkWZiCdhx35qQWIxw4GOoroMQMzZGMe/NPEu6I5UMTyDxUbWbg5LgkDpUYhdB+vBoAsxiB1w6gEHrgjNNe2hJyrEDrVfLoDweO3rTRISNuMCgA2neQD3wD1pOA2BwOgx1pznG0DknpTGGBwOfUdTQBJbt+8BPrmr1ud9y0oIPNZqEDBOPqKt2mQ4Pbrj1oAlvo1SQt3Y/rVGT5mz1z1/OrF2wY5Axj+dVW6Enj60AIw98UYx7/SgbhkEcCgEAnnIxjPpQA7nHXaTVi2m8tlLDK8ZBqqGyuOvNStKSgXGR0oAvmZZSWIIz2FFVY5cIMqfzxRQB+zZbLYAJH+zxT1j6HBGPWq5uiHC4Vgf4sEmn/atoIzjPYqa8w7SV/3hBQkj2NOI2/d2CqyT9ssvsopzyeXwQefXn+QoAnb58bhJx7U0kD7w2iqobOc8/nTpJhgckfQ0AWVAQ5XBz/dH/1qbtyxJ69eKgaR4gGU5z6mlE4xls5PoKALKOqn5owfqc/1qNZVZyCgUf7tM84N1VnHs2KRJd7EJnPoDyKALDNxgqCtNBw2SQF9AuCKiY/LyCT6Cm/aT9wbRjtjJoAsByX43bfWhvvcAlvcVCJtoyDg+tPSc8MSSPY0AH3m+br6gcUvl4+ZRk+pFRuxkbKE59DTCXU4cg+oK/1oAlYsHycA+wwKcWVgQ33j24pse0pkDDeoPH5UrYwQxz+FAAsYVSRwPQ5zSA7hn5h7E0sKjYSMEZ74oZm7AN7igCJiHPPGO2etOCCToAuP739KbIq5HmcHttpUZnByOnYHFACMMY4BPuKRVYg7kDe4GKdsLAkjZ7LzQjc8up/CgCIwpxlsfXApn3P72PyqdF253Ae2M0eUrf3T7NigCsI85KjafdajKkHuD6ngVYO5ehApGfH8IY980AVjBn7zB89sHA/Go5LYEdOe9WYyWd8Nj/Z5wKV1yuMZ9c0AZEsI5I609UXvgE+tWpIRIo45pRDkqG54z+NAEVuhZgehB71pQxdO3H5VWiXnIHGc5zmtKCMHsSDxQBJChHr65q/AgVjjjI6dqhjABII5PcVaiXkH09aAPA/2uPg0PiN4KkurKDfqlkvmQlRknplfx5r8z9Rs3s7mSOSMxyIxVkcYwR1FftlLapdQtG65VhtOa+Av2uf2Z7/S9Wu/E/h21NxYzMZbi3iHzIepYDv9K6aU7aMxnHqj5AUbyAeR60NGYzjaeKlBKsVYFWU9DxinSSBsk8nvXUYDYotynjgUilEbJGCOKPN+TAXnpULyZ5OAfSgBZWBIOfxphJXJ7HpntSfUE9gKcR14755oAUcDjkn8qWOT2x60+PDqwPOPxpHYJg0ALJKQR1OfTtUT5ILc/WleTn1zTd3GT370APyNmPz9qIwWYrwv0pUQMnv0zThiNuDk/lQBveC4mOqbkZl8tdwZR0PrXbz6rO7Lul+0Mncn+dcv4Cit/KupJbowPgBMDIY1pSyCJzuJVfXHDUAcz4qvlv7xpEj8sHg46fWsKA7Bux+ArR1ecTXksiDapPA71mFyuAenrQBMXDKf6VZSGN4FPBXHIqlEOTk5HWrAyI+CSR0zQBFMFRhtxUJxnk/gKViSvv1pCozyMZPegBDnLDGPT3p/PIGQeo9KZ15AxinFtuMdfXFACh8E9z6eldD4KV31KaRfvJA+FzjORiubz1yRz3xXUeA5UF9dmRTKGtnVUBIznjrjtQBiXQDTSbjwCTnrUR6dMD1xzUl0As8ijghjwf5UwHnngjPegBD856HA5FJhVGAuQfxocEKMH64qMBicZx2wRQBKoGzG3FfVH7D/AI/h0bUNZ0O5nWMz7Z4EY/eIyGA/DFfKvzKhAOat6Lq954e1O3v7KdoLqBw6OvUGpkuZWGnZ3P1B1/XbeXJJXB5OO1eOeMprS6ZwroAR2P8AOvF/Dfxi8R+M7OVIoWuLm2jBmWJgGK5+8Afw6VieJviHqUylZbaa3OBkMuCcVlGFi3K528s7WNwJbdykig8g4zXqPgr4jSXMSQTOiXCEA5bgj1FfJEvjO8aR8swj6AE5xVvTvHV1BdJcJIVljYEEVo43JTsfopoHiFjbFlO5ScfL6/4Vd1LUYMEvITn+LGfwr5w+EPxntdaWO0upPIu1B+Rhw3HUf4V6PqfjeziikEkwAiXccjrnIH9a5XCzN1LQd4n8Ux2Ym+zjEi/xuwAarvwy+I9tpXhrUb24mWN3uCm44PRR/j+pr5x+KvxLW6kC2TlR0BA+teSnxjq9q7PFdyRq3LpnKt9R9K29ndWMubW59oXXxMa8vnmkbGfuhn5xWXq2v2GrosjPsnXlXUgHNfI9t8UbiKcCWfJHBYDIPSu28PeO5btg7OJUXoQQapQtsHOfR/hXxvcabMsU0nOccnqK9XsvFyXMCc5YjJ/GvjrTPFkt1qyyCTqQM9eK9Y0fxzbpEqyvyfu+prOUClI9uuxa6nEUnjRkYYIIyK8v1/8AZ78OazeSXEEb2Esh3Yt8Bc/7uP5Va0/x1ZXThBMTgZbOa63StdhnIIYMBj8PSs7SjsXozyPWPgJqOkxu9lPDcjjCuCp/wrz/AF3wj4g0gHdpFyy55aJd44OO3tX2FHfQypsbDZ5B61TvdNtrmLIUA5/Gmqj6icOx+fviTVLuyc+dZzQuB/y0jK4/MVy0UOteJpWj0/T5rhWPVIyV/PpX6D6z4Ns9RhZZYEkUjBDqCK5Wb4fRWMHl2kQijXgJGMAfhWyqJkcjPkOx+BPiC8VZL27t7IEZKElmH1wMVaX4P3OlvkazcoSMfuRtB/WvqKfwfIVAX5W287hnNUj4Ca44KqzdzjtT5xcp8+W3h64sD5aTSXTL0eXk/hxWhB4W1S/3KN6qeSyg8e1fQel/CQtLueMHJ7+n+c12ukfDCK1RTIgAx24/SpdRAoXPkOX4U6hcsfMMh4HzODzQPhPMhGVZ8dOMcV9j3XgqFYgEHyrw3A5rmtQ8PRANtXDE52gcY70lUvsPksfK6eAriC8VGiYgnnH1r1r4V/CC21K/iurmISIGyI5AMcH/AOtXY6voFtbTRtGgVX5bHr/n+Veh/Du1Szt0MaqylucevHr9f50TnoEY6nV+JY7T4cfDPV9aaFEg0+zefZjAO1eB+JwK/JbxJ4gu/FWv32rXzb7y7lMsjc4yew/Sv0b/AG4viTF4Y+BTaKHDXuuypboF7IpDSH9APxr81EYFhldx9+1FFaXCo9bEkLiMkk8+tSLcIMfKc46VKVgwp2ZJ7E0skEDRgiPB7kE10GRA0wGdufXrSGUY+8cj8jT2WN8AJ0+tNMC5HHfmgBjSAE4PHuc5qPOW4/AUOCpK9yOp6U1RznIx6igCYrnbz09qawwfQ56ZpN+OpIx1psjFh3OR09aADByR6d/QVajIMJOdrZwPWqi5OACT61IhyvB6AdsYoAmmJ8hRjkcdagCjHfGKdJMcY4GfT1qMZwQfpQAdCBik2k+mRS4BxxnvSN8p/HpQAD1HPehSW64zijGeBxSrnr2HOaALcdlLKgYdD70VH9plwMyMPTiigD9jt43AhialSfAIYhSfUc1TVio2k8/X+lPVeMkM2O4O39K8w7Sw5II+bd9KVlYcD/x6qe/zSDnfju1SmQg9Nv8AWgCdoxDgrsYn0NR4Jzlf50rswxyV/rQSH6gH9aAHb3jGSDjp8oyaQMGJ3Y/A80RlSSMZ/HFNWMFjzn6GgCTBYAKOnoCaRSwPCAe5p3lPHgggfX/9VR7WJJyDQA7c2eX49A2f0phJDHkkehFSbCAO3uKA/YEkigAByg4P8hSLLztwMeu7JpTknn9RTcKD0BPpzmgBxcK2SST6DrQWVh94g+hODSMqlfunP+fWlEQKcEj2oAaHCOBliPzFK5Z2yuQPQdKNmD/X/IpwUdPlJ9xQA0yuJApV+fcYqVoyzDkj6GkRCAVZV57gUuzyCBkHP+zQA8KYxyQCfxpWXOBkHPXmlLqeicd8c0weS/8AqwR68df0oAdsVBwQfrURzxnA+pp/C9AV/A00SGX/AGsepzQAS5iwUAbPXjGKia4YDksv0xVny/UbfqMVA0KycbOh780AIfmHIAz3FAY5ww+X161KoCgZGB7EVGQwYnaCp6dM0ACn5uAMdutNYAZ45z24NPEmQRyMUijr7880AR7QQT39aXbhsdOMUoUo2R8oI55pw5PHp370AOQfkPSrcQyOMdvwqqgCnOPwqeKQAdMHGSKAL8b46cf1qynIHIzWfDIc8Hn36Vbjkxkbu9AF6MgBc1Df6fb6nbPDOqurDBDAU1JfmA6U8O24Z5PTNAHxb+0n+yPDqTT6z4bgW3vACzQRrhZOfYcGviLVtIvNEv5bK/tpLW6hba8co2sPzr9qpoYr0MkgBXGBmvn/APaB/Zi0j4kWX2uGBbfU0OROgwenQ10QqW0ZjKHVH5jOGIA9O9NycmvbvGf7Lfi3w2sskMKXsEeT8jANgegrxq/025064eG5heCdDgo64INdSaexha25X6sMfnTsAqW9+/pSgBl6YpoJz82RxxTAfG21Sen9aY5yR3pM5Bx19+9NLfMR3x64oAD90cdKB8p6ZFBDMowO/c09cFRxnj1oAF4zwR6ihsswOM57UjY3DPB9aQMTzgfUUAdz4Uj0+HSf9KkKSSOWG3pxWjdhYjtWUzWuew5ArOsLqG00+3guLYOAm4Hvk96Z9t8sO0Qyn9wigDl9SIW4kKnK5OMiqLc9+ParF3L5szNjGTkj8aq8DPUn270AT26h5Am3rnvVh4vJQ5GfbpVeF9jLkYI/nU9wXaLGevPNAFQkkkjHPApEH59KVRwc4/E0hbHbmgBz/kAeopoAO05x/WnsAAp/Ooi24YwOOg680AHJ9OPXtXZfDFN+r3pwGIs5No9+AP1rjiRwcV1nw9cJdag4HItmGc4AyRyf0oAwr5Nl3OuApDnIqHouQOvc0+7C/aJFUhhkjI6Go+cnnjHOeaAGS/Lg4655NMLMccDj2p8mSAMYxzUZJ4IwB1oAUOScEcmgZ6kFfajcARgZPrTNxXAHWgDrvhh4zPgrxjZ6iVDWvMUyk8FDwfy/pX1D4x0PSfEFol5aiF0dMo8ZB3cdQa+L92Dntn8q7nwd8T77w9pr6e8peAf6ssNwTPUfSk1d3GmdLr/hBIZJim3CtzgZFcRd2DQvkcHPQ9a1Z/HEt08hLbjKcnn+Q7Vl3F3PcYLcHpz0piCCeaxlV4pGjZOQyNgivY/Al5rfxB03UERWluLWFd0m/DScnHHr1rxIyhXBOS3cV3fwu+KC+Bp78SxyMlzGqDZj5WB4P05P50mNDde0a8sLpory2uI51PMciHI9s1zF/A8+Y1Rkx1yME16Vq3imPXW+1SlyJeQ7DFYVwlvc7cYY4wKEB53JpTqCSOgzwKbbveaZIHhdwOpArs20zbcGMAD0BP8AhTrzw88YUgKc9hTESeFfHUKYjuAIZh3Ydfxrop/FhUiRTgkZGD90egrhrjw4sik457HtTRpGo28YCNvReitz+ApWA9A0bxndW4aQOWMjZHuK9U8H/EeQO5lkO3ds/Svm6C4uYZS1wjBsYLA10Ft4nMK8bvlI+7xx/nNJxTGm0fXdj8QUwpa4Bz3z07VuWXj2KX5DIOB94nvXxvZ+MZ4Osr7R0wcZ+tdHp/j2VQxWXk44JrN00Wpn1zbeL4p3RfNUjOOTWnHqVvcyr+8QjH3d2K+Y9E8etLGP3hE/QNnvXU6H42H20Ca4OFGSazcC+Y+hhYwTKJCFwcDC1ah0W2RN4KEEcHFec6F47tnbElwwRgAeOMe9bGqeNLLTtPM63AaFiI8rwyt0GfUdKy5WXdHe2q2scZRcHimzatDbPt3L7EdfyNeOp8S4vKkcylH3EA9u+c+3FZ+p/Fixs4N08xbAPIPcDgjNPkbDnR6zf60rhtsnyjOOnP4VwGr+LrSylYySAlmIwTjj1/z7V4V4r+PN1dPJDpm9pSNpkcYA7fjVn4eeG7jx9dldYu7iVnO8eS5Qg568VqocquzNzvsdP4i+KWniQIJ1Lbs8sPl5rS0P4y2Wi2H2u7uYrexjwWmd+N3Uj3Pt7V4H+0/4W0v4V+L9M0vQri4llltPtNyLmTzNhZiFAP0BP414lfa1e6jGsVzctJEhysecKD6gVoopoi7TPQvj78aLz40+MDftvh0qzUwWNsxzhM53kf3m4J/CvNUjdTjaemMAUyPlvT6Vaa5PzbzzjqT3rRJJWJbbGL5p7HPbigmcoAVYYoN02Rn6Ugm+YsTjA5piEDOoPGD9KGmkAxggjsaDcdOTj2pWlJHI565FACZ81WypZvUDpQtuNuSAc1f07XZ9Psr2ziSNlu1CSF0BIGc8E9KrzsEiQDG0UAVXKngdj3PShIgcMDnFKuGYkccdvWrkaqY8Z+btj+VAFIqAOeO9LHHuOc4xzihiWJ35yp5qeFV3HIOOM80AMFuDng/WoPLO7p7c1bnYwFSPun1qNHUNnGM8UAMNqwBOSPf1pvlkHBIPfp2q2ziSMjIyP1qszngk5x2oAfbweYDnr0FOmh8pTj8jwc06GZY1BwM561Jcf6Q4ZOT049aAKoU4HOKK2bbw9qVxEHitJpE/vIhINFAH63+WC424A/u5pziQN02jvkU13w2OPwNSI0YRuQD/ALteYdo1II2HBzjuRmnrEvPzA/QVF5/B+fP0FMWV2znH4UAWkZuc/o2aYkqqT8wJ9G4/lVdbgnPlMw9cGnM4HXAP4UAWDKG7KT/tCgHOcYX8arswAGWZh6Y6VLHKEGSSAaAHgH/lmzE98iiPKMcsM/71AQNyXJHXgGl+VjgMOPWgBzqrDn5hSps2gABR9KgmXavyr82fwpyvIIhjP0ycUASjcX24AT+9TvL2DIIIHcZFQlmdMEZPpnihW2jBXn0FAEwUsQxOB7808uEjOGBI7Dr/ACqOMGTthf7pp5UhSuF20AAlLpnaM/XmkV/73B96BgDGVpTGGGRgn2oAlWQBCAAQe5HNMRiB8u0/VajKSE8Lx35pdpB6tg/3aAJHfJBbt07UjzFyNwDY9cU1odx+Uk/lStE6YyTz0oAkWQsCVwvsaZCxlB4PH90Um3y/vnk9MU54ufn4+pxQAjtyMjd9BjFKmAepX6D/ABpSSAOW/CgB26bs+7EUAMOznnP50wgY+UHP0qRY2Qk7c/U//Xoyw6tj2FACBflB39e2elI5JOByc8HqacitvyQQD3zTwuSaAISpbBI5/WpQq45PJHr704IVAOevSkI4GT270AROnzZB5pqu2TnBA79KeAGJ68j/ADzQgz1yfp3oAmjc8fw++atwvtI556VSA28VYVjtyOSe9AF7zsYIPWhXzgc49qrIcjrT06jGM+lAFgtk5z/gKa8gckNjg1GWGcduahmbBLAkN7UAV7/S7O9BWSJTnPavIfid+zX4c8dWcwlskWdslXjXDIcccivXVkLZ3HPHFPWQjIIyKpNrYTSe5+VXxS+AviH4catcRG1mvbBclJ44ycDPQ4HWvNntGj4ZWRh/CwxX6++IfCmn+IY3W4hSTcMHIryLxF+yr4X18ySPYJvk43Lwa6Y1VbUxdN9D815Yhls5BB4JoVTgN3719WfEL9ijU9OaefQJWlRckRyt+OK+Z9b0S98OarcadfwmC6gba8b9j/nFbKSlsZNNbmXtC84z/wDrozj6ds1PtBYcAEHjFRFNwzk47iqEMYdx1PanJhnGeOccUALjkYP96prSItcxgdWYDp0oA7eW4FzHHE0ahVUKD0yMVn3YcBiDtA4x7Vbu7dopCWXg/wAQNZVwHSF2J3jpmgDnZ+ZM9T3NNIGevXnNOYZfIyM00RFhnHtmgCbavXIHtT5XG31+gqFRgEMfpTTknHABOKAAtkg+/btSAYPDZ9ADQT8pz/jTRkIeSfbtQA5m4BJ6d+1ITlc5x2puOeefWgnkk8DP50ADZx1wfTvXa/Dq3tZk1iS5u0tlFuVO5ckgkdK4sDAJ6rXVeCnK2+rMVDR/Z8HnocigDDlwHbaRtJPP+NRHAXgkdakfO4nI4JP1pvDdMn0oAhmBba3IGO1R7g3b8u9TXOeFBJA6GoW+negBFIDZ6D0pA20Z/kaXGOcHj9KTA6gcCgA5pd3POfbNGMlunNBGRkDoO9ABv+TAHvxWjY6y0AKT5lj9e4rN52EZ70YABJ5NAG893aMpII/4F2qlNcxZG0lvSs9V8wgY4J4qR43gZgwKMOobg0Aa+meJ7mwCo+JbfGNjn+VdTpur29+N1q6xSgfcc85rz0NkdB7UsMzwSLIjbHU5yKAPVLIPJOskwDDqea3Li6ijiXhTkYJZuRXKeF7+HXbcx7il0F5UH73vUuoNNaMyMPM7cnjFAGrG0dzclFbdgZJz3rQt7FNoYLuJ75rlNEufKkGWySTwBgmumXVFjAQSgtnDKB0/HvSYGimmRzRbWhVs/wB4cio28N285ZmiCY7KKkttZjAABGffrUi6rHL8xcE+g7e1IZnXPg+Byxjm288duaxLnTJ9PkYBQ6qeq11M98oj37gFbH/1qpRyLc5JbgjPzelFxGfba86RbUVkZflCnr6Voxa5NZxcNvI+cncOuKnbRra5DcHzPXpmrfw98H6brPii7t9VWWe1t1WTZFJsJycEZH4UXsMteGvGVzdMIJMjfIpLf3VByTn8MV1eqa3f3byxW7s8LHKbxgD3+veuu8YaJ4Y8N+FbFdJs4bZmuHJlILSMu3G0seSB6Vw1prtrEW807VzwP6YqFZ6lbaFE2V22ZJrllAJJOcZ//VWe2lK0hneViSuMNkj+VWfFHjmx0u1d2lGxVI/3jxxivJdW+LV3cborKERwdAX5OO9WI7iPRx9tRflYEgkV7d4d8U+H/hZof9t6rdRx+QCUiBG+V/4VUd818dv491fzPMSZY5B3UVl6rrmo65MJb65lunHTzGyB9PSk43FexqfELxtefELxjqniC/z515M0gQnIjTPyoPYDA/CudQfN1/Sm7m2/0pw+Q4PBq0IkAHbjnoDSNweg+vrTM5X0PekwcYPFADyOD0NIOBwOvOSKbnOewFOXOeq89sUAJzyffkClJxgYHHfvTQ2T/nrS9VyCR7H0oAcpDc9O/wBacZCYyrHFR4Ck7SB3+tKcgY7elADi2MDORjFAkIUkHn88U0FlI3cLSgktjH+NACudzZPB9u9LFMQuMnJpoyeDkY7etKeVP9fWgCV2yoBO761EGbG0ZFM3kknI68Vt+HNPiv7kRSAnkmgDJVSrEg4A7etXbLSbrVJUjt4Xd2IAwM81a1qw+xXjKoOwngnuK6f4YSj+37RGIwXGR70AaHhD4Janrut2Vneq1qtw2BuWvuf4a/sZ+FNL063lurWO6mGGMkiAk8ehry5EWLXNFkHIEq8j/P0r7b8Lyf8AEogPUlQf5Vzzk+hvCKsYem/CHw1ptnHbxafCEXoNgortQy/X8M0VjYo8Gu/Ed6rfKI8Y6BT/AI1BD4wvV+Voock90Of51XuBkDA+lUZLcuSR16UlYrU2f+EqvG6LGCOwB5/WnjxPdHlkiI9wf8a59VKHGeMVP5THbwPaiyC7NVvFF30jht+vXYen508+KL116RAeyn/GshEIY7vXr/n6VMsbMRjBAosguzT/AOEhvV7R/XH/ANercGu3bcbYiT0wP/r1kJCwxgfKfU1ftrdm4YgjOOtLQLs0o9TncZ2hsjoc4/nU0d9O4GQox6ZqvFEwwCTxxkGrix7VHHIHepKGefL1IBOehFJJdyheDj1FOkGBgDP09Ka0Qxk+vXvSAYupTEbT9M96UX0wA6D3HWoihVxjp1zQIPm3AEcfrQBdivJOCWyMfxd6nW9ZSOEx9KzVDbgOQRxntVmIYZQd3WgC+LyTI4AU+2AaeL45ICqM1UzgAf8A681FJL8qt+fuKALp1ByTgJke1RNqU3PCfiDWa1x3yeenrTftG0/L6UCuaZ1OdeyHPt/9emjUZwDhEGfY1nfasuB2xjB7VL5pZB3460DL8d/KMZI/AVPJqDsPmxxz3rJErLgd84wPWpBLjk49TQBoJcEZyA3GTSm7dTn5fxzVITELjPHcVCJ9zYA470Abcc+8DcF99uaek+H+XB+vaslbwgKF6nnmp4pweCc4/nQBpLtBaT+InqKUSDGeS39Koi83R4zjPvTkkJbtgCgC4z/MOn1puRjceWxUUcgbABzj0pWfB/iH0oANwVzxwTz/APWp6yZU8ZzxVV5QdvtT1kVVGCOeemDQBOTtY8Y4FTJLtyM4+lUi4xycepNTRuGXqQPSgC7u5I9egFSrIMYI9eM1ACRgn0BNKZdoJPBPfFAD2fPHaoXORyck9803zQDyPl9qZJJ3yM/1oAQnB64+tPKblGDj3pkbBgQRk570qkEYH/1qAIn+XoDwetRGcpyBjtmnykfMenU8HtVWUF2/zigDotPhje0Qugc/e+bmvzF/bPu7Sb49azFaIii3jiik2DgvsDH/ANCH5V+mqy/ZNPaTcFCR5+nFfkZ8btYbX/iz4r1BsES6hIBn0U4H6AVvR3uZVNjiRISSCOM5qVYmlGB19jUIAZvXBxzxW1p6FYicc9812HOY7q6MFIIP0q5pwX7ZEGb5QecCkv0Amzj/AOvVnRYEkv4gflAz1/GgDXdY5pHaK4JLMch+KqahFJHbtlSQP4lOQalfauTtXuQQcVVu3mEDFXAUjoTmgDF5wAMn19qE44HQ8+tMdxv4B4weeOab5uQCfrQBNtwMdT71Gy//AKj60iSdznHrSCUDJB49qAF7cgH1x2pMKpAznnOKa0mOBjnsTQBkY6elACDOQc9ecZp3GMDIPXPrSM20DPXuaQHjOOMUAKRz1GeT713Pw98uLStflMaSOtuoCOMjlh3z1rhCCTkdK7HwNdCPSdfjYtmSBQAOhww7/wCe9IDn5W/eNxncTwAcU0fMDxk5xjtRIn97Of8AaoZSSAcDA7UwIblApBI68Y9KrqODwRjpzVi8AKLjqKrsSqjHHfrxQAAkkkjr2oB46DHrQFyeMmjHOCP60AIcjtkHoaUYYn6d+aBhjgjn0oXkEZ/WgA5IHYe3al3ccdup70gwB2HHWgEqp7qeaAJo5BGQ/YHgCu78TaNJ4n0BPElu/mSRIkdzEByuAAG4rhDEfJBAG4nGCa6v4ea89lqg0yVwbK+/cyqegB7/AK0AcgOCeQvuBRwfU+oroPHfhSbwb4im0+U7o/vxODkMp6HNc6Mc5yOec96AJbS5ms5lmgkKSKeCDzXQN45ubmJVuI0dgMbhwTXNDGMDk0AAHPcd6AOwsNdtpnXe4jPo3FbL+RIoMVxhsZODkV5sMj2P0qSOeWJgysU9CD0oA78XsluQoYOv94GrNrq3mlVYlQpwGB61w1vr0sYG8B89SeuKsx+IUX/lmXPXrQB3f9oRmQYOQeSM1ctrm2YqNwwGB+Y9TXnNv4oeOfc0KEYwNvBAqw/ilZIdiREtjjJoA9Tk8VQwaWZJdqbgyjjrjvUXgfxJb2txc3k8yxNcMFAd9uQvc/UmvHr/AFm6ndVkmO1VAWMDgCqj3s0hKvKzEknHPWgZ6/8AFD4ySXLQaXpMkcsMCMXuBz85xkL24AFeWz+JdUu2zLeysewzx+VZgbJx60hAGOPmJ7mlsIknnlvGBlkaRj/E7ZqL7uQMnFLnpznPTNLgDGOhPSmADHQkEfzo4zx07YoPTHftTSMDPqemKAFAIzj+fNAPPYfSlI2gY4HbmkbPTueaAA/T6UegwAOtCpg8nrz60AE8HnHSgAzwT9e9BG4Hv9Dmhgoxx+GKAQOSeKADJBoHf+LHalXJPcd8+tN25yR3oAUYBznjrkUpJz1z7elLgbec5ppHGcEgetABjJ6n/GlwSB0J9e9KCc88DHANKoJfA4+lACdcc04jA4Ix60zAJx0p+AVyeSaAGMBzjFaWhymG9jOQoHY1n8MoyM/hUtnKySqwO3B7dqAO28SaaboJMDxtyazfC8htNUidHMbKww9a9vc/bNOZHzgjFY6wG2k2g8k9aAPrzR7lbvRtNuInEjI6NuHbmvs7wNLv0K3yf4fz4r4O+GF8s3gyGPd+9jXoD93mvuP4dSl/Dtqc8lBz+FclTQ3gdhvJ5Xp9KKrgj1orG5pY8KuLcg9RjPbvSxqUGSOcZwKnuf8AV/8AAv8AClj6H/dH9aYFFrfJ4GDnGTVqC3YjkY7UH/Vx/wC9/SrkX3n/AM9qAKi2YPBJYH/69PW26HOe30q2f9ZF9f6mm9l/3qAI/s2BuHWr1uhyMr17dBTIv9T+FX4f60mNIljiJ4CnFWFgyuSCpHvT4uj1NP8Af/Ef0qRlGaIdMexqsQxBBAwDz7Vem6tUL/6w/hQBXCEfNkilCAsc5HfFWD/q/wAf6VHF/F/vf4UANEQAJIPvUsKY46ZHanS/6lfqv9Kkj+8PxoAYylc88j9Kp3XL5PI61oH/AFZ+v9aqXPU/7g/nQBl3Hyk4xtyTxVGW6eJsYHPf0q5N1FZ1x/qx+H86skIrliQCMk+laUVwW+7xntWTF/r0rWtOn4UgTHxy7jk8ZHApxmxzkE+maiXp+NQt/rJPqP50FFvzgV4ORTlwW4I9/Wqyf8ekP1H8qmH+sT6j+tFhXHPcbXAIz34NIbwFB8xxzxmqdx/rX/3TSf8ALJvx/mKLBc0VvNy9e3ABqZbvGPmHPH1rLj/j/GrEf3D9P6UmFzThvAhIDA+9Sy3gJwcVlxfehpZPun8aQXLwuBu9M9jTluhkgnAz0zWeOq1Mf4fof60DL4nB7jJ71btn3c9j2rIH3H+n+NaVh/x7D8KAL5m2qTjtSeaCOx+tQP8A8e7fQ0k3RfrQBJJLt9+Oxqq8+SevPpTZPur9KhH+rSgC0LkDGOM+lSCfJHoO9Zs3+t/AVND0i/GgCw8mQfTFQp88oUtzmppev4VV07/j5T6igCx4x1JtK8J6nOqn5LZ2Htha/H3Vbp77Ubq4kbfJLKzsx5ySSa/XH4r/APJN/EH/AF5S/wDoLV+Qs3U/Q11UdmYVB0C5mXgelbMByMdyc8VlWn3k/D+Va1n/AK0V0mJUu4W84jqf5Vc0aJDdN5iZwjH8cUyf/Wy1NpX/AC1/3G/lQBUMkQb5g20eh61DdESREqCBjnJpYerfQ/zpLr+GgDLbls4GcZNNfGeO9L/Gf96kb7p/z60AGcHHYfpQB8vqSe9LJ0P0H9KVPuH/AHh/KgBu3PfJoIBYZAOTj260Sf6tqVf9b+P9BQA1QR0H45pMY4HanN9xv896G+8v4UAIMr3z7V1XgyJpLTVzlRH9nzuJPXIwOO9cr/y1b6j+tdX4K/5Buuf9c0/9CoAxThA2Y8sT1Jpo4P1p7f8AHw/1P9art94/UfzoAkuYXaNWVSVHX2qhnnA47Vp3f3F/H+VZ8fQ0ANJwccY6Ufe754ximxf6xvwpy/6t/wAf6UAGeQBScEZHI96Q/wCu/AVIv8X0oAavz8AY+tTWcv2e6ikZRIqtnDd6hj/4+Pw/oasCgDpfHWvL4p1x78WkOno0UaiG3QKi7VA6DvxXLwSlJY5AcFDnPpWzqH3pfqaw4/vH/d/woA7DxX44i8S+H7G0ltib62AHnsckgVxgwA3XpUz/AH3+pqB/utQA4Z7dugpSdx6A/WiP7zf71NX/AFRoAVBxjdjNBAXnrnj6Ui9D9aaPvPQBICe/b8BSEgEUkP8Aqm+n+NK33Y/92gA6ZBwTU0UZJxkHnAJqKTr/AMCP8qsfwxUAV5TukLYzRjpnIB5pF7fj/OkXt9aAHA8E9R3NNbOBhvwpZP8AGkfr+VAChRjII4PSjbk5J59qdH99Poak7r9KAIQCM59PWgjBHPFKP9bSS/w/73+FAAM5PqfT2pV9DwfY0qfeP+e1MX7rfUUAOLYIPB9c0NkdecUR/wAX1pF+6n0/pQAp7dCaQ4PUjPapE/1R+n+FQDqfoKAJQFyc+mc0Ke2CSfWkbt9KkH3V+tAERIz19hThg4PUUxfut9TUif6pP896AEHfnt2pyg99uT396IfvP9f8Klj/AIv9+gCuMhvQZqRSMcd+oph6r/u/1p9v/q2+tAEsibogxIHHJFV0J3A8881ZH/Hoah/5aH8aAOy8PzxtbhWxv96vahZbmVh0B/Wue8Nf6411d32/36APU/hTdCPSriHJwBkD07196/CW6W68MWbfeIjHJ+lfn98Kf9VP/uj+tfePwS/5FK2/3F/kK5avRm0D0URbucgfjRUbfeNFcxrc/9k=\",\n \"margin\": [-40, 16, 0, 0],\n \"width\": 595\n },\n {\n \"margin\": [-20, -150, 0, 0],\n \"columnGap\": 8,\n \"columns\": [\n {\n \"width\": \"auto\",\n \"text\": \"$toLabel:\",\n \"style\": \"bold\",\n \"color\":\"#cd5138\"\n },\n {\n \"width\": \"*\",\n \"stack\": \"$clientDetails\",\n \"margin\": [4, 0, 0, 0]\n }\n ]\n },\n {\n \"margin\": [-20, 10, 0, 140],\n \"columnGap\": 8,\n \"columns\": [\n {\n \"width\": \"auto\",\n \"text\": \"$fromLabel:\",\n \"style\": \"bold\",\n \"color\":\"#cd5138\"\n },\n {\n \"width\": \"*\",\n \"stack\": [\n {\n \"width\": 150,\n \"stack\": \"$accountDetails\"\n },\n {\n \"width\": 150,\n \"stack\": \"$accountAddress\"\n }\n ]\n }\n ]\n },\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 5, \"x2\": 515, \"y2\": 5, \"lineWidth\": 1.5}],\"margin\":[0,0,0,-30]},\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$notFirst:.5\",\n \"vLineWidth\": \"$none\",\n \"hLineColor\": \"#000000\",\n \"paddingLeft\": \"$amount:8\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:10\", \n \"paddingBottom\": \"$amount:10\" \n }\n },\n {\n \"columns\": [\n \"$notesAndTerms\",\n {\n \"alignment\": \"right\",\n \"table\": {\n \"widths\": [\"*\", \"40%\"],\n \"body\": \"$subtotals\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:4\", \n \"paddingBottom\": \"$amount:4\" \n }\n }]\n },\n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n ],\n \"defaultStyle\": {\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"footer\": {\n \"columns\": [\n {\n \"text\": \"$invoiceFooter\",\n \"alignment\": \"left\"\n }\n ],\n \"margin\": [40, -20, 40, 0]\n },\n \"styles\": {\n \"accountDetails\": {\n \"margin\": [0, 0, 0, 3]\n },\n \"accountAddress\": {\n \"margin\": [0, 0, 0, 3]\n },\n \"clientDetails\": {\n \"margin\": [0, 0, 0, 3]\n },\n \"productKey\": {\n \"color\": \"$primaryColor:#cd5138\"\n },\n \"lineTotal\": {\n \"color\": \"$primaryColor:#cd5138\"\n },\n \"tableHeader\": {\n \"bold\": true,\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLargest\"\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"$primaryColor:#cd5138\"\n },\n \"invoiceLineItemsTable\": {\n \"margin\": [0, 0, 0, 16]\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 0, 0, 4]\n },\n \"fullheader\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n }\n },\n \"pageMargins\": [40, 30, 40, 30]\n}\n'),(11,'Custom1',NULL,NULL),(12,'Custom2',NULL,NULL),(13,'Custom3',NULL,NULL); +INSERT INTO `invoice_designs` VALUES (1,'Clean','var GlobalY=0;//Y position of line at current page\n\n var client = invoice.client;\n var account = invoice.account;\n var currencyId = client.currency_id;\n\n layout.headerRight = 550;\n layout.rowHeight = 15;\n\n doc.setFontSize(9);\n\n if (invoice.image)\n {\n var left = layout.headerRight - invoice.imageWidth;\n doc.addImage(invoice.image, \'JPEG\', layout.marginLeft, 30);\n }\n \n if (!invoice.is_pro && logoImages.imageLogo1)\n {\n pageHeight=820;\n y=pageHeight-logoImages.imageLogoHeight1;\n doc.addImage(logoImages.imageLogo1, \'JPEG\', layout.marginLeft, y, logoImages.imageLogoWidth1, logoImages.imageLogoHeight1);\n }\n\n doc.setFontSize(9);\n SetPdfColor(\'LightBlue\', doc, \'primary\');\n displayAccount(doc, invoice, 220, layout.accountTop, layout);\n\n SetPdfColor(\'LightBlue\', doc, \'primary\');\n doc.setFontSize(\'11\');\n doc.text(50, layout.headerTop, (invoice.is_quote ? invoiceLabels.quote : invoiceLabels.invoice).toUpperCase());\n\n\n SetPdfColor(\'Black\',doc); //set black color\n doc.setFontSize(9);\n\n var invoiceHeight = displayInvoice(doc, invoice, 50, 170, layout);\n var clientHeight = displayClient(doc, invoice, 220, 170, layout);\n var detailsHeight = Math.max(invoiceHeight, clientHeight);\n layout.tableTop = Math.max(layout.tableTop, layout.headerTop + detailsHeight + (3 * layout.rowHeight));\n \n doc.setLineWidth(0.3); \n doc.setDrawColor(200,200,200);\n doc.line(layout.marginLeft - layout.tablePadding, layout.headerTop + 6, layout.marginRight + layout.tablePadding, layout.headerTop + 6);\n doc.line(layout.marginLeft - layout.tablePadding, layout.headerTop + detailsHeight + 14, layout.marginRight + layout.tablePadding, layout.headerTop + detailsHeight + 14);\n\n doc.setFontSize(10);\n doc.setFontType(\'bold\');\n displayInvoiceHeader(doc, invoice, layout);\n var y = displayInvoiceItems(doc, invoice, layout);\n\n doc.setFontSize(9);\n doc.setFontType(\'bold\');\n\n GlobalY=GlobalY+25;\n\n\n doc.setLineWidth(0.3);\n doc.setDrawColor(241,241,241);\n doc.setFillColor(241,241,241);\n var x1 = layout.marginLeft - 12;\n var y1 = GlobalY-layout.tablePadding;\n\n var w2 = 510 + 24;\n var h2 = doc.internal.getFontSize()*3+layout.tablePadding*2;\n\n if (invoice.discount) {\n h2 += doc.internal.getFontSize()*2;\n }\n if (invoice.tax_amount) {\n h2 += doc.internal.getFontSize()*2;\n }\n\n //doc.rect(x1, y1, w2, h2, \'FD\');\n\n doc.setFontSize(9);\n displayNotesAndTerms(doc, layout, invoice, y);\n y += displaySubtotals(doc, layout, invoice, y, layout.unitCostRight);\n\n\n doc.setFontSize(10);\n Msg = invoice.is_quote ? invoiceLabels.total : invoiceLabels.balance_due;\n var TmpMsgX = layout.unitCostRight-(doc.getStringUnitWidth(Msg) * doc.internal.getFontSize());\n \n doc.text(TmpMsgX, y, Msg);\n\n SetPdfColor(\'LightBlue\', doc, \'primary\');\n AmountText = formatMoney(invoice.balance_amount, currencyId);\n headerLeft=layout.headerRight+400;\n var AmountX = layout.lineTotalRight - (doc.getStringUnitWidth(AmountText) * doc.internal.getFontSize());\n doc.text(AmountX, y, AmountText);','{\n \"content\": [{\n \"columns\": [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80]\n },\n {\n \"stack\": \"$accountDetails\",\n \"margin\": [7, 0, 0, 0]\n },\n {\n \"stack\": \"$accountAddress\"\n }\n ]\n },\n {\n \"text\": \"$entityTypeUC\",\n \"margin\": [8, 30, 8, 5],\n \"style\": \"entityTypeLabel\"\n\n },\n {\n \"table\": {\n \"headerRows\": 1,\n \"widths\": [\"auto\", \"auto\", \"*\"],\n \"body\": [\n [\n {\n \"table\": {\n \"body\": \"$invoiceDetails\"\n },\n \"margin\": [0, 0, 12, 0],\n \"layout\": \"noBorders\"\n },\n {\n \"stack\": \"$clientDetails\"\n },\n {\n \"text\": \"\"\n }\n ]\n ]\n },\n \"layout\": {\n \"hLineWidth\": \"$firstAndLast:.5\",\n \"vLineWidth\": \"$none\",\n \"hLineColor\": \"#D8D8D8\",\n \"paddingLeft\": \"$amount:8\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:6\",\n \"paddingBottom\": \"$amount:6\"\n }\n },\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$notFirst:.5\",\n \"vLineWidth\": \"$none\",\n \"hLineColor\": \"#D8D8D8\",\n \"paddingLeft\": \"$amount:8\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:14\",\n \"paddingBottom\": \"$amount:14\"\n }\n },\n {\n \"columns\": [\n \"$notesAndTerms\",\n {\n \"table\": {\n \"widths\": [\"*\", \"40%\"],\n \"body\": \"$subtotals\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:4\",\n \"paddingBottom\": \"$amount:4\"\n }\n }\n ]\n },\n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n ],\n \"defaultStyle\": {\n \"font\": \"$bodyFont\",\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"footer\": {\n \"columns\": [\n {\n \"text\": \"$invoiceFooter\",\n \"alignment\": \"left\"\n }\n ],\n \"margin\": [40, -20, 40, 0]\n },\n \"styles\": {\n \"entityTypeLabel\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"$primaryColor:#37a3c6\"\n },\n \"primaryColor\":{\n \"color\": \"$primaryColor:#37a3c6\"\n },\n \"accountName\": {\n \"color\": \"$primaryColor:#37a3c6\",\n \"bold\": true\n },\n \"invoiceDetails\": {\n \"margin\": [0, 0, 8, 0]\n },\n \"accountDetails\": {\n \"margin\": [0, 2, 0, 2]\n },\n \"clientDetails\": {\n \"margin\": [0, 2, 0, 2]\n },\n \"notesAndTerms\": {\n \"margin\": [0, 2, 0, 2]\n },\n \"accountAddress\": {\n \"margin\": [0, 2, 0, 2]\n },\n \"odd\": {\n \"fillColor\": \"#fbfbfb\"\n },\n \"productKey\": {\n \"color\": \"$primaryColor:#37a3c6\",\n \"bold\": true\n },\n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLarger\",\n \"color\": \"$primaryColor:#37a3c6\"\n },\n \"invoiceNumber\": {\n \"bold\": true\n },\n \"tableHeader\": {\n \"bold\": true,\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"taxTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\"\n },\n \"invoiceLineItemsTable\": {\n \"margin\": [0, 16, 0, 16]\n },\n \"clientName\": {\n \"bold\": true\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\"\n },\n \"termsLabel\": {\n \"bold\": true\n },\n \"fullheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n },\n \"invoiceDocuments\": {\n \"margin\": [7, 0, 7, 0]\n },\n \"invoiceDocument\": {\n \"margin\": [0, 10, 0, 10]\n }\n },\n \"pageMargins\": [40, 40, 40, 60]\n}\n'),(2,'Bold',' var GlobalY=0;//Y position of line at current page\n\n var client = invoice.client;\n var account = invoice.account;\n var currencyId = client.currency_id;\n\n layout.headerRight = 150;\n layout.rowHeight = 15;\n layout.headerTop = 125;\n layout.tableTop = 300;\n\n doc.setLineWidth(0.5);\n\n if (NINJA.primaryColor) {\n setDocHexFill(doc, NINJA.primaryColor);\n setDocHexDraw(doc, NINJA.primaryColor);\n } else {\n doc.setFillColor(46,43,43);\n } \n\n var x1 =0;\n var y1 = 0;\n var w2 = 595;\n var h2 = 100;\n doc.rect(x1, y1, w2, h2, \'FD\');\n\n if (invoice.image)\n {\n var left = layout.headerRight - invoice.imageWidth;\n doc.addImage(invoice.image, \'JPEG\', layout.marginLeft, 30);\n }\n\n doc.setLineWidth(0.5);\n if (NINJA.primaryColor) {\n setDocHexFill(doc, NINJA.primaryColor);\n setDocHexDraw(doc, NINJA.primaryColor);\n } else {\n doc.setFillColor(46,43,43);\n doc.setDrawColor(46,43,43);\n } \n\n // return doc.setTextColor(240,240,240);//select color Custom Report GRAY Colour\n var x1 = 0;//tableLeft-tablePadding ;\n var y1 = 750;\n var w2 = 596;\n var h2 = 94;//doc.internal.getFontSize()*length+length*1.1;//+h;//+tablePadding;\n\n doc.rect(x1, y1, w2, h2, \'FD\');\n if (!invoice.is_pro && logoImages.imageLogo2)\n {\n pageHeight=820;\n var left = 250;//headerRight ;\n y=pageHeight-logoImages.imageLogoHeight2;\n var headerRight=370;\n\n var left = headerRight - logoImages.imageLogoWidth2;\n doc.addImage(logoImages.imageLogo2, \'JPEG\', left, y, logoImages.imageLogoWidth2, logoImages.imageLogoHeight2);\n }\n\n doc.setFontSize(7);\n doc.setFontType(\'bold\');\n SetPdfColor(\'White\',doc);\n\n displayAccount(doc, invoice, 300, layout.accountTop, layout);\n\n\n var y = layout.accountTop;\n var left = layout.marginLeft;\n var headerY = layout.headerTop;\n\n SetPdfColor(\'GrayLogo\',doc); //set black color\n doc.setFontSize(7);\n\n //show left column\n SetPdfColor(\'Black\',doc); //set black color\n doc.setFontType(\'normal\');\n\n //publish filled box\n doc.setDrawColor(200,200,200);\n\n if (NINJA.secondaryColor) {\n setDocHexFill(doc, NINJA.secondaryColor);\n } else {\n doc.setFillColor(54,164,152); \n } \n\n GlobalY=190;\n doc.setLineWidth(0.5);\n\n var BlockLenght=220;\n var x1 =595-BlockLenght;\n var y1 = GlobalY-12;\n var w2 = BlockLenght;\n var h2 = getInvoiceDetailsHeight(invoice, layout) + layout.tablePadding + 2;\n\n doc.rect(x1, y1, w2, h2, \'FD\');\n\n SetPdfColor(\'SomeGreen\', doc, \'secondary\');\n doc.setFontSize(\'14\');\n doc.setFontType(\'bold\');\n doc.text(50, GlobalY, (invoice.is_quote ? invoiceLabels.your_quote : invoiceLabels.your_invoice).toUpperCase());\n\n\n var z=GlobalY;\n z=z+30;\n\n doc.setFontSize(\'8\'); \n SetPdfColor(\'Black\',doc); \n var clientHeight = displayClient(doc, invoice, layout.marginLeft, z, layout);\n layout.tableTop += Math.max(0, clientHeight - 75);\n marginLeft2=395;\n\n //publish left side information\n SetPdfColor(\'White\',doc);\n doc.setFontSize(\'8\');\n var detailsHeight = displayInvoice(doc, invoice, marginLeft2, z-25, layout) + 75;\n layout.tableTop = Math.max(layout.tableTop, layout.headerTop + detailsHeight + (2 * layout.tablePadding));\n\n y=z+60;\n x = GlobalY + 100;\n doc.setFontType(\'bold\');\n\n doc.setFontSize(12);\n doc.setFontType(\'bold\');\n SetPdfColor(\'Black\',doc);\n displayInvoiceHeader(doc, invoice, layout);\n\n var y = displayInvoiceItems(doc, invoice, layout);\n doc.setLineWidth(0.3);\n displayNotesAndTerms(doc, layout, invoice, y);\n y += displaySubtotals(doc, layout, invoice, y, layout.unitCostRight);\n\n doc.setFontType(\'bold\');\n\n doc.setFontSize(12);\n x += doc.internal.getFontSize()*4;\n Msg = invoice.is_quote ? invoiceLabels.total : invoiceLabels.balance_due;\n var TmpMsgX = layout.unitCostRight-(doc.getStringUnitWidth(Msg) * doc.internal.getFontSize());\n\n doc.text(TmpMsgX, y, Msg);\n\n //SetPdfColor(\'LightBlue\',doc);\n AmountText = formatMoney(invoice.balance_amount , currencyId);\n headerLeft=layout.headerRight+400;\n var AmountX = headerLeft - (doc.getStringUnitWidth(AmountText) * doc.internal.getFontSize());\n SetPdfColor(\'SomeGreen\', doc, \'secondary\');\n doc.text(AmountX, y, AmountText);','{\n \"content\": [\n {\n \"columns\": [\n {\n \"width\": 380,\n \"stack\": [\n {\"text\":\"$yourInvoiceLabelUC\", \"style\": \"yourInvoice\"},\n \"$clientDetails\"\n ],\n \"margin\": [60, 100, 0, 10]\n },\n {\n \"canvas\": [\n {\n \"type\": \"rect\",\n \"x\": 0,\n \"y\": 0,\n \"w\": 225,\n \"h\": \"$invoiceDetailsHeight\",\n \"r\":0,\n \"lineWidth\": 1,\n \"color\": \"$primaryColor:#36a498\"\n }\n ],\n \"width\":10,\n \"margin\":[-10,100,0,10]\n },\n {\n \"table\": {\n \"body\": \"$invoiceDetails\"\n },\n \"layout\": \"noBorders\",\n \"margin\": [0, 110, 0, 0]\n }\n ]\n },\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:8\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:14\",\n \"paddingBottom\": \"$amount:14\"\n }\n },\n {\n \"columns\": [\n {\n \"width\": 46,\n \"text\": \" \"\n },\n \"$notesAndTerms\",\n {\n \"table\": {\n \"widths\": [\"*\", \"40%\"],\n \"body\": \"$subtotals\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:8\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:4\",\n \"paddingBottom\": \"$amount:4\"\n }\n }]\n },\n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n ],\n \"footer\":\n [\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 0, \"x2\": 600, \"y2\": 0,\"lineWidth\": 100,\"lineColor\":\"$secondaryColor:#292526\"}]},\n {\n \"columns\":\n [\n {\n \"text\": \"$invoiceFooter\",\n \"margin\": [40, -40, 40, 0],\n \"alignment\": \"left\",\n \"color\": \"#FFFFFF\"\n }\n ]\n }\n ],\n \"header\": [\n {\n \"canvas\": [\n {\n \"type\": \"line\",\n \"x1\": 0,\n \"y1\": 0,\n \"x2\": 600,\n \"y2\": 0,\n \"lineWidth\": 200,\n \"lineColor\": \"$secondaryColor:#292526\"\n }\n ],\n \"width\": 10\n },\n {\n \"columns\": [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 60],\n \"margin\": [30, 16, 0, 0]\n },\n {\n \"stack\": \"$accountDetails\",\n \"margin\": [\n 0,\n 16,\n 0,\n 0\n ],\n \"width\": 140\n },\n {\n \"stack\": \"$accountAddress\",\n \"margin\": [\n 20,\n 16,\n 0,\n 0\n ]\n }\n ]\n }\n ],\n \"defaultStyle\": {\n \"font\": \"$bodyFont\",\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"styles\": {\n \"primaryColor\":{\n \"color\": \"$primaryColor:#36a498\"\n },\n \"accountName\": {\n \"bold\": true,\n \"margin\": [4, 2, 4, 1],\n \"color\": \"$primaryColor:#36a498\"\n },\n \"accountDetails\": {\n \"margin\": [4, 2, 4, 1],\n \"color\": \"#FFFFFF\"\n },\n \"accountAddress\": {\n \"margin\": [4, 2, 4, 1],\n \"color\": \"#FFFFFF\"\n },\n \"clientDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"odd\": {\n \"fillColor\": \"#ebebeb\"\n },\n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"$primaryColor:#36a498\",\n \"bold\": true\n },\n \"invoiceDetails\": {\n \"color\": \"#ffffff\"\n },\n \"invoiceNumber\": {\n \"bold\": true\n },\n \"tableHeader\": {\n \"fontSize\": 12,\n \"bold\": true\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"taxTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\",\n \"margin\": [0, 0, 40, 0]\n },\n \"firstColumn\": {\n \"margin\": [40, 0, 0, 0]\n },\n \"lastColumn\": {\n \"margin\": [0, 0, 40, 0]\n },\n \"productKey\": {\n \"color\": \"$primaryColor:#36a498\",\n \"bold\": true\n },\n \"yourInvoice\": {\n \"font\": \"$headerFont\",\n \"bold\": true,\n \"fontSize\": 14,\n \"color\": \"$primaryColor:#36a498\",\n \"margin\": [0,0,0,8]\n },\n \"invoiceLineItemsTable\": {\n \"margin\": [0, 26, 0, 16]\n },\n \"clientName\": {\n \"bold\": true\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\",\n \"margin\": [0,0,40,0]\n },\n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 0, 0, 4]\n },\n \"fullheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n },\n \"invoiceDocuments\": {\n \"margin\": [47, 0, 47, 0]\n },\n \"invoiceDocument\": {\n \"margin\": [0, 10, 0, 10]\n }\n },\n \"pageMargins\": [0, 80, 0, 40]\n }\n'),(3,'Modern',' var client = invoice.client;\n var account = invoice.account;\n var currencyId = client.currency_id;\n\n layout.headerRight = 400;\n layout.rowHeight = 15;\n\n\n doc.setFontSize(7);\n\n // add header\n doc.setLineWidth(0.5);\n\n if (NINJA.primaryColor) {\n setDocHexFill(doc, NINJA.primaryColor);\n setDocHexDraw(doc, NINJA.primaryColor);\n } else {\n doc.setDrawColor(242,101,34);\n doc.setFillColor(242,101,34);\n } \n\n var x1 =0;\n var y1 = 0;\n var w2 = 595;\n var h2 = Math.max(110, getInvoiceDetailsHeight(invoice, layout) + 30);\n doc.rect(x1, y1, w2, h2, \'FD\');\n\n SetPdfColor(\'White\',doc);\n\n //second column\n doc.setFontType(\'bold\');\n var name = invoice.account.name; \n if (name) {\n doc.setFontSize(\'30\');\n doc.setFontType(\'bold\');\n doc.text(40, 50, name);\n }\n\n if (invoice.image)\n {\n y=130;\n var left = layout.headerRight - invoice.imageWidth;\n doc.addImage(invoice.image, \'JPEG\', layout.marginLeft, y);\n }\n\n // add footer \n doc.setLineWidth(0.5);\n\n if (NINJA.primaryColor) {\n setDocHexFill(doc, NINJA.primaryColor);\n setDocHexDraw(doc, NINJA.primaryColor);\n } else {\n doc.setDrawColor(242,101,34);\n doc.setFillColor(242,101,34);\n } \n\n var x1 = 0;//tableLeft-tablePadding ;\n var y1 = 750;\n var w2 = 596;\n var h2 = 94;//doc.internal.getFontSize()*length+length*1.1;//+h;//+tablePadding;\n\n doc.rect(x1, y1, w2, h2, \'FD\');\n\n if (!invoice.is_pro && logoImages.imageLogo3)\n {\n pageHeight=820;\n // var left = 25;//250;//headerRight ;\n y=pageHeight-logoImages.imageLogoHeight3;\n //var headerRight=370;\n\n //var left = headerRight - invoice.imageLogoWidth3;\n doc.addImage(logoImages.imageLogo3, \'JPEG\', 40, y, logoImages.imageLogoWidth3, logoImages.imageLogoHeight3);\n }\n\n doc.setFontSize(10); \n var marginLeft = 340;\n displayAccount(doc, invoice, marginLeft, 780, layout);\n\n\n SetPdfColor(\'White\',doc); \n doc.setFontSize(\'8\');\n var detailsHeight = displayInvoice(doc, invoice, layout.headerRight, layout.accountTop-10, layout);\n layout.headerTop = Math.max(layout.headerTop, detailsHeight + 50);\n layout.tableTop = Math.max(layout.tableTop, detailsHeight + 150);\n\n SetPdfColor(\'Black\',doc); //set black color\n doc.setFontSize(7);\n doc.setFontType(\'normal\');\n displayClient(doc, invoice, layout.headerRight, layout.headerTop, layout);\n\n\n \n SetPdfColor(\'White\',doc); \n doc.setFontType(\'bold\');\n\n doc.setLineWidth(0.3);\n if (NINJA.secondaryColor) {\n setDocHexFill(doc, NINJA.secondaryColor);\n setDocHexDraw(doc, NINJA.secondaryColor);\n } else {\n doc.setDrawColor(63,60,60);\n doc.setFillColor(63,60,60);\n } \n\n var left = layout.marginLeft - layout.tablePadding;\n var top = layout.tableTop - layout.tablePadding;\n var width = layout.marginRight - (2 * layout.tablePadding);\n var height = 20;\n doc.rect(left, top, width, height, \'FD\');\n \n\n displayInvoiceHeader(doc, invoice, layout);\n SetPdfColor(\'Black\',doc);\n var y = displayInvoiceItems(doc, invoice, layout);\n\n\n var height1 = displayNotesAndTerms(doc, layout, invoice, y);\n var height2 = displaySubtotals(doc, layout, invoice, y, layout.unitCostRight);\n y += Math.max(height1, height2);\n\n\n var left = layout.marginLeft - layout.tablePadding;\n var top = y - layout.tablePadding;\n var width = layout.marginRight - (2 * layout.tablePadding);\n var height = 20;\n if (NINJA.secondaryColor) {\n setDocHexFill(doc, NINJA.secondaryColor);\n setDocHexDraw(doc, NINJA.secondaryColor);\n } else {\n doc.setDrawColor(63,60,60);\n doc.setFillColor(63,60,60);\n } \n doc.rect(left, top, width, height, \'FD\');\n \n doc.setFontType(\'bold\');\n SetPdfColor(\'White\', doc);\n doc.setFontSize(12);\n \n var label = invoice.is_quote ? invoiceLabels.total : invoiceLabels.balance_due;\n var labelX = layout.unitCostRight-(doc.getStringUnitWidth(label) * doc.internal.getFontSize());\n doc.text(labelX, y+2, label);\n\n\n doc.setFontType(\'normal\');\n var amount = formatMoney(invoice.balance_amount , currencyId);\n headerLeft=layout.headerRight+400;\n var amountX = layout.lineTotalRight - (doc.getStringUnitWidth(amount) * doc.internal.getFontSize());\n doc.text(amountX, y+2, amount);','{\n \"content\": [\n {\n \"columns\": [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80],\n \"margin\": [0, 60, 0, 30]\n },\n {\n \"stack\": \"$clientDetails\",\n \"margin\": [0, 60, 0, 0]\n }\n ]\n },\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$notFirst:.5\",\n \"vLineWidth\": \"$notFirstAndLastColumn:.5\",\n \"hLineColor\": \"#888888\",\n \"vLineColor\": \"#FFFFFF\",\n \"paddingLeft\": \"$amount:8\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:8\",\n \"paddingBottom\": \"$amount:8\"\n }\n },\n {\n \"columns\": [\n \"$notesAndTerms\",\n {\n \"table\": {\n \"widths\": [\"*\", \"40%\"],\n \"body\": \"$subtotalsWithoutBalance\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:4\",\n \"paddingBottom\": \"$amount:4\"\n }\n }\n ]\n },\n {\n \"columns\": [\n {\n \"canvas\": [\n {\n \"type\": \"rect\",\n \"x\": 0,\n \"y\": 0,\n \"w\": 515,\n \"h\": 26,\n \"r\": 0,\n \"lineWidth\": 1,\n \"color\": \"$secondaryColor:#403d3d\"\n }\n ],\n \"width\": 10,\n \"margin\": [\n 0,\n 10,\n 0,\n 0\n ]\n },\n {\n \"text\": \"$balanceDueLabel\",\n \"style\": \"subtotalsBalanceDueLabel\",\n \"margin\": [0, 16, 0, 0],\n \"width\": 370\n },\n {\n \"text\": \"$balanceDue\",\n \"style\": \"subtotalsBalanceDue\",\n \"margin\": [0, 16, 8, 0]\n }\n ]\n },\n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n ],\n \"footer\": [\n {\n \"canvas\": [\n {\n \"type\": \"line\", \"x1\": 0, \"y1\": 0, \"x2\": 600, \"y2\": 0,\"lineWidth\": 100,\"lineColor\":\"$primaryColor:#f26621\"\n }]\n ,\"width\":10\n },\n {\n \"columns\": [\n {\n \"width\": 350,\n \"stack\": [\n {\n \"text\": \"$invoiceFooter\",\n \"margin\": [40, -40, 40, 0],\n \"alignment\": \"left\",\n \"color\": \"#FFFFFF\"\n\n }\n ]\n },\n {\n \"stack\": \"$accountDetails\",\n \"margin\": [0, -40, 0, 0],\n \"width\": \"*\"\n },\n {\n \"stack\": \"$accountAddress\",\n \"margin\": [0, -40, 0, 0],\n \"width\": \"*\"\n }\n ]\n }\n ],\n \"header\": [\n {\n \"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 0, \"x2\": 600, \"y2\": 0,\"lineWidth\": 200,\"lineColor\":\"$primaryColor:#f26621\"}],\"width\":10\n },\n {\n \"columns\": [\n {\n \"text\": \"$accountName\", \"bold\": true,\"font\":\"$headerFont\",\"fontSize\":30,\"color\":\"#ffffff\",\"margin\":[40,20,0,0],\"width\":350\n }\n ]\n },\n {\n \"width\": 300,\n \"table\": {\n \"body\": \"$invoiceDetails\"\n },\n \"layout\": \"noBorders\",\n \"margin\": [400, -40, 0, 0]\n }\n ],\n \"defaultStyle\": {\n \"font\": \"$bodyFont\",\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"styles\": {\n \"primaryColor\":{\n \"color\": \"$primaryColor:#299CC2\"\n },\n \"accountName\": {\n \"margin\": [4, 2, 4, 2],\n \"color\": \"$primaryColor:#299CC2\"\n },\n \"accountDetails\": {\n \"margin\": [4, 2, 4, 2],\n \"color\": \"#FFFFFF\"\n },\n \"accountAddress\": {\n \"margin\": [4, 2, 4, 2],\n \"color\": \"#FFFFFF\"\n },\n \"clientDetails\": {\n \"margin\": [0, 2, 4, 2]\n },\n \"invoiceDetails\": {\n \"color\": \"#FFFFFF\"\n },\n \"invoiceLineItemsTable\": {\n \"margin\": [0, 0, 0, 16]\n },\n \"productKey\": {\n \"bold\": true\n },\n \"clientName\": {\n \"bold\": true\n },\n \"tableHeader\": {\n \"bold\": true,\n \"color\": \"#FFFFFF\",\n \"fontSize\": \"$fontSizeLargest\",\n \"fillColor\": \"$secondaryColor:#403d3d\"\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"taxTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\"\n },\n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\":\"#FFFFFF\",\n \"alignment\":\"right\",\n \"bold\": true\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\":\"#FFFFFF\",\n \"bold\": true,\n \"alignment\":\"right\"\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\"\n },\n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 0, 0, 4]\n },\n \"invoiceNumberLabel\": {\n \"bold\": true\n },\n \"invoiceNumber\": {\n \"bold\": true\n },\n \"fullheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n },\n \"invoiceDocuments\": {\n \"margin\": [7, 0, 7, 0]\n },\n \"invoiceDocument\": {\n \"margin\": [0, 10, 0, 10]\n }\n },\n \"pageMargins\": [40, 120, 40, 50]\n}\n'),(4,'Plain',' var client = invoice.client;\n var account = invoice.account;\n var currencyId = client.currency_id; \n \n layout.accountTop += 25;\n layout.headerTop += 25;\n layout.tableTop += 25;\n\n if (invoice.image)\n {\n var left = layout.headerRight - invoice.imageWidth;\n doc.addImage(invoice.image, \'JPEG\', left, 50);\n } \n \n /* table header */\n doc.setDrawColor(200,200,200);\n doc.setFillColor(230,230,230);\n \n var detailsHeight = getInvoiceDetailsHeight(invoice, layout);\n var left = layout.headerLeft - layout.tablePadding;\n var top = layout.headerTop + detailsHeight - layout.rowHeight - layout.tablePadding;\n var width = layout.headerRight - layout.headerLeft + (2 * layout.tablePadding);\n var height = layout.rowHeight + 1;\n doc.rect(left, top, width, height, \'FD\'); \n\n doc.setFontSize(10);\n doc.setFontType(\'normal\');\n\n displayAccount(doc, invoice, layout.marginLeft, layout.accountTop, layout);\n displayClient(doc, invoice, layout.marginLeft, layout.headerTop, layout);\n\n displayInvoice(doc, invoice, layout.headerLeft, layout.headerTop, layout, layout.headerRight);\n layout.tableTop = Math.max(layout.tableTop, layout.headerTop + detailsHeight + (2 * layout.tablePadding));\n\n var headerY = layout.headerTop;\n var total = 0;\n\n doc.setDrawColor(200,200,200);\n doc.setFillColor(230,230,230);\n var left = layout.marginLeft - layout.tablePadding;\n var top = layout.tableTop - layout.tablePadding;\n var width = layout.headerRight - layout.marginLeft + (2 * layout.tablePadding);\n var height = layout.rowHeight + 2;\n doc.rect(left, top, width, height, \'FD\'); \n\n displayInvoiceHeader(doc, invoice, layout);\n var y = displayInvoiceItems(doc, invoice, layout);\n\n doc.setFontSize(10);\n\n displayNotesAndTerms(doc, layout, invoice, y+20);\n\n y += displaySubtotals(doc, layout, invoice, y+20, 480) + 20;\n\n doc.setDrawColor(200,200,200);\n doc.setFillColor(230,230,230);\n \n var left = layout.footerLeft - layout.tablePadding;\n var top = y - layout.tablePadding;\n var width = layout.headerRight - layout.footerLeft + (2 * layout.tablePadding);\n var height = layout.rowHeight + 2;\n doc.rect(left, top, width, height, \'FD\'); \n \n doc.setFontType(\'bold\');\n doc.text(layout.footerLeft, y, invoice.is_quote ? invoiceLabels.total : invoiceLabels.balance_due);\n\n total = formatMoney(invoice.balance_amount, currencyId);\n var totalX = layout.headerRight - (doc.getStringUnitWidth(total) * doc.internal.getFontSize());\n doc.text(totalX, y, total); \n\n if (!invoice.is_pro) {\n doc.setFontType(\'normal\');\n doc.text(layout.marginLeft, 790, \'Created by InvoiceNinja.com\');\n }','{\n \"content\": [\n {\n \"columns\": [\n {\n \"stack\": \"$accountDetails\"\n },\n {\n \"stack\": \"$accountAddress\"\n },\n [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80]\n }\n ] \n ]},\n {\n \"columns\": [\n {\n \"width\": 340,\n \"stack\": \"$clientDetails\",\n \"margin\": [0,40,0,0]\n },\n {\n \"width\":200,\n \"table\": { \n \"body\": \"$invoiceDetails\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"hLineColor\": \"#E6E6E6\",\n \"paddingLeft\": \"$amount:10\", \n \"paddingRight\": \"$amount:10\"\n }\n }\n ]\n }, \n {\n \"canvas\": [{ \"type\": \"rect\", \"x\": 0, \"y\": 0, \"w\": 515, \"h\": 25,\"r\":0, \"lineWidth\": 1,\"color\":\"#e6e6e6\"}],\"width\":10,\"margin\":[0,30,0,-43]\n },\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$notFirst:1\",\n \"vLineWidth\": \"$none\",\n \"hLineColor\": \"#e6e6e6\",\n \"paddingLeft\": \"$amount:8\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:8\", \n \"paddingBottom\": \"$amount:8\" \n }\n },\n {\n \"columns\": [\n \"$notesAndTerms\",\n {\n \"width\": 160,\n \"style\": \"subtotals\",\n \"table\": {\n \"widths\": [60, 60],\n \"body\": \"$subtotals\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:10\", \n \"paddingRight\": \"$amount:10\", \n \"paddingTop\": \"$amount:4\", \n \"paddingBottom\": \"$amount:4\" \n }\n }\n ]\n }, \n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n ],\n \"footer\": {\n \"columns\": [\n {\n \"text\": \"$invoiceFooter\",\n \"alignment\": \"left\",\n \"margin\": [0, 0, 0, 12]\n\n }\n ],\n \"margin\": [40, -20, 40, 40]\n },\n \"defaultStyle\": {\n \"font\": \"$bodyFont\",\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"styles\": {\n \"primaryColor\":{\n \"color\": \"$primaryColor:#299CC2\"\n },\n \"accountDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"accountAddress\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"clientDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"tableHeader\": {\n \"bold\": true\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\"\n }, \n \"invoiceLineItemsTable\": {\n \"margin\": [0, 16, 0, 16]\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\"\n }, \n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 0, 0, 4]\n },\n \"terms\": {\n \"margin\": [0, 0, 20, 0]\n },\n \"invoiceDetailBalanceDueLabel\": {\n \"fillColor\": \"#e6e6e6\"\n },\n \"invoiceDetailBalanceDue\": {\n \"fillColor\": \"#e6e6e6\"\n },\n \"subtotalsBalanceDueLabel\": {\n \"fillColor\": \"#e6e6e6\"\n },\n \"subtotalsBalanceDue\": {\n \"fillColor\": \"#e6e6e6\"\n },\n \"fullheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n },\n \"invoiceDocuments\": {\n \"margin\": [7, 0, 7, 0]\n },\n \"invoiceDocument\": {\n \"margin\": [0, 10, 0, 10]\n }\n },\n \"pageMargins\": [40, 40, 40, 60]\n}\n'),(5,'Business',NULL,'{\n \"content\": [\n {\n \"columns\":\n [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80]\n },\n {\n \"width\": 300,\n \"stack\": \"$accountDetails\",\n \"margin\": [140, 0, 0, 0]\n },\n {\n \"width\": 150,\n \"stack\": \"$accountAddress\"\n }\n ]\n },\n {\n \"columns\": [\n {\n \"width\": 120,\n \"stack\": [\n {\"text\": \"$invoiceIssuedToLabel\", \"style\":\"issuedTo\"},\n \"$clientDetails\"\n ],\n \"margin\": [0, 20, 0, 0]\n },\n {\n \"canvas\": [{ \"type\": \"rect\", \"x\": 20, \"y\": 0, \"w\": 174, \"h\": \"$invoiceDetailsHeight\",\"r\":10, \"lineWidth\": 1,\"color\":\"$primaryColor:#eb792d\"}],\n \"width\":30,\n \"margin\":[200,25,0,0]\n },\n {\n \"table\": {\n \"widths\": [70, 76],\n \"body\": \"$invoiceDetails\"\n },\n \"layout\": \"noBorders\",\n \"margin\": [200, 34, 0, 0]\n }\n ]\n },\n {\"canvas\": [{ \"type\": \"rect\", \"x\": 0, \"y\": 0, \"w\": 515, \"h\": 32,\"r\":8, \"lineWidth\": 1,\"color\":\"$secondaryColor:#374e6b\"}],\"width\":10,\"margin\":[0,20,0,-45]},\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$notFirst:1\",\n \"vLineWidth\": \"$notFirst:.5\",\n \"hLineColor\": \"#FFFFFF\",\n \"vLineColor\": \"#FFFFFF\",\n \"paddingLeft\": \"$amount:8\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:12\",\n \"paddingBottom\": \"$amount:12\"\n }\n },\n {\n \"columns\": [\n \"$notesAndTerms\",\n {\n \"stack\": [\n {\n \"style\": \"subtotals\",\n \"table\": {\n \"widths\": [\"*\", \"35%\"],\n \"body\": \"$subtotalsWithoutBalance\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:4\",\n \"paddingBottom\": \"$amount:4\"\n }\n },\n {\n \"canvas\": [\n {\n \"type\": \"rect\",\n \"x\": 60,\n \"y\": 20,\n \"w\": 198,\n \"h\": 30,\n \"r\": 7,\n \"lineWidth\": 1,\n \"color\": \"$secondaryColor:#374e6b\"\n }\n ]\n },\n {\n \"style\": \"subtotalsBalance\",\n \"table\": {\n \"widths\": [\"*\", \"45%\"],\n \"body\": \"$subtotalsBalance\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:4\",\n \"paddingBottom\": \"$amount:4\"\n }\n }\n ]\n }\n ]\n },\n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n ],\n \"footer\": {\n \"columns\": [\n {\n \"text\": \"$invoiceFooter\",\n \"alignment\": \"left\"\n }\n ],\n \"margin\": [40, -20, 40, 0]\n },\n \"defaultStyle\": {\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"styles\": {\n \"primaryColor\":{\n \"color\": \"$primaryColor:#299CC2\"\n },\n \"accountName\": {\n \"bold\": true\n },\n \"accountDetails\": {\n \"color\": \"#AAA9A9\",\n \"margin\": [0,2,0,1]\n },\n \"accountAddress\": {\n \"color\": \"#AAA9A9\",\n \"margin\": [0,2,0,1]\n },\n \"even\": {\n \"fillColor\":\"#E8E8E8\"\n },\n \"odd\": {\n \"fillColor\":\"#F7F7F7\"\n },\n \"productKey\": {\n \"bold\": true\n },\n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"#ffffff\",\n \"bold\": true\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true,\n \"color\":\"#ffffff\",\n \"alignment\":\"right\",\n \"noWrap\":true\n },\n \"invoiceDetails\": {\n \"color\": \"#ffffff\"\n },\n \"tableHeader\": {\n \"color\": \"#ffffff\",\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"secondTableHeader\": {\n \"color\": \"$secondaryColor:#374e6b\"\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"taxTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\"\n },\n \"issuedTo\": {\n \"margin\": [0,2,0,1],\n \"bold\": true,\n \"color\": \"#374e6b\"\n },\n \"clientDetails\": {\n \"margin\": [0,2,0,1]\n },\n \"clientName\": {\n \"color\": \"$primaryColor:#eb792d\"\n },\n \"invoiceLineItemsTable\": {\n \"margin\": [0, 10, 0, 10]\n },\n \"invoiceDetailsValue\": {\n \"alignment\": \"right\"\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\"\n },\n \"subtotalsBalance\": {\n \"alignment\": \"right\",\n \"margin\": [0, -25, 0, 0]\n },\n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 0, 0, 4]\n },\n \"fullheader\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n }\n },\n \"pageMargins\": [40, 40, 40, 40]\n}\n'),(6,'Creative',NULL,'{\n \"content\": [\n {\n \"columns\": [\n {\n \"stack\": \"$clientDetails\"\n },\n {\n \"stack\": \"$accountDetails\"\n },\n {\n \"stack\": \"$accountAddress\"\n },\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80],\n \"alignment\": \"right\"\n }\n ],\n \"margin\": [0, 0, 0, 20]\n },\n {\n \"columns\": [\n {\"text\":\n [\n {\"text\": \"$entityTypeUC\", \"style\": \"header1\"},\n {\"text\": \" #\", \"style\": \"header2\"},\n {\"text\": \"$invoiceNumber\", \"style\":\"header2\"}\n ],\n \"width\": \"*\"\n },\n {\n \"width\":200,\n \"table\": {\n \"body\": \"$invoiceDetails\"\n },\n \"layout\": \"noBorders\",\n \"margin\": [16, 4, 0, 0]\n }\n ],\n \"margin\": [0, 0, 0, 20]\n },\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 5, \"x2\": 515, \"y2\": 5, \"lineWidth\": 3,\"lineColor\":\"$primaryColor:#AE1E54\"}]},\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"hLineColor\": \"$primaryColor:#E8E8E8\",\n \"paddingLeft\": \"$amount:8\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:8\",\n \"paddingBottom\": \"$amount:8\"\n }\n },\n {\n \"columns\": [\n \"$notesAndTerms\",\n {\n \"style\": \"subtotals\",\n \"table\": {\n \"widths\": [\"*\", \"40%\"],\n \"body\": \"$subtotalsWithoutBalance\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:4\",\n \"paddingBottom\": \"$amount:4\"\n }\n }\n ]\n },\n {\n \"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 20, \"x2\": 515, \"y2\": 20, \"lineWidth\": 3,\"lineColor\":\"$primaryColor:#AE1E54\"}],\n \"margin\": [0, -8, 0, -8]\n },\n {\n \"text\": \"$balanceDueLabel\",\n \"style\": \"subtotalsBalanceDueLabel\"\n },\n {\n \"text\": \"$balanceDue\",\n \"style\": \"subtotalsBalanceDue\"\n },\n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n ],\n \"footer\": {\n \"columns\": [\n {\n \"text\": \"$invoiceFooter\",\n \"alignment\": \"left\"\n }\n ],\n \"margin\": [40, -20, 40, 0]\n },\n \"defaultStyle\": {\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"styles\": {\n \"primaryColor\":{\n \"color\": \"$primaryColor:#AE1E54\"\n },\n \"accountName\": {\n \"margin\": [4, 2, 4, 2],\n \"color\": \"$primaryColor:#AE1E54\",\n \"bold\": true\n },\n \"accountDetails\": {\n \"margin\": [4, 2, 4, 2]\n },\n \"accountAddress\": {\n \"margin\": [4, 2, 4, 2]\n },\n \"odd\": {\n \"fillColor\":\"#F4F4F4\"\n },\n \"productKey\": {\n \"bold\": true\n },\n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"margin\": [320,20,0,0]\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"$primaryColor:#AE1E54\",\n \"bold\": true,\n \"margin\":[0,-10,10,0],\n \"alignment\": \"right\"\n },\n \"invoiceDetailBalanceDue\": {\n \"bold\": true,\n \"color\": \"$primaryColor:#AE1E54\"\n },\n \"invoiceDetailBalanceDueLabel\": {\n \"bold\": true\n },\n \"tableHeader\": {\n \"bold\": true,\n \"color\": \"$primaryColor:#AE1E54\",\n \"fontSize\": \"$fontSizeLargest\"\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"taxTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\"\n },\n \"clientName\": {\n \"bold\": true\n },\n \"clientDetails\": {\n \"margin\": [0,2,0,1]\n },\n \"header1\": {\n \"bold\": true,\n \"margin\": [0, 30, 0, 16],\n \"fontSize\": 42\n },\n \"header2\": {\n \"margin\": [0, 30, 0, 16],\n \"fontSize\": 42,\n \"italics\": true,\n \"color\": \"$primaryColor:#AE1E54\"\n },\n \"invoiceLineItemsTable\": {\n \"margin\": [0, 4, 0, 16]\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\"\n },\n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 0, 0, 4]\n },\n \"fullheader\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n }\n },\n \"pageMargins\": [40, 40, 40, 40]\n}\n'),(7,'Elegant',NULL,'{\n \"content\": [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80],\n \"alignment\": \"center\",\n \"margin\": [0, 0, 0, 30]\n },\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 5, \"x2\": 515, \"y2\": 5, \"lineWidth\": 2}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 3, \"x2\": 515, \"y2\": 3, \"lineWidth\": 1}]},\n {\n \"columns\": [\n {\n \"width\": 120,\n \"stack\": [\n {\"text\": \"$invoiceToLabel\", \"style\": \"header\", \"margin\": [0, 0, 0, 6]},\n \"$clientDetails\"\n ]\n },\n {\n \"width\": 10,\n \"canvas\": [{ \"type\": \"line\", \"x1\": -2, \"y1\": 18, \"x2\": -2, \"y2\": 80, \"lineWidth\": 1,\"dash\": { \"length\": 2 }}]\n },\n {\n \"width\": 120,\n \"stack\": \"$accountDetails\",\n \"margin\": [0, 20, 0, 0]\n },\n {\n \"width\": 110,\n \"stack\": \"$accountAddress\",\n \"margin\": [0, 20, 0, 0]\n },\n {\n \"stack\": [\n {\"text\": \"$detailsLabel\", \"style\": \"header\", \"margin\": [0, 0, 0, 6]},\n {\n \"width\":180,\n \"table\": {\n \"body\": \"$invoiceDetails\"\n },\n \"layout\": \"noBorders\"\n }\n ]\n }],\n \"margin\": [0, 20, 0, 0]\n },\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$notFirst:.5\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:8\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:12\",\n \"paddingBottom\": \"$amount:12\"\n }\n },\n {\n \"columns\": [\n \"$notesAndTerms\",\n {\n \"style\": \"subtotals\",\n \"table\": {\n \"widths\": [\"*\", \"40%\"],\n \"body\": \"$subtotalsWithoutBalance\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:4\",\n \"paddingBottom\": \"$amount:4\"\n }\n }\n ]\n },\n {\n \"canvas\": [{ \"type\": \"line\", \"x1\": 270, \"y1\": 20, \"x2\": 515, \"y2\": 20, \"lineWidth\": 1,\"dash\": { \"length\": 2 }}]\n },\n {\n \"text\": \"$balanceDueLabel\",\n \"style\": \"subtotalsBalanceDueLabel\"\n },\n {\n \"text\": \"$balanceDue\",\n \"style\": \"subtotalsBalanceDue\"\n },\n {\n \"canvas\": [{ \"type\": \"line\", \"x1\": 270, \"y1\": 20, \"x2\": 515, \"y2\": 20, \"lineWidth\": 1,\"dash\": { \"length\": 2 }}]\n },\n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }],\n \"footer\": [\n {\n \"columns\": [\n {\n \"text\": \"$invoiceFooter\",\n \"alignment\": \"left\"\n }\n ],\n \"margin\": [40, -20, 40, 0]\n },\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 35, \"y1\": 5, \"x2\": 555, \"y2\": 5, \"lineWidth\": 2,\"margin\": [30,0,0,0]}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 35, \"y1\": 3, \"x2\": 555, \"y2\": 3, \"lineWidth\": 1,\"margin\": [30,0,0,0]}]}\n ],\n \"defaultStyle\": {\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"styles\": {\n \"accountDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"clientDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"accountAddress\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"clientName\": {\n \"bold\": true\n },\n \"accountName\": {\n \"bold\": true\n },\n \"odd\": {\n },\n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"$primaryColor:#5a7b61\",\n \"margin\": [320,20,0,0]\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"$primaryColor:#5a7b61\",\n \"style\": true,\n \"margin\":[0,-14,8,0],\n \"alignment\":\"right\"\n },\n \"invoiceDetailBalanceDue\": {\n \"color\": \"$primaryColor:#5a7b61\",\n \"bold\": true\n },\n \"fullheader\": {\n \"font\": \"$headerFont\",\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"header\": {\n \"fontSize\": 14,\n \"bold\": true\n },\n \"tableHeader\": {\n \"bold\": true,\n \"color\": \"$primaryColor:#5a7b61\",\n \"fontSize\": \"$fontSizeLargest\"\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"taxTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\"\n },\n \"invoiceLineItemsTable\": {\n \"margin\": [0, 40, 0, 16]\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\"\n },\n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 0, 0, 4]\n },\n \"header\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n }\n },\n \"pageMargins\": [40, 40, 40, 40]\n}\n'),(8,'Hipster',NULL,'{\n \"content\": [\n {\n \"columns\": [\n {\n \"width\":10,\n \"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 0, \"x2\": 0, \"y2\": 75, \"lineWidth\": 0.5}]\n },\n {\n \"width\":120,\n \"stack\": [\n {\"text\": \"$fromLabelUC\", \"style\": \"fromLabel\"}, \n \"$accountDetails\" \n ]\n },\n {\n \"width\":120,\n \"stack\": [\n {\"text\": \" \"},\n \"$accountAddress\"\n ],\n \"margin\": [10, 0, 0, 16]\n },\n {\n \"width\":10,\n \"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 0, \"x2\": 0, \"y2\": 75, \"lineWidth\": 0.5}]\n },\n {\n \"stack\": [\n {\"text\": \"$toLabelUC\", \"style\": \"toLabel\"}, \n \"$clientDetails\"\n ]\n },\n [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80]\n }\n ]\n ]\n },\n {\n \"text\": \"$entityTypeUC\",\n \"margin\": [0, 4, 0, 8],\n \"bold\": \"true\",\n \"fontSize\": 42\n },\n {\n \"columnGap\": 16,\n \"columns\": [\n {\n \"width\":\"auto\",\n \"text\": [\"$invoiceNoLabel\",\" \",\"$invoiceNumberValue\"],\n \"bold\": true,\n \"color\":\"$primaryColor:#bc9f2b\",\n \"fontSize\":10\n },\n {\n \"width\":\"auto\",\n \"text\": [\"$invoiceDateLabel\",\" \",\"$invoiceDateValue\"],\n \"fontSize\":10\n },\n {\n \"width\":\"auto\",\n \"text\": [\"$dueDateLabel?\",\" \",\"$dueDateValue\"],\n \"fontSize\":10\n },\n {\n \"width\":\"*\",\n \"text\": [\"$balanceDueLabel\",\" \",{\"text\":\"$balanceDue\", \"bold\":true, \"color\":\"$primaryColor:#bc9f2b\"}],\n \"fontSize\":10\n }\n ]\n },\n {\n \"margin\": [0, 26, 0, 0],\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$amount:.5\",\n \"paddingLeft\": \"$amount:8\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:8\", \n \"paddingBottom\": \"$amount:8\" \n }\n },\n {\n \"columns\": [\n {\n \"stack\": \"$notesAndTerms\",\n \"width\": \"*\",\n \"margin\": [0, 12, 0, 0]\n },\n {\n \"width\": 200,\n \"style\": \"subtotals\",\n \"table\": {\n \"widths\": [\"*\", \"36%\"],\n \"body\": \"$subtotals\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$notFirst:.5\",\n \"paddingLeft\": \"$amount:8\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:12\", \n \"paddingBottom\": \"$amount:4\" \n }\n }\n ]\n },\n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n ],\n \"footer\": {\n \"columns\": [\n {\n \"text\": \"$invoiceFooter\",\n \"alignment\": \"left\"\n }\n ],\n \"margin\": [40, -20, 40, 0]\n },\n \"defaultStyle\": {\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"styles\": {\n \"accountName\": {\n \"bold\": true\n },\n \"clientName\": {\n \"bold\": true\n },\n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"$primaryColor:#bc9f2b\",\n \"bold\": true\n },\n \"tableHeader\": {\n \"bold\": true,\n \"fontSize\": \"$fontSizeLargest\"\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"taxTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\"\n }, \n \"fromLabel\": {\n \"color\": \"$primaryColor:#bc9f2b\",\n \"bold\": true \n },\n \"toLabel\": {\n \"color\": \"$primaryColor:#bc9f2b\",\n \"bold\": true \n },\n \"accountDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"accountAddress\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"clientDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\"\n }, \n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 16, 0, 4]\n },\n \"fullheader\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n }\n },\n \"pageMargins\": [40, 40, 40, 40]\n}\n'),(9,'Playful',NULL,'{\n \"content\": [\n {\n \"columns\": [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80]\n },\n {\"canvas\": [{ \"type\": \"rect\", \"x\": 0, \"y\": 0, \"w\": 190, \"h\": \"$invoiceDetailsHeight\",\"r\":5, \"lineWidth\": 1,\"color\":\"$primaryColor:#009d91\"}],\"width\":10,\"margin\":[200,0,0,0]},\n {\n \"width\":400,\n \"table\": { \n \"body\": \"$invoiceDetails\"\n },\n \"layout\": \"noBorders\",\n \"margin\": [210, 10, 10, 0]\n }\n ] \n },\n {\n \"margin\": [0, 18, 0, 0],\n \"columnGap\": 50,\n \"columns\": [\n {\n \"width\": 212,\n \"stack\": [\n {\"text\": \"$invoiceToLabel:\", \"style\": \"toLabel\"},\n {\n \"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 4, \"x2\": 150, \"y2\": 4, \"lineWidth\": 1,\"dash\": { \"length\": 3 },\"lineColor\":\"$primaryColor:#009d91\"}],\n \"margin\": [0, 0, 0, 4]\n },\n \"$clientDetails\",\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 9, \"x2\": 150, \"y2\": 9, \"lineWidth\": 1,\"dash\": { \"length\": 3 },\"lineColor\":\"$primaryColor:#009d91\"}]}\n ]\n },\n {\n \"width\": \"*\",\n \"stack\": [\n {\"text\": \"$fromLabel:\", \"style\": \"fromLabel\"},\n {\n \"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 4, \"x2\": 250, \"y2\": 4, \"lineWidth\": 1,\"dash\": { \"length\": 3 },\"lineColor\":\"$primaryColor:#009d91\"}],\n \"margin\": [0, 0, 0, 4]\n },\n {\"columns\":[\n \"$accountDetails\",\n \"$accountAddress\" \n ], \"columnGap\": 4}, \n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 9, \"x2\": 250, \"y2\": 9, \"lineWidth\": 1,\"dash\": { \"length\": 3 },\"lineColor\":\"$primaryColor:#009d91\"}]}\n ]\n }\n ]\n },\n {\"canvas\": [{ \"type\": \"rect\", \"x\": 0, \"y\": 0, \"w\": 515, \"h\": 35,\"r\":6, \"lineWidth\": 1,\"color\":\"$primaryColor:#009d91\"}],\"width\":10,\"margin\":[0,30,0,-30]},\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$notFirst:.5\",\n \"vLineWidth\": \"$none\",\n \"hLineColor\": \"$primaryColor:#009d91\",\n \"paddingLeft\": \"$amount:8\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:8\", \n \"paddingBottom\": \"$amount:8\"\n }\n }, \n {\n \"columns\": [\n \"$notesAndTerms\",\n {\n \"stack\": [\n {\n \"style\": \"subtotals\",\n \"table\": {\n \"widths\": [\"*\", \"35%\"],\n \"body\": \"$subtotalsWithoutBalance\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:4\",\n \"paddingBottom\": \"$amount:4\"\n }\n },\n {\n \"canvas\": [\n {\n \"type\": \"rect\",\n \"x\": 76,\n \"y\": 20,\n \"w\": 182,\n \"h\": 30,\n \"r\": 4,\n \"lineWidth\": 1,\n \"color\": \"$primaryColor:#009d91\"\n }\n ]\n },\n {\n \"style\": \"subtotalsBalance\",\n \"table\": {\n \"widths\": [\"*\", \"35%\"],\n \"body\": \"$subtotalsBalance\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\",\n \"paddingRight\": \"$amount:8\",\n \"paddingTop\": \"$amount:4\",\n \"paddingBottom\": \"$amount:4\"\n }\n }\n ]\n }\n ]\n }, \n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n], \n \"footer\": [\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 38, \"x2\": 68, \"y2\": 38, \"lineWidth\": 6,\"lineColor\":\"#009d91\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 68, \"y1\": 0, \"x2\": 135, \"y2\": 0, \"lineWidth\": 6,\"lineColor\":\"#1d766f\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 135, \"y1\": 0, \"x2\": 201, \"y2\": 0, \"lineWidth\": 6,\"lineColor\":\"#ffb800\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 201, \"y1\": 0, \"x2\": 267, \"y2\": 0, \"lineWidth\": 6,\"lineColor\":\"#bf9730\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 267, \"y1\": 0, \"x2\": 333, \"y2\": 0, \"lineWidth\": 6,\"lineColor\":\"#ac2b50\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 333, \"y1\": 0, \"x2\": 399, \"y2\": 0, \"lineWidth\": 6,\"lineColor\":\"#e60042\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 399, \"y1\": 0, \"x2\": 465, \"y2\": 0, \"lineWidth\": 6,\"lineColor\":\"#ffb800\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 465, \"y1\": 0, \"x2\": 532, \"y2\": 0, \"lineWidth\": 6,\"lineColor\":\"#009d91\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 532, \"y1\": 0, \"x2\": 600, \"y2\": 0, \"lineWidth\": 6,\"lineColor\":\"#ac2b50\"}]},\n {\n \"text\": \"$invoiceFooter\",\n \"alignment\": \"left\",\n \"margin\": [40, -60, 40, 0]\n }\n ],\n \"header\": [\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 0, \"x2\": 68, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#009d91\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 68, \"y1\": 0, \"x2\": 135, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#1d766f\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 135, \"y1\": 0, \"x2\": 201, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#ffb800\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 201, \"y1\": 0, \"x2\": 267, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#bf9730\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 267, \"y1\": 0, \"x2\": 333, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#ac2b50\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 333, \"y1\": 0, \"x2\": 399, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#e60042\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 399, \"y1\": 0, \"x2\": 465, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#ffb800\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 465, \"y1\": 0, \"x2\": 532, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#009d91\"}]},\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 532, \"y1\": 0, \"x2\": 600, \"y2\": 0, \"lineWidth\": 9,\"lineColor\":\"#ac2b50\"}]}\n ],\n \"defaultStyle\": {\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"styles\": {\n \"accountName\": {\n \"color\": \"$secondaryColor:#bb3328\"\n },\n \"accountDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"accountAddress\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"clientDetails\": {\n \"margin\": [0, 2, 0, 1]\n },\n \"clientName\": {\n \"color\": \"$secondaryColor:#bb3328\"\n },\n \"even\": {\n \"fillColor\":\"#E8E8E8\"\n },\n \"odd\": {\n \"fillColor\":\"#F7F7F7\"\n },\n \"productKey\": {\n \"color\": \"$secondaryColor:#bb3328\"\n },\n \"lineTotal\": {\n \"bold\": true\n },\n \"tableHeader\": {\n \"bold\": true,\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"#FFFFFF\"\n },\n \"secondTableHeader\": {\n \"color\": \"$primaryColor:#009d91\"\n },\n \"costTableHeader\": {\n \"alignment\": \"right\"\n },\n \"qtyTableHeader\": {\n \"alignment\": \"right\"\n },\n \"lineTotalTableHeader\": {\n \"alignment\": \"right\"\n }, \n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\":\"#FFFFFF\",\n \"bold\": true\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true,\n \"color\":\"#FFFFFF\",\n \"alignment\":\"right\"\n },\n \"invoiceDetails\": {\n \"color\": \"#FFFFFF\"\n },\n \"invoiceLineItemsTable\": {\n \"margin\": [0, 0, 0, 16]\n },\n \"invoiceDetailBalanceDueLabel\": {\n \"bold\": true\n },\n \"invoiceDetailBalanceDue\": {\n \"bold\": true\n },\n \"fromLabel\": {\n \"color\": \"$primaryColor:#009d91\"\n },\n \"toLabel\": {\n \"color\": \"$primaryColor:#009d91\"\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"subtotals\": {\n \"alignment\": \"right\"\n }, \n \"subtotalsBalance\": {\n \"alignment\": \"right\",\n \"margin\": [0, -25, 0, 0]\n }, \n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 0, 0, 4]\n },\n \"fullheader\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"subheader\": {\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n }\n },\n \"pageMargins\": [40, 40, 40, 40]\n}\n'),(10,'Photo',NULL,'{\n \"content\": [\n {\n \"columns\": [\n {\n \"image\": \"$accountLogo\",\n \"fit\": [120, 80]\n },\n {\n \"text\": \"\",\n \"width\": \"*\"\n },\n {\n \"width\":180,\n \"table\": { \n \"body\": \"$invoiceDetails\"\n },\n \"layout\": \"noBorders\"\n }]\n },\n {\n \"image\": \"data:image/jpeg;base64,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\",\n \"margin\": [-40, 16, 0, 0],\n \"width\": 595\n },\n {\n \"margin\": [-20, -150, 0, 0],\n \"columnGap\": 8,\n \"columns\": [\n {\n \"width\": \"auto\",\n \"text\": \"$toLabel:\",\n \"style\": \"bold\",\n \"color\":\"#cd5138\"\n },\n {\n \"width\": \"*\",\n \"stack\": \"$clientDetails\",\n \"margin\": [4, 0, 0, 0]\n }\n ]\n },\n {\n \"margin\": [-20, 10, 0, 140],\n \"columnGap\": 8,\n \"columns\": [\n {\n \"width\": \"auto\",\n \"text\": \"$fromLabel:\",\n \"style\": \"bold\",\n \"color\":\"#cd5138\"\n },\n {\n \"width\": \"*\",\n \"stack\": [\n {\n \"width\": 150,\n \"stack\": \"$accountDetails\"\n },\n {\n \"width\": 150,\n \"stack\": \"$accountAddress\"\n }\n ]\n }\n ]\n },\n {\"canvas\": [{ \"type\": \"line\", \"x1\": 0, \"y1\": 5, \"x2\": 515, \"y2\": 5, \"lineWidth\": 1.5}],\"margin\":[0,0,0,-30]},\n {\n \"style\": \"invoiceLineItemsTable\",\n \"table\": {\n \"headerRows\": 1,\n \"widths\": \"$invoiceLineItemColumns\",\n \"body\": \"$invoiceLineItems\"\n },\n \"layout\": {\n \"hLineWidth\": \"$notFirst:.5\",\n \"vLineWidth\": \"$none\",\n \"hLineColor\": \"#000000\",\n \"paddingLeft\": \"$amount:8\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:10\", \n \"paddingBottom\": \"$amount:10\" \n }\n },\n {\n \"columns\": [\n \"$notesAndTerms\",\n {\n \"alignment\": \"right\",\n \"table\": {\n \"widths\": [\"*\", \"40%\"],\n \"body\": \"$subtotals\"\n },\n \"layout\": {\n \"hLineWidth\": \"$none\",\n \"vLineWidth\": \"$none\",\n \"paddingLeft\": \"$amount:34\", \n \"paddingRight\": \"$amount:8\", \n \"paddingTop\": \"$amount:4\", \n \"paddingBottom\": \"$amount:4\" \n }\n }]\n },\n {\n \"stack\": [\n \"$invoiceDocuments\"\n ],\n \"style\": \"invoiceDocuments\"\n }\n ],\n \"defaultStyle\": {\n \"fontSize\": \"$fontSize\",\n \"margin\": [8, 4, 8, 4]\n },\n \"footer\": {\n \"columns\": [\n {\n \"text\": \"$invoiceFooter\",\n \"alignment\": \"left\"\n }\n ],\n \"margin\": [40, -20, 40, 0]\n },\n \"styles\": {\n \"accountDetails\": {\n \"margin\": [0, 0, 0, 3]\n },\n \"accountAddress\": {\n \"margin\": [0, 0, 0, 3]\n },\n \"clientDetails\": {\n \"margin\": [0, 0, 0, 3]\n },\n \"productKey\": {\n \"color\": \"$primaryColor:#cd5138\"\n },\n \"lineTotal\": {\n \"color\": \"$primaryColor:#cd5138\"\n },\n \"tableHeader\": {\n \"bold\": true,\n \"fontSize\": \"$fontSizeLarger\"\n },\n \"subtotalsBalanceDueLabel\": {\n \"fontSize\": \"$fontSizeLargest\"\n },\n \"subtotalsBalanceDue\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"color\": \"$primaryColor:#cd5138\"\n },\n \"invoiceLineItemsTable\": {\n \"margin\": [0, 0, 0, 16]\n },\n \"cost\": {\n \"alignment\": \"right\"\n },\n \"quantity\": {\n \"alignment\": \"right\"\n },\n \"tax\": {\n \"alignment\": \"right\"\n },\n \"lineTotal\": {\n \"alignment\": \"right\"\n },\n \"termsLabel\": {\n \"bold\": true,\n \"margin\": [0, 0, 0, 4]\n },\n \"fullheader\": {\n \"fontSize\": \"$fontSizeLargest\",\n \"bold\": true\n },\n \"help\": {\n \"fontSize\": \"$fontSizeSmaller\",\n \"color\": \"#737373\"\n }\n },\n \"pageMargins\": [40, 30, 40, 30]\n}\n'),(11,'Custom1',NULL,NULL),(12,'Custom2',NULL,NULL),(13,'Custom3',NULL,NULL); /*!40000 ALTER TABLE `invoice_designs` ENABLE KEYS */; UNLOCK TABLES; @@ -1827,7 +1827,7 @@ CREATE TABLE `payment_libraries` ( LOCK TABLES `payment_libraries` WRITE; /*!40000 ALTER TABLE `payment_libraries` DISABLE KEYS */; -INSERT INTO `payment_libraries` VALUES (1,'2017-10-26 04:22:55','2017-10-26 04:22:55','Omnipay',1),(2,'2017-10-26 04:22:55','2017-10-26 04:22:55','PHP-Payments [Deprecated]',1); +INSERT INTO `payment_libraries` VALUES (1,'2017-10-31 05:57:05','2017-10-31 05:57:05','Omnipay',1),(2,'2017-10-31 05:57:05','2017-10-31 05:57:05','PHP-Payments [Deprecated]',1); /*!40000 ALTER TABLE `payment_libraries` ENABLE KEYS */; UNLOCK TABLES; @@ -1937,7 +1937,7 @@ CREATE TABLE `payment_terms` ( LOCK TABLES `payment_terms` WRITE; /*!40000 ALTER TABLE `payment_terms` DISABLE KEYS */; -INSERT INTO `payment_terms` VALUES (1,7,'Net 7','2017-10-26 04:22:55','2017-10-26 04:22:55',NULL,0,0,1),(2,10,'Net 10','2017-10-26 04:22:55','2017-10-26 04:22:55',NULL,0,0,2),(3,14,'Net 14','2017-10-26 04:22:55','2017-10-26 04:22:55',NULL,0,0,3),(4,15,'Net 15','2017-10-26 04:22:55','2017-10-26 04:22:55',NULL,0,0,4),(5,30,'Net 30','2017-10-26 04:22:55','2017-10-26 04:22:55',NULL,0,0,5),(6,60,'Net 60','2017-10-26 04:22:55','2017-10-26 04:22:55',NULL,0,0,6),(7,90,'Net 90','2017-10-26 04:22:55','2017-10-26 04:22:55',NULL,0,0,7),(8,-1,'Net 0','2017-10-26 04:22:58','2017-10-26 04:22:58',NULL,0,0,0); +INSERT INTO `payment_terms` VALUES (1,7,'Net 7','2017-10-31 05:57:05','2017-10-31 05:57:05',NULL,0,0,1),(2,10,'Net 10','2017-10-31 05:57:05','2017-10-31 05:57:05',NULL,0,0,2),(3,14,'Net 14','2017-10-31 05:57:05','2017-10-31 05:57:05',NULL,0,0,3),(4,15,'Net 15','2017-10-31 05:57:05','2017-10-31 05:57:05',NULL,0,0,4),(5,30,'Net 30','2017-10-31 05:57:05','2017-10-31 05:57:05',NULL,0,0,5),(6,60,'Net 60','2017-10-31 05:57:05','2017-10-31 05:57:05',NULL,0,0,6),(7,90,'Net 90','2017-10-31 05:57:05','2017-10-31 05:57:05',NULL,0,0,7),(8,-1,'Net 0','2017-10-31 05:57:08','2017-10-31 05:57:08',NULL,0,0,0); /*!40000 ALTER TABLE `payment_terms` ENABLE KEYS */; UNLOCK TABLES; @@ -2478,6 +2478,7 @@ CREATE TABLE `users` ( `is_admin` tinyint(1) NOT NULL DEFAULT '1', `permissions` int(10) unsigned NOT NULL DEFAULT '0', `bot_user_id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `google_2fa_secret` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `users_username_unique` (`username`), UNIQUE KEY `users_account_id_public_id_unique` (`account_id`,`public_id`), @@ -2596,4 +2597,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2017-10-26 10:22:58 +-- Dump completed on 2017-10-31 9:57:09 diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index cf3496612b..94dcc380c1 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -2510,6 +2510,14 @@ $LANG = array( 'product_fields_help' => 'Drag and drop fields to change their order', 'custom_value1' => 'Custom Value', 'custom_value2' => 'Custom Value', + 'enable_two_factor' => 'Two-Factor Authentication', + 'enable_two_factor_help' => 'Use your phone to confirm your identity when logging in', + 'two_factor_setup' => 'Two-Factor Setup', + 'two_factor_setup_help' => 'Scan the bar code with a :link compatible app or enter the following code: :code', + 'return_to_settings' => 'Return to Settings', + 'one_time_password' => 'One Time Password', + 'set_phone_for_two_factor' => 'Set your phone number to enable.', + ); diff --git a/resources/views/accounts/user_details.blade.php b/resources/views/accounts/user_details.blade.php index 2c98b35c81..50bf6f0cf4 100644 --- a/resources/views/accounts/user_details.blade.php +++ b/resources/views/accounts/user_details.blade.php @@ -6,7 +6,8 @@ {!! Former::open_for_files()->addClass('warn-on-exit')->rules(array( 'first_name' => 'required', 'last_name' => 'required', - 'email' => 'email|required' + 'email' => 'email|required', + 'phone' => $user->google_2fa_secret ? 'required' : '' )) !!} {{ Former::populate($account) }} @@ -15,6 +16,7 @@ {{ Former::populateField('email', $user->email) }} {{ Former::populateField('phone', $user->phone) }} {{ Former::populateField('dark_mode', intval($user->dark_mode)) }} + {{ Former::populateField('enable_two_factor', $user->google_2fa_secret ? 1 : 0) }} @if (Input::has('affiliate')) {{ Former::populateField('referral_code', true) }} @@ -48,6 +50,21 @@ !!} @endif + @if ($user->google_2fa_secret) + {!! Former::checkbox('enable_two_factor') + ->help(trans('texts.enable_two_factor_help')) + ->text(trans('texts.enable')) + ->value(1) !!} + @elseif ($user->phone) + {!! Former::plaintext('enable_two_factor')->value( + Button::primary(trans('texts.enable'))->asLinkTo(url('settings/enable_two_factor'))->small() + )->help('enable_two_factor_help') !!} + @else + {!! Former::plaintext('enable_two_factor') + ->value('' . trans('texts.set_phone_for_two_factor') . '') !!} + @endif + + {!! Former::checkbox('dark_mode') ->help(trans('texts.dark_mode_help')) ->text(trans('texts.enable')) diff --git a/resources/views/auth/password.blade.php b/resources/views/auth/password.blade.php index d9532de547..cec7ce2645 100644 --- a/resources/views/auth/password.blade.php +++ b/resources/views/auth/password.blade.php @@ -47,6 +47,11 @@ diff --git a/resources/views/auth/two_factor.blade.php b/resources/views/auth/two_factor.blade.php new file mode 100644 index 0000000000..19f00b24e5 --- /dev/null +++ b/resources/views/auth/two_factor.blade.php @@ -0,0 +1,41 @@ +@extends('login') + +@section('form') + + @include('partials.warn_session', ['redirectTo' => '/logout?reason=inactive']) + +
+ + {!! Former::open() + ->rules(['totp' => 'required']) + ->addClass('form-signin') !!} + + +
+ + {!! Former::text('totp') + ->placeholder(trans('texts.one_time_password')) + ->autofocus() + ->forceValue('') + ->raw() !!} + + {!! Button::success(trans('texts.submit')) + ->withAttributes(['id' => 'loginButton', 'class' => 'green']) + ->large()->submit()->block() !!} + + @if (count($errors->all())) +
+
+ @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
    + @endif + + {!! Former::close() !!} + +
    + +@endsection diff --git a/resources/views/clientauth/password.blade.php b/resources/views/clientauth/password.blade.php index 5092f9f7a7..26fadf17a8 100644 --- a/resources/views/clientauth/password.blade.php +++ b/resources/views/clientauth/password.blade.php @@ -41,4 +41,13 @@ {!! Former::close() !!} -@endsection \ No newline at end of file + + + +@endsection diff --git a/resources/views/users/two_factor.blade.php b/resources/views/users/two_factor.blade.php new file mode 100644 index 0000000000..c9c08b2029 --- /dev/null +++ b/resources/views/users/two_factor.blade.php @@ -0,0 +1,31 @@ +@extends('header') + +@section('content') + @parent + + + @if (Utils::isAdmin()) + @include('accounts.nav', ['selected' => ACCOUNT_USER_DETAILS]) + @endif + +
    +
    +
    +
    +

    {!! trans('texts.two_factor_setup') !!}

    +
    +
    +
    + +

    {!! trans('texts.two_factor_setup_help', ['code' => $secret, 'link' => link_to('https://github.com/antonioribeiro/google2fa#google-authenticator-apps', 'Google Authenticator', ['target' => '_blank'])]) !!}

    +
    +

     

    +
    + {!! Button::normal(trans('texts.return_to_settings'))->large()->asLinkTo(url('settings/user_details')) !!} +
    +
    +
    +
    +
    + +@stop