Merge pull request #7215 from turbo124/v5-stable

v5.3.59
This commit is contained in:
David Bomba 2022-02-17 17:02:40 +11:00 committed by GitHub
commit 14f4ec8168
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
127 changed files with 195232 additions and 192827 deletions

View File

@ -1 +1 @@
5.3.58
5.3.59

View File

@ -80,12 +80,12 @@ class ClientFilters extends QueryFilters
}
public function id_number(string $id_number):Builder
public function id_number(string $id_number = ''):Builder
{
return $this->builder->where('id_number', $id_number);
}
public function number(string $number):Builder
public function number(string $number = ''):Builder
{
return $this->builder->where('number', $number);
}

View File

@ -163,7 +163,7 @@ class CreditFilters extends QueryFilters
*/
public function entityFilter()
{
if (auth('contact')->user()) {
if (auth()->guard('contact')->user()) {
return $this->contactViewFilter();
} else {
return $this->builder->company();
@ -181,7 +181,7 @@ class CreditFilters extends QueryFilters
private function contactViewFilter() : Builder
{
return $this->builder
->whereCompanyId(auth('contact')->user()->company->id)
->whereCompanyId(auth()->guard('contact')->user()->company->id)
->whereNotIn('status_id', [Credit::STATUS_DRAFT]);
}
}

View File

@ -148,6 +148,10 @@ class InvoiceFilters extends QueryFilters
{
$sort_col = explode('|', $sort);
//catch invalid explode array count
if(count($sort_col) == 1)
return $this->builder;
return $this->builder->orderBy($sort_col[0], $sort_col[1]);
}
@ -173,7 +177,7 @@ class InvoiceFilters extends QueryFilters
*/
public function entityFilter()
{
if (auth('contact')->user()) {
if (auth()->guard('contact')->user()) {
return $this->contactViewFilter();
} else {
return $this->builder->company()->with(['invitations.company'], ['documents.company']);
@ -191,7 +195,7 @@ class InvoiceFilters extends QueryFilters
private function contactViewFilter() : Builder
{
return $this->builder
->whereCompanyId(auth('contact')->user()->company->id)
->whereCompanyId(auth()->guard('contact')->user()->company->id)
->whereNotIn('status_id', [Invoice::STATUS_DRAFT, Invoice::STATUS_CANCELLED]);
}
}

View File

@ -119,7 +119,7 @@ class PaymentFilters extends QueryFilters
*/
public function entityFilter()
{
if (auth('contact')->user()) {
if (auth()->guard('contact')->user()) {
return $this->contactViewFilter();
} else {
return $this->builder->company();
@ -135,7 +135,7 @@ class PaymentFilters extends QueryFilters
private function contactViewFilter() : Builder
{
return $this->builder
->whereCompanyId(auth('contact')->user()->company->id)
->whereCompanyId(auth()->guard('contact')->user()->company->id)
->whereIsDeleted(false);
}
}

View File

@ -161,8 +161,8 @@ abstract class QueryFilters
*/
public function clientFilter()
{
if (auth('contact')->user()) {
return $this->builder->whereClientId(auth('contact')->user()->client->id);
if (auth()->guard('contact')->user()) {
return $this->builder->whereClientId(auth()->guard('contact')->user()->client->id);
}
}

View File

@ -34,7 +34,7 @@ class CreditController extends Controller
$data = [
'credit' => $credit,
'key' => $invitation->key
'key' => $invitation ? $invitation->key : false
];
if ($invitation && auth()->guard('contact') && ! request()->has('silent') && ! $invitation->viewed_date) {

View File

@ -71,11 +71,11 @@ class DocumentController extends Controller
public function downloadMultiple(DownloadMultipleDocumentsRequest $request)
{
$documents = Document::whereIn('id', $this->transformKeys($request->file_hash))
->where('company_id', auth('contact')->user()->company->id)
->where('company_id', auth()->guard('contact')->user()->company->id)
->get();
$documents->map(function ($document) {
if (auth()->user('contact')->client->id != $document->documentable->id) {
if (auth()->guard('contact')->user()->client->id != $document->documentable->id) {
abort(401, 'Permission denied');
}
});

View File

@ -61,7 +61,7 @@ class InvoiceController extends Controller
$invoice->service()->removeUnpaidGatewayFees()->save();
$invitation = $invoice->invitations()->where('client_contact_id', auth()->user()->id)->first();
$invitation = $invoice->invitations()->where('client_contact_id', auth()->guard('contact')->user()->id)->first();
if ($invitation && auth()->guard('contact') && ! request()->has('silent') && ! $invitation->viewed_date) {
@ -74,7 +74,7 @@ class InvoiceController extends Controller
$data = [
'invoice' => $invoice,
'key' => $invitation->key
'key' => $invitation ? $invitation->key : false
];
if ($request->query('mode') === 'fullscreen') {

View File

@ -100,7 +100,7 @@ class NinjaPlanController extends Controller
}
$recurring_invoice = RecurringInvoice::on('db-ninja-01')
->where('client_id', auth('contact')->user()->client->id)
->where('client_id', auth()->guard('contact')->user()->client->id)
->where('company_id', Auth::guard('contact')->user()->company->id)
->whereNotNull('subscription_id')
->where('status_id', RecurringInvoice::STATUS_ACTIVE)

View File

@ -130,7 +130,7 @@ class PaymentMethodController extends Controller
try {
event(new MethodDeleted($payment_method, auth('contact')->user()->company, Ninja::eventVars(auth('contact')->user()->id)));
event(new MethodDeleted($payment_method, auth()->guard('contact')->user()->company, Ninja::eventVars(auth()->guard('contact')->user()->id)));
$payment_method->delete();

View File

@ -63,7 +63,7 @@ class QuoteController extends Controller
$data = [
'quote' => $quote,
'key' => $invitation->key,
'key' => $invitation ? $invitation->key : false,
];
if ($invitation && auth()->guard('contact') && ! request()->has('silent') && ! $invitation->viewed_date) {
@ -160,8 +160,8 @@ class QuoteController extends Controller
protected function approve(array $ids, $process = false)
{
$quotes = Quote::whereIn('id', $ids)
->where('client_id', auth('contact')->user()->client->id)
->where('company_id', auth('contact')->user()->client->company_id)
->where('client_id', auth()->guard('contact')->user()->client->id)
->where('company_id', auth()->guard('contact')->user()->client->company_id)
->whereIn('status_id', [Quote::STATUS_DRAFT, Quote::STATUS_SENT])
->withTrashed()
->get();
@ -175,7 +175,7 @@ class QuoteController extends Controller
if ($process) {
foreach ($quotes as $quote) {
$quote->service()->approve(auth()->user())->save();
event(new QuoteWasApproved(auth('contact')->user(), $quote, $quote->company, Ninja::eventVars()));
event(new QuoteWasApproved(auth()->guard('contact')->user(), $quote, $quote->company, Ninja::eventVars()));
if (request()->has('signature') && !is_null(request()->signature) && !empty(request()->signature)) {
InjectSignature::dispatch($quote, request()->signature);

View File

@ -26,8 +26,8 @@ class SubscriptionController extends Controller
$count = RecurringInvoice::query()
->where('client_id', auth('contact')->user()->client->id)
->where('company_id', auth('contact')->user()->client->company_id)
->where('client_id', auth()->guard('contact')->user()->client->id)
->where('company_id', auth()->guard('contact')->user()->client->company_id)
->where('status_id', RecurringInvoice::STATUS_ACTIVE)
->where('is_deleted', 0)
->whereNotNull('subscription_id')
@ -35,7 +35,7 @@ class SubscriptionController extends Controller
->count();
if($count == 0)
return redirect()->route('client.ninja_contact_login', ['contact_key' => auth('contact')->user()->contact_key, 'company_key' => auth('contact')->user()->company->company_key]);
return redirect()->route('client.ninja_contact_login', ['contact_key' => auth()->guard('contact')->user()->contact_key, 'company_key' => auth()->guard('contact')->user()->company->company_key]);
}

View File

@ -26,7 +26,7 @@ class TaskController extends Controller
public function index(ShowTasksRequest $request)
{
\Carbon\Carbon::setLocale(
auth('contact')->user()->preferredLocale()
auth()->guard('contact')->user()->preferredLocale()
);
return render('tasks.index');

View File

@ -14,6 +14,7 @@ namespace App\Http\Controllers;
use App\Http\Requests\Import\ImportRequest;
use App\Http\Requests\Import\PreImportRequest;
use App\Jobs\Import\CSVImport;
use App\Jobs\Import\CSVIngest;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Str;
@ -81,6 +82,7 @@ class ImportController extends Controller {
/** @var UploadedFile $file */
foreach ( $request->files->get( 'files' ) as $entityType => $file ) {
$contents = file_get_contents( $file->getPathname() );
// $contents = mb_convert_encoding($contents, 'UTF-16LE', 'UTF-8');
// Store the csv in cache with an expiry of 10 minutes
Cache::put( $hash . '-' . $entityType, base64_encode( $contents ), 600 );
@ -115,7 +117,9 @@ class ImportController extends Controller {
}
}
CSVImport::dispatch( $data, auth()->user()->company() );
unset($data['files']);
// CSVImport::dispatch( $data, auth()->user()->company() );
CSVIngest::dispatch( $data, auth()->user()->company() );
return response()->json( [ 'message' => ctrans( 'texts.import_started' ) ], 200 );
}

View File

@ -311,7 +311,7 @@ class PreviewController extends BaseController
$t = app('translator');
$t->replace(Ninja::transformTranslations(auth()->user()->company()->settings));
$invitation = InvoiceInvitation::where('company_id', auth()->user()->company()->id)->first();
$invitation = InvoiceInvitation::where('company_id', auth()->user()->company()->id)->orderBy('id', 'desc')->first();
/* If we don't have a valid invitation in the system - create a mock using transactions */
if(!$invitation)

View File

@ -36,7 +36,7 @@ class CreditsTable extends Component
{
$query = Credit::query()
->where('client_id', auth('contact')->user()->client->id)
->where('client_id', auth()->guard('contact')->user()->client->id)
->where('company_id', $this->company->id)
->where('status_id', '<>', Credit::STATUS_DRAFT)
->where('is_deleted', 0)

View File

@ -75,7 +75,7 @@ class InvoicesTable extends Component
}
$query = $query
->where('client_id', auth('contact')->user()->client->id)
->where('client_id', auth()->guard('contact')->user()->client->id)
->where('status_id', '<>', Invoice::STATUS_DRAFT)
->where('status_id', '<>', Invoice::STATUS_CANCELLED)
->withTrashed()

View File

@ -43,7 +43,7 @@ class PaymentsTable extends Component
->with('type', 'client')
->whereIn('status_id', [Payment::STATUS_COMPLETED, Payment::STATUS_PENDING, Payment::STATUS_REFUNDED, Payment::STATUS_PARTIALLY_REFUNDED])
->where('company_id', $this->company->id)
->where('client_id', auth('contact')->user()->client->id)
->where('client_id', auth()->guard('contact')->user()->client->id)
->orderBy($this->sort_field, $this->sort_asc ? 'asc' : 'desc')
->withTrashed()
->paginate($this->per_page);

View File

@ -37,7 +37,7 @@ class General extends Component
public function mount()
{
$profile = auth()->user('contact');
$profile = auth()->guard('contact')->user();
$this->fill([
'profile' => $profile,

View File

@ -25,11 +25,11 @@ class NameWebsiteLogo extends Component
public function mount()
{
$this->fill([
'profile' => auth()->user('contact')->client,
'name' => auth()->user('contact')->client->present()->name,
'vat_number' => auth()->user('contact')->client->present()->vat_number,
'website' => auth()->user('contact')->client->present()->website,
'phone' => auth()->user('contact')->client->present()->phone,
'profile' => auth()->guard('contact')->user()->client,
'name' => auth()->guard('contact')->user()->client->present()->name,
'vat_number' => auth()->guard('contact')->user()->client->present()->vat_number,
'website' => auth()->guard('contact')->user()->client->present()->website,
'phone' => auth()->guard('contact')->user()->client->present()->phone,
'saved' => ctrans('texts.save'),
]);
}

View File

@ -31,13 +31,13 @@ class PersonalAddress extends Component
public function mount($countries)
{
$this->fill([
'profile' => auth()->user('contact')->client,
'address1' => auth()->user('contact')->client->address1,
'address2' => auth()->user('contact')->client->address2,
'city' => auth()->user('contact')->client->city,
'state' => auth()->user('contact')->client->state,
'postal_code' => auth()->user('contact')->client->postal_code,
'country_id' => auth()->user('contact')->client->country_id,
'profile' => auth()->guard('contact')->user()->client,
'address1' => auth()->guard('contact')->user()->client->address1,
'address2' => auth()->guard('contact')->user()->client->address2,
'city' => auth()->guard('contact')->user()->client->city,
'state' => auth()->guard('contact')->user()->client->state,
'postal_code' => auth()->guard('contact')->user()->client->postal_code,
'country_id' => auth()->guard('contact')->user()->client->country_id,
'countries' => $countries,
'saved' => ctrans('texts.save'),

View File

@ -31,13 +31,13 @@ class ShippingAddress extends Component
public function mount($countries)
{
$this->fill([
'profile' => auth()->user('contact')->client,
'shipping_address1' => auth()->user('contact')->client->shipping_address1,
'shipping_address2' => auth()->user('contact')->client->shipping_address2,
'shipping_city' => auth()->user('contact')->client->shipping_city,
'shipping_state' => auth()->user('contact')->client->shipping_state,
'shipping_postal_code' => auth()->user('contact')->client->shipping_postal_code,
'shipping_country_id' => auth()->user('contact')->client->shipping_country_id,
'profile' => auth()->guard('contact')->user()->client,
'shipping_address1' => auth()->guard('contact')->user()->client->shipping_address1,
'shipping_address2' => auth()->guard('contact')->user()->client->shipping_address2,
'shipping_city' => auth()->guard('contact')->user()->client->shipping_city,
'shipping_state' => auth()->guard('contact')->user()->client->shipping_state,
'shipping_postal_code' => auth()->guard('contact')->user()->client->shipping_postal_code,
'shipping_country_id' => auth()->guard('contact')->user()->client->shipping_country_id,
'countries' => $countries,
'saved' => ctrans('texts.save'),

View File

@ -75,7 +75,7 @@ class QuotesTable extends Component
$query = $query
->where('company_id', $this->company->id)
->where('client_id', auth('contact')->user()->client->id)
->where('client_id', auth()->guard('contact')->user()->client->id)
->where('status_id', '<>', Quote::STATUS_DRAFT)
// ->where(function ($query){
// $query->whereDate('due_date', '>=', now())

View File

@ -40,7 +40,7 @@ class RecurringInvoicesTable extends Component
$query = RecurringInvoice::query();
$query = $query
->where('client_id', auth('contact')->user()->client->id)
->where('client_id', auth()->guard('contact')->user()->client->id)
->where('company_id', $this->company->id)
->whereIn('status_id', [RecurringInvoice::STATUS_ACTIVE])
->orderBy('status_id', 'asc')

View File

@ -35,7 +35,7 @@ class SubscriptionRecurringInvoicesTable extends Component
public function render()
{
$query = RecurringInvoice::query()
->where('client_id', auth('contact')->user()->client->id)
->where('client_id', auth()->guard('contact')->user()->client->id)
->where('company_id', $this->company->id)
->whereNotNull('subscription_id')
->where('is_deleted', false)

View File

@ -37,7 +37,7 @@ class TasksTable extends Component
$query = Task::query()
->where('company_id', $this->company->id)
->where('is_deleted', false)
->where('client_id', auth('contact')->user()->client->id);
->where('client_id', auth()->guard('contact')->user()->client->id);
if ($this->company->getSetting('show_all_tasks_client_portal') === 'invoiced') {
$query = $query->whereNotNull('invoice_id');

View File

@ -29,12 +29,14 @@ class CheckClientExistence
public function handle(Request $request, Closure $next)
{
if(session()->has('multiple_contacts'))
return $next($request);
$multiple_contacts = ClientContact::query()
->with('client.gateway_tokens','company')
->where('email', auth('contact')->user()->email)
->where('email', auth()->guard('contact')->user()->email)
->whereNotNull('email')
->where('email', '<>', '')
// ->whereNull('deleted_at')
->distinct('company_id')
->distinct('email')
->whereNotNull('company_id')
@ -42,7 +44,7 @@ class CheckClientExistence
return $query->where('is_deleted', false);
})
->whereHas('company', function ($query){
return $query->where('id', auth('contact')->user()->client->company_id);
return $query->where('id', auth()->guard('contact')->user()->client->company_id);
})
->get();

View File

@ -32,8 +32,8 @@ class Locale
if ($request->has('lang')) {
$locale = $request->input('lang');
App::setLocale($locale);
} elseif (auth('contact')->user()) {
App::setLocale(auth('contact')->user()->client->locale());
} elseif (auth()->guard('contact')->user()) {
App::setLocale(auth()->guard('contact')->user()->client->locale());
} elseif (auth()->user()) {
try{

View File

@ -25,7 +25,6 @@ use Illuminate\Validation\Rule;
class StoreClientRequest extends Request
{
use MakesHash;
/**
* Determine if the user is authorized to make this request.
*

View File

@ -15,7 +15,7 @@ class ShowCreditRequest extends FormRequest
public function authorize()
{
return !$this->credit->is_deleted
&& auth('contact')->user()->company->enabled_modules & PortalComposer::MODULE_CREDITS;
&& auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_CREDITS;
}
/**

View File

@ -19,7 +19,7 @@ class ShowCreditsRequest extends FormRequest
{
public function authorize()
{
return auth('contact')->user()->company->enabled_modules & PortalComposer::MODULE_CREDITS;
return auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_CREDITS;
}
public function rules()

View File

@ -27,9 +27,9 @@ class ShowDocumentRequest extends FormRequest
*/
public function authorize()
{
return auth()->user('contact')->client->id == $this->document->documentable_id
|| $this->document->documentable->client_id == auth()->user('contact')->client->id
|| $this->document->company_id == auth()->user('contact')->company->id;
return auth()->guard('contact')->user()->client_id == $this->document->documentable_id
|| $this->document->documentable->client_id == auth()->guard('contact')->user()->client_id
|| $this->document->company_id == auth()->guard('contact')->user()->company_id;
}
/**

View File

@ -19,7 +19,7 @@ class ProcessInvoicesInBulkRequest extends FormRequest
{
public function authorize()
{
return auth('contact')->user()->company->enabled_modules & PortalComposer::MODULE_INVOICES;
return auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_INVOICES;
}
public function rules()

View File

@ -23,7 +23,7 @@ class ShowInvoiceRequest extends Request
*/
public function authorize() : bool
{
return auth('contact')->user()->client->id == $this->invoice->client_id
&& auth('contact')->user()->company->enabled_modules & PortalComposer::MODULE_INVOICES;
return auth()->guard('contact')->user()->client_id == $this->invoice->client_id
&& auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_INVOICES;
}
}

View File

@ -19,7 +19,7 @@ class ShowInvoicesRequest extends FormRequest
{
public function authorize()
{
return auth('contact')->user()->company->enabled_modules & PortalComposer::MODULE_INVOICES;
return auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_INVOICES;
}
public function rules()

View File

@ -20,7 +20,7 @@ class ProcessQuotesInBulkRequest extends FormRequest
{
public function authorize()
{
return auth('contact')->user()->company->enabled_modules & PortalComposer::MODULE_QUOTES;
return auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_QUOTES;
}
public function rules()

View File

@ -20,7 +20,7 @@ class ShowQuoteRequest extends FormRequest
public function authorize()
{
return auth()->user()->client->id === $this->quote->client_id
&& auth('contact')->user()->company->enabled_modules & PortalComposer::MODULE_QUOTES;
&& auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_QUOTES;
}
public function rules()

View File

@ -19,7 +19,7 @@ class ShowQuotesRequest extends FormRequest
{
public function authorize()
{
return auth('contact')->user()->company->enabled_modules & PortalComposer::MODULE_QUOTES;
return auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_QUOTES;
}
public function rules()

View File

@ -9,7 +9,7 @@ class RequestCancellationRequest extends FormRequest
{
public function authorize()
{
return auth('contact')->user()->company->enabled_modules & PortalComposer::MODULE_RECURRING_INVOICES;
return auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_RECURRING_INVOICES;
}
public function rules()

View File

@ -18,8 +18,8 @@ class ShowRecurringInvoiceRequest extends Request
{
public function authorize() : bool
{
return auth('contact')->user()->client->id === $this->recurring_invoice->client_id
&& auth('contact')->user()->company->enabled_modules & PortalComposer::MODULE_RECURRING_INVOICES;
return auth()->guard('contact')->user()->client->id === $this->recurring_invoice->client_id
&& auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_RECURRING_INVOICES;
}
public function rules()

View File

@ -19,7 +19,7 @@ class ShowRecurringInvoicesRequest extends FormRequest
{
public function authorize()
{
return auth('contact')->user()->company->enabled_modules & PortalComposer::MODULE_RECURRING_INVOICES;
return auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_RECURRING_INVOICES;
}
public function rules()

View File

@ -44,6 +44,6 @@ class ShowStatementRequest extends FormRequest
public function client(): Client
{
return auth('contact')->user()->client;
return auth()->guard('contact')->user()->client;
}
}

View File

@ -23,7 +23,7 @@ class ShowTasksRequest extends FormRequest
*/
public function authorize()
{
return (bool)auth()->user('contact')->client->getSetting('enable_client_portal_tasks');
return (bool)auth()->guard('contact')->user()->client->getSetting('enable_client_portal_tasks');
}
/**

View File

@ -13,7 +13,7 @@ class StoreUploadRequest extends FormRequest
*/
public function authorize()
{
return (bool) auth('contact')->user()->client->getSetting('client_portal_enable_uploads');
return (bool) auth()->guard('contact')->user()->client->getSetting('client_portal_enable_uploads');
}
/**

View File

@ -11,6 +11,7 @@
namespace App\Http\Requests;
use App\Http\Requests\RuntimeFormRequest;
use App\Http\ValidationRules\User\RelatedUserRule;
use App\Utils\Traits\MakesHash;
use Illuminate\Foundation\Http\FormRequest;
@ -18,7 +19,7 @@ use Illuminate\Foundation\Http\FormRequest;
class Request extends FormRequest
{
use MakesHash;
use RuntimeFormRequest;
/**
* Get the validation rules that apply to the request.
*
@ -163,9 +164,18 @@ class Request extends FormRequest
}
}
if (array_key_exists('email', $contact))
$input['contacts'][$key]['email'] = trim($contact['email']);
}
}
return $input;
}
protected function prepareForValidation()
{
}
}

View File

@ -0,0 +1,43 @@
<?php
namespace App\Http\Requests;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
trait RuntimeFormRequest
{
public static function runFormRequest($value)
{
$value = self::getMockedRequestByParameters($value);
$validator = self::createFrom($value, new self());
$validator->setContainer(app());
$validator->prepareForValidation();
$validator->setValidator(Validator::make($validator->all(), $validator->rules()));
$instance = $validator->getValidatorInstance();
return $instance;
// if ($instance->fails()) {
// return $instance->errors();
// }
// $validator->passedValidation();
// return $validator->all();
}
protected static function getMockedRequestByParameters($paramters)
{
$mockRequest = Request::create('', 'POST');
$mockRequest->merge($paramters);
return $mockRequest;
}
}

View File

@ -51,10 +51,10 @@ class PortalComposer
$view->with($this->portalData());
if (auth('contact')->user()) {
if (auth()->guard('contact')->user()) {
App::forgetInstance('translator');
$t = app('translator');
$t->replace(Ninja::transformTranslations(auth('contact')->user()->client->getMergedSettings()));
$t->replace(Ninja::transformTranslations(auth()->guard('contact')->user()->client->getMergedSettings()));
}
}
@ -63,21 +63,21 @@ class PortalComposer
*/
private function portalData() :array
{
if (! auth('contact')->user()) {
if (! auth()->guard('contact')->user()) {
return [];
}
$this->settings = auth('contact')->user()->client->getMergedSettings();
$this->settings = auth()->guard('contact')->user()->client->getMergedSettings();
$data['sidebar'] = $this->sidebarMenu();
$data['header'] = [];
$data['footer'] = [];
$data['countries'] = TranslationHelper::getCountries();
$data['company'] = auth('contact')->user()->company;
$data['client'] = auth('contact')->user()->client;
$data['company'] = auth()->guard('contact')->user()->company;
$data['client'] = auth()->guard('contact')->user()->client;
$data['settings'] = $this->settings;
$data['currencies'] = TranslationHelper::getCurrencies();
$data['contact'] = auth('contact')->user();
$data['contact'] = auth()->guard('contact')->user();
$data['multiple_contacts'] = session()->get('multiple_contacts') ?: collect();
@ -86,7 +86,7 @@ class PortalComposer
private function sidebarMenu() :array
{
$enabled_modules = auth('contact')->user()->company->enabled_modules;
$enabled_modules = auth()->guard('contact')->user()->company->enabled_modules;
$data = [];
// TODO: Enable dashboard once it's completed.
@ -114,13 +114,13 @@ class PortalComposer
$data[] = ['title' => ctrans('texts.payment_methods'), 'url' => 'client.payment_methods.index', 'icon' => 'shield'];
$data[] = ['title' => ctrans('texts.documents'), 'url' => 'client.documents.index', 'icon' => 'download'];
if (auth('contact')->user()->client->getSetting('enable_client_portal_tasks')) {
if (auth()->guard('contact')->user()->client->getSetting('enable_client_portal_tasks')) {
$data[] = ['title' => ctrans('texts.tasks'), 'url' => 'client.tasks.index', 'icon' => 'clock'];
}
$data[] = ['title' => ctrans('texts.statement'), 'url' => 'client.statement', 'icon' => 'activity'];
if(Ninja::isHosted() && auth('contact')->user()->company->id == config('ninja.ninja_default_company_id'))
if(Ninja::isHosted() && auth()->guard('contact')->user()->company->id == config('ninja.ninja_default_company_id'))
$data[] = ['title' => ctrans('texts.plan'), 'url' => 'client.plan', 'icon' => 'credit-card'];
else
$data[] = ['title' => ctrans('texts.subscriptions'), 'url' => 'client.subscriptions.index', 'icon' => 'calendar'];

View File

@ -80,6 +80,8 @@ class BaseImport
public function getCsvData($entity_type)
{
nlog("get csv data = entity name = " . $entity_type);
$base64_encoded_csv = Cache::pull($this->hash . '-' . $entity_type);
if (empty($base64_encoded_csv)) {
return null;
@ -123,6 +125,9 @@ class BaseImport
private function groupInvoices($csvData, $key)
{
if(!$key)
return $csvData;
// Group by invoice.
$grouped = [];
@ -154,12 +159,7 @@ class BaseImport
try {
$entity = $this->transformer->transform($record);
/** @var \App\Http\Requests\Request $request */
$request = new $this->request_name();
// Pass entity data to request so it can be validated
$request->query = $request->request = new ParameterBag($entity);
$validator = Validator::make($entity, $request->rules());
$validator = $this->request_name::runFormRequest($entity);
if ($validator->fails()) {
$this->error_array[$entity_type][] = [
@ -220,8 +220,9 @@ class BaseImport
foreach ($invoices as $raw_invoice) {
try {
$invoice_data = $invoice_transformer->transform($raw_invoice);
nlog($invoice_data);
$invoice_data['line_items'] = $this->cleanItems(
$invoice_data['line_items'] ?? []
);
@ -247,10 +248,8 @@ class BaseImport
unset($invoice_data['client']);
}
$validator = Validator::make(
$invoice_data,
(new StoreInvoiceRequest())->rules()
);
$validator = $this->request_name::runFormRequest($invoice_data);
if ($validator->fails()) {
$this->error_array['invoice'][] = [
'invoice' => $invoice_data,
@ -519,22 +518,41 @@ class BaseImport
public function preTransform(array $data, $entity_type)
{
if (empty($this->column_map[$entity_type])) {
//sort the array by key
// $keys = $this->column_map[$entity_type];
$keys = array_shift( $data );
ksort($keys);
return array_map( function ( $values ) use ( $keys ) {
return array_combine( $keys, $values );
}, $data );
}
public function preTransformCsv(array $data, $entity_type)
{
if ( empty( $this->column_map[ $entity_type ] ) ) {
return false;
}
if ($this->skip_header) {
array_shift($data);
if ( $this->skip_header ) {
array_shift( $data );
}
//sort the array by key
$keys = $this->column_map[$entity_type];
ksort($keys);
$keys = $this->column_map[ $entity_type ];
ksort( $keys );
$data = array_map( function ( $row ) use ( $keys ) {
return array_combine( $keys, array_intersect_key( $row, $keys ) );
}, $data );
$data = array_map(function ($row) use ($keys) {
return array_combine($keys, array_intersect_key($row, $keys));
}, $data);
return $data;
}
}

View File

@ -71,7 +71,8 @@ class Csv extends BaseImport implements ImportInterface
$data = $this->getCsvData($entity_type);
$data = $this->preTransform($data, $entity_type);
if(is_array($data))
$data = $this->preTransformCsv($data, $entity_type);
if (empty($data)) {
$this->entity_count['clients'] = 0;
@ -98,7 +99,8 @@ class Csv extends BaseImport implements ImportInterface
$data = $this->getCsvData($entity_type);
$data = $this->preTransform($data, $entity_type);
if(is_array($data))
$data = $this->preTransformCsv($data, $entity_type);
if (empty($data)) {
$this->entity_count['products'] = 0;
@ -125,7 +127,8 @@ class Csv extends BaseImport implements ImportInterface
$data = $this->getCsvData($entity_type);
$data = $this->preTransform($data, $entity_type);
if(is_array($data))
$data = $this->preTransformCsv($data, $entity_type);
if (empty($data)) {
$this->entity_count['invoices'] = 0;
@ -152,7 +155,8 @@ class Csv extends BaseImport implements ImportInterface
$data = $this->getCsvData($entity_type);
$data = $this->preTransform($data, $entity_type);
if(is_array($data))
$data = $this->preTransformCsv($data, $entity_type);
if (empty($data)) {
$this->entity_count['payments'] = 0;
@ -179,7 +183,8 @@ class Csv extends BaseImport implements ImportInterface
$data = $this->getCsvData($entity_type);
$data = $this->preTransform($data, $entity_type);
if(is_array($data))
$data = $this->preTransformCsv($data, $entity_type);
if (empty($data)) {
$this->entity_count['vendors'] = 0;
@ -206,7 +211,8 @@ class Csv extends BaseImport implements ImportInterface
$data = $this->getCsvData($entity_type);
$data = $this->preTransform($data, $entity_type);
if(is_array($data))
$data = $this->preTransformCsv($data, $entity_type);
if (empty($data)) {
$this->entity_count['expenses'] = 0;

View File

@ -10,6 +10,104 @@
*/
namespace App\Import\Providers;
use App\Factory\ClientFactory;
use App\Factory\InvoiceFactory;
use App\Http\Requests\Client\StoreClientRequest;
use App\Http\Requests\Invoice\StoreInvoiceRequest;
use App\Import\Transformer\Freshbooks\ClientTransformer;
use App\Import\Transformer\Freshbooks\InvoiceTransformer;
use App\Repositories\ClientRepository;
use App\Repositories\InvoiceRepository;
class Freshbooks extends BaseImport
{
public array $entity_count = [];
public function import(string $entity)
{
if (
in_array($entity, [
'client',
'invoice',
// 'product',
// 'payment',
// 'vendor',
// 'expense',
])
) {
$this->{$entity}();
}
//collate any errors
$this->finalizeImport();
}
public function client()
{
$entity_type = 'client';
$data = $this->getCsvData($entity_type);
$data = $this->preTransform($data, $entity_type);
if (empty($data)) {
$this->entity_count['clients'] = 0;
return;
}
$this->request_name = StoreClientRequest::class;
$this->repository_name = ClientRepository::class;
$this->factory_name = ClientFactory::class;
$this->repository = app()->make($this->repository_name);
$this->repository->import_mode = true;
$this->transformer = new ClientTransformer($this->company);
$client_count = $this->ingest($data, $entity_type);
$this->entity_count['clients'] = $client_count;
}
public function invoice() {
//make sure we update and create products with wave
$initial_update_products_value = $this->company->update_products;
$this->company->update_products = true;
$this->company->save();
$entity_type = 'invoice';
$data = $this->getCsvData($entity_type);
$data = $this->preTransform($data, $entity_type);
if (empty($data)) {
$this->entity_count['invoices'] = 0;
return;
}
$this->request_name = StoreInvoiceRequest::class;
$this->repository_name = InvoiceRepository::class;
$this->factory_name = InvoiceFactory::class;
$this->repository = app()->make($this->repository_name);
$this->repository->import_mode = true;
$this->transformer = new InvoiceTransformer($this->company);
$invoice_count = $this->ingestInvoices($data, 'Invoice #');
$this->entity_count['invoices'] = $invoice_count;
$this->company->update_products = $initial_update_products_value;
$this->company->save();
}
}

View File

@ -10,7 +10,75 @@
*/
namespace App\Import\Providers;
use App\Factory\ClientFactory;
use App\Factory\InvoiceFactory;
use App\Http\Requests\Client\StoreClientRequest;
use App\Http\Requests\Invoice\StoreInvoiceRequest;
use App\Import\Transformer\Invoice2Go\InvoiceTransformer;
use App\Repositories\ClientRepository;
use App\Repositories\InvoiceRepository;
class Invoice2Go extends BaseImport
{
public array $entity_count = [];
public function import(string $entity)
{
if (
in_array($entity, [
//'client',
'invoice',
// 'product',
// 'payment',
// 'vendor',
// 'expense',
])
) {
$this->{$entity}();
}
//collate any errors
$this->finalizeImport();
}
public function invoice() {
//make sure we update and create products with wave
$initial_update_products_value = $this->company->update_products;
$this->company->update_products = true;
$this->company->save();
$entity_type = 'invoice';
$data = $this->getCsvData($entity_type);
$data = $this->preTransform($data, 'invoice');
if (empty($data)) {
$this->entity_count['invoices'] = 0;
return;
}
$this->request_name = StoreInvoiceRequest::class;
$this->repository_name = InvoiceRepository::class;
$this->factory_name = InvoiceFactory::class;
$this->repository = app()->make($this->repository_name);
$this->repository->import_mode = true;
$this->transformer = new InvoiceTransformer($this->company);
$invoice_count = $this->ingestInvoices($data, false);
$this->entity_count['invoices'] = $invoice_count;
$this->company->update_products = $initial_update_products_value;
$this->company->save();
}
}

View File

@ -10,7 +10,101 @@
*/
namespace App\Import\Providers;
use App\Factory\ClientFactory;
use App\Factory\InvoiceFactory;
use App\Http\Requests\Client\StoreClientRequest;
use App\Http\Requests\Invoice\StoreInvoiceRequest;
use App\Import\Transformer\Invoicely\ClientTransformer;
use App\Import\Transformer\Invoicely\InvoiceTransformer;
use App\Repositories\ClientRepository;
use App\Repositories\InvoiceRepository;
class Invoicely extends BaseImport
{
public function import(string $entity)
{
if (
in_array($entity, [
'client',
'invoice',
// 'product',
// 'payment',
// 'vendor',
// 'expense',
])
) {
$this->{$entity}();
}
//collate any errors
$this->finalizeImport();
}
public function client()
{
$entity_type = 'client';
$data = $this->getCsvData($entity_type);
$data = $this->preTransform($data, $entity_type);
if (empty($data)) {
$this->entity_count['clients'] = 0;
return;
}
$this->request_name = StoreClientRequest::class;
$this->repository_name = ClientRepository::class;
$this->factory_name = ClientFactory::class;
$this->repository = app()->make($this->repository_name);
$this->repository->import_mode = true;
$this->transformer = new ClientTransformer($this->company);
$client_count = $this->ingest($data, $entity_type);
$this->entity_count['clients'] = $client_count;
}
public function invoice() {
//make sure we update and create products with wave
$initial_update_products_value = $this->company->update_products;
$this->company->update_products = true;
$this->company->save();
$entity_type = 'invoice';
$data = $this->getCsvData($entity_type);
$data = $this->preTransform($data, $entity_type);
if (empty($data)) {
$this->entity_count['invoices'] = 0;
return;
}
$this->request_name = StoreInvoiceRequest::class;
$this->repository_name = InvoiceRepository::class;
$this->factory_name = InvoiceFactory::class;
$this->repository = app()->make($this->repository_name);
$this->repository->import_mode = true;
$this->transformer = new InvoiceTransformer($this->company);
$invoice_count = $this->ingestInvoices($data, false);
$this->entity_count['invoices'] = $invoice_count;
$this->company->update_products = $initial_update_products_value;
$this->company->save();
}
}

View File

@ -218,8 +218,6 @@ class Wave extends BaseImport implements ImportInterface
$expenses = $this->groupExpenses($data);
// nlog($expenses);
// exit;
foreach ($expenses as $raw_expense) {
try {

View File

@ -10,7 +10,103 @@
*/
namespace App\Import\Providers;
use App\Factory\ClientFactory;
use App\Factory\InvoiceFactory;
use App\Http\Requests\Client\StoreClientRequest;
use App\Http\Requests\Invoice\StoreInvoiceRequest;
use App\Import\Transformer\Zoho\ClientTransformer;
use App\Import\Transformer\Zoho\InvoiceTransformer;
use App\Repositories\ClientRepository;
use App\Repositories\InvoiceRepository;
class Zoho extends BaseImport
{
public array $entity_count = [];
public function import(string $entity)
{
if (
in_array($entity, [
'client',
'invoice',
// 'product',
// 'payment',
// 'vendor',
// 'expense',
])
) {
$this->{$entity}();
}
//collate any errors
$this->finalizeImport();
}
public function client()
{
$entity_type = 'client';
$data = $this->getCsvData($entity_type);
$data = $this->preTransform($data, $entity_type);
if (empty($data)) {
$this->entity_count['clients'] = 0;
return;
}
$this->request_name = StoreClientRequest::class;
$this->repository_name = ClientRepository::class;
$this->factory_name = ClientFactory::class;
$this->repository = app()->make($this->repository_name);
$this->repository->import_mode = true;
$this->transformer = new ClientTransformer($this->company);
$client_count = $this->ingest($data, $entity_type);
$this->entity_count['clients'] = $client_count;
}
public function invoice() {
//make sure we update and create products with wave
$initial_update_products_value = $this->company->update_products;
$this->company->update_products = true;
$this->company->save();
$entity_type = 'invoice';
$data = $this->getCsvData($entity_type);
$data = $this->preTransform($data, $entity_type);
if (empty($data)) {
$this->entity_count['invoices'] = 0;
return;
}
$this->request_name = StoreInvoiceRequest::class;
$this->repository_name = InvoiceRepository::class;
$this->factory_name = InvoiceFactory::class;
$this->repository = app()->make($this->repository_name);
$this->repository->import_mode = true;
$this->transformer = new InvoiceTransformer($this->company);
$invoice_count = $this->ingestInvoices($data, 'Invoice Number');
$this->entity_count['invoices'] = $invoice_count;
$this->company->update_products = $initial_update_products_value;
$this->company->save();
}
}

View File

@ -65,7 +65,9 @@ class BaseTransformer
public function getClient($client_name, $client_email)
{
// nlog("searching for {$client_name} with email {$client_email}");
if(!empty($client_name))
{
$client_id_search = $this->company
->clients()
@ -84,7 +86,7 @@ class BaseTransformer
// nlog("found via name {$client_name_search->first()->id}");
return $client_name_search->first()->id;
}
}
if (!empty($client_email)) {
$contacts = ClientContact::where(
'company_id',

View File

@ -0,0 +1,55 @@
<?php
/**
* Invoice Ninja (https://clientninja.com).
*
* @link https://github.com/clientninja/clientninja source repository
*
* @copyright Copyright (c) 2021. client Ninja LLC (https://clientninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace App\Import\Transformer\Freshbooks;
use App\Import\ImportException;
use App\Import\Transformer\BaseTransformer;
use Illuminate\Support\Str;
/**
* Class ClientTransformer.
*/
class ClientTransformer extends BaseTransformer {
/**
* @param $data
*
* @return array|bool
*/
public function transform( $data ) {
if ( isset( $data['Organization'] ) && $this->hasClient( $data['Organization'] ) ) {
throw new ImportException('Client already exists');
}
return [
'company_id' => $this->company->id,
'name' => $this->getString( $data, 'Organization' ),
'phone' => $this->getString( $data, 'Phone' ),
'address1' => $this->getString( $data, 'Street' ),
'city' => $this->getString( $data, 'City' ),
'state' => $this->getString( $data, 'Province/State' ),
'postal_code' => $this->getString( $data, 'Postal Code' ),
'country_id' => isset( $data['Country'] ) ? $this->getCountryId( $data['Country'] ) : null,
'private_notes' => $this->getString( $data, 'Notes' ),
'credit_balance' => 0,
'settings' => new \stdClass,
'client_hash' => Str::random( 40 ),
'contacts' => [
[
'first_name' => $this->getString( $data, 'First Name' ),
'last_name' => $this->getString( $data, 'Last Name' ),
'email' => $this->getString( $data, 'Email' ),
'phone' => $this->getString( $data, 'Phone' ),
],
],
];
}
}

View File

@ -0,0 +1,86 @@
<?php
/**
* client Ninja (https://clientninja.com).
*
* @link https://github.com/clientninja/clientninja source repository
*
* @copyright Copyright (c) 2021. client Ninja LLC (https://clientninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace App\Import\Transformer\Freshbooks;
use App\Import\ImportException;
use App\Import\Transformer\BaseTransformer;
use App\Models\Invoice;
use App\Utils\Number;
/**
* Class InvoiceTransformer.
*/
class InvoiceTransformer extends BaseTransformer {
/**
* @param $line_items_data
*
* @return bool|array
*/
public function transform( $line_items_data ) {
$invoice_data = reset( $line_items_data );
if ( $this->hasInvoice( $invoice_data['Invoice #'] ) ) {
throw new ImportException( 'Invoice number already exists' );
}
$invoiceStatusMap = [
'sent' => Invoice::STATUS_SENT,
'draft' => Invoice::STATUS_DRAFT,
];
$transformed = [
'company_id' => $this->company->id,
'client_id' => $this->getClient( $this->getString( $invoice_data, 'Client Name' ), null ),
'number' => $this->getString( $invoice_data, 'Invoice #' ),
'date' => isset( $invoice_data['Date Issued'] ) ? date( 'Y-m-d', strtotime( $invoice_data['Date Issued'] ) ) : null,
// 'currency_id' => $this->getCurrencyByCode( $invoice_data, 'Currency' ),
'amount' => 0,
'status_id' => $invoiceStatusMap[ $status =
strtolower( $this->getString( $invoice_data, 'Invoice Status' ) ) ] ?? Invoice::STATUS_SENT,
// 'viewed' => $status === 'viewed',
];
$line_items = [];
foreach ( $line_items_data as $record ) {
$line_items[] = [
'product_key' => $this->getString( $record, 'Item Name' ),
'notes' => $this->getString( $record, 'Item Description' ),
'cost' => $this->getFreshbookQuantityFloat( $record, 'Rate' ),
'quantity' => $this->getFreshbookQuantityFloat( $record, 'Quantity' ),
'discount' => $this->getFreshbookQuantityFloat( $record, 'Discount Percentage' ),
'is_amount_discount' => false,
'tax_name1' => $this->getString( $record, 'Tax 1 Type' ),
'tax_rate1' => $this->getFreshbookQuantityFloat( $record, 'Tax 1 Amount' ),
'tax_name2' => $this->getString( $record, 'Tax 2 Type' ),
'tax_rate2' => $this->getFreshbookQuantityFloat( $record, 'Tax 2 Amount' ),
];
$transformed['amount'] += $this->getFreshbookQuantityFloat( $record, 'Line Total' );
}
$transformed['line_items'] = $line_items;
if ( ! empty( $invoice_data['Date Paid'] ) ) {
$transformed['payments'] = [[
'date' => date( 'Y-m-d', strtotime( $invoice_data['Date Paid'] ) ),
'amount' => $transformed['amount'],
]];
}
return $transformed;
}
/** @return float */
public function getFreshbookQuantityFloat($data, $field)
{
return $data[$field];
}
}

View File

@ -0,0 +1,94 @@
<?php
/**
* client Ninja (https://clientninja.com).
*
* @link https://github.com/clientninja/clientninja source repository
*
* @copyright Copyright (c) 2021. client Ninja LLC (https://clientninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace App\Import\Transformer\Invoice2Go;
use App\Import\ImportException;
use App\Import\Transformer\BaseTransformer;
use App\Models\Invoice;
use Illuminate\Support\Str;
/**
* Class InvoiceTransformer.
*/
class InvoiceTransformer extends BaseTransformer {
/**
* @param $line_items_data
*
* @return bool|array
*/
public function transform( $invoice_data ) {
if ( $this->hasInvoice( $invoice_data['DocumentNumber'] ) ) {
throw new ImportException( 'Invoice number already exists' );
}
$invoiceStatusMap = [
'unsent' => Invoice::STATUS_DRAFT,
'sent' => Invoice::STATUS_SENT,
];
$transformed = [
'company_id' => $this->company->id,
'number' => $this->getString( $invoice_data, 'DocumentNumber' ),
'notes' => $this->getString( $invoice_data, 'Comment' ),
'date' => isset( $invoice_data['DocumentDate'] ) ? date( 'Y-m-d', strtotime( $invoice_data['DocumentDate'] ) ) : null,
// 'currency_id' => $this->getCurrencyByCode( $invoice_data, 'Currency' ),
'amount' => $this->getFloat( $invoice_data, 'TotalAmount' ),
'status_id' => $invoiceStatusMap[ $status =
strtolower( $this->getString( $invoice_data, 'DocumentStatus' ) ) ] ?? Invoice::STATUS_SENT,
// 'viewed' => $status === 'viewed',
'line_items' => [
[
'cost' => $this->getFloat( $invoice_data, 'TotalAmount' ),
'quantity' => 1,
'discount' => $this->getFloat( $invoice_data, 'DiscountValue' ),
'is_amount_discount' => false,
],
],
];
$client_id =
$this->getClient( $this->getString( $invoice_data, 'Name' ), $this->getString( $invoice_data, 'EmailRecipient' ) );
if ( $client_id ) {
$transformed['client_id'] = $client_id;
} else {
$settings = new \stdClass;
$settings->currency_id = $this->getCurrencyByCode( $invoice_data, 'Currency' );
$transformed['client'] = [
'name' => $this->getString( $invoice_data, 'Name' ),
'address1' => $this->getString( $invoice_data, 'DocumentRecipientAddress' ),
'shipping_address1' => $this->getString( $invoice_data, 'ShipAddress' ),
'credit_balance' => 0,
'settings' => $settings,
'client_hash' => Str::random( 40 ),
'contacts' => [
[
'email' => $this->getString( $invoice_data, 'EmailRecipient' ),
],
],
];
}
if ( ! empty( $invoice_data['Date Paid'] ) ) {
$transformed['payments'] = [
[
'date' => date( 'Y-m-d', strtotime( $invoice_data['DatePaid'] ) ),
'amount' => $this->getFloat( $invoice_data, 'Payments' ),
],
];
}
return $transformed;
}
}

View File

@ -0,0 +1,50 @@
<?php
/**
* Invoice Ninja (https://clientninja.com).
*
* @link https://github.com/clientninja/clientninja source repository
*
* @copyright Copyright (c) 2021. client Ninja LLC (https://clientninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace App\Import\Transformer\Invoicely;
use App\Import\ImportException;
use App\Import\Transformer\BaseTransformer;
use Illuminate\Support\Str;
/**
* Class ClientTransformer.
*/
class ClientTransformer extends BaseTransformer {
/**
* @param $data
*
* @return array|bool
*/
public function transform( $data ) {
if ( isset( $data['Client Name'] ) && $this->hasClient( $data['Client Name'] ) ) {
throw new ImportException('Client already exists');
}
$transformed = [
'company_id' => $this->company->id,
'name' => $this->getString( $data, 'Client Name' ),
'phone' => $this->getString( $data, 'Phone' ),
'country_id' => isset( $data['Country'] ) ? $this->getCountryIdBy2( $data['Country'] ) : null,
'credit_balance' => 0,
'settings' => new \stdClass,
'client_hash' => Str::random( 40 ),
'contacts' => [
[
'email' => $this->getString( $data, 'Email' ),
'phone' => $this->getString( $data, 'Phone' ),
],
],
];
return $transformed;
}
}

View File

@ -0,0 +1,58 @@
<?php
/**
* client Ninja (https://clientninja.com).
*
* @link https://github.com/clientninja/clientninja source repository
*
* @copyright Copyright (c) 2021. client Ninja LLC (https://clientninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace App\Import\Transformer\Invoicely;
use App\Import\ImportException;
use App\Import\Transformer\BaseTransformer;
use App\Models\Invoice;
/**
* Class InvoiceTransformer.
*/
class InvoiceTransformer extends BaseTransformer {
/**
* @param $data
*
* @return bool|array
*/
public function transform( $data ) {
if ( $this->hasInvoice( $data['Details'] ) ) {
throw new ImportException( 'Invoice number already exists' );
}
$transformed = [
'company_id' => $this->company->id,
'client_id' => $this->getClient( $this->getString( $data, 'Client' ), null ),
'number' => $this->getString( $data, 'Details' ),
'date' => isset( $data['Date'] ) ? date( 'Y-m-d', strtotime( $data['Date'] ) ) : null,
'due_date' => isset( $data['Due'] ) ? date( 'Y-m-d', strtotime( $data['Due'] ) ) : null,
'status_id' => Invoice::STATUS_SENT,
'line_items' => [
[
'cost' => $amount = $this->getFloat( $data, 'Total' ),
'quantity' => 1,
],
],
];
if ( strtolower( $data['Status'] ) === 'paid' ) {
$transformed['payments'] = [
[
'date' => date( 'Y-m-d' ),
'amount' => $amount,
],
];
}
return $transformed;
}
}

View File

@ -0,0 +1,72 @@
<?php
/**
* Invoice Ninja (https://clientninja.com).
*
* @link https://github.com/clientninja/clientninja source repository
*
* @copyright Copyright (c) 2021. client Ninja LLC (https://clientninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace App\Import\Transformer\Zoho;
use App\Import\ImportException;
use App\Import\Transformer\BaseTransformer;
use Illuminate\Support\Str;
/**
* Class ClientTransformer.
*/
class ClientTransformer extends BaseTransformer {
/**
* @param $data
*
* @return array|bool
*/
public function transform( $data ) {
if ( isset( $data['Company Name'] ) && $this->hasClient( $data['Company Name'] ) ) {
throw new ImportException( 'Client already exists' );
}
$settings = new \stdClass;
$settings->currency_id = (string) $this->getCurrencyByCode( $data, 'Currency' );
if ( strval( $data['Payment Terms'] ?? '' ) > 0 ) {
$settings->payment_terms = $data['Payment Terms'];
}
return [
'company_id' => $this->company->id,
'name' => $this->getString( $data, 'Company Name' ),
'phone' => $this->getString( $data, 'Phone' ),
'private_notes' => $this->getString( $data, 'Notes' ),
'website' => $this->getString( $data, 'Website' ),
'id_number' => $this->getString( $data, 'Customer ID'),
'address1' => $this->getString( $data, 'Billing Address' ),
'address2' => $this->getString( $data, 'Billing Street2' ),
'city' => $this->getString( $data, 'Billing City' ),
'state' => $this->getString( $data, 'Billing State' ),
'postal_code' => $this->getString( $data, 'Billing Code' ),
'country_id' => isset( $data['Billing Country'] ) ? $this->getCountryId( $data['Billing Country'] ) : null,
'shipping_address1' => $this->getString( $data, 'Shipping Address' ),
'shipping_address2' => $this->getString( $data, 'Shipping Street2' ),
'shipping_city' => $this->getString( $data, 'Shipping City' ),
'shipping_state' => $this->getString( $data, 'Shipping State' ),
'shipping_postal_code' => $this->getString( $data, 'Shipping Code' ),
'shipping_country_id' => isset( $data['Shipping Country'] ) ? $this->getCountryId( $data['Shipping Country'] ) : null,
'credit_balance' => 0,
'settings' => $settings,
'client_hash' => Str::random( 40 ),
'contacts' => [
[
'first_name' => $this->getString( $data, 'First Name' ),
'last_name' => $this->getString( $data, 'Last Name' ),
'email' => $this->getString( $data, 'EmailID' ),
'phone' => $this->getString( $data, 'Phone' ),
],
],
];
}
}

View File

@ -0,0 +1,78 @@
<?php
/**
* client Ninja (https://clientninja.com).
*
* @link https://github.com/clientninja/clientninja source repository
*
* @copyright Copyright (c) 2021. client Ninja LLC (https://clientninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace App\Import\Transformer\Zoho;
use App\Import\ImportException;
use App\Import\Transformer\BaseTransformer;
use App\Models\Invoice;
/**
* Class InvoiceTransformer.
*/
class InvoiceTransformer extends BaseTransformer {
/**
* @param $line_items_data
*
* @return bool|array
*/
public function transform( $line_items_data ) {
$invoice_data = reset( $line_items_data );
if ( $this->hasInvoice( $invoice_data['Invoice Number'] ) ) {
throw new ImportException( 'Invoice number already exists' );
}
$invoiceStatusMap = [
'sent' => Invoice::STATUS_SENT,
'draft' => Invoice::STATUS_DRAFT,
];
$transformed = [
'company_id' => $this->company->id,
'client_id' => $this->getClient( $this->getString( $invoice_data, 'Customer ID' ), null ),
'number' => $this->getString( $invoice_data, 'Invoice Number' ),
'date' => isset( $invoice_data['Invoice Date'] ) ? date( 'Y-m-d', strtotime( $invoice_data['Invoice Date'] ) ) : null,
'due_date' => isset( $invoice_data['Due Date'] ) ? date( 'Y-m-d', strtotime( $invoice_data['Due Date'] ) ) : null,
'po_number' => $this->getString( $invoice_data, 'PurchaseOrder' ),
'public_notes' => $this->getString( $invoice_data, 'Notes' ),
'currency_id' => $this->getCurrencyByCode( $invoice_data, 'Currency' ),
'amount' => $this->getFloat( $invoice_data, 'Total' ),
'balance' => $this->getFloat( $invoice_data, 'Balance' ),
'status_id' => $invoiceStatusMap[ $status =
strtolower( $this->getString( $invoice_data, 'Invoice Status' ) ) ] ?? Invoice::STATUS_SENT,
// 'viewed' => $status === 'viewed',
];
$line_items = [];
foreach ( $line_items_data as $record ) {
$line_items[] = [
'product_key' => $this->getString( $record, 'Item Name' ),
'notes' => $this->getString( $record, 'Item Description' ),
'cost' => round($this->getFloat( $record, 'Item Price' ),2),
'quantity' => $this->getFloat( $record, 'Quantity' ),
'discount' => $this->getString( $record, 'Discount Amount' ),
'is_amount_discount' => true,
];
}
$transformed['line_items'] = $line_items;
if ( $transformed['balance'] < $transformed['amount'] ) {
$transformed['payments'] = [[
'date' => isset( $invoice_data['Last Payment Date'] ) ? date( 'Y-m-d', strtotime( $invoice_data['Invoice Date'] ) ) : date( 'Y-m-d' ),
'amount' => $transformed['amount'] - $transformed['balance'],
]];
}
return $transformed;
}
}

View File

@ -372,11 +372,13 @@ class CSVImport implements ShouldQueue {
$entity = $transformer->transform( $record );
/** @var \App\Http\Requests\Request $request */
$request = new $request_name();
// $request = new $request_name();
// $request->prepareForValidation();
// Pass entity data to request so it can be validated
$request->query = $request->request = new ParameterBag( $entity );
$validator = Validator::make( $entity, $request->rules() );
// $request->query = $request->request = new ParameterBag( $entity );
// $validator = Validator::make( $entity, $request->rules() );
$validator = $request_name::runFormRequest($entity);
if ( $validator->fails() ) {
$this->error_array[ $entity_type ][] =

View File

@ -37,7 +37,9 @@ class CSVIngest implements ShouldQueue {
public ?string $skip_header;
public array $column_map;
public $column_map;
public array $request;
public function __construct( array $request, Company $company ) {
$this->company = $company;

View File

@ -78,6 +78,7 @@ class ProcessPostmarkWebhook implements ShouldQueue
if(!$this->invitation)
return;
if(array_key_exists('Details', $this->request))
$this->invitation->email_error = $this->request['Details'];
switch ($this->request['RecordType'])

View File

@ -458,14 +458,13 @@ class RecurringInvoice extends BaseModel
public function calculateDueDate($date)
{
//if nothing is set, assume we are using terms.
if(!$this->due_date_days)
return $this->calculateDateFromTerms($date);
switch ($this->due_date_days) {
case 'terms':
case '':
return $this->calculateDateFromTerms($date);
break;
default:
return $this->setDayOfMonth($date, $this->due_date_days);
break;

View File

@ -104,7 +104,7 @@ class SystemLog extends Model
public function resolveRouteBinding($value, $field = null)
{
if (is_numeric($value)) {
throw new ModelNotFoundException("Record with value {$value} not found");
throw new \Illuminate\Database\Eloquent\ModelNotFoundException("Record with value {$value} not found");
}
return $this

View File

@ -22,6 +22,10 @@ use App\Models\PaymentType;
use App\Models\SystemLog;
use App\PaymentDrivers\AuthorizePaymentDriver;
use App\Utils\Traits\MakesHash;
use net\authorize\api\contract\v1\DeleteCustomerPaymentProfileRequest;
use net\authorize\api\contract\v1\DeleteCustomerProfileRequest;
use net\authorize\api\controller\DeleteCustomerPaymentProfileController;
use net\authorize\api\controller\DeleteCustomerProfileController;
/**
* Class AuthorizeCreditCard.
@ -69,21 +73,59 @@ class AuthorizeCreditCard
$payment_profile = $authorise_payment_method->addPaymentMethodToClient($gateway_customer_reference, $data);
$payment_profile_id = $payment_profile->getPaymentProfile()->getCustomerPaymentProfileId();
$data = (new ChargePaymentProfile($this->authorize))->chargeCustomerProfile($gateway_customer_reference, $payment_profile_id, $data['amount_with_fee']);
if ($request->has('store_card') && $request->input('store_card') === true) {
$authorise_payment_method->payment_method = GatewayType::CREDIT_CARD;
$client_gateway_token = $authorise_payment_method->createClientGatewayToken($payment_profile, $gateway_customer_reference);
}
$data = (new ChargePaymentProfile($this->authorize))->chargeCustomerProfile($gateway_customer_reference, $payment_profile_id, $data['amount_with_fee']);
else{
//remove the payment profile if we are not storing tokens in our system
$this->removePaymentProfile($gateway_customer_reference, $payment_profile_id);
}
return $this->handleResponse($data, $request);
}
private function removePaymentProfile($customer_profile_id, $customer_payment_profile_id)
{
$request = new DeleteCustomerPaymentProfileRequest();
$request->setMerchantAuthentication($this->authorize->merchant_authentication);
$request->setCustomerProfileId($customer_profile_id);
$request->setCustomerPaymentProfileId($customer_payment_profile_id);
$controller = new DeleteCustomerPaymentProfileController($request);
$response = $controller->executeWithApiResponse($this->authorize->mode());
if (($response != null) && ($response->getMessages()->getResultCode() == "Ok") )
{
nlog("SUCCESS: Delete Customer Payment Profile SUCCESS");
}
else
nlog("unable to delete profile {$customer_profile_id} with payment id {$customer_payment_profile_id}");
// Delete a customer profile
// $request = new DeleteCustomerProfileRequest();
// $request->setMerchantAuthentication($this->authorize->merchant_authentication);
// $request->setCustomerProfileId( $customer_profile_id );
// $controller = new DeleteCustomerProfileController($request);
// $response = $controller->executeWithApiResponse($this->authorize->mode());
// if (($response != null) && ($response->getMessages()->getResultCode() == "Ok") )
// {
// nlog("SUCCESS: Delete Customer Payment Profile SUCCESS");
// }
// else
// nlog("unable to delete profile {$customer_profile_id}");
}
private function processTokenPayment($request)
{
$client_gateway_token = ClientGatewayToken::query()
->where('id', $this->decodePrimaryKey($request->token))
->where('company_id', auth('contact')->user()->client->company->id)
->where('company_id', auth()->guard('contact')->user()->client->company->id)
->first();
if (!$client_gateway_token) {

View File

@ -0,0 +1,200 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com).
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace App\PaymentDrivers\Authorize;
use App\Exceptions\GenericPaymentDriverFailure;
use App\Factory\ClientContactFactory;
use App\Factory\ClientFactory;
use App\Models\Client;
use App\Models\ClientContact;
use App\Models\ClientGatewayToken;
use App\Models\GatewayType;
use App\PaymentDrivers\AuthorizePaymentDriver;
use Illuminate\Support\Facades\Cache;
use net\authorize\api\contract\v1\CreateCustomerProfileRequest;
use net\authorize\api\contract\v1\CustomerProfileType;
use net\authorize\api\contract\v1\GetCustomerProfileIdsRequest;
use net\authorize\api\contract\v1\GetCustomerProfileRequest;
use net\authorize\api\controller\CreateCustomerProfileController;
use net\authorize\api\controller\GetCustomerProfileController;
use net\authorize\api\controller\GetCustomerProfileIdsController;
/**
* Class AuthorizeCustomer.
*/
class AuthorizeCustomer
{
public $authorize;
public function __construct(AuthorizePaymentDriver $authorize)
{
$this->authorize = $authorize;
}
private function getCustomerProfileIds()
{
// Get all existing customer profile ID's
$request = new GetCustomerProfileIdsRequest();
$request->setMerchantAuthentication($this->authorize->merchant_authentication);
$controller = new GetCustomerProfileIdsController($request);
$response = $controller->executeWithApiResponse($this->authorize->mode());
if (($response != null) && ($response->getMessages()->getResultCode() == "Ok") )
{
return $response->getIds();
}
else
{
return [];
nlog( "GetCustomerProfileId's ERROR : Invalid response");
$errorMessages = $response->getMessages()->getMessage();
nlog( "Response : " . $errorMessages[0]->getCode() . " " .$errorMessages[0]->getText());
}
}
private function getCustomerProfile($customer_profile_id)
{
$request = new GetCustomerProfileRequest();
$request->setMerchantAuthentication($this->authorize->merchant_authentication);
$request->setCustomerProfileId($customer_profile_id);
$controller = new GetCustomerProfileController($request);
$response = $controller->executeWithApiResponse($this->authorize->mode());
if (($response != null) && ($response->getMessages()->getResultCode() == "Ok") )
{
$profileSelected = $response->getProfile();
$paymentProfilesSelected = $profileSelected->getPaymentProfiles();
return [
'email' => $profileSelected->getEmail(),
'payment_profiles' => $paymentProfilesSelected,
'error' => ''
];
}
else
{
nlog("ERROR : GetCustomerProfile: Invalid response");
$errorMessages = $response->getMessages()->getMessage();
nlog("Response : " . $errorMessages[0]->getCode() . " " .$errorMessages[0]->getText());
return [
'profile' => NULL,
'payment_profiles' => NULL,
'error' => $errorMessages[0]->getCode() . " " .$errorMessages[0]->getText(),
];
}
}
public function importCustomers()
{
$auth_customers = $this->getCustomerProfileIds();
$company = $this->authorize->company_gateway->company;
$user = $company->owner();
foreach($auth_customers as $gateway_customer_reference)
{
$profile = $this->getCustomerProfile($gateway_customer_reference);
//if the profile ID already exists in ClientGatewayToken we continue else - add.
if($client_gateway_token = ClientGatewayToken::where('company_id', $company->id)->where('gateway_customer_reference', $gateway_customer_reference)->first()){
// nlog("found client");
$client = $client_gateway_token->client;
}
elseif($client_contact = ClientContact::where('company_id', $company->id)->where('email', $profile['email'])->first()){
$client = $client_contact->client;
// nlog("found client through contact");
}
else {
// nlog("creating client");
$first_payment_profile = $profile['payment_profiles'][0];
if(!$first_payment_profile)
continue;
$client = ClientFactory::create($company->id, $user->id);
$billTo = $first_payment_profile->getBillTo();
$client->address1 = $billTo->getAddress();
$client->city = $billTo->getCity();
$client->state = $billTo->getState();
$client->postal_code = $billTo->getZip();
$client->country_id = $billTo->getCountry() ? $this->getCountryCode($billTo->getCountry()) : $company->settings->country_id;
$client->save();
$client_contact = ClientContactFactory::create($company->id, $user->id);
$client_contact->client_id = $client->id;
$client_contact->first_name = $billTo->getFirstName();
$client_contact->last_name = $billTo->getLastName();
$client_contact->email = $profile['email'];
$client_contact->phone = $billTo->getPhoneNumber();
$client_contact->save();
}
if($client && is_array($profile['payment_profiles'])){
$this->authorize->setClient($client);
foreach($profile['payment_profiles'] as $payment_profile)
{
$token_exists = ClientGatewayToken::where('company_id', $company->id)
->where('token', $payment_profile->getCustomerPaymentProfileId())
->where('gateway_customer_reference', $gateway_customer_reference)
->exists();
if($token_exists)
continue;
// $expiry = $payment_profile->getPayment()->getCreditCard()->getExpirationDate();
$payment_meta = new \stdClass;
$payment_meta->exp_month = 'xx';
$payment_meta->exp_year = 'xx';
$payment_meta->brand = (string) $payment_profile->getPayment()->getCreditCard()->getCardType();
$payment_meta->last4 = (string) $payment_profile->getPayment()->getCreditCard()->getCardNumber();
$payment_meta->type = GatewayType::CREDIT_CARD;
$data['payment_method_id'] = GatewayType::CREDIT_CARD;
$data['payment_meta'] = $payment_meta;
$data['token'] = $payment_profile->getCustomerPaymentProfileId();
$additional['gateway_customer_reference'] = $gateway_customer_reference;
$this->authorize->storeGatewayToken($data, $additional);
}
}
}
}
private function getCountryCode($country_code)
{
$countries = Cache::get('countries');
$country = $countries->filter(function ($item) use ($country_code) {
return $item->iso_3166_2 == $country_code || $item->iso_3166_3 == $country_code;
})->first();
return (string) $country->id;
}
}

View File

@ -130,6 +130,7 @@ class AuthorizePaymentMethod
public function buildPaymentMethod($payment_profile)
{
$payment_meta = new stdClass;
$payment_meta->exp_month = 'xx';
$payment_meta->exp_year = 'xx';

View File

@ -18,6 +18,7 @@ use App\Models\Payment;
use App\Models\PaymentHash;
use App\Models\SystemLog;
use App\PaymentDrivers\Authorize\AuthorizeCreditCard;
use App\PaymentDrivers\Authorize\AuthorizeCustomer;
use App\PaymentDrivers\Authorize\AuthorizePaymentMethod;
use App\PaymentDrivers\Authorize\RefundTransaction;
use net\authorize\api\constants\ANetEnvironment;
@ -159,4 +160,9 @@ class AuthorizePaymentDriver extends BaseDriver
{
return (new AuthorizePaymentMethod($this))->deletePaymentProfile($token->gateway_customer_reference, $token->token);
}
public function import()
{
return (new AuthorizeCustomer($this))->importCustomers();
}
}

View File

@ -182,7 +182,10 @@ class BaseDriver extends AbstractPaymentDriver
{
}
public function setClient(Client $client)
{
$this->client = $client;
}
/************************** Helper methods *************************************/
public function setPaymentHash(PaymentHash $payment_hash)

View File

@ -109,7 +109,7 @@ class ACH implements MethodInterface
$customer = $this->braintree->findOrCreateCustomer();
$token = ClientGatewayToken::query()
->where('client_id', auth('contact')->user()->client->id)
->where('client_id', auth()->guard('contact')->user()->client->id)
->where('id', $this->decodePrimaryKey($request->source))
->firstOrFail();

View File

@ -267,8 +267,8 @@ class BraintreePaymentDriver extends BaseDriver
nlog("braintree webhook");
if($webhookNotification)
nlog($webhookNotification->kind);
// if($webhookNotification)
// nlog($webhookNotification->kind);
// // Example values for webhook notification properties
// $message = $webhookNotification->kind; // "subscription_went_past_due"

View File

@ -145,7 +145,7 @@ class CreditCard implements MethodInterface
{
$cgt = ClientGatewayToken::query()
->where('id', $this->decodePrimaryKey($request->input('token')))
->where('company_id', auth('contact')->user()->client->company->id)
->where('company_id', auth()->guard('contact')->user()->client->company->id)
->first();
if (!$cgt) {

View File

@ -64,12 +64,12 @@ class ACH implements MethodInterface
'session_token' => $session_token,
]),
"prefilled_customer" => [
"given_name" => auth('contact')->user()->first_name,
"family_name" => auth('contact')->user()->last_name,
"email" => auth('contact')->user()->email,
"address_line1" => auth('contact')->user()->client->address1,
"city" => auth('contact')->user()->client->city,
"postal_code" => auth('contact')->user()->client->postal_code,
"given_name" => auth()->guard('contact')->user()->first_name,
"family_name" => auth()->guard('contact')->user()->last_name,
"email" => auth()->guard('contact')->user()->email,
"address_line1" => auth()->guard('contact')->user()->client->address1,
"city" => auth()->guard('contact')->user()->client->city,
"postal_code" => auth()->guard('contact')->user()->client->postal_code,
],
],
]);

View File

@ -62,12 +62,12 @@ class DirectDebit implements MethodInterface
'session_token' => $session_token,
]),
'prefilled_customer' => [
'given_name' => auth('contact')->user()->first_name,
'family_name' => auth('contact')->user()->last_name,
'email' => auth('contact')->user()->email,
'address_line1' => auth('contact')->user()->client->address1,
'city' => auth('contact')->user()->client->city,
'postal_code' => auth('contact')->user()->client->postal_code,
'given_name' => auth()->guard('contact')->user()->first_name,
'family_name' => auth()->guard('contact')->user()->last_name,
'email' => auth()->guard('contact')->user()->email,
'address_line1' => auth()->guard('contact')->user()->client->address1,
'city' => auth()->guard('contact')->user()->client->city,
'postal_code' => auth()->guard('contact')->user()->client->postal_code,
],
],
]);

View File

@ -63,12 +63,12 @@ class SEPA implements MethodInterface
'session_token' => $session_token,
]),
'prefilled_customer' => [
'given_name' => auth('contact')->user()->first_name,
'family_name' => auth('contact')->user()->last_name,
'email' => auth('contact')->user()->email,
'address_line1' => auth('contact')->user()->client->address1,
'city' => auth('contact')->user()->client->city,
'postal_code' => auth('contact')->user()->client->postal_code,
'given_name' => auth()->guard('contact')->user()->first_name,
'family_name' => auth()->guard('contact')->user()->last_name,
'email' => auth()->guard('contact')->user()->email,
'address_line1' => auth()->guard('contact')->user()->client->address1,
'city' => auth()->guard('contact')->user()->client->city,
'postal_code' => auth()->guard('contact')->user()->client->postal_code,
],
],
]);

View File

@ -57,7 +57,7 @@ class Token
$header['signature'] = $this->payfast->generateTokenSignature(array_merge($body, $header));
nlog($header['signature']);
// nlog($header['signature']);
$result = $this->send($header, $body, $cgt->token);
@ -95,7 +95,7 @@ class Token
$parameter_string = rtrim( $parameter_string, '&' );
}
nlog($parameter_string);
// nlog($parameter_string);
return $parameter_string;

View File

@ -74,13 +74,13 @@ class ACH
$mailer = new NinjaMailerObject();
$mailer->mailable = new ACHVerificationNotification(
auth('contact')->user()->client->company,
route('client.contact_login', ['contact_key' => auth('contact')->user()->contact_key, 'next' => $verification])
auth()->guard('contact')->user()->client->company,
route('client.contact_login', ['contact_key' => auth()->guard('contact')->user()->contact_key, 'next' => $verification])
);
$mailer->company = auth('contact')->user()->client->company;
$mailer->settings = auth('contact')->user()->client->company->settings;
$mailer->to_user = auth('contact')->user();
$mailer->company = auth()->guard('contact')->user()->client->company;
$mailer->settings = auth()->guard('contact')->user()->client->company->settings;
$mailer->to_user = auth()->guard('contact')->user();
NinjaMailerJob::dispatch($mailer);
@ -210,7 +210,7 @@ class ACH
$source = ClientGatewayToken::query()
->where('id', $this->decodePrimaryKey($request->source))
->where('company_id', auth('contact')->user()->client->company->id)
->where('company_id', auth()->guard('contact')->user()->client->company->id)
->first();
if (!$source) {

View File

@ -66,13 +66,13 @@ class ACSS
$mailer = new NinjaMailerObject();
$mailer->mailable = new ACHVerificationNotification(
auth('contact')->user()->client->company,
route('client.contact_login', ['contact_key' => auth('contact')->user()->contact_key, 'next' => $verification])
auth()->guard('contact')->user()->client->company,
route('client.contact_login', ['contact_key' => auth()->guard('contact')->user()->contact_key, 'next' => $verification])
);
$mailer->company = auth('contact')->user()->client->company;
$mailer->settings = auth('contact')->user()->client->company->settings;
$mailer->to_user = auth('contact')->user();
$mailer->company = auth()->guard('contact')->user()->client->company;
$mailer->settings = auth()->guard('contact')->user()->client->company->settings;
$mailer->to_user = auth()->guard('contact')->user();
NinjaMailerJob::dispatch($mailer);

View File

@ -47,7 +47,7 @@ use WePayCommon;
$data = $request->all();
// authorize the credit card
nlog($data);
// nlog($data);
/*
'_token' => '1Fk5CRj34up5ntKPvrFyMIAJhDdUNF3boqT3iIN3',
'company_gateway_id' => '39',

View File

@ -41,10 +41,5 @@ class MailCssInlinerServiceProvider extends ServiceProvider
$this->app->singleton(CssInlinerPlugin::class, function ($app) {
return new CssInlinerPlugin([]);
});
// $this->app->afterResolving('mail.manager', function (MailManager $mailManager) {
// $mailManager->getSwiftMailer()->registerPlugin($this->app->make(CssInlinerPlugin::class));
// return $mailManager;
// });
}
}

View File

@ -46,8 +46,6 @@ class GetCreditPdf extends AbstractService
$file_path = CreateEntityPdf::dispatchNow($this->invitation);
nlog($file_path);
return $file_path;
// return Storage::disk($disk)->path($file_path);
}
}

View File

@ -91,7 +91,7 @@ class SubscriptionService
'invoice' => $this->encodePrimaryKey($payment_hash->fee_invoice_id),
'client' => $recurring_invoice->client->hashed_id,
'subscription' => $this->subscription->hashed_id,
'contact' => auth('contact')->user() ? auth('contact')->user()->hashed_id : $recurring_invoice->client->contacts()->first()->hashed_id,
'contact' => auth()->guard('contact')->user() ? auth()->guard('contact')->user()->hashed_id : $recurring_invoice->client->contacts()->first()->hashed_id,
'account_key' => $recurring_invoice->client->custom_value2,
];
@ -452,7 +452,7 @@ class SubscriptionService
'credit' => $credit ? $credit->hashed_id : null,
'client' => $new_recurring_invoice->client->hashed_id,
'subscription' => $target_subscription->hashed_id,
'contact' => auth('contact')->user()->hashed_id,
'contact' => auth()->guard('contact')->user()->hashed_id,
'account_key' => $new_recurring_invoice->client->custom_value2,
];
@ -573,7 +573,7 @@ class SubscriptionService
'invoice' => $this->encodePrimaryKey($payment_hash->fee_invoice_id),
'client' => $recurring_invoice->client->hashed_id,
'subscription' => $this->subscription->hashed_id,
'contact' => auth('contact')->user()->hashed_id,
'contact' => auth()->guard('contact')->user()->hashed_id,
'account_key' => $recurring_invoice->client->custom_value2,
];
@ -921,7 +921,7 @@ class SubscriptionService
'subscription' => $this->subscription->hashed_id,
'recurring_invoice' => $recurring_invoice->hashed_id,
'client' => $recurring_invoice->client->hashed_id,
'contact' => auth('contact')->user()->hashed_id,
'contact' => auth()->guard('contact')->user()->hashed_id,
'account_key' => $recurring_invoice->client->custom_value2,
];

View File

@ -71,7 +71,7 @@ class ZeroCostProduct extends AbstractService
'invoice' => $invoice->hashed_id,
'client' => $recurring_invoice->client->hashed_id,
'subscription' => $this->subscription->hashed_id,
'contact' => auth('contact')->user()->hashed_id,
'contact' => auth()->guard('contact')->user()->hashed_id,
'redirect_url' => "/client/recurring_invoices/{$recurring_invoice->hashed_id}",
];

View File

@ -327,6 +327,7 @@ class HtmlEngine
$data['$client_address'] = ['value' => $this->client->present()->address() ?: '&nbsp;', 'label' => ctrans('texts.address')];
$data['$client.address'] = &$data['$client_address'];
$data['$client.postal_code'] = ['value' => $this->client->postal_code ?: '&nbsp;', 'label' => ctrans('texts.postal_code')];
$data['$client.public_notes'] = ['value' => $this->client->public_notes ?: '&nbsp;', 'label' => ctrans('texts.notes')];
$data['$client.city'] = ['value' => $this->client->city ?: '&nbsp;', 'label' => ctrans('texts.city')];
$data['$client.state'] = ['value' => $this->client->state ?: '&nbsp;', 'label' => ctrans('texts.state')];
$data['$client.id_number'] = &$data['$id_number'];
@ -490,6 +491,7 @@ class HtmlEngine
//$data['$entity_footer'] = ['value' => $this->client->getSetting("{$this->entity_string}_footer"), 'label' => ''];
$data['$entity_footer'] = ['value' => Helpers::processReservedKeywords(\nl2br($this->entity->footer), $this->client), 'label' => ''];
$data['$footer'] = &$data['$entity_footer'];
$data['$page_size'] = ['value' => $this->settings->page_size, 'label' => ''];
$data['$page_layout'] = ['value' => property_exists($this->settings, 'page_layout') ? $this->settings->page_layout : 'Portrait', 'label' => ''];

View File

@ -49,6 +49,25 @@ class Number
return number_format($value, $precision, $decimal, $thousand);
}
/**
* Formats a given value based on the clients currency.
*
* @param float $value The number to be formatted
* @param object $currency The client currency object
*
* @return string The formatted value
*/
public static function formatValueNoTrailingZeroes($value, $currency) :string
{
$value = floatval($value);
$thousand = $currency->thousand_separator;
$decimal = $currency->decimal_separator;
$precision = $currency->precision;
return rtrim(rtrim(number_format($value, $precision, $decimal, $thousand), "0"),$decimal);
}
/**
* Formats a given value based on the clients currency
* BACK to a float.

View File

@ -303,15 +303,10 @@ trait MakesInvoiceValues
$data[$key][$table_type . ".{$_table_type}4"] = $helpers->formatCustomFieldValue($this->client->company->custom_fields, "{$_table_type}4", $item->custom_value4, $this->client);
// 08-02-2022 - fix for regression below
$data[$key][$table_type.'.quantity'] = Number::formatValue($item->quantity, $this->client->currency());
// $data[$key][$table_type.'.quantity'] = Number::formatValue($item->quantity, $this->client->currency());
//change quantity from localized number, to decimal format with no trailing zeroes 06/09/21
$data[$key][$table_type.'.quantity'] = Number::formatValueNoTrailingZeroes($item->quantity, $this->client->currency());
//30-01-2022 - improve rounding display for Unit quantity
// $data[$key][$table_type.'.quantity'] = $item->quantity >=1 ? rtrim(number_format($item->quantity, $this->client->currency()->precision), $locale_info['decimal_point']) : rtrim(number_format($item->quantity,15), 0);
// $data[$key][$table_type.'.quantity'] = rtrim($item->quantity, $locale_info['decimal_point']);
//30-01-2022 - improve rounding display for Unit Cost
$data[$key][$table_type.'.unit_cost'] = Number::formatMoneyNoRounding($item->cost, $this->client);
$data[$key][$table_type.'.cost'] = Number::formatMoney($item->cost, $this->client);

View File

@ -14,8 +14,8 @@ return [
'require_https' => env('REQUIRE_HTTPS', true),
'app_url' => rtrim(env('APP_URL', ''), '/'),
'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
'app_version' => '5.3.58',
'app_tag' => '5.3.58',
'app_version' => '5.3.59',
'app_tag' => '5.3.59',
'minimum_client_version' => '5.0.16',
'terms_version' => '1.0.1',
'api_secret' => env('API_SECRET', ''),

View File

@ -1,5 +1,5 @@
var CanvasKitInit = (function() {
var CanvasKitInit = (() => {
var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;
return (
@ -7,269 +7,266 @@ function(CanvasKitInit) {
CanvasKitInit = CanvasKitInit || {};
null;var t;t||(t=typeof CanvasKitInit !== 'undefined' ? CanvasKitInit : {});var ca,ea;t.ready=new Promise(function(a,b){ca=a;ea=b});
null;var t;t||(t=typeof CanvasKitInit !== 'undefined' ? CanvasKitInit : {});var da=Object.assign,fa,ha;t.ready=new Promise(function(a,b){fa=a;ha=b});
(function(a){a.Vd=a.Vd||[];a.Vd.push(function(){a.MakeSWCanvasSurface=function(b){var c=b;if("CANVAS"!==c.tagName&&(c=document.getElementById(b),!c))throw"Canvas with id "+b+" was not found";if(b=a.MakeSurface(c.width,c.height))b.Nd=c;return b};a.MakeCanvasSurface||(a.MakeCanvasSurface=a.MakeSWCanvasSurface);a.MakeSurface=function(b,c){var f={width:b,height:c,colorType:a.ColorType.RGBA_8888,alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB},h=b*c*4,l=a._malloc(h);if(f=a.Surface._makeRasterDirect(f,
l,4*b))f.Nd=null,f.zf=b,f.wf=c,f.yf=h,f.af=l,f.getCanvas().clear(a.TRANSPARENT);return f};a.MakeRasterDirectSurface=function(b,c,f){return a.Surface._makeRasterDirect(b,c.byteOffset,f)};a.Surface.prototype.flush=function(b){a.Od(this.Md);this._flush();if(this.Nd){var c=new Uint8ClampedArray(a.HEAPU8.buffer,this.af,this.yf);c=new ImageData(c,this.zf,this.wf);b?this.Nd.getContext("2d").putImageData(c,0,0,b[0],b[1],b[2]-b[0],b[3]-b[1]):this.Nd.getContext("2d").putImageData(c,0,0)}};a.Surface.prototype.dispose=
function(){this.af&&a._free(this.af);this.delete()};a.Od=a.Od||function(){}})})(t);
(function(a){a.Vd=a.Vd||[];a.Vd.push(function(){function b(l,n,q){return l&&l.hasOwnProperty(n)?l[n]:q}function c(l){var n=ha.length;n||(ha.push(null),n=1);ha.push(l);return n}function f(l){return l.naturalHeight||l.videoHeight||l.displayHeight||l.height}function h(l){return l.naturalWidth||l.videoWidth||l.displayWidth||l.width}a.GetWebGLContext=function(l,n){if(!l)throw"null canvas passed into makeWebGLContext";var q={alpha:b(n,"alpha",1),depth:b(n,"depth",1),stencil:b(n,"stencil",8),antialias:b(n,
"antialias",0),premultipliedAlpha:b(n,"premultipliedAlpha",1),preserveDrawingBuffer:b(n,"preserveDrawingBuffer",0),preferLowPowerToHighPerformance:b(n,"preferLowPowerToHighPerformance",0),failIfMajorPerformanceCaveat:b(n,"failIfMajorPerformanceCaveat",0),enableExtensionsByDefault:b(n,"enableExtensionsByDefault",1),explicitSwapControl:b(n,"explicitSwapControl",0),renderViaOffscreenBackBuffer:b(n,"renderViaOffscreenBackBuffer",0)};q.majorVersion=n&&n.majorVersion?n.majorVersion:"undefined"!==typeof WebGL2RenderingContext?
2:1;if(q.explicitSwapControl)throw"explicitSwapControl is not supported";l=ia(l,q);if(!l)return 0;ma(l);return l};a.deleteContext=function(l){v===na[l]&&(v=null);"object"===typeof JSEvents&&JSEvents.Eg(na[l].le.canvas);na[l]&&na[l].le.canvas&&(na[l].le.canvas.vf=void 0);na[l]=null};a._setTextureCleanup({deleteTexture:function(l,n){var q=ha[n];q&&na[l].le.deleteTexture(q);ha[n]=null}});a.MakeGrContext=function(l){if(!this.Od(l))return null;var n=this._MakeGrContext();if(!n)return null;n.Md=l;return n};
a.MakeOnScreenGLSurface=function(l,n,q,x){n=this._MakeOnScreenGLSurface(l,n,q,x);if(!n)return null;n.Md=l.Md;return n};a.MakeRenderTarget=function(l,n,q){n=this._MakeRenderTargetWH(l,n,q);if(!n)return null;n.Md=l.Md;return n};a.MakeRenderTarget=function(l,n){n=this._MakeRenderTargetII(l,n);if(!n)return null;n.Md=l.Md;return n};a.MakeWebGLCanvasSurface=function(l,n,q){n=n||null;var x=l,w="undefined"!==typeof OffscreenCanvas&&x instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&
x instanceof HTMLCanvasElement||w||(x=document.getElementById(l),x)))throw"Canvas with id "+l+" was not found";l=this.GetWebGLContext(x,q);if(!l||0>l)throw"failed to create webgl context: err "+l;l=this.MakeGrContext(l);n=this.MakeOnScreenGLSurface(l,x.width,x.height,n);return n?n:(n=x.cloneNode(!0),x.parentNode.replaceChild(n,x),n.classList.add("ck-replaced"),a.MakeSWCanvasSurface(n))};a.MakeCanvasSurface=a.MakeWebGLCanvasSurface;a.Surface.prototype.makeImageFromTexture=function(l,n){a.Od(this.Md);
l=c(l);return this._makeImageFromTexture(this.Md,l,n)};a.Surface.prototype.makeImageFromTextureSource=function(l,n){n||(n={height:f(l),width:h(l),colorType:a.ColorType.RGBA_8888,alphaType:a.AlphaType.Unpremul});n.colorSpace||(n.colorSpace=a.ColorSpace.SRGB);a.Od(this.Md);var q=v.le,x=q.createTexture();q.bindTexture(q.TEXTURE_2D,x);2===v.version?q.texImage2D(q.TEXTURE_2D,0,q.RGBA,n.width,n.height,0,q.RGBA,q.UNSIGNED_BYTE,l):q.texImage2D(q.TEXTURE_2D,0,q.RGBA,q.RGBA,q.UNSIGNED_BYTE,l);q.bindTexture(q.TEXTURE_2D,
null);return this.makeImageFromTexture(x,n)};a.MakeLazyImageFromTextureSource=function(l,n){n||(n={height:f(l),width:h(l),colorType:a.ColorType.RGBA_8888,alphaType:a.AlphaType.Unpremul});n.colorSpace||(n.colorSpace=a.ColorSpace.SRGB);var q={makeTexture:function(){var x=v,w=x.le,G=w.createTexture();w.bindTexture(w.TEXTURE_2D,G);2===x.version?w.texImage2D(w.TEXTURE_2D,0,w.RGBA,n.width,n.height,0,w.RGBA,w.UNSIGNED_BYTE,l):w.texImage2D(w.TEXTURE_2D,0,w.RGBA,w.RGBA,w.UNSIGNED_BYTE,l);w.bindTexture(w.TEXTURE_2D,
null);return c(G)},freeSrc:function(){}};"VideoFrame"===l.constructor.name&&(q.freeSrc=function(){l.close()});return a.Image._makeFromGenerator(n,q)};a.Od=function(l){return l?ma(l):!1}})})(t);
l,4*b))f.Nd=null,f.Cf=b,f.zf=c,f.Bf=h,f.bf=l,f.getCanvas().clear(a.TRANSPARENT);return f};a.MakeRasterDirectSurface=function(b,c,f){return a.Surface._makeRasterDirect(b,c.byteOffset,f)};a.Surface.prototype.flush=function(b){a.Od(this.Md);this._flush();if(this.Nd){var c=new Uint8ClampedArray(a.HEAPU8.buffer,this.bf,this.Bf);c=new ImageData(c,this.Cf,this.zf);b?this.Nd.getContext("2d").putImageData(c,0,0,b[0],b[1],b[2]-b[0],b[3]-b[1]):this.Nd.getContext("2d").putImageData(c,0,0)}};a.Surface.prototype.dispose=
function(){this.bf&&a._free(this.bf);this.delete()};a.Od=a.Od||function(){}})})(t);
(function(a){a.Vd=a.Vd||[];a.Vd.push(function(){function b(l,n,q){return l&&l.hasOwnProperty(n)?l[n]:q}function c(l){var n=ka(la);la[n]=l;return n}function f(l){return l.naturalHeight||l.videoHeight||l.displayHeight||l.height}function h(l){return l.naturalWidth||l.videoWidth||l.displayWidth||l.width}a.GetWebGLContext=function(l,n){if(!l)throw"null canvas passed into makeWebGLContext";var q={alpha:b(n,"alpha",1),depth:b(n,"depth",1),stencil:b(n,"stencil",8),antialias:b(n,"antialias",0),premultipliedAlpha:b(n,
"premultipliedAlpha",1),preserveDrawingBuffer:b(n,"preserveDrawingBuffer",0),preferLowPowerToHighPerformance:b(n,"preferLowPowerToHighPerformance",0),failIfMajorPerformanceCaveat:b(n,"failIfMajorPerformanceCaveat",0),enableExtensionsByDefault:b(n,"enableExtensionsByDefault",1),explicitSwapControl:b(n,"explicitSwapControl",0),renderViaOffscreenBackBuffer:b(n,"renderViaOffscreenBackBuffer",0)};q.majorVersion=n&&n.majorVersion?n.majorVersion:"undefined"!==typeof WebGL2RenderingContext?2:1;if(q.explicitSwapControl)throw"explicitSwapControl is not supported";
l=ma(l,q);if(!l)return 0;na(l);return l};a.deleteContext=function(l){v===qa[l]&&(v=null);"object"===typeof JSEvents&&JSEvents.Hg(qa[l].je.canvas);qa[l]&&qa[l].je.canvas&&(qa[l].je.canvas.yf=void 0);qa[l]=null};a._setTextureCleanup({deleteTexture:function(l,n){var q=la[n];q&&qa[l].je.deleteTexture(q);la[n]=null}});a.MakeGrContext=function(l){if(!this.Od(l))return null;var n=this._MakeGrContext();if(!n)return null;n.Md=l;return n};a.MakeOnScreenGLSurface=function(l,n,q,w){if(!this.Od(l.Md))return null;
n=this._MakeOnScreenGLSurface(l,n,q,w);if(!n)return null;n.Md=l.Md;return n};a.MakeRenderTarget=function(){var l=arguments[0];if(!this.Od(l.Md))return null;if(3===arguments.length){var n=this._MakeRenderTargetWH(l,arguments[1],arguments[2]);if(!n)return null}else if(2===arguments.length){if(n=this._MakeRenderTargetII(l,arguments[1]),!n)return null}else return null;n.Md=l.Md;return n};a.MakeWebGLCanvasSurface=function(l,n,q){n=n||null;var w=l,x="undefined"!==typeof OffscreenCanvas&&w instanceof OffscreenCanvas;
if(!("undefined"!==typeof HTMLCanvasElement&&w instanceof HTMLCanvasElement||x||(w=document.getElementById(l),w)))throw"Canvas with id "+l+" was not found";l=this.GetWebGLContext(w,q);if(!l||0>l)throw"failed to create webgl context: err "+l;l=this.MakeGrContext(l);n=this.MakeOnScreenGLSurface(l,w.width,w.height,n);return n?n:(n=w.cloneNode(!0),w.parentNode.replaceChild(n,w),n.classList.add("ck-replaced"),a.MakeSWCanvasSurface(n))};a.MakeCanvasSurface=a.MakeWebGLCanvasSurface;a.Surface.prototype.makeImageFromTexture=
function(l,n){a.Od(this.Md);l=c(l);if(n=this._makeImageFromTexture(this.Md,l,n))n.Ke=l;return n};a.Surface.prototype.makeImageFromTextureSource=function(l,n){n||(n={height:f(l),width:h(l),colorType:a.ColorType.RGBA_8888,alphaType:a.AlphaType.Unpremul});n.colorSpace||(n.colorSpace=a.ColorSpace.SRGB);a.Od(this.Md);var q=v.je,w=q.createTexture();q.bindTexture(q.TEXTURE_2D,w);2===v.version?q.texImage2D(q.TEXTURE_2D,0,q.RGBA,n.width,n.height,0,q.RGBA,q.UNSIGNED_BYTE,l):q.texImage2D(q.TEXTURE_2D,0,q.RGBA,
q.RGBA,q.UNSIGNED_BYTE,l);q.bindTexture(q.TEXTURE_2D,null);return this.makeImageFromTexture(w,n)};a.Surface.prototype.updateTextureFromSource=function(l,n){if(l.Ke){a.Od(this.Md);var q=v.je,w=la[l.Ke];q.bindTexture(q.TEXTURE_2D,w);2===v.version?q.texImage2D(q.TEXTURE_2D,0,q.RGBA,h(n),f(n),0,q.RGBA,q.UNSIGNED_BYTE,n):q.texImage2D(q.TEXTURE_2D,0,q.RGBA,q.RGBA,q.UNSIGNED_BYTE,n);q.bindTexture(q.TEXTURE_2D,null);this._resetContext();la[l.Ke]=null;l.Ke=c(w);n=l.getImageInfo();n.colorSpace=l.getColorSpace();
q=this._makeImageFromTexture(this.Md,l.Ke,n);w=l.Ld.Qd;var x=l.Ld.$d;l.Ld.Qd=q.Ld.Qd;l.Ld.$d=q.Ld.$d;q.Ld.Qd=w;q.Ld.$d=x;q.delete();n.colorSpace.delete()}};a.MakeLazyImageFromTextureSource=function(l,n){n||(n={height:f(l),width:h(l),colorType:a.ColorType.RGBA_8888,alphaType:a.AlphaType.Unpremul});n.colorSpace||(n.colorSpace=a.ColorSpace.SRGB);var q={makeTexture:function(){var w=v,x=w.je,J=x.createTexture();x.bindTexture(x.TEXTURE_2D,J);2===w.version?x.texImage2D(x.TEXTURE_2D,0,x.RGBA,n.width,n.height,
0,x.RGBA,x.UNSIGNED_BYTE,l):x.texImage2D(x.TEXTURE_2D,0,x.RGBA,x.RGBA,x.UNSIGNED_BYTE,l);x.bindTexture(x.TEXTURE_2D,null);return c(J)},freeSrc:function(){}};"VideoFrame"===l.constructor.name&&(q.freeSrc=function(){l.close()});return a.Image._makeFromGenerator(n,q)};a.Od=function(l){return l?na(l):!1}})})(t);
(function(a){function b(e,d,g,m,r){for(var y=0;y<e.length;y++)d[y*g+(y*r+m+g)%g]=e[y];return d}function c(e){for(var d=e*e,g=Array(d);d--;)g[d]=0===d%(e+1)?1:0;return g}function f(e){return e?e.constructor===Float32Array&&4===e.length:!1}function h(e){return(q(255*e[3])<<24|q(255*e[0])<<16|q(255*e[1])<<8|q(255*e[2])<<0)>>>0}function l(e){if(e&&e._ck)return e;if(e instanceof Float32Array){for(var d=Math.floor(e.length/4),g=new Uint32Array(d),m=0;m<d;m++)g[m]=h(e.slice(4*m,4*(m+1)));return g}if(e instanceof
Uint32Array)return e;if(e instanceof Array&&e[0]instanceof Float32Array)return e.map(h)}function n(e){if(void 0===e)return 1;var d=parseFloat(e);return e&&-1!==e.indexOf("%")?d/100:d}function q(e){return Math.round(Math.max(0,Math.min(e||0,255)))}function x(e,d){d&&d._ck||a._free(e)}function w(e,d,g){if(!e||!e.length)return T;if(e&&e._ck)return e.byteOffset;var m=a[d].BYTES_PER_ELEMENT;g||(g=a._malloc(e.length*m));a[d].set(e,g/m);return g}function G(e){var d={ce:T,count:e.length,Ke:a.ColorType.RGBA_F32};
if(e instanceof Float32Array)d.ce=w(e,"HEAPF32"),d.count=e.length/4;else if(e instanceof Uint32Array)d.ce=w(e,"HEAPU32"),d.Ke=a.ColorType.RGBA_8888;else if(e instanceof Array){if(e&&e.length){for(var g=a._malloc(16*e.length),m=0,r=g/4,y=0;y<e.length;y++)for(var D=0;4>D;D++)a.HEAPF32[r+m]=e[y][D],m++;e=g}else e=T;d.ce=e}else throw"Invalid argument to copyFlexibleColorArray, Not a color array "+typeof e;return d}function K(e){if(!e)return T;if(e.length){if(6===e.length||9===e.length)return w(e,"HEAPF32",
Na),6===e.length&&a.HEAPF32.set(Fd,6+Na/4),Na;if(16===e.length){var d=Bb.toTypedArray();d[0]=e[0];d[1]=e[1];d[2]=e[3];d[3]=e[4];d[4]=e[5];d[5]=e[7];d[6]=e[12];d[7]=e[13];d[8]=e[15];return Na}throw"invalid matrix size";}d=Bb.toTypedArray();d[0]=e.m11;d[1]=e.m21;d[2]=e.m41;d[3]=e.m12;d[4]=e.m22;d[5]=e.m42;d[6]=e.m14;d[7]=e.m24;d[8]=e.m44;return Na}function O(e){if(!e)return T;var d=ec.toTypedArray();if(e.length){if(16!==e.length&&6!==e.length&&9!==e.length)throw"invalid matrix size";if(16===e.length)return w(e,
"HEAPF32",Oa);d.fill(0);d[0]=e[0];d[1]=e[1];d[3]=e[2];d[4]=e[3];d[5]=e[4];d[7]=e[5];d[12]=e[6];d[13]=e[7];d[15]=e[8];6===e.length&&(d[12]=0,d[13]=0,d[15]=1);return Oa}d[0]=e.m11;d[1]=e.m21;d[2]=e.m31;d[3]=e.m41;d[4]=e.m12;d[5]=e.m22;d[6]=e.m32;d[7]=e.m42;d[8]=e.m13;d[9]=e.m23;d[10]=e.m33;d[11]=e.m43;d[12]=e.m14;d[13]=e.m24;d[14]=e.m34;d[15]=e.m44;return Oa}function A(e){for(var d=Array(16),g=0;16>g;g++)d[g]=a.HEAPF32[e/4+g];return d}function M(e,d){return w(e,"HEAPF32",d||hb)}function X(e,d,g,m){var r=
fc.toTypedArray();r[0]=e;r[1]=d;r[2]=g;r[3]=m;return hb}function da(e){for(var d=new Float32Array(4),g=0;4>g;g++)d[g]=a.HEAPF32[e/4+g];return d}function ba(e,d){return w(e,"HEAPF32",d||ja)}function pa(e,d){return w(e,"HEAPF32",d||hc)}function ib(){for(var e=0,d=0;d<arguments.length-1;d+=2)e+=arguments[d]*arguments[d+1];return e}function jb(e,d,g){for(var m=Array(e.length),r=0;r<g;r++)for(var y=0;y<g;y++){for(var D=0,J=0;J<g;J++)D+=e[g*r+J]*d[g*J+y];m[r*g+y]=D}return m}function Lc(e,d){for(var g=jb(d[0],
d[1],e),m=2;m<d.length;)g=jb(g,d[m],e),m++;return g}a.Color=function(e,d,g,m){void 0===m&&(m=1);return a.Color4f(q(e)/255,q(d)/255,q(g)/255,m)};a.ColorAsInt=function(e,d,g,m){void 0===m&&(m=255);return(q(m)<<24|q(e)<<16|q(d)<<8|q(g)<<0&268435455)>>>0};a.Color4f=function(e,d,g,m){void 0===m&&(m=1);return Float32Array.of(e,d,g,m)};Object.defineProperty(a,"TRANSPARENT",{get:function(){return a.Color4f(0,0,0,0)}});Object.defineProperty(a,"BLACK",{get:function(){return a.Color4f(0,0,0,1)}});Object.defineProperty(a,
"WHITE",{get:function(){return a.Color4f(1,1,1,1)}});Object.defineProperty(a,"RED",{get:function(){return a.Color4f(1,0,0,1)}});Object.defineProperty(a,"GREEN",{get:function(){return a.Color4f(0,1,0,1)}});Object.defineProperty(a,"BLUE",{get:function(){return a.Color4f(0,0,1,1)}});Object.defineProperty(a,"YELLOW",{get:function(){return a.Color4f(1,1,0,1)}});Object.defineProperty(a,"CYAN",{get:function(){return a.Color4f(0,1,1,1)}});Object.defineProperty(a,"MAGENTA",{get:function(){return a.Color4f(1,
0,1,1)}});a.getColorComponents=function(e){return[Math.floor(255*e[0]),Math.floor(255*e[1]),Math.floor(255*e[2]),e[3]]};a.parseColorString=function(e,d){e=e.toLowerCase();if(e.startsWith("#")){d=255;switch(e.length){case 9:d=parseInt(e.slice(7,9),16);case 7:var g=parseInt(e.slice(1,3),16);var m=parseInt(e.slice(3,5),16);var r=parseInt(e.slice(5,7),16);break;case 5:d=17*parseInt(e.slice(4,5),16);case 4:g=17*parseInt(e.slice(1,2),16),m=17*parseInt(e.slice(2,3),16),r=17*parseInt(e.slice(3,4),16)}return a.Color(g,
m,r,d/255)}return e.startsWith("rgba")?(e=e.slice(5,-1),e=e.split(","),a.Color(+e[0],+e[1],+e[2],n(e[3]))):e.startsWith("rgb")?(e=e.slice(4,-1),e=e.split(","),a.Color(+e[0],+e[1],+e[2],n(e[3]))):e.startsWith("gray(")||e.startsWith("hsl")||!d||(e=d[e],void 0===e)?a.BLACK:e};a.multiplyByAlpha=function(e,d){e=e.slice();e[3]=Math.max(0,Math.min(e[3]*d,1));return e};a.Malloc=function(e,d){var g=a._malloc(d*e.BYTES_PER_ELEMENT);return{_ck:!0,length:d,byteOffset:g,oe:null,subarray:function(m,r){m=this.toTypedArray().subarray(m,
r);m._ck=!0;return m},toTypedArray:function(){if(this.oe&&this.oe.length)return this.oe;this.oe=new e(a.HEAPU8.buffer,g,d);this.oe._ck=!0;return this.oe}}};a.Free=function(e){a._free(e.byteOffset);e.byteOffset=T;e.toTypedArray=null;e.oe=null};var Na=T,Bb,Oa=T,ec,hb=T,fc,Ha,ja=T,Mc,Va=T,Nc,ic=T,Oc,jc=T,Pc,kc=T,Qc,hc=T,Rc,Sc=T,Fd=Float32Array.of(0,0,1),T=0;a.onRuntimeInitialized=function(){function e(d,g,m,r,y,D){D||(D=4*r.width,r.colorType===a.ColorType.RGBA_F16?D*=2:r.colorType===a.ColorType.RGBA_F32&&
(D*=4));var J=D*r.height;var N=y?y.byteOffset:a._malloc(J);if(!d._readPixels(r,N,D,g,m))return y||a._free(N),null;if(y)return y.toTypedArray();switch(r.colorType){case a.ColorType.RGBA_8888:case a.ColorType.RGBA_F16:d=(new Uint8Array(a.HEAPU8.buffer,N,J)).slice();break;case a.ColorType.RGBA_F32:d=(new Float32Array(a.HEAPU8.buffer,N,J)).slice();break;default:return null}a._free(N);return d}fc=a.Malloc(Float32Array,4);hb=fc.byteOffset;ec=a.Malloc(Float32Array,16);Oa=ec.byteOffset;Bb=a.Malloc(Float32Array,
9);Na=Bb.byteOffset;Qc=a.Malloc(Float32Array,12);hc=Qc.byteOffset;Rc=a.Malloc(Float32Array,12);Sc=Rc.byteOffset;Ha=a.Malloc(Float32Array,4);ja=Ha.byteOffset;Mc=a.Malloc(Float32Array,4);Va=Mc.byteOffset;Nc=a.Malloc(Float32Array,3);ic=Nc.byteOffset;Oc=a.Malloc(Float32Array,3);jc=Oc.byteOffset;Pc=a.Malloc(Int32Array,4);kc=Pc.byteOffset;a.ColorSpace.SRGB=a.ColorSpace._MakeSRGB();a.ColorSpace.DISPLAY_P3=a.ColorSpace._MakeDisplayP3();a.ColorSpace.ADOBE_RGB=a.ColorSpace._MakeAdobeRGB();a.GlyphRunFlags={IsWhiteSpace:a._GlyphRunFlags_isWhiteSpace};
a.Path.MakeFromCmds=function(d){var g=w(d,"HEAPF32"),m=a.Path._MakeFromCmds(g,d.length);x(g,d);return m};a.Path.MakeFromVerbsPointsWeights=function(d,g,m){var r=w(d,"HEAPU8"),y=w(g,"HEAPF32"),D=w(m,"HEAPF32"),J=a.Path._MakeFromVerbsPointsWeights(r,d.length,y,g.length,D,m&&m.length||0);x(r,d);x(y,g);x(D,m);return J};a.Path.prototype.addArc=function(d,g,m){d=ba(d);this._addArc(d,g,m);return this};a.Path.prototype.addOval=function(d,g,m){void 0===m&&(m=1);d=ba(d);this._addOval(d,!!g,m);return this};
a.Path.prototype.addPath=function(){var d=Array.prototype.slice.call(arguments),g=d[0],m=!1;"boolean"===typeof d[d.length-1]&&(m=d.pop());if(1===d.length)this._addPath(g,1,0,0,0,1,0,0,0,1,m);else if(2===d.length)d=d[1],this._addPath(g,d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1,m);else if(7===d.length||10===d.length)this._addPath(g,d[1],d[2],d[3],d[4],d[5],d[6],d[7]||0,d[8]||0,d[9]||1,m);else return null;return this};a.Path.prototype.addPoly=function(d,g){var m=w(d,"HEAPF32");this._addPoly(m,
d.length/2,g);x(m,d);return this};a.Path.prototype.addRect=function(d,g){d=ba(d);this._addRect(d,!!g);return this};a.Path.prototype.addRRect=function(d,g){d=pa(d);this._addRRect(d,!!g);return this};a.Path.prototype.addVerbsPointsWeights=function(d,g,m){var r=w(d,"HEAPU8"),y=w(g,"HEAPF32"),D=w(m,"HEAPF32");this._addVerbsPointsWeights(r,d.length,y,g.length,D,m&&m.length||0);x(r,d);x(y,g);x(D,m)};a.Path.prototype.arc=function(d,g,m,r,y,D){d=a.LTRBRect(d-m,g-m,d+m,g+m);y=(y-r)/Math.PI*180-360*!!D;D=new a.Path;
D.addArc(d,r/Math.PI*180,y);this.addPath(D,!0);D.delete();return this};a.Path.prototype.arcToOval=function(d,g,m,r){d=ba(d);this._arcToOval(d,g,m,r);return this};a.Path.prototype.arcToRotated=function(d,g,m,r,y,D,J){this._arcToRotated(d,g,m,!!r,!!y,D,J);return this};a.Path.prototype.arcToTangent=function(d,g,m,r,y){this._arcToTangent(d,g,m,r,y);return this};a.Path.prototype.close=function(){this._close();return this};a.Path.prototype.conicTo=function(d,g,m,r,y){this._conicTo(d,g,m,r,y);return this};
a.Path.prototype.computeTightBounds=function(d){this._computeTightBounds(ja);var g=Ha.toTypedArray();return d?(d.set(g),d):g.slice()};a.Path.prototype.cubicTo=function(d,g,m,r,y,D){this._cubicTo(d,g,m,r,y,D);return this};a.Path.prototype.dash=function(d,g,m){return this._dash(d,g,m)?this:null};a.Path.prototype.getBounds=function(d){this._getBounds(ja);var g=Ha.toTypedArray();return d?(d.set(g),d):g.slice()};a.Path.prototype.lineTo=function(d,g){this._lineTo(d,g);return this};a.Path.prototype.moveTo=
function(d,g){this._moveTo(d,g);return this};a.Path.prototype.offset=function(d,g){this._transform(1,0,d,0,1,g,0,0,1);return this};a.Path.prototype.quadTo=function(d,g,m,r){this._quadTo(d,g,m,r);return this};a.Path.prototype.rArcTo=function(d,g,m,r,y,D,J){this._rArcTo(d,g,m,r,y,D,J);return this};a.Path.prototype.rConicTo=function(d,g,m,r,y){this._rConicTo(d,g,m,r,y);return this};a.Path.prototype.rCubicTo=function(d,g,m,r,y,D){this._rCubicTo(d,g,m,r,y,D);return this};a.Path.prototype.rLineTo=function(d,
g){this._rLineTo(d,g);return this};a.Path.prototype.rMoveTo=function(d,g){this._rMoveTo(d,g);return this};a.Path.prototype.rQuadTo=function(d,g,m,r){this._rQuadTo(d,g,m,r);return this};a.Path.prototype.stroke=function(d){d=d||{};d.width=d.width||1;d.miter_limit=d.miter_limit||4;d.cap=d.cap||a.StrokeCap.Butt;d.join=d.join||a.StrokeJoin.Miter;d.precision=d.precision||1;return this._stroke(d)?this:null};a.Path.prototype.transform=function(){if(1===arguments.length){var d=arguments[0];this._transform(d[0],
d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1)}else if(6===arguments.length||9===arguments.length)d=arguments,this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1);else throw"transform expected to take 1 or 9 arguments. Got "+arguments.length;return this};a.Path.prototype.trim=function(d,g,m){return this._trim(d,g,!!m)?this:null};a.Image.prototype.makeShaderCubic=function(d,g,m,r,y){y=K(y);return this._makeShaderCubic(d,g,m,r,y)};a.Image.prototype.makeShaderOptions=function(d,
g,m,r,y){y=K(y);return this._makeShaderOptions(d,g,m,r,y)};a.Image.prototype.readPixels=function(d,g,m,r,y){return e(this,d,g,m,r,y)};a.Canvas.prototype.clear=function(d){a.Od(this.Md);d=M(d);this._clear(d)};a.Canvas.prototype.clipRRect=function(d,g,m){a.Od(this.Md);d=pa(d);this._clipRRect(d,g,m)};a.Canvas.prototype.clipRect=function(d,g,m){a.Od(this.Md);d=ba(d);this._clipRect(d,g,m)};a.Canvas.prototype.concat=function(d){a.Od(this.Md);d=O(d);this._concat(d)};a.Canvas.prototype.drawArc=function(d,
g,m,r,y){a.Od(this.Md);d=ba(d);this._drawArc(d,g,m,r,y)};a.Canvas.prototype.drawAtlas=function(d,g,m,r,y,D,J){if(d&&r&&g&&m&&g.length===m.length){a.Od(this.Md);y||(y=a.BlendMode.SrcOver);var N=w(g,"HEAPF32"),Q=w(m,"HEAPF32"),U=m.length/4,u=w(l(D),"HEAPU32");if(J&&"B"in J&&"C"in J)this._drawAtlasCubic(d,Q,N,u,U,y,J.B,J.C,r);else{let I=a.FilterMode.Linear,R=a.MipmapMode.None;J&&(I=J.filter,"mipmap"in J&&(R=J.mipmap));this._drawAtlasOptions(d,Q,N,u,U,y,I,R,r)}x(N,g);x(Q,m);x(u,D)}};a.Canvas.prototype.drawCircle=
function(d,g,m,r){a.Od(this.Md);this._drawCircle(d,g,m,r)};a.Canvas.prototype.drawColor=function(d,g){a.Od(this.Md);d=M(d);void 0!==g?this._drawColor(d,g):this._drawColor(d)};a.Canvas.prototype.drawColorInt=function(d,g){a.Od(this.Md);this._drawColorInt(d,g||a.BlendMode.SrcOver)};a.Canvas.prototype.drawColorComponents=function(d,g,m,r,y){a.Od(this.Md);d=X(d,g,m,r);void 0!==y?this._drawColor(d,y):this._drawColor(d)};a.Canvas.prototype.drawDRRect=function(d,g,m){a.Od(this.Md);d=pa(d,hc);g=pa(g,Sc);
this._drawDRRect(d,g,m)};a.Canvas.prototype.drawGlyphs=function(d,g,m,r,y,D){if(!(2*d.length<=g.length))throw"Not enough positions for the array of gyphs";a.Od(this.Md);const J=w(d,"HEAPU16"),N=w(g,"HEAPF32");this._drawGlyphs(d.length,J,N,m,r,y,D);x(N,g);x(J,d)};a.Canvas.prototype.drawImage=function(d,g,m,r){a.Od(this.Md);this._drawImage(d,g,m,r||null)};a.Canvas.prototype.drawImageCubic=function(d,g,m,r,y,D){a.Od(this.Md);this._drawImageCubic(d,g,m,r,y,D||null)};a.Canvas.prototype.drawImageOptions=
function(d,g,m,r,y,D){a.Od(this.Md);this._drawImageOptions(d,g,m,r,y,D||null)};a.Canvas.prototype.drawImageNine=function(d,g,m,r,y){a.Od(this.Md);g=w(g,"HEAP32",kc);m=ba(m);this._drawImageNine(d,g,m,r,y||null)};a.Canvas.prototype.drawImageRect=function(d,g,m,r,y){a.Od(this.Md);ba(g,ja);ba(m,Va);this._drawImageRect(d,ja,Va,r,!!y)};a.Canvas.prototype.drawImageRectCubic=function(d,g,m,r,y,D){a.Od(this.Md);ba(g,ja);ba(m,Va);this._drawImageRectCubic(d,ja,Va,r,y,D||null)};a.Canvas.prototype.drawImageRectOptions=
function(d,g,m,r,y,D){a.Od(this.Md);ba(g,ja);ba(m,Va);this._drawImageRectOptions(d,ja,Va,r,y,D||null)};a.Canvas.prototype.drawLine=function(d,g,m,r,y){a.Od(this.Md);this._drawLine(d,g,m,r,y)};a.Canvas.prototype.drawOval=function(d,g){a.Od(this.Md);d=ba(d);this._drawOval(d,g)};a.Canvas.prototype.drawPaint=function(d){a.Od(this.Md);this._drawPaint(d)};a.Canvas.prototype.drawParagraph=function(d,g,m){a.Od(this.Md);this._drawParagraph(d,g,m)};a.Canvas.prototype.drawPatch=function(d,g,m,r,y){if(24>d.length)throw"Need 12 cubic points";
if(g&&4>g.length)throw"Need 4 colors";if(m&&8>m.length)throw"Need 4 shader coordinates";a.Od(this.Md);const D=w(d,"HEAPF32"),J=g?w(l(g),"HEAPU32"):T,N=m?w(m,"HEAPF32"):T;r||(r=a.BlendMode.Modulate);this._drawPatch(D,J,N,r,y);x(N,m);x(J,g);x(D,d)};a.Canvas.prototype.drawPath=function(d,g){a.Od(this.Md);this._drawPath(d,g)};a.Canvas.prototype.drawPicture=function(d){a.Od(this.Md);this._drawPicture(d)};a.Canvas.prototype.drawPoints=function(d,g,m){a.Od(this.Md);var r=w(g,"HEAPF32");this._drawPoints(d,
r,g.length/2,m);x(r,g)};a.Canvas.prototype.drawRRect=function(d,g){a.Od(this.Md);d=pa(d);this._drawRRect(d,g)};a.Canvas.prototype.drawRect=function(d,g){a.Od(this.Md);d=ba(d);this._drawRect(d,g)};a.Canvas.prototype.drawRect4f=function(d,g,m,r,y){a.Od(this.Md);this._drawRect4f(d,g,m,r,y)};a.Canvas.prototype.drawShadow=function(d,g,m,r,y,D,J){a.Od(this.Md);var N=w(y,"HEAPF32"),Q=w(D,"HEAPF32");g=w(g,"HEAPF32",ic);m=w(m,"HEAPF32",jc);this._drawShadow(d,g,m,r,N,Q,J);x(N,y);x(Q,D)};a.getShadowLocalBounds=
function(d,g,m,r,y,D,J){d=K(d);m=w(m,"HEAPF32",ic);r=w(r,"HEAPF32",jc);if(!this._getShadowLocalBounds(d,g,m,r,y,D,ja))return null;g=Ha.toTypedArray();return J?(J.set(g),J):g.slice()};a.Canvas.prototype.drawTextBlob=function(d,g,m,r){a.Od(this.Md);this._drawTextBlob(d,g,m,r)};a.Canvas.prototype.drawVertices=function(d,g,m){a.Od(this.Md);this._drawVertices(d,g,m)};a.Canvas.prototype.getLocalToDevice=function(){this._getLocalToDevice(Oa);return A(Oa)};a.Canvas.prototype.findMarkedCTM=function(d){return this._findMarkedCTM(d,
Oa)?A(Oa):null};a.Canvas.prototype.getTotalMatrix=function(){this._getTotalMatrix(Na);for(var d=Array(9),g=0;9>g;g++)d[g]=a.HEAPF32[Na/4+g];return d};a.Canvas.prototype.makeSurface=function(d){d=this._makeSurface(d);d.Md=this.Md;return d};a.Canvas.prototype.readPixels=function(d,g,m,r,y){a.Od(this.Md);return e(this,d,g,m,r,y)};a.Canvas.prototype.saveLayer=function(d,g,m,r){g=ba(g);return this._saveLayer(d||null,g,m||null,r||0)};a.Canvas.prototype.writePixels=function(d,g,m,r,y,D,J,N){if(d.byteLength%
(g*m))throw"pixels length must be a multiple of the srcWidth * srcHeight";a.Od(this.Md);var Q=d.byteLength/(g*m);D=D||a.AlphaType.Unpremul;J=J||a.ColorType.RGBA_8888;N=N||a.ColorSpace.SRGB;var U=Q*g;Q=w(d,"HEAPU8");g=this._writePixels({width:g,height:m,colorType:J,alphaType:D,colorSpace:N},Q,U,r,y);x(Q,d);return g};a.ColorFilter.MakeBlend=function(d,g){d=M(d);return a.ColorFilter._MakeBlend(d,g)};a.ColorFilter.MakeMatrix=function(d){if(!d||20!==d.length)throw"invalid color matrix";var g=w(d,"HEAPF32"),
m=a.ColorFilter._makeMatrix(g);x(g,d);return m};a.ContourMeasure.prototype.getPosTan=function(d,g){this._getPosTan(d,ja);d=Ha.toTypedArray();return g?(g.set(d),g):d.slice()};a.ImageFilter.MakeMatrixTransform=function(d,g,m){d=K(d);if("B"in g&&"C"in g)return a.ImageFilter._MakeMatrixTransformCubic(d,g.xg,g.yg,m);const r=g.filter;let y=a.MipmapMode.None;"mipmap"in g&&(y=g.mipmap);return a.ImageFilter._MakeMatrixTransformOptions(d,r,y,m)};a.Paint.prototype.getColor=function(){this._getColor(hb);return da(hb)};
a.Paint.prototype.setColor=function(d,g){g=g||null;d=M(d);this._setColor(d,g)};a.Paint.prototype.setColorComponents=function(d,g,m,r,y){y=y||null;d=X(d,g,m,r);this._setColor(d,y)};a.Path.prototype.getPoint=function(d,g){this._getPoint(d,ja);d=Ha.toTypedArray();return g?(g[0]=d[0],g[1]=d[1],g):d.slice(0,2)};a.PictureRecorder.prototype.beginRecording=function(d){d=ba(d);return this._beginRecording(d)};a.Surface.prototype.getCanvas=function(){var d=this._getCanvas();d.Md=this.Md;return d};a.Surface.prototype.makeImageSnapshot=
function(d){a.Od(this.Md);d=w(d,"HEAP32",kc);return this._makeImageSnapshot(d)};a.Surface.prototype.makeSurface=function(d){a.Od(this.Md);d=this._makeSurface(d);d.Md=this.Md;return d};a.Surface.prototype.requestAnimationFrame=function(d,g){this.Ge||(this.Ge=this.getCanvas());requestAnimationFrame(function(){a.Od(this.Md);d(this.Ge);this.flush(g)}.bind(this))};a.Surface.prototype.drawOnce=function(d,g){this.Ge||(this.Ge=this.getCanvas());requestAnimationFrame(function(){a.Od(this.Md);d(this.Ge);this.flush(g);
this.dispose()}.bind(this))};a.PathEffect.MakeDash=function(d,g){g||(g=0);if(!d.length||1===d.length%2)throw"Intervals array must have even length";var m=w(d,"HEAPF32");g=a.PathEffect._MakeDash(m,d.length,g);x(m,d);return g};a.Shader.MakeColor=function(d,g){g=g||null;d=M(d);return a.Shader._MakeColor(d,g)};a.Shader.Blend=a.Shader.MakeBlend;a.Shader.Color=a.Shader.MakeColor;a.Shader.MakeLinearGradient=function(d,g,m,r,y,D,J,N){N=N||null;var Q=G(m),U=w(r,"HEAPF32");J=J||0;D=K(D);var u=Ha.toTypedArray();
u.set(d);u.set(g,2);d=a.Shader._MakeLinearGradient(ja,Q.ce,Q.Ke,U,Q.count,y,J,D,N);x(Q.ce,m);r&&x(U,r);return d};a.Shader.MakeRadialGradient=function(d,g,m,r,y,D,J,N){N=N||null;var Q=G(m),U=w(r,"HEAPF32");J=J||0;D=K(D);d=a.Shader._MakeRadialGradient(d[0],d[1],g,Q.ce,Q.Ke,U,Q.count,y,J,D,N);x(Q.ce,m);r&&x(U,r);return d};a.Shader.MakeSweepGradient=function(d,g,m,r,y,D,J,N,Q,U){U=U||null;var u=G(m),I=w(r,"HEAPF32");J=J||0;N=N||0;Q=Q||360;D=K(D);d=a.Shader._MakeSweepGradient(d,g,u.ce,u.Ke,I,u.count,y,
N,Q,J,D,U);x(u.ce,m);r&&x(I,r);return d};a.Shader.MakeTwoPointConicalGradient=function(d,g,m,r,y,D,J,N,Q,U){U=U||null;var u=G(y),I=w(D,"HEAPF32");Q=Q||0;N=K(N);var R=Ha.toTypedArray();R.set(d);R.set(m,2);d=a.Shader._MakeTwoPointConicalGradient(ja,g,r,u.ce,u.Ke,I,u.count,J,Q,N,U);x(u.ce,y);D&&x(I,D);return d};a.Vertices.prototype.bounds=function(d){this._bounds(ja);var g=Ha.toTypedArray();return d?(d.set(g),d):g.slice()};a.Vd&&a.Vd.forEach(function(d){d()})};a.computeTonalColors=function(e){var d=
w(e.ambient,"HEAPF32"),g=w(e.spot,"HEAPF32");this._computeTonalColors(d,g);var m={ambient:da(d),spot:da(g)};x(d,e.ambient);x(g,e.spot);return m};a.LTRBRect=function(e,d,g,m){return Float32Array.of(e,d,g,m)};a.XYWHRect=function(e,d,g,m){return Float32Array.of(e,d,e+g,d+m)};a.LTRBiRect=function(e,d,g,m){return Int32Array.of(e,d,g,m)};a.XYWHiRect=function(e,d,g,m){return Int32Array.of(e,d,e+g,d+m)};a.RRectXY=function(e,d,g){return Float32Array.of(e[0],e[1],e[2],e[3],d,g,d,g,d,g,d,g)};a.MakeAnimatedImageFromEncoded=
function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);a.HEAPU8.set(e,d);return(e=a._decodeAnimatedImage(d,e.byteLength))?e:null};a.MakeImageFromEncoded=function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);a.HEAPU8.set(e,d);return(e=a._decodeImage(d,e.byteLength))?e:null};var kb=null;a.MakeImageFromCanvasImageSource=function(e){var d=e.width,g=e.height;kb||(kb=document.createElement("canvas"));kb.width=d;kb.height=g;var m=kb.getContext("2d");m.drawImage(e,0,0);e=m.getImageData(0,0,
d,g);return a.MakeImage({width:d,height:g,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},e.data,4*d)};a.MakeImage=function(e,d,g){var m=a._malloc(d.length);a.HEAPU8.set(d,m);return a._MakeImage(e,m,d.length,g)};a.MakeVertices=function(e,d,g,m,r,y){var D=r&&r.length||0,J=0;g&&g.length&&(J|=1);m&&m.length&&(J|=2);void 0===y||y||(J|=4);e=new a._VerticesBuilder(e,d.length/2,D,J);w(d,"HEAPF32",e.positions());e.texCoords()&&w(g,"HEAPF32",e.texCoords());e.colors()&&
w(l(m),"HEAPU32",e.colors());e.indices()&&w(r,"HEAPU16",e.indices());return e.detach()};a.Matrix={};a.Matrix.identity=function(){return c(3)};a.Matrix.invert=function(e){var d=e[0]*e[4]*e[8]+e[1]*e[5]*e[6]+e[2]*e[3]*e[7]-e[2]*e[4]*e[6]-e[1]*e[3]*e[8]-e[0]*e[5]*e[7];return d?[(e[4]*e[8]-e[5]*e[7])/d,(e[2]*e[7]-e[1]*e[8])/d,(e[1]*e[5]-e[2]*e[4])/d,(e[5]*e[6]-e[3]*e[8])/d,(e[0]*e[8]-e[2]*e[6])/d,(e[2]*e[3]-e[0]*e[5])/d,(e[3]*e[7]-e[4]*e[6])/d,(e[1]*e[6]-e[0]*e[7])/d,(e[0]*e[4]-e[1]*e[3])/d]:null};a.Matrix.mapPoints=
function(e,d){for(var g=0;g<d.length;g+=2){var m=d[g],r=d[g+1],y=e[6]*m+e[7]*r+e[8],D=e[3]*m+e[4]*r+e[5];d[g]=(e[0]*m+e[1]*r+e[2])/y;d[g+1]=D/y}return d};a.Matrix.multiply=function(){return Lc(3,arguments)};a.Matrix.rotated=function(e,d,g){d=d||0;g=g||0;var m=Math.sin(e);e=Math.cos(e);return[e,-m,ib(m,g,1-e,d),m,e,ib(-m,d,1-e,g),0,0,1]};a.Matrix.scaled=function(e,d,g,m){g=g||0;m=m||0;var r=b([e,d],c(3),3,0,1);return b([g-e*g,m-d*m],r,3,2,0)};a.Matrix.skewed=function(e,d,g,m){g=g||0;m=m||0;var r=b([e,
d],c(3),3,1,-1);return b([-e*g,-d*m],r,3,2,0)};a.Matrix.translated=function(e,d){return b(arguments,c(3),3,2,0)};a.Vector={};a.Vector.dot=function(e,d){return e.map(function(g,m){return g*d[m]}).reduce(function(g,m){return g+m})};a.Vector.lengthSquared=function(e){return a.Vector.dot(e,e)};a.Vector.length=function(e){return Math.sqrt(a.Vector.lengthSquared(e))};a.Vector.mulScalar=function(e,d){return e.map(function(g){return g*d})};a.Vector.add=function(e,d){return e.map(function(g,m){return g+d[m]})};
a.Vector.sub=function(e,d){return e.map(function(g,m){return g-d[m]})};a.Vector.dist=function(e,d){return a.Vector.length(a.Vector.sub(e,d))};a.Vector.normalize=function(e){return a.Vector.mulScalar(e,1/a.Vector.length(e))};a.Vector.cross=function(e,d){return[e[1]*d[2]-e[2]*d[1],e[2]*d[0]-e[0]*d[2],e[0]*d[1]-e[1]*d[0]]};a.M44={};a.M44.identity=function(){return c(4)};a.M44.translated=function(e){return b(e,c(4),4,3,0)};a.M44.scaled=function(e){return b(e,c(4),4,0,1)};a.M44.rotated=function(e,d){return a.M44.rotatedUnitSinCos(a.Vector.normalize(e),
Math.sin(d),Math.cos(d))};a.M44.rotatedUnitSinCos=function(e,d,g){var m=e[0],r=e[1];e=e[2];var y=1-g;return[y*m*m+g,y*m*r-d*e,y*m*e+d*r,0,y*m*r+d*e,y*r*r+g,y*r*e-d*m,0,y*m*e-d*r,y*r*e+d*m,y*e*e+g,0,0,0,0,1]};a.M44.lookat=function(e,d,g){d=a.Vector.normalize(a.Vector.sub(d,e));g=a.Vector.normalize(g);g=a.Vector.normalize(a.Vector.cross(d,g));var m=a.M44.identity();b(g,m,4,0,0);b(a.Vector.cross(g,d),m,4,1,0);b(a.Vector.mulScalar(d,-1),m,4,2,0);b(e,m,4,3,0);e=a.M44.invert(m);return null===e?a.M44.identity():
e};a.M44.perspective=function(e,d,g){var m=1/(d-e);g/=2;g=Math.cos(g)/Math.sin(g);return[g,0,0,0,0,g,0,0,0,0,(d+e)*m,2*d*e*m,0,0,-1,1]};a.M44.rc=function(e,d,g){return e[4*d+g]};a.M44.multiply=function(){return Lc(4,arguments)};a.M44.invert=function(e){var d=e[0],g=e[4],m=e[8],r=e[12],y=e[1],D=e[5],J=e[9],N=e[13],Q=e[2],U=e[6],u=e[10],I=e[14],R=e[3],aa=e[7],ka=e[11];e=e[15];var ua=d*D-g*y,va=d*J-m*y,la=d*N-r*y,F=g*J-m*D,k=g*N-r*D,p=m*N-r*J,z=Q*aa-U*R,B=Q*ka-u*R,C=Q*e-I*R,E=U*ka-u*aa,L=U*e-I*aa,Y=
u*e-I*ka,qa=ua*Y-va*L+la*E+F*C-k*B+p*z,fa=1/qa;if(0===qa||Infinity===fa)return null;ua*=fa;va*=fa;la*=fa;F*=fa;k*=fa;p*=fa;z*=fa;B*=fa;C*=fa;E*=fa;L*=fa;Y*=fa;d=[D*Y-J*L+N*E,J*C-y*Y-N*B,y*L-D*C+N*z,D*B-y*E-J*z,m*L-g*Y-r*E,d*Y-m*C+r*B,g*C-d*L-r*z,d*E-g*B+m*z,aa*p-ka*k+e*F,ka*la-R*p-e*va,R*k-aa*la+e*ua,aa*va-R*F-ka*ua,u*k-U*p-I*F,Q*p-u*la+I*va,U*la-Q*k-I*ua,Q*F-U*va+u*ua];return d.every(function(Ia){return!isNaN(Ia)&&Infinity!==Ia&&-Infinity!==Ia})?d:null};a.M44.transpose=function(e){return[e[0],e[4],
e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]]};a.M44.mustInvert=function(e){e=a.M44.invert(e);if(null===e)throw"Matrix not invertible";return e};a.M44.setupCamera=function(e,d,g){var m=a.M44.lookat(g.eye,g.coa,g.up);g=a.M44.perspective(g.near,g.far,g.angle);d=[(e[2]-e[0])/2,(e[3]-e[1])/2,d];e=a.M44.multiply(a.M44.translated([(e[0]+e[2])/2,(e[1]+e[3])/2,0]),a.M44.scaled(d));return a.M44.multiply(e,g,m,a.M44.mustInvert(e))};a.ColorMatrix={};a.ColorMatrix.identity=function(){var e=
new Float32Array(20);e[0]=1;e[6]=1;e[12]=1;e[18]=1;return e};a.ColorMatrix.scaled=function(e,d,g,m){var r=new Float32Array(20);r[0]=e;r[6]=d;r[12]=g;r[18]=m;return r};var Gd=[[6,7,11,12],[0,10,2,12],[0,1,5,6]];a.ColorMatrix.rotated=function(e,d,g){var m=a.ColorMatrix.identity();e=Gd[e];m[e[0]]=g;m[e[1]]=d;m[e[2]]=-d;m[e[3]]=g;return m};a.ColorMatrix.postTranslate=function(e,d,g,m,r){e[4]+=d;e[9]+=g;e[14]+=m;e[19]+=r;return e};a.ColorMatrix.concat=function(e,d){for(var g=new Float32Array(20),m=0,r=
0;20>r;r+=5){for(var y=0;4>y;y++)g[m++]=e[r]*d[y]+e[r+1]*d[y+5]+e[r+2]*d[y+10]+e[r+3]*d[y+15];g[m++]=e[r]*d[4]+e[r+1]*d[9]+e[r+2]*d[14]+e[r+3]*d[19]+e[r+4]}return g};(function(e){e.Vd=e.Vd||[];e.Vd.push(function(){function d(u){if(!u||!u.length)return[];for(var I=[],R=0;R<u.length;R+=5){var aa=e.LTRBRect(u[R],u[R+1],u[R+2],u[R+3]);aa.direction=0===u[R+4]?e.TextDirection.RTL:e.TextDirection.LTR;I.push(aa)}e._free(u.byteOffset);return I}function g(u){u=u||{};void 0===u.weight&&(u.weight=e.FontWeight.Normal);
u.width=u.width||e.FontWidth.Normal;u.slant=u.slant||e.FontSlant.Upright;return u}function m(u){if(!u||!u.length)return T;for(var I=[],R=0;R<u.length;R++){var aa=r(u[R]);I.push(aa)}return w(I,"HEAPU32")}function r(u){if(J[u])return J[u];var I=oa(u)+1,R=e._malloc(I);ra(u,H,R,I);return J[u]=R}function y(u){u._colorPtr=M(u.color);u._foregroundColorPtr=T;u._backgroundColorPtr=T;u._decorationColorPtr=T;u.foregroundColor&&(u._foregroundColorPtr=M(u.foregroundColor,N));u.backgroundColor&&(u._backgroundColorPtr=
M(u.backgroundColor,Q));u.decorationColor&&(u._decorationColorPtr=M(u.decorationColor,U));Array.isArray(u.fontFamilies)&&u.fontFamilies.length?(u._fontFamiliesPtr=m(u.fontFamilies),u._fontFamiliesLen=u.fontFamilies.length):(u._fontFamiliesPtr=T,u._fontFamiliesLen=0);if(u.locale){var I=u.locale;u._localePtr=r(I);u._localeLen=oa(I)+1}else u._localePtr=T,u._localeLen=0;if(Array.isArray(u.shadows)&&u.shadows.length){I=u.shadows;var R=I.map(function(F){return F.color||e.BLACK}),aa=I.map(function(F){return F.blurRadius||
0});u._shadowLen=I.length;for(var ka=e._malloc(8*I.length),ua=ka/4,va=0;va<I.length;va++){var la=I[va].offset||[0,0];e.HEAPF32[ua]=la[0];e.HEAPF32[ua+1]=la[1];ua+=2}u._shadowColorsPtr=G(R).ce;u._shadowOffsetsPtr=ka;u._shadowBlurRadiiPtr=w(aa,"HEAPF32")}else u._shadowLen=0,u._shadowColorsPtr=T,u._shadowOffsetsPtr=T,u._shadowBlurRadiiPtr=T;Array.isArray(u.fontFeatures)&&u.fontFeatures.length?(I=u.fontFeatures,R=I.map(function(F){return F.name}),aa=I.map(function(F){return F.value}),u._fontFeatureLen=
I.length,u._fontFeatureNamesPtr=m(R),u._fontFeatureValuesPtr=w(aa,"HEAPU32")):(u._fontFeatureLen=0,u._fontFeatureNamesPtr=T,u._fontFeatureValuesPtr=T)}function D(u){e._free(u._fontFamiliesPtr);e._free(u._shadowColorsPtr);e._free(u._shadowOffsetsPtr);e._free(u._shadowBlurRadiiPtr);e._free(u._fontFeatureNamesPtr);e._free(u._fontFeatureValuesPtr)}e.Paragraph.prototype.getRectsForRange=function(u,I,R,aa){u=this._getRectsForRange(u,I,R,aa);return d(u)};e.Paragraph.prototype.getRectsForPlaceholders=function(){var u=
this._getRectsForPlaceholders();return d(u)};e.TypefaceFontProvider.prototype.registerFont=function(u,I){u=e.Typeface.MakeFreeTypeFaceFromData(u);if(!u)return null;I=r(I);this._registerFont(u,I)};e.ParagraphStyle=function(u){u.disableHinting=u.disableHinting||!1;if(u.ellipsis){var I=u.ellipsis;u._ellipsisPtr=r(I);u._ellipsisLen=oa(I)+1}else u._ellipsisPtr=T,u._ellipsisLen=0;u.heightMultiplier=u.heightMultiplier||0;u.maxLines=u.maxLines||0;I=(I=u.strutStyle)||{};I.strutEnabled=I.strutEnabled||!1;I.strutEnabled&&
Array.isArray(I.fontFamilies)&&I.fontFamilies.length?(I._fontFamiliesPtr=m(I.fontFamilies),I._fontFamiliesLen=I.fontFamilies.length):(I._fontFamiliesPtr=T,I._fontFamiliesLen=0);I.fontStyle=g(I.fontStyle);I.fontSize=I.fontSize||0;I.heightMultiplier=I.heightMultiplier||0;I.halfLeading=I.halfLeading||!1;I.leading=I.leading||0;I.forceStrutHeight=I.forceStrutHeight||!1;u.strutStyle=I;u.textAlign=u.textAlign||e.TextAlign.Start;u.textDirection=u.textDirection||e.TextDirection.LTR;u.textHeightBehavior=u.textHeightBehavior||
e.TextHeightBehavior.All;u.textStyle=e.TextStyle(u.textStyle);return u};e.TextStyle=function(u){u.color||(u.color=e.BLACK);u.decoration=u.decoration||0;u.decorationThickness=u.decorationThickness||0;u.decorationStyle=u.decorationStyle||e.DecorationStyle.Solid;u.textBaseline=u.textBaseline||e.TextBaseline.Alphabetic;u.fontSize=u.fontSize||0;u.letterSpacing=u.letterSpacing||0;u.wordSpacing=u.wordSpacing||0;u.heightMultiplier=u.heightMultiplier||0;u.halfLeading=u.halfLeading||!1;u.fontStyle=g(u.fontStyle);
return u};var J={},N=e._malloc(16),Q=e._malloc(16),U=e._malloc(16);e.ParagraphBuilder.Make=function(u,I){y(u.textStyle);I=e.ParagraphBuilder._Make(u,I);D(u.textStyle);return I};e.ParagraphBuilder.MakeFromFontProvider=function(u,I){y(u.textStyle);I=e.ParagraphBuilder._MakeFromFontProvider(u,I);D(u.textStyle);return I};e.ParagraphBuilder.ShapeText=function(u,I,R){let aa=0;for(const ka of I)aa+=ka.length;if(aa!==u.length)throw"Accumulated block lengths must equal text.length";return e.ParagraphBuilder._ShapeText(u,
I,R)};e.ParagraphBuilder.prototype.pushStyle=function(u){y(u);this._pushStyle(u);D(u)};e.ParagraphBuilder.prototype.pushPaintStyle=function(u,I,R){y(u);this._pushPaintStyle(u,I,R);D(u)};e.ParagraphBuilder.prototype.addPlaceholder=function(u,I,R,aa,ka){R=R||e.PlaceholderAlignment.Baseline;aa=aa||e.TextBaseline.Alphabetic;this._addPlaceholder(u||0,I||0,R,aa,ka||0)}})})(t);a.Vd=a.Vd||[];a.Vd.push(function(){a.Path.prototype.op=function(e,d){return this._op(e,d)?this:null};a.Path.prototype.simplify=function(){return this._simplify()?
this:null}});a.Vd=a.Vd||[];a.Vd.push(function(){a.Canvas.prototype.drawText=function(e,d,g,m,r){var y=oa(e),D=a._malloc(y+1);ra(e,H,D,y+1);this._drawSimpleText(D,y,d,g,r,m);a._free(D)};a.Font.prototype.getGlyphBounds=function(e,d,g){var m=w(e,"HEAPU16"),r=a._malloc(16*e.length);this._getGlyphWidthBounds(m,e.length,T,r,d||null);d=new Float32Array(a.HEAPU8.buffer,r,4*e.length);x(m,e);if(g)return g.set(d),a._free(r),g;e=Float32Array.from(d);a._free(r);return e};a.Font.prototype.getGlyphIDs=function(e,
d,g){d||(d=e.length);var m=oa(e)+1,r=a._malloc(m);ra(e,H,r,m);e=a._malloc(2*d);d=this._getGlyphIDs(r,m-1,d,e);a._free(r);if(0>d)return a._free(e),null;r=new Uint16Array(a.HEAPU8.buffer,e,d);if(g)return g.set(r),a._free(e),g;g=Uint16Array.from(r);a._free(e);return g};a.Font.prototype.getGlyphIntercepts=function(e,d,g,m){var r=w(e,"HEAPU16"),y=w(d,"HEAPF32");return this._getGlyphIntercepts(r,e.length,!(e&&e._ck),y,d.length,!(d&&d._ck),g,m)};a.Font.prototype.getGlyphWidths=function(e,d,g){var m=w(e,
"HEAPU16"),r=a._malloc(4*e.length);this._getGlyphWidthBounds(m,e.length,r,T,d||null);d=new Float32Array(a.HEAPU8.buffer,r,e.length);x(m,e);if(g)return g.set(d),a._free(r),g;e=Float32Array.from(d);a._free(r);return e};a.FontMgr.FromData=function(){if(!arguments.length)return null;var e=arguments;1===e.length&&Array.isArray(e[0])&&(e=arguments[0]);if(!e.length)return null;for(var d=[],g=[],m=0;m<e.length;m++){var r=new Uint8Array(e[m]),y=w(r,"HEAPU8");d.push(y);g.push(r.byteLength)}d=w(d,"HEAPU32");
g=w(g,"HEAPU32");e=a.FontMgr._fromData(d,g,e.length);a._free(d);a._free(g);return e};a.Typeface.MakeFreeTypeFaceFromData=function(e){e=new Uint8Array(e);var d=w(e,"HEAPU8");return(e=a.Typeface._MakeFreeTypeFaceFromData(d,e.byteLength))?e:null};a.Typeface.prototype.getGlyphIDs=function(e,d,g){d||(d=e.length);var m=oa(e)+1,r=a._malloc(m);ra(e,H,r,m);e=a._malloc(2*d);d=this._getGlyphIDs(r,m-1,d,e);a._free(r);if(0>d)return a._free(e),null;r=new Uint16Array(a.HEAPU8.buffer,e,d);if(g)return g.set(r),a._free(e),
g;g=Uint16Array.from(r);a._free(e);return g};a.TextBlob.MakeOnPath=function(e,d,g,m){if(e&&e.length&&d&&d.countPoints()){if(1===d.countPoints())return this.MakeFromText(e,g);m||(m=0);var r=g.getGlyphIDs(e);r=g.getGlyphWidths(r);var y=[];d=new a.ContourMeasureIter(d,!1,1);for(var D=d.next(),J=new Float32Array(4),N=0;N<e.length&&D;N++){var Q=r[N];m+=Q/2;if(m>D.length()){D.delete();D=d.next();if(!D){e=e.substring(0,N);break}m=Q/2}D.getPosTan(m,J);var U=J[2],u=J[3];y.push(U,u,J[0]-Q/2*U,J[1]-Q/2*u);m+=
Q/2}e=this.MakeFromRSXform(e,y,g);D&&D.delete();d.delete();return e}};a.TextBlob.MakeFromRSXform=function(e,d,g){var m=oa(e)+1,r=a._malloc(m);ra(e,H,r,m);e=w(d,"HEAPF32");g=a.TextBlob._MakeFromRSXform(r,m-1,e,g);a._free(r);return g?g:null};a.TextBlob.MakeFromRSXformGlyphs=function(e,d,g){var m=w(e,"HEAPU16");d=w(d,"HEAPF32");g=a.TextBlob._MakeFromRSXformGlyphs(m,2*e.length,d,g);x(m,e);return g?g:null};a.TextBlob.MakeFromGlyphs=function(e,d){var g=w(e,"HEAPU16");d=a.TextBlob._MakeFromGlyphs(g,2*e.length,
d);x(g,e);return d?d:null};a.TextBlob.MakeFromText=function(e,d){var g=oa(e)+1,m=a._malloc(g);ra(e,H,m,g);e=a.TextBlob._MakeFromText(m,g-1,d);a._free(m);return e?e:null};a.MallocGlyphIDs=function(e){return a.Malloc(Uint16Array,e)}});a.Vd=a.Vd||[];a.Vd.push(function(){a.MakePicture=function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);a.HEAPU8.set(e,d);return(e=a._MakePicture(d,e.byteLength))?e:null}});(function(){function e(F){for(var k=0;k<F.length;k++)if(void 0!==F[k]&&!Number.isFinite(F[k]))return!1;
return!0}function d(F){var k=a.getColorComponents(F);F=k[0];var p=k[1],z=k[2];k=k[3];if(1===k)return F=F.toString(16).toLowerCase(),p=p.toString(16).toLowerCase(),z=z.toString(16).toLowerCase(),F=1===F.length?"0"+F:F,p=1===p.length?"0"+p:p,z=1===z.length?"0"+z:z,"#"+F+p+z;k=0===k||1===k?k:k.toFixed(8);return"rgba("+F+", "+p+", "+z+", "+k+")"}function g(F){return a.parseColorString(F,ua)}function m(F){F=va.exec(F);if(!F)return null;var k=parseFloat(F[4]),p=16;switch(F[5]){case "em":case "rem":p=16*
k;break;case "pt":p=4*k/3;break;case "px":p=k;break;case "pc":p=16*k;break;case "in":p=96*k;break;case "cm":p=96*k/2.54;break;case "mm":p=96/25.4*k;break;case "q":p=96/25.4/4*k;break;case "%":p=16/75*k}return{style:F[1],variant:F[2],weight:F[3],sizePx:p,family:F[6].trim()}}function r(F){this.Nd=F;this.Qd=new a.Paint;this.Qd.setAntiAlias(!0);this.Qd.setStrokeMiter(10);this.Qd.setStrokeCap(a.StrokeCap.Butt);this.Qd.setStrokeJoin(a.StrokeJoin.Miter);this.Pe="10px monospace";this.re=new a.Font(null,10);
this.re.setSubpixel(!0);this.be=this.he=a.BLACK;this.ue=0;this.Ie=a.TRANSPARENT;this.we=this.ve=0;this.Je=this.je=1;this.He=0;this.te=[];this.Pd=a.BlendMode.SrcOver;this.Qd.setStrokeWidth(this.Je);this.Qd.setBlendMode(this.Pd);this.Td=new a.Path;this.Ud=a.Matrix.identity();this.kf=[];this.Ae=[];this.me=function(){this.Td.delete();this.Qd.delete();this.re.delete();this.Ae.forEach(function(k){k.me()})};Object.defineProperty(this,"currentTransform",{enumerable:!0,get:function(){return{a:this.Ud[0],c:this.Ud[1],
e:this.Ud[2],b:this.Ud[3],d:this.Ud[4],f:this.Ud[5]}},set:function(k){k.a&&this.setTransform(k.a,k.b,k.c,k.d,k.e,k.f)}});Object.defineProperty(this,"fillStyle",{enumerable:!0,get:function(){return f(this.be)?d(this.be):this.be},set:function(k){"string"===typeof k?this.be=g(k):k.se&&(this.be=k)}});Object.defineProperty(this,"font",{enumerable:!0,get:function(){return this.Pe},set:function(k){var p=m(k),z=p.family;p.typeface=la[z]?la[z][(p.style||"normal")+"|"+(p.variant||"normal")+"|"+(p.weight||"normal")]||
la[z]["*"]:null;p&&(this.re.setSize(p.sizePx),this.re.setTypeface(p.typeface),this.Pe=k)}});Object.defineProperty(this,"globalAlpha",{enumerable:!0,get:function(){return this.je},set:function(k){!isFinite(k)||0>k||1<k||(this.je=k)}});Object.defineProperty(this,"globalCompositeOperation",{enumerable:!0,get:function(){switch(this.Pd){case a.BlendMode.SrcOver:return"source-over";case a.BlendMode.DstOver:return"destination-over";case a.BlendMode.Src:return"copy";case a.BlendMode.Dst:return"destination";
case a.BlendMode.Clear:return"clear";case a.BlendMode.SrcIn:return"source-in";case a.BlendMode.DstIn:return"destination-in";case a.BlendMode.SrcOut:return"source-out";case a.BlendMode.DstOut:return"destination-out";case a.BlendMode.SrcATop:return"source-atop";case a.BlendMode.DstATop:return"destination-atop";case a.BlendMode.Xor:return"xor";case a.BlendMode.Plus:return"lighter";case a.BlendMode.Multiply:return"multiply";case a.BlendMode.Screen:return"screen";case a.BlendMode.Overlay:return"overlay";
case a.BlendMode.Darken:return"darken";case a.BlendMode.Lighten:return"lighten";case a.BlendMode.ColorDodge:return"color-dodge";case a.BlendMode.ColorBurn:return"color-burn";case a.BlendMode.HardLight:return"hard-light";case a.BlendMode.SoftLight:return"soft-light";case a.BlendMode.Difference:return"difference";case a.BlendMode.Exclusion:return"exclusion";case a.BlendMode.Hue:return"hue";case a.BlendMode.Saturation:return"saturation";case a.BlendMode.Color:return"color";case a.BlendMode.Luminosity:return"luminosity"}},
set:function(k){switch(k){case "source-over":this.Pd=a.BlendMode.SrcOver;break;case "destination-over":this.Pd=a.BlendMode.DstOver;break;case "copy":this.Pd=a.BlendMode.Src;break;case "destination":this.Pd=a.BlendMode.Dst;break;case "clear":this.Pd=a.BlendMode.Clear;break;case "source-in":this.Pd=a.BlendMode.SrcIn;break;case "destination-in":this.Pd=a.BlendMode.DstIn;break;case "source-out":this.Pd=a.BlendMode.SrcOut;break;case "destination-out":this.Pd=a.BlendMode.DstOut;break;case "source-atop":this.Pd=
a.BlendMode.SrcATop;break;case "destination-atop":this.Pd=a.BlendMode.DstATop;break;case "xor":this.Pd=a.BlendMode.Xor;break;case "lighter":this.Pd=a.BlendMode.Plus;break;case "plus-lighter":this.Pd=a.BlendMode.Plus;break;case "plus-darker":throw"plus-darker is not supported";case "multiply":this.Pd=a.BlendMode.Multiply;break;case "screen":this.Pd=a.BlendMode.Screen;break;case "overlay":this.Pd=a.BlendMode.Overlay;break;case "darken":this.Pd=a.BlendMode.Darken;break;case "lighten":this.Pd=a.BlendMode.Lighten;
break;case "color-dodge":this.Pd=a.BlendMode.ColorDodge;break;case "color-burn":this.Pd=a.BlendMode.ColorBurn;break;case "hard-light":this.Pd=a.BlendMode.HardLight;break;case "soft-light":this.Pd=a.BlendMode.SoftLight;break;case "difference":this.Pd=a.BlendMode.Difference;break;case "exclusion":this.Pd=a.BlendMode.Exclusion;break;case "hue":this.Pd=a.BlendMode.Hue;break;case "saturation":this.Pd=a.BlendMode.Saturation;break;case "color":this.Pd=a.BlendMode.Color;break;case "luminosity":this.Pd=a.BlendMode.Luminosity;
break;default:return}this.Qd.setBlendMode(this.Pd)}});Object.defineProperty(this,"imageSmoothingEnabled",{enumerable:!0,get:function(){return!0},set:function(){}});Object.defineProperty(this,"imageSmoothingQuality",{enumerable:!0,get:function(){return"high"},set:function(){}});Object.defineProperty(this,"lineCap",{enumerable:!0,get:function(){switch(this.Qd.getStrokeCap()){case a.StrokeCap.Butt:return"butt";case a.StrokeCap.Round:return"round";case a.StrokeCap.Square:return"square"}},set:function(k){switch(k){case "butt":this.Qd.setStrokeCap(a.StrokeCap.Butt);
break;case "round":this.Qd.setStrokeCap(a.StrokeCap.Round);break;case "square":this.Qd.setStrokeCap(a.StrokeCap.Square)}}});Object.defineProperty(this,"lineDashOffset",{enumerable:!0,get:function(){return this.He},set:function(k){isFinite(k)&&(this.He=k)}});Object.defineProperty(this,"lineJoin",{enumerable:!0,get:function(){switch(this.Qd.getStrokeJoin()){case a.StrokeJoin.Miter:return"miter";case a.StrokeJoin.Round:return"round";case a.StrokeJoin.Bevel:return"bevel"}},set:function(k){switch(k){case "miter":this.Qd.setStrokeJoin(a.StrokeJoin.Miter);
break;case "round":this.Qd.setStrokeJoin(a.StrokeJoin.Round);break;case "bevel":this.Qd.setStrokeJoin(a.StrokeJoin.Bevel)}}});Object.defineProperty(this,"lineWidth",{enumerable:!0,get:function(){return this.Qd.getStrokeWidth()},set:function(k){0>=k||!k||(this.Je=k,this.Qd.setStrokeWidth(k))}});Object.defineProperty(this,"miterLimit",{enumerable:!0,get:function(){return this.Qd.getStrokeMiter()},set:function(k){0>=k||!k||this.Qd.setStrokeMiter(k)}});Object.defineProperty(this,"shadowBlur",{enumerable:!0,
get:function(){return this.ue},set:function(k){0>k||!isFinite(k)||(this.ue=k)}});Object.defineProperty(this,"shadowColor",{enumerable:!0,get:function(){return d(this.Ie)},set:function(k){this.Ie=g(k)}});Object.defineProperty(this,"shadowOffsetX",{enumerable:!0,get:function(){return this.ve},set:function(k){isFinite(k)&&(this.ve=k)}});Object.defineProperty(this,"shadowOffsetY",{enumerable:!0,get:function(){return this.we},set:function(k){isFinite(k)&&(this.we=k)}});Object.defineProperty(this,"strokeStyle",
{enumerable:!0,get:function(){return d(this.he)},set:function(k){"string"===typeof k?this.he=g(k):k.se&&(this.he=k)}});this.arc=function(k,p,z,B,C,E){u(this.Td,k,p,z,z,0,B,C,E)};this.arcTo=function(k,p,z,B,C){N(this.Td,k,p,z,B,C)};this.beginPath=function(){this.Td.delete();this.Td=new a.Path};this.bezierCurveTo=function(k,p,z,B,C,E){var L=this.Td;e([k,p,z,B,C,E])&&(L.isEmpty()&&L.moveTo(k,p),L.cubicTo(k,p,z,B,C,E))};this.clearRect=function(k,p,z,B){this.Qd.setStyle(a.PaintStyle.Fill);this.Qd.setBlendMode(a.BlendMode.Clear);
this.Nd.drawRect(a.XYWHRect(k,p,z,B),this.Qd);this.Qd.setBlendMode(this.Pd)};this.clip=function(k,p){"string"===typeof k?(p=k,k=this.Td):k&&k.$e&&(k=k.Wd);k||(k=this.Td);k=k.copy();p&&"evenodd"===p.toLowerCase()?k.setFillType(a.FillType.EvenOdd):k.setFillType(a.FillType.Winding);this.Nd.clipPath(k,a.ClipOp.Intersect,!0);k.delete()};this.closePath=function(){Q(this.Td)};this.createImageData=function(){if(1===arguments.length){var k=arguments[0];return new D(new Uint8ClampedArray(4*k.width*k.height),
k.width,k.height)}if(2===arguments.length){k=arguments[0];var p=arguments[1];return new D(new Uint8ClampedArray(4*k*p),k,p)}throw"createImageData expects 1 or 2 arguments, got "+arguments.length;};this.createLinearGradient=function(k,p,z,B){if(e(arguments)){var C=new J(k,p,z,B);this.Ae.push(C);return C}};this.createPattern=function(k,p){k=new aa(k,p);this.Ae.push(k);return k};this.createRadialGradient=function(k,p,z,B,C,E){if(e(arguments)){var L=new ka(k,p,z,B,C,E);this.Ae.push(L);return L}};this.drawImage=
function(k){var p=this.Oe();if(3===arguments.length||5===arguments.length)var z=a.XYWHRect(arguments[1],arguments[2],arguments[3]||k.width(),arguments[4]||k.height()),B=a.XYWHRect(0,0,k.width(),k.height());else if(9===arguments.length)z=a.XYWHRect(arguments[5],arguments[6],arguments[7],arguments[8]),B=a.XYWHRect(arguments[1],arguments[2],arguments[3],arguments[4]);else throw"invalid number of args for drawImage, need 3, 5, or 9; got "+arguments.length;this.Nd.drawImageRect(k,B,z,p,!1);p.dispose()};
this.ellipse=function(k,p,z,B,C,E,L,Y){u(this.Td,k,p,z,B,C,E,L,Y)};this.Oe=function(){var k=this.Qd.copy();k.setStyle(a.PaintStyle.Fill);if(f(this.be)){var p=a.multiplyByAlpha(this.be,this.je);k.setColor(p)}else p=this.be.se(this.Ud),k.setColor(a.Color(0,0,0,this.je)),k.setShader(p);k.dispose=function(){this.delete()};return k};this.fill=function(k,p){"string"===typeof k?(p=k,k=this.Td):k&&k.$e&&(k=k.Wd);if("evenodd"===p)this.Td.setFillType(a.FillType.EvenOdd);else{if("nonzero"!==p&&p)throw"invalid fill rule";
this.Td.setFillType(a.FillType.Winding)}k||(k=this.Td);p=this.Oe();var z=this.xe(p);z&&(this.Nd.save(),this.pe(),this.Nd.drawPath(k,z),this.Nd.restore(),z.dispose());this.Nd.drawPath(k,p);p.dispose()};this.fillRect=function(k,p,z,B){var C=this.Oe(),E=this.xe(C);E&&(this.Nd.save(),this.pe(),this.Nd.drawRect(a.XYWHRect(k,p,z,B),E),this.Nd.restore(),E.dispose());this.Nd.drawRect(a.XYWHRect(k,p,z,B),C);C.dispose()};this.fillText=function(k,p,z){var B=this.Oe();k=a.TextBlob.MakeFromText(k,this.re);var C=
this.xe(B);C&&(this.Nd.save(),this.pe(),this.Nd.drawTextBlob(k,p,z,C),this.Nd.restore(),C.dispose());this.Nd.drawTextBlob(k,p,z,B);k.delete();B.dispose()};this.getImageData=function(k,p,z,B){return(k=this.Nd.readPixels(k,p,{width:z,height:B,colorType:a.ColorType.RGBA_8888,alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB}))?new D(new Uint8ClampedArray(k.buffer),z,B):null};this.getLineDash=function(){return this.te.slice()};this.lf=function(k){var p=a.Matrix.invert(this.Ud);a.Matrix.mapPoints(p,
k);return k};this.isPointInPath=function(k,p,z){var B=arguments;if(3===B.length)var C=this.Td;else if(4===B.length)C=B[0],k=B[1],p=B[2],z=B[3];else throw"invalid arg count, need 3 or 4, got "+B.length;if(!isFinite(k)||!isFinite(p))return!1;z=z||"nonzero";if("nonzero"!==z&&"evenodd"!==z)return!1;B=this.lf([k,p]);k=B[0];p=B[1];C.setFillType("nonzero"===z?a.FillType.Winding:a.FillType.EvenOdd);return C.contains(k,p)};this.isPointInStroke=function(k,p){var z=arguments;if(2===z.length)var B=this.Td;else if(3===
z.length)B=z[0],k=z[1],p=z[2];else throw"invalid arg count, need 2 or 3, got "+z.length;if(!isFinite(k)||!isFinite(p))return!1;z=this.lf([k,p]);k=z[0];p=z[1];B=B.copy();B.setFillType(a.FillType.Winding);B.stroke({width:this.lineWidth,miter_limit:this.miterLimit,cap:this.Qd.getStrokeCap(),join:this.Qd.getStrokeJoin(),precision:.3});z=B.contains(k,p);B.delete();return z};this.lineTo=function(k,p){I(this.Td,k,p)};this.measureText=function(){throw Error("Clients wishing to properly measure text should use the Paragraph API");
};this.moveTo=function(k,p){var z=this.Td;e([k,p])&&z.moveTo(k,p)};this.putImageData=function(k,p,z,B,C,E,L){if(e([p,z,B,C,E,L]))if(void 0===B)this.Nd.writePixels(k.data,k.width,k.height,p,z);else if(B=B||0,C=C||0,E=E||k.width,L=L||k.height,0>E&&(B+=E,E=Math.abs(E)),0>L&&(C+=L,L=Math.abs(L)),0>B&&(E+=B,B=0),0>C&&(L+=C,C=0),!(0>=E||0>=L)){k=a.MakeImage({width:k.width,height:k.height,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},k.data,4*k.width);var Y=
a.XYWHRect(B,C,E,L);p=a.XYWHRect(p+B,z+C,E,L);z=a.Matrix.invert(this.Ud);this.Nd.save();this.Nd.concat(z);this.Nd.drawImageRect(k,Y,p,null,!1);this.Nd.restore();k.delete()}};this.quadraticCurveTo=function(k,p,z,B){var C=this.Td;e([k,p,z,B])&&(C.isEmpty()&&C.moveTo(k,p),C.quadTo(k,p,z,B))};this.rect=function(k,p,z,B){var C=this.Td;k=a.XYWHRect(k,p,z,B);e(k)&&C.addRect(k)};this.resetTransform=function(){this.Td.transform(this.Ud);var k=a.Matrix.invert(this.Ud);this.Nd.concat(k);this.Ud=this.Nd.getTotalMatrix()};
this.restore=function(){var k=this.kf.pop();if(k){var p=a.Matrix.multiply(this.Ud,a.Matrix.invert(k.Cf));this.Td.transform(p);this.Qd.delete();this.Qd=k.$f;this.te=k.Wf;this.Je=k.rg;this.he=k.qg;this.be=k.fs;this.ve=k.og;this.we=k.pg;this.ue=k.dg;this.Ie=k.ng;this.je=k.Jf;this.Pd=k.Kf;this.He=k.Xf;this.Pe=k.If;this.Nd.restore();this.Ud=this.Nd.getTotalMatrix()}};this.rotate=function(k){if(isFinite(k)){var p=a.Matrix.rotated(-k);this.Td.transform(p);this.Nd.rotate(k/Math.PI*180,0,0);this.Ud=this.Nd.getTotalMatrix()}};
this.save=function(){if(this.be.qe){var k=this.be.qe();this.Ae.push(k)}else k=this.be;if(this.he.qe){var p=this.he.qe();this.Ae.push(p)}else p=this.he;this.kf.push({Cf:this.Ud.slice(),Wf:this.te.slice(),rg:this.Je,qg:p,fs:k,og:this.ve,pg:this.we,dg:this.ue,ng:this.Ie,Jf:this.je,Xf:this.He,Kf:this.Pd,$f:this.Qd.copy(),If:this.Pe});this.Nd.save()};this.scale=function(k,p){if(e(arguments)){var z=a.Matrix.scaled(1/k,1/p);this.Td.transform(z);this.Nd.scale(k,p);this.Ud=this.Nd.getTotalMatrix()}};this.setLineDash=
function(k){for(var p=0;p<k.length;p++)if(!isFinite(k[p])||0>k[p])return;1===k.length%2&&Array.prototype.push.apply(k,k);this.te=k};this.setTransform=function(k,p,z,B,C,E){e(arguments)&&(this.resetTransform(),this.transform(k,p,z,B,C,E))};this.pe=function(){var k=a.Matrix.invert(this.Ud);this.Nd.concat(k);this.Nd.concat(a.Matrix.translated(this.ve,this.we));this.Nd.concat(this.Ud)};this.xe=function(k){var p=a.multiplyByAlpha(this.Ie,this.je);if(!a.getColorComponents(p)[3]||!(this.ue||this.we||this.ve))return null;
k=k.copy();k.setColor(p);var z=a.MaskFilter.MakeBlur(a.BlurStyle.Normal,this.ue/2,!1);k.setMaskFilter(z);k.dispose=function(){z.delete();this.delete()};return k};this.bf=function(){var k=this.Qd.copy();k.setStyle(a.PaintStyle.Stroke);if(f(this.he)){var p=a.multiplyByAlpha(this.he,this.je);k.setColor(p)}else p=this.he.se(this.Ud),k.setColor(a.Color(0,0,0,this.je)),k.setShader(p);k.setStrokeWidth(this.Je);if(this.te.length){var z=a.PathEffect.MakeDash(this.te,this.He);k.setPathEffect(z)}k.dispose=function(){z&&
z.delete();this.delete()};return k};this.stroke=function(k){k=k?k.Wd:this.Td;var p=this.bf(),z=this.xe(p);z&&(this.Nd.save(),this.pe(),this.Nd.drawPath(k,z),this.Nd.restore(),z.dispose());this.Nd.drawPath(k,p);p.dispose()};this.strokeRect=function(k,p,z,B){var C=this.bf(),E=this.xe(C);E&&(this.Nd.save(),this.pe(),this.Nd.drawRect(a.XYWHRect(k,p,z,B),E),this.Nd.restore(),E.dispose());this.Nd.drawRect(a.XYWHRect(k,p,z,B),C);C.dispose()};this.strokeText=function(k,p,z){var B=this.bf();k=a.TextBlob.MakeFromText(k,
this.re);var C=this.xe(B);C&&(this.Nd.save(),this.pe(),this.Nd.drawTextBlob(k,p,z,C),this.Nd.restore(),C.dispose());this.Nd.drawTextBlob(k,p,z,B);k.delete();B.dispose()};this.translate=function(k,p){if(e(arguments)){var z=a.Matrix.translated(-k,-p);this.Td.transform(z);this.Nd.translate(k,p);this.Ud=this.Nd.getTotalMatrix()}};this.transform=function(k,p,z,B,C,E){k=[k,z,C,p,B,E,0,0,1];p=a.Matrix.invert(k);this.Td.transform(p);this.Nd.concat(k);this.Ud=this.Nd.getTotalMatrix()};this.addHitRegion=function(){};
this.clearHitRegions=function(){};this.drawFocusIfNeeded=function(){};this.removeHitRegion=function(){};this.scrollPathIntoView=function(){};Object.defineProperty(this,"canvas",{value:null,writable:!1})}function y(F){this.cf=F;this.Md=new r(F.getCanvas());this.Qe=[];this.decodeImage=function(k){k=a.MakeImageFromEncoded(k);if(!k)throw"Invalid input";this.Qe.push(k);return k};this.loadFont=function(k,p){k=a.Typeface.MakeFreeTypeFaceFromData(k);if(!k)return null;this.Qe.push(k);var z=(p.style||"normal")+
"|"+(p.variant||"normal")+"|"+(p.weight||"normal");p=p.family;la[p]||(la[p]={"*":k});la[p][z]=k};this.makePath2D=function(k){k=new R(k);this.Qe.push(k.Wd);return k};this.getContext=function(k){return"2d"===k?this.Md:null};this.toDataURL=function(k,p){this.cf.flush();var z=this.cf.makeImageSnapshot();if(z){k=k||"image/png";var B=a.ImageFormat.PNG;"image/jpeg"===k&&(B=a.ImageFormat.JPEG);if(p=z.encodeToBytes(B,p||.92)){z.delete();k="data:"+k+";base64,";if("undefined"!==typeof Buffer)p=Buffer.from(p).toString("base64");
else{z=0;B=p.length;for(var C="",E;z<B;)E=p.slice(z,Math.min(z+32768,B)),C+=String.fromCharCode.apply(null,E),z+=32768;p=btoa(C)}return k+p}}};this.dispose=function(){this.Md.me();this.Qe.forEach(function(k){k.delete()});this.cf.dispose()}}function D(F,k,p){if(!k||0===p)throw"invalid dimensions, width and height must be non-zero";if(F.length%4)throw"arr must be a multiple of 4";p=p||F.length/(4*k);Object.defineProperty(this,"data",{value:F,writable:!1});Object.defineProperty(this,"height",{value:p,
writable:!1});Object.defineProperty(this,"width",{value:k,writable:!1})}function J(F,k,p,z){this.Yd=null;this.ee=[];this.$d=[];this.addColorStop=function(B,C){if(0>B||1<B||!isFinite(B))throw"offset must be between 0 and 1 inclusively";C=g(C);var E=this.$d.indexOf(B);if(-1!==E)this.ee[E]=C;else{for(E=0;E<this.$d.length&&!(this.$d[E]>B);E++);this.$d.splice(E,0,B);this.ee.splice(E,0,C)}};this.qe=function(){var B=new J(F,k,p,z);B.ee=this.ee.slice();B.$d=this.$d.slice();return B};this.me=function(){this.Yd&&
(this.Yd.delete(),this.Yd=null)};this.se=function(B){var C=[F,k,p,z];a.Matrix.mapPoints(B,C);B=C[0];var E=C[1],L=C[2];C=C[3];this.me();return this.Yd=a.Shader.MakeLinearGradient([B,E],[L,C],this.ee,this.$d,a.TileMode.Clamp)}}function N(F,k,p,z,B,C){if(e([k,p,z,B,C])){if(0>C)throw"radii cannot be negative";F.isEmpty()&&F.moveTo(k,p);F.arcToTangent(k,p,z,B,C)}}function Q(F){if(!F.isEmpty()){var k=F.getBounds();(k[3]-k[1]||k[2]-k[0])&&F.close()}}function U(F,k,p,z,B,C,E){E=(E-C)/Math.PI*180;C=C/Math.PI*
180;k=a.LTRBRect(k-z,p-B,k+z,p+B);1E-5>Math.abs(Math.abs(E)-360)?(p=E/2,F.arcToOval(k,C,p,!1),F.arcToOval(k,C+p,p,!1)):F.arcToOval(k,C,E,!1)}function u(F,k,p,z,B,C,E,L,Y){if(e([k,p,z,B,C,E,L])){if(0>z||0>B)throw"radii cannot be negative";var qa=2*Math.PI,fa=E%qa;0>fa&&(fa+=qa);var Ia=fa-E;E=fa;L+=Ia;!Y&&L-E>=qa?L=E+qa:Y&&E-L>=qa?L=E-qa:!Y&&E>L?L=E+(qa-(E-L)%qa):Y&&E<L&&(L=E-(qa-(L-E)%qa));C?(Y=a.Matrix.rotated(C,k,p),C=a.Matrix.rotated(-C,k,p),F.transform(C),U(F,k,p,z,B,E,L),F.transform(Y)):U(F,k,
p,z,B,E,L)}}function I(F,k,p){e([k,p])&&(F.isEmpty()&&F.moveTo(k,p),F.lineTo(k,p))}function R(F){this.Wd=null;this.Wd="string"===typeof F?a.Path.MakeFromSVGString(F):F&&F.$e?F.Wd.copy():new a.Path;this.$e=function(){return this.Wd};this.addPath=function(k,p){p||(p={a:1,c:0,e:0,b:0,d:1,f:0});this.Wd.addPath(k.Wd,[p.a,p.c,p.e,p.b,p.d,p.f])};this.arc=function(k,p,z,B,C,E){u(this.Wd,k,p,z,z,0,B,C,E)};this.arcTo=function(k,p,z,B,C){N(this.Wd,k,p,z,B,C)};this.bezierCurveTo=function(k,p,z,B,C,E){var L=this.Wd;
e([k,p,z,B,C,E])&&(L.isEmpty()&&L.moveTo(k,p),L.cubicTo(k,p,z,B,C,E))};this.closePath=function(){Q(this.Wd)};this.ellipse=function(k,p,z,B,C,E,L,Y){u(this.Wd,k,p,z,B,C,E,L,Y)};this.lineTo=function(k,p){I(this.Wd,k,p)};this.moveTo=function(k,p){var z=this.Wd;e([k,p])&&z.moveTo(k,p)};this.quadraticCurveTo=function(k,p,z,B){var C=this.Wd;e([k,p,z,B])&&(C.isEmpty()&&C.moveTo(k,p),C.quadTo(k,p,z,B))};this.rect=function(k,p,z,B){var C=this.Wd;k=a.XYWHRect(k,p,z,B);e(k)&&C.addRect(k)}}function aa(F,k){this.Yd=
null;this.xf=F;this._transform=a.Matrix.identity();""===k&&(k="repeat");switch(k){case "repeat-x":this.ye=a.TileMode.Repeat;this.ze=a.TileMode.Decal;break;case "repeat-y":this.ye=a.TileMode.Decal;this.ze=a.TileMode.Repeat;break;case "repeat":this.ze=this.ye=a.TileMode.Repeat;break;case "no-repeat":this.ze=this.ye=a.TileMode.Decal;break;default:throw"invalid repetition mode "+k;}this.setTransform=function(p){p=[p.a,p.c,p.e,p.b,p.d,p.f,0,0,1];e(p)&&(this._transform=p)};this.qe=function(){var p=new aa;
p.ye=this.ye;p.ze=this.ze;return p};this.me=function(){this.Yd&&(this.Yd.delete(),this.Yd=null)};this.se=function(){this.me();return this.Yd=this.xf.makeShaderCubic(this.ye,this.ze,1/3,1/3,this._transform)}}function ka(F,k,p,z,B,C){this.Yd=null;this.ee=[];this.$d=[];this.addColorStop=function(E,L){if(0>E||1<E||!isFinite(E))throw"offset must be between 0 and 1 inclusively";L=g(L);var Y=this.$d.indexOf(E);if(-1!==Y)this.ee[Y]=L;else{for(Y=0;Y<this.$d.length&&!(this.$d[Y]>E);Y++);this.$d.splice(Y,0,
E);this.ee.splice(Y,0,L)}};this.qe=function(){var E=new ka(F,k,p,z,B,C);E.ee=this.ee.slice();E.$d=this.$d.slice();return E};this.me=function(){this.Yd&&(this.Yd.delete(),this.Yd=null)};this.se=function(E){var L=[F,k,z,B];a.Matrix.mapPoints(E,L);var Y=L[0],qa=L[1],fa=L[2];L=L[3];var Ia=(Math.abs(E[0])+Math.abs(E[4]))/2;E=p*Ia;Ia*=C;this.me();return this.Yd=a.Shader.MakeTwoPointConicalGradient([Y,qa],E,[fa,L],Ia,this.ee,this.$d,a.TileMode.Clamp)}}a._testing={};var ua={aliceblue:Float32Array.of(.941,
.973,1,1),antiquewhite:Float32Array.of(.98,.922,.843,1),aqua:Float32Array.of(0,1,1,1),aquamarine:Float32Array.of(.498,1,.831,1),azure:Float32Array.of(.941,1,1,1),beige:Float32Array.of(.961,.961,.863,1),bisque:Float32Array.of(1,.894,.769,1),black:Float32Array.of(0,0,0,1),blanchedalmond:Float32Array.of(1,.922,.804,1),blue:Float32Array.of(0,0,1,1),blueviolet:Float32Array.of(.541,.169,.886,1),brown:Float32Array.of(.647,.165,.165,1),burlywood:Float32Array.of(.871,.722,.529,1),cadetblue:Float32Array.of(.373,
.62,.627,1),chartreuse:Float32Array.of(.498,1,0,1),chocolate:Float32Array.of(.824,.412,.118,1),coral:Float32Array.of(1,.498,.314,1),cornflowerblue:Float32Array.of(.392,.584,.929,1),cornsilk:Float32Array.of(1,.973,.863,1),crimson:Float32Array.of(.863,.078,.235,1),cyan:Float32Array.of(0,1,1,1),darkblue:Float32Array.of(0,0,.545,1),darkcyan:Float32Array.of(0,.545,.545,1),darkgoldenrod:Float32Array.of(.722,.525,.043,1),darkgray:Float32Array.of(.663,.663,.663,1),darkgreen:Float32Array.of(0,.392,0,1),darkgrey:Float32Array.of(.663,
.663,.663,1),darkkhaki:Float32Array.of(.741,.718,.42,1),darkmagenta:Float32Array.of(.545,0,.545,1),darkolivegreen:Float32Array.of(.333,.42,.184,1),darkorange:Float32Array.of(1,.549,0,1),darkorchid:Float32Array.of(.6,.196,.8,1),darkred:Float32Array.of(.545,0,0,1),darksalmon:Float32Array.of(.914,.588,.478,1),darkseagreen:Float32Array.of(.561,.737,.561,1),darkslateblue:Float32Array.of(.282,.239,.545,1),darkslategray:Float32Array.of(.184,.31,.31,1),darkslategrey:Float32Array.of(.184,.31,.31,1),darkturquoise:Float32Array.of(0,
.808,.82,1),darkviolet:Float32Array.of(.58,0,.827,1),deeppink:Float32Array.of(1,.078,.576,1),deepskyblue:Float32Array.of(0,.749,1,1),dimgray:Float32Array.of(.412,.412,.412,1),dimgrey:Float32Array.of(.412,.412,.412,1),dodgerblue:Float32Array.of(.118,.565,1,1),firebrick:Float32Array.of(.698,.133,.133,1),floralwhite:Float32Array.of(1,.98,.941,1),forestgreen:Float32Array.of(.133,.545,.133,1),fuchsia:Float32Array.of(1,0,1,1),gainsboro:Float32Array.of(.863,.863,.863,1),ghostwhite:Float32Array.of(.973,.973,
1,1),gold:Float32Array.of(1,.843,0,1),goldenrod:Float32Array.of(.855,.647,.125,1),gray:Float32Array.of(.502,.502,.502,1),green:Float32Array.of(0,.502,0,1),greenyellow:Float32Array.of(.678,1,.184,1),grey:Float32Array.of(.502,.502,.502,1),honeydew:Float32Array.of(.941,1,.941,1),hotpink:Float32Array.of(1,.412,.706,1),indianred:Float32Array.of(.804,.361,.361,1),indigo:Float32Array.of(.294,0,.51,1),ivory:Float32Array.of(1,1,.941,1),khaki:Float32Array.of(.941,.902,.549,1),lavender:Float32Array.of(.902,
.902,.98,1),lavenderblush:Float32Array.of(1,.941,.961,1),lawngreen:Float32Array.of(.486,.988,0,1),lemonchiffon:Float32Array.of(1,.98,.804,1),lightblue:Float32Array.of(.678,.847,.902,1),lightcoral:Float32Array.of(.941,.502,.502,1),lightcyan:Float32Array.of(.878,1,1,1),lightgoldenrodyellow:Float32Array.of(.98,.98,.824,1),lightgray:Float32Array.of(.827,.827,.827,1),lightgreen:Float32Array.of(.565,.933,.565,1),lightgrey:Float32Array.of(.827,.827,.827,1),lightpink:Float32Array.of(1,.714,.757,1),lightsalmon:Float32Array.of(1,
.627,.478,1),lightseagreen:Float32Array.of(.125,.698,.667,1),lightskyblue:Float32Array.of(.529,.808,.98,1),lightslategray:Float32Array.of(.467,.533,.6,1),lightslategrey:Float32Array.of(.467,.533,.6,1),lightsteelblue:Float32Array.of(.69,.769,.871,1),lightyellow:Float32Array.of(1,1,.878,1),lime:Float32Array.of(0,1,0,1),limegreen:Float32Array.of(.196,.804,.196,1),linen:Float32Array.of(.98,.941,.902,1),magenta:Float32Array.of(1,0,1,1),maroon:Float32Array.of(.502,0,0,1),mediumaquamarine:Float32Array.of(.4,
.804,.667,1),mediumblue:Float32Array.of(0,0,.804,1),mediumorchid:Float32Array.of(.729,.333,.827,1),mediumpurple:Float32Array.of(.576,.439,.859,1),mediumseagreen:Float32Array.of(.235,.702,.443,1),mediumslateblue:Float32Array.of(.482,.408,.933,1),mediumspringgreen:Float32Array.of(0,.98,.604,1),mediumturquoise:Float32Array.of(.282,.82,.8,1),mediumvioletred:Float32Array.of(.78,.082,.522,1),midnightblue:Float32Array.of(.098,.098,.439,1),mintcream:Float32Array.of(.961,1,.98,1),mistyrose:Float32Array.of(1,
.894,.882,1),moccasin:Float32Array.of(1,.894,.71,1),navajowhite:Float32Array.of(1,.871,.678,1),navy:Float32Array.of(0,0,.502,1),oldlace:Float32Array.of(.992,.961,.902,1),olive:Float32Array.of(.502,.502,0,1),olivedrab:Float32Array.of(.42,.557,.137,1),orange:Float32Array.of(1,.647,0,1),orangered:Float32Array.of(1,.271,0,1),orchid:Float32Array.of(.855,.439,.839,1),palegoldenrod:Float32Array.of(.933,.91,.667,1),palegreen:Float32Array.of(.596,.984,.596,1),paleturquoise:Float32Array.of(.686,.933,.933,1),
palevioletred:Float32Array.of(.859,.439,.576,1),papayawhip:Float32Array.of(1,.937,.835,1),peachpuff:Float32Array.of(1,.855,.725,1),peru:Float32Array.of(.804,.522,.247,1),pink:Float32Array.of(1,.753,.796,1),plum:Float32Array.of(.867,.627,.867,1),powderblue:Float32Array.of(.69,.878,.902,1),purple:Float32Array.of(.502,0,.502,1),rebeccapurple:Float32Array.of(.4,.2,.6,1),red:Float32Array.of(1,0,0,1),rosybrown:Float32Array.of(.737,.561,.561,1),royalblue:Float32Array.of(.255,.412,.882,1),saddlebrown:Float32Array.of(.545,
.271,.075,1),salmon:Float32Array.of(.98,.502,.447,1),sandybrown:Float32Array.of(.957,.643,.376,1),seagreen:Float32Array.of(.18,.545,.341,1),seashell:Float32Array.of(1,.961,.933,1),sienna:Float32Array.of(.627,.322,.176,1),silver:Float32Array.of(.753,.753,.753,1),skyblue:Float32Array.of(.529,.808,.922,1),slateblue:Float32Array.of(.416,.353,.804,1),slategray:Float32Array.of(.439,.502,.565,1),slategrey:Float32Array.of(.439,.502,.565,1),snow:Float32Array.of(1,.98,.98,1),springgreen:Float32Array.of(0,1,
.498,1),steelblue:Float32Array.of(.275,.51,.706,1),tan:Float32Array.of(.824,.706,.549,1),teal:Float32Array.of(0,.502,.502,1),thistle:Float32Array.of(.847,.749,.847,1),tomato:Float32Array.of(1,.388,.278,1),transparent:Float32Array.of(0,0,0,0),turquoise:Float32Array.of(.251,.878,.816,1),violet:Float32Array.of(.933,.51,.933,1),wheat:Float32Array.of(.961,.871,.702,1),white:Float32Array.of(1,1,1,1),whitesmoke:Float32Array.of(.961,.961,.961,1),yellow:Float32Array.of(1,1,0,1),yellowgreen:Float32Array.of(.604,
.804,.196,1)};a._testing.parseColor=g;a._testing.colorToString=d;var va=/(italic|oblique|normal|)\s*(small-caps|normal|)\s*(bold|bolder|lighter|[1-9]00|normal|)\s*([\d\.]+)(px|pt|pc|in|cm|mm|%|em|ex|ch|rem|q)(.+)/,la={"Noto Mono":{"*":null},monospace:{"*":null}};a._testing.parseFontString=m;a.MakeCanvas=function(F,k){return(F=a.MakeSurface(F,k))?new y(F):null};a.ImageData=function(){if(2===arguments.length){var F=arguments[0],k=arguments[1];return new D(new Uint8ClampedArray(4*F*k),F,k)}if(3===arguments.length){var p=
arguments[0];if(p.prototype.constructor!==Uint8ClampedArray)throw"bytes must be given as a Uint8ClampedArray";F=arguments[1];k=arguments[2];if(p%4)throw"bytes must be given in a multiple of 4";if(p%F)throw"bytes must divide evenly by width";if(k&&k!==p/(4*F))throw"invalid height given";return new D(p,F,p/(4*F))}throw"invalid number of arguments - takes 2 or 3, saw "+arguments.length;}})()})(t);var sa={},ta;for(ta in t)t.hasOwnProperty(ta)&&(sa[ta]=t[ta]);var wa="./this.program";
function xa(a,b){throw b;}var ya=!1,za=!1,Aa=!1,Ba=!1;ya="object"===typeof window;za="function"===typeof importScripts;Aa="object"===typeof process&&"object"===typeof process.versions&&"string"===typeof process.versions.node;Ba=!ya&&!Aa&&!za;var Ca="",Da,Ea,Fa,Ga,Ja;
if(Aa)Ca=za?require("path").dirname(Ca)+"/":__dirname+"/",Da=function(a,b){Ga||(Ga=require("fs"));Ja||(Ja=require("path"));a=Ja.normalize(a);return Ga.readFileSync(a,b?null:"utf8")},Fa=function(a){a=Da(a,!0);a.buffer||(a=new Uint8Array(a));assert(a.buffer);return a},1<process.argv.length&&(wa=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",function(a){if(!(a instanceof Ka))throw a;}),process.on("unhandledRejection",La),xa=function(a){process.exit(a)},t.inspect=
function(){return"[Emscripten Module object]"};else if(Ba)"undefined"!=typeof read&&(Da=function(a){return read(a)}),Fa=function(a){if("function"===typeof readbuffer)return new Uint8Array(readbuffer(a));a=read(a,"binary");assert("object"===typeof a);return a},"function"===typeof quit&&(xa=function(a){quit(a)}),"undefined"!==typeof print&&("undefined"===typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!==typeof printErr?printErr:print);else if(ya||za)za?Ca=self.location.href:
"undefined"!==typeof document&&document.currentScript&&(Ca=document.currentScript.src),_scriptDir&&(Ca=_scriptDir),0!==Ca.indexOf("blob:")?Ca=Ca.substr(0,Ca.lastIndexOf("/")+1):Ca="",Da=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},za&&(Fa=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),Ea=function(a,b,c){var f=new XMLHttpRequest;f.open("GET",a,!0);f.responseType="arraybuffer";
f.onload=function(){200==f.status||0==f.status&&f.response?b(f.response):c()};f.onerror=c;f.send(null)};var Ma=t.print||console.log.bind(console),Pa=t.printErr||console.warn.bind(console);for(ta in sa)sa.hasOwnProperty(ta)&&(t[ta]=sa[ta]);sa=null;t.thisProgram&&(wa=t.thisProgram);t.quit&&(xa=t.quit);var Qa=0,Ra;t.wasmBinary&&(Ra=t.wasmBinary);var noExitRuntime=t.noExitRuntime||!0;"object"!==typeof WebAssembly&&La("no native wasm support detected");var Sa,Ta=!1;
function assert(a,b){a||La("Assertion failed: "+b)}var Ua="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;
function Wa(a,b,c){var f=b+c;for(c=b;a[c]&&!(c>=f);)++c;if(16<c-b&&a.subarray&&Ua)return Ua.decode(a.subarray(b,c));for(f="";b<c;){var h=a[b++];if(h&128){var l=a[b++]&63;if(192==(h&224))f+=String.fromCharCode((h&31)<<6|l);else{var n=a[b++]&63;h=224==(h&240)?(h&15)<<12|l<<6|n:(h&7)<<18|l<<12|n<<6|a[b++]&63;65536>h?f+=String.fromCharCode(h):(h-=65536,f+=String.fromCharCode(55296|h>>10,56320|h&1023))}}else f+=String.fromCharCode(h)}return f}function Xa(a,b){return a?Wa(H,a,b):""}
function ra(a,b,c,f){if(!(0<f))return 0;var h=c;f=c+f-1;for(var l=0;l<a.length;++l){var n=a.charCodeAt(l);if(55296<=n&&57343>=n){var q=a.charCodeAt(++l);n=65536+((n&1023)<<10)|q&1023}if(127>=n){if(c>=f)break;b[c++]=n}else{if(2047>=n){if(c+1>=f)break;b[c++]=192|n>>6}else{if(65535>=n){if(c+2>=f)break;b[c++]=224|n>>12}else{if(c+3>=f)break;b[c++]=240|n>>18;b[c++]=128|n>>12&63}b[c++]=128|n>>6&63}b[c++]=128|n&63}}b[c]=0;return c-h}
function oa(a){for(var b=0,c=0;c<a.length;++c){var f=a.charCodeAt(c);55296<=f&&57343>=f&&(f=65536+((f&1023)<<10)|a.charCodeAt(++c)&1023);127>=f?++b:b=2047>=f?b+2:65535>=f?b+3:b+4}return b}var Ya="undefined"!==typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Za(a,b){var c=a>>1;for(var f=c+b/2;!(c>=f)&&$a[c];)++c;c<<=1;if(32<c-a&&Ya)return Ya.decode(H.subarray(a,c));c="";for(f=0;!(f>=b/2);++f){var h=ab[a+2*f>>1];if(0==h)break;c+=String.fromCharCode(h)}return c}
function bb(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var f=b;c=c<2*a.length?c/2:a.length;for(var h=0;h<c;++h)ab[b>>1]=a.charCodeAt(h),b+=2;ab[b>>1]=0;return b-f}function cb(a){return 2*a.length}function db(a,b){for(var c=0,f="";!(c>=b/4);){var h=P[a+4*c>>2];if(0==h)break;++c;65536<=h?(h-=65536,f+=String.fromCharCode(55296|h>>10,56320|h&1023)):f+=String.fromCharCode(h)}return f}
function eb(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var f=b;c=f+c-4;for(var h=0;h<a.length;++h){var l=a.charCodeAt(h);if(55296<=l&&57343>=l){var n=a.charCodeAt(++h);l=65536+((l&1023)<<10)|n&1023}P[b>>2]=l;b+=4;if(b+4>c)break}P[b>>2]=0;return b-f}function fb(a){for(var b=0,c=0;c<a.length;++c){var f=a.charCodeAt(c);55296<=f&&57343>=f&&++c;b+=4}return b}var gb,lb,H,ab,$a,P,mb,S,nb;
function ob(){var a=Sa.buffer;gb=a;t.HEAP8=lb=new Int8Array(a);t.HEAP16=ab=new Int16Array(a);t.HEAP32=P=new Int32Array(a);t.HEAPU8=H=new Uint8Array(a);t.HEAPU16=$a=new Uint16Array(a);t.HEAPU32=mb=new Uint32Array(a);t.HEAPF32=S=new Float32Array(a);t.HEAPF64=nb=new Float64Array(a)}var pb,qb=[],rb=[],sb=[];function tb(){var a=t.preRun.shift();qb.unshift(a)}var ub=0,vb=null,wb=null;t.preloadedImages={};t.preloadedAudios={};
function La(a){if(t.onAbort)t.onAbort(a);Pa(a);Ta=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");ea(a);throw a;}function xb(){return yb.startsWith("data:application/octet-stream;base64,")}var yb="canvaskit.wasm";if(!xb()){var zb=yb;yb=t.locateFile?t.locateFile(zb,Ca):Ca+zb}function Ab(){var a=yb;try{if(a==yb&&Ra)return new Uint8Array(Ra);if(Fa)return Fa(a);throw"both async and sync fetching of the wasm failed";}catch(b){La(b)}}
function Cb(){if(!Ra&&(ya||za)){if("function"===typeof fetch&&!yb.startsWith("file://"))return fetch(yb,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+yb+"'";return a.arrayBuffer()}).catch(function(){return Ab()});if(Ea)return new Promise(function(a,b){Ea(yb,function(c){a(new Uint8Array(c))},b)})}return Promise.resolve().then(function(){return Ab()})}
function Db(a){for(;0<a.length;){var b=a.shift();if("function"==typeof b)b(t);else{var c=b.Ag;"number"===typeof c?void 0===b.df?pb.get(c)():pb.get(c)(b.df):c(void 0===b.df?null:b.df)}}}function Eb(a){this.Rd=a-16;this.ig=function(b){P[this.Rd+8>>2]=b};this.fg=function(b){P[this.Rd+0>>2]=b};this.gg=function(){P[this.Rd+4>>2]=0};this.eg=function(){lb[this.Rd+12>>0]=0};this.hg=function(){lb[this.Rd+13>>0]=0};this.Tf=function(b,c){this.ig(b);this.fg(c);this.gg();this.eg();this.hg()}}
var Fb=0,Gb={},Hb=[null,[],[]],Ib={},Jb={};function Kb(a){for(;a.length;){var b=a.pop();a.pop()(b)}}function Lb(a){return this.fromWireType(mb[a>>2])}var Mb={},Nb={},Ob={};function Pb(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a}function Qb(a,b){a=Pb(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)}
function Rb(a){var b=Error,c=Qb(a,function(f){this.name=a;this.message=f;f=Error(f).stack;void 0!==f&&(this.stack=this.toString()+"\n"+f.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c}var Sb=void 0;function Tb(a){throw new Sb(a);}
function Ub(a,b,c){function f(q){q=c(q);q.length!==a.length&&Tb("Mismatched type converter count");for(var x=0;x<a.length;++x)Vb(a[x],q[x])}a.forEach(function(q){Ob[q]=b});var h=Array(b.length),l=[],n=0;b.forEach(function(q,x){Nb.hasOwnProperty(q)?h[x]=Nb[q]:(l.push(q),Mb.hasOwnProperty(q)||(Mb[q]=[]),Mb[q].push(function(){h[x]=Nb[q];++n;n===l.length&&f(h)}))});0===l.length&&f(h)}
function Wb(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+a);}}var Xb=void 0;function Yb(a){for(var b="";H[a];)b+=Xb[H[a++]];return b}var Zb=void 0;function V(a){throw new Zb(a);}
function Vb(a,b,c){c=c||{};if(!("argPackAdvance"in b))throw new TypeError("registerType registeredInstance requires argPackAdvance");var f=b.name;a||V('type "'+f+'" must have a positive integer typeid pointer');if(Nb.hasOwnProperty(a)){if(c.Sf)return;V("Cannot register type '"+f+"' twice")}Nb[a]=b;delete Ob[a];Mb.hasOwnProperty(a)&&(b=Mb[a],delete Mb[a],b.forEach(function(h){h()}))}function $b(a){V(a.Ld.Xd.Sd.name+" instance already deleted")}var ac=!1;function bc(){}
function cc(a){--a.count.value;0===a.count.value&&(a.de?a.ge.ke(a.de):a.Xd.Sd.ke(a.Rd))}function dc(a){if("undefined"===typeof FinalizationGroup)return dc=function(b){return b},a;ac=new FinalizationGroup(function(b){for(var c=b.next();!c.done;c=b.next())c=c.value,c.Rd?cc(c):console.warn("object already deleted: "+c.Rd)});dc=function(b){ac.register(b,b.Ld,b.Ld);return b};bc=function(b){ac.unregister(b.Ld)};return dc(a)}var lc=void 0,mc=[];
function nc(){for(;mc.length;){var a=mc.pop();a.Ld.De=!1;a["delete"]()}}function oc(){}var pc={};function qc(a,b,c){if(void 0===a[b].Zd){var f=a[b];a[b]=function(){a[b].Zd.hasOwnProperty(arguments.length)||V("Function '"+c+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+a[b].Zd+")!");return a[b].Zd[arguments.length].apply(this,arguments)};a[b].Zd=[];a[b].Zd[f.Be]=f}}
function rc(a,b,c){t.hasOwnProperty(a)?((void 0===c||void 0!==t[a].Zd&&void 0!==t[a].Zd[c])&&V("Cannot register public name '"+a+"' twice"),qc(t,a,a),t.hasOwnProperty(c)&&V("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),t[a].Zd[c]=b):(t[a]=b,void 0!==c&&(t[a].Cg=c))}function sc(a,b,c,f,h,l,n,q){this.name=a;this.constructor=b;this.Ee=c;this.ke=f;this.ie=h;this.Lf=l;this.Ne=n;this.Ff=q;this.bg=[]}
function tc(a,b,c){for(;b!==c;)b.Ne||V("Expected null or instance of "+c.name+", got an instance of "+b.name),a=b.Ne(a),b=b.ie;return a}function uc(a,b){if(null===b)return this.ff&&V("null is not a valid "+this.name),0;b.Ld||V('Cannot pass "'+vc(b)+'" as a '+this.name);b.Ld.Rd||V("Cannot pass deleted object as a pointer of type "+this.name);return tc(b.Ld.Rd,b.Ld.Xd.Sd,this.Sd)}
function wc(a,b){if(null===b){this.ff&&V("null is not a valid "+this.name);if(this.Se){var c=this.gf();null!==a&&a.push(this.ke,c);return c}return 0}b.Ld||V('Cannot pass "'+vc(b)+'" as a '+this.name);b.Ld.Rd||V("Cannot pass deleted object as a pointer of type "+this.name);!this.Re&&b.Ld.Xd.Re&&V("Cannot convert argument of type "+(b.Ld.ge?b.Ld.ge.name:b.Ld.Xd.name)+" to parameter type "+this.name);c=tc(b.Ld.Rd,b.Ld.Xd.Sd,this.Sd);if(this.Se)switch(void 0===b.Ld.de&&V("Passing raw pointer to smart pointer is illegal"),
this.mg){case 0:b.Ld.ge===this?c=b.Ld.de:V("Cannot convert argument of type "+(b.Ld.ge?b.Ld.ge.name:b.Ld.Xd.name)+" to parameter type "+this.name);break;case 1:c=b.Ld.de;break;case 2:if(b.Ld.ge===this)c=b.Ld.de;else{var f=b.clone();c=this.cg(c,xc(function(){f["delete"]()}));null!==a&&a.push(this.ke,c)}break;default:V("Unsupporting sharing policy")}return c}
function yc(a,b){if(null===b)return this.ff&&V("null is not a valid "+this.name),0;b.Ld||V('Cannot pass "'+vc(b)+'" as a '+this.name);b.Ld.Rd||V("Cannot pass deleted object as a pointer of type "+this.name);b.Ld.Xd.Re&&V("Cannot convert argument of type "+b.Ld.Xd.name+" to parameter type "+this.name);return tc(b.Ld.Rd,b.Ld.Xd.Sd,this.Sd)}function zc(a,b,c){if(b===c)return a;if(void 0===c.ie)return null;a=zc(a,b,c.ie);return null===a?null:c.Ff(a)}var Ac={};
function Bc(a,b){for(void 0===b&&V("ptr should not be undefined");a.ie;)b=a.Ne(b),a=a.ie;return Ac[b]}function Cc(a,b){b.Xd&&b.Rd||Tb("makeClassHandle requires ptr and ptrType");!!b.ge!==!!b.de&&Tb("Both smartPtrType and smartPtr must be specified");b.count={value:1};return dc(Object.create(a,{Ld:{value:b}}))}
function Dc(a,b,c,f,h,l,n,q,x,w,G){this.name=a;this.Sd=b;this.ff=c;this.Re=f;this.Se=h;this.ag=l;this.mg=n;this.tf=q;this.gf=x;this.cg=w;this.ke=G;h||void 0!==b.ie?this.toWireType=wc:(this.toWireType=f?uc:yc,this.fe=null)}function Ec(a,b,c){t.hasOwnProperty(a)||Tb("Replacing nonexistant public symbol");void 0!==t[a].Zd&&void 0!==c?t[a].Zd[c]=b:(t[a]=b,t[a].Be=c)}
function Fc(a,b){var c=[];return function(){c.length=arguments.length;for(var f=0;f<arguments.length;f++)c[f]=arguments[f];a.includes("j")?(f=t["dynCall_"+a],f=c&&c.length?f.apply(null,[b].concat(c)):f.call(null,b)):f=pb.get(b).apply(null,c);return f}}function Gc(a,b){a=Yb(a);var c=a.includes("j")?Fc(a,b):pb.get(b);"function"!==typeof c&&V("unknown function pointer with signature "+a+": "+b);return c}var Hc=void 0;function Ic(a){a=Jc(a);var b=Yb(a);Kc(a);return b}
function Tc(a,b){function c(l){h[l]||Nb[l]||(Ob[l]?Ob[l].forEach(c):(f.push(l),h[l]=!0))}var f=[],h={};b.forEach(c);throw new Hc(a+": "+f.map(Ic).join([", "]));}function Uc(a){var b=Function;if(!(b instanceof Function))throw new TypeError("new_ called with constructor type "+typeof b+" which is not a function");var c=Qb(b.name||"unknownFunctionName",function(){});c.prototype=b.prototype;c=new c;a=b.apply(c,a);return a instanceof Object?a:c}
function Vc(a,b,c,f,h){var l=b.length;2>l&&V("argTypes array size mismatch! Must at least get return value and 'this' types!");var n=null!==b[1]&&null!==c,q=!1;for(c=1;c<b.length;++c)if(null!==b[c]&&void 0===b[c].fe){q=!0;break}var x="void"!==b[0].name,w="",G="";for(c=0;c<l-2;++c)w+=(0!==c?", ":"")+"arg"+c,G+=(0!==c?", ":"")+"arg"+c+"Wired";a="return function "+Pb(a)+"("+w+") {\nif (arguments.length !== "+(l-2)+") {\nthrowBindingError('function "+a+" called with ' + arguments.length + ' arguments, expected "+
(l-2)+" args!');\n}\n";q&&(a+="var destructors = [];\n");var K=q?"destructors":"null";w="throwBindingError invoker fn runDestructors retType classParam".split(" ");f=[V,f,h,Kb,b[0],b[1]];n&&(a+="var thisWired = classParam.toWireType("+K+", this);\n");for(c=0;c<l-2;++c)a+="var arg"+c+"Wired = argType"+c+".toWireType("+K+", arg"+c+"); // "+b[c+2].name+"\n",w.push("argType"+c),f.push(b[c+2]);n&&(G="thisWired"+(0<G.length?", ":"")+G);a+=(x?"var rv = ":"")+"invoker(fn"+(0<G.length?", ":"")+G+");\n";if(q)a+=
"runDestructors(destructors);\n";else for(c=n?1:2;c<b.length;++c)l=1===c?"thisWired":"arg"+(c-2)+"Wired",null!==b[c].fe&&(a+=l+"_dtor("+l+"); // "+b[c].name+"\n",w.push(l+"_dtor"),f.push(b[c].fe));x&&(a+="var ret = retType.fromWireType(rv);\nreturn ret;\n");w.push(a+"}\n");return Uc(w).apply(null,f)}function Wc(a,b){for(var c=[],f=0;f<a;f++)c.push(P[(b>>2)+f]);return c}var Xc=[],Yc=[{},{value:void 0},{value:null},{value:!0},{value:!1}];
function Zc(a){4<a&&0===--Yc[a].hf&&(Yc[a]=void 0,Xc.push(a))}function xc(a){switch(a){case void 0:return 1;case null:return 2;case !0:return 3;case !1:return 4;default:var b=Xc.length?Xc.pop():Yc.length;Yc[b]={hf:1,value:a};return b}}
function $c(a,b,c){switch(b){case 0:return function(f){return this.fromWireType((c?lb:H)[f])};case 1:return function(f){return this.fromWireType((c?ab:$a)[f>>1])};case 2:return function(f){return this.fromWireType((c?P:mb)[f>>2])};default:throw new TypeError("Unknown integer type: "+a);}}function ad(a,b){var c=Nb[a];void 0===c&&V(b+" has unknown type "+Ic(a));return c}function vc(a){if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a}
function bd(a,b){switch(b){case 2:return function(c){return this.fromWireType(S[c>>2])};case 3:return function(c){return this.fromWireType(nb[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}
function cd(a,b,c){switch(b){case 0:return c?function(f){return lb[f]}:function(f){return H[f]};case 1:return c?function(f){return ab[f>>1]}:function(f){return $a[f>>1]};case 2:return c?function(f){return P[f>>2]}:function(f){return mb[f>>2]};default:throw new TypeError("Unknown integer type: "+a);}}function dd(a){a||V("Cannot use deleted val. handle = "+a);return Yc[a].value}var ed={};function fd(a){var b=ed[a];return void 0===b?Yb(a):b}var gd=[];
function hd(){return"object"===typeof globalThis?globalThis:Function("return this")()}function jd(a){var b=gd.length;gd.push(a);return b}function kd(a,b){for(var c=Array(a),f=0;f<a;++f)c[f]=ad(P[(b>>2)+f],"parameter "+f);return c}var ld={},md;Aa?md=function(){var a=process.hrtime();return 1E3*a[0]+a[1]/1E6}:"undefined"!==typeof dateNow?md=dateNow:md=function(){return performance.now()};
function nd(a){var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=function(c,f){b.vertexAttribDivisorANGLE(c,f)},a.drawArraysInstanced=function(c,f,h,l){b.drawArraysInstancedANGLE(c,f,h,l)},a.drawElementsInstanced=function(c,f,h,l,n){b.drawElementsInstancedANGLE(c,f,h,l,n)})}
function od(a){var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=function(){return b.createVertexArrayOES()},a.deleteVertexArray=function(c){b.deleteVertexArrayOES(c)},a.bindVertexArray=function(c){b.bindVertexArrayOES(c)},a.isVertexArray=function(c){return b.isVertexArrayOES(c)})}function pd(a){var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=function(c,f){b.drawBuffersWEBGL(c,f)})}
var qd=1,rd=[],sd=[],td=[],ud=[],ha=[],vd=[],wd=[],na=[],xd=[],yd=[],zd={},Ad={},Bd=4;function Cd(a){Dd||(Dd=a)}function Ed(a){for(var b=qd++,c=a.length;c<b;c++)a[c]=null;return b}function ia(a,b){a.rf||(a.rf=a.getContext,a.getContext=function(f,h){h=a.rf(f,h);return"webgl"==f==h instanceof WebGLRenderingContext?h:null});var c=1<b.majorVersion?a.getContext("webgl2",b):a.getContext("webgl",b);return c?Hd(c,b):0}
function Hd(a,b){var c=Ed(na),f={Rf:c,attributes:b,version:b.majorVersion,le:a};a.canvas&&(a.canvas.vf=f);na[c]=f;("undefined"===typeof b.Gf||b.Gf)&&Id(f);return c}function ma(a){v=na[a];t.zg=W=v&&v.le;return!(a&&!W)}
function Id(a){a||(a=v);if(!a.Uf){a.Uf=!0;var b=a.le;nd(b);od(b);pd(b);b.nf=b.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");b.sf=b.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance");2<=a.version&&(b.pf=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.pf)b.pf=b.getExtension("EXT_disjoint_timer_query");b.Bg=b.getExtension("WEBGL_multi_draw");(b.getSupportedExtensions()||[]).forEach(function(c){c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}}
var v,Dd,Jd=[];function Kd(a,b,c,f){for(var h=0;h<a;h++){var l=W[c](),n=l&&Ed(f);l?(l.name=n,f[n]=l):Cd(1282);P[b+4*h>>2]=n}}
function Ld(a,b){if(b){var c=void 0;switch(a){case 36346:c=1;break;case 36344:return;case 34814:case 36345:c=0;break;case 34466:var f=W.getParameter(34467);c=f?f.length:0;break;case 33309:if(2>v.version){Cd(1282);return}c=2*(W.getSupportedExtensions()||[]).length;break;case 33307:case 33308:if(2>v.version){Cd(1280);return}c=33307==a?3:0}if(void 0===c)switch(f=W.getParameter(a),typeof f){case "number":c=f;break;case "boolean":c=f?1:0;break;case "string":Cd(1280);return;case "object":if(null===f)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:c=
0;break;default:Cd(1280);return}else{if(f instanceof Float32Array||f instanceof Uint32Array||f instanceof Int32Array||f instanceof Array){for(a=0;a<f.length;++a)P[b+4*a>>2]=f[a];return}try{c=f.name|0}catch(h){Cd(1280);Pa("GL_INVALID_ENUM in glGet0v: Unknown object returned from WebGL getParameter("+a+")! (error: "+h+")");return}}break;default:Cd(1280);Pa("GL_INVALID_ENUM in glGet0v: Native code calling glGet0v("+a+") and it returns "+f+" of type "+typeof f+"!");return}P[b>>2]=c}else Cd(1281)}
function Md(a){var b=oa(a)+1,c=Nd(b);ra(a,H,c,b);return c}function Od(a){a-=5120;return 0==a?lb:1==a?H:2==a?ab:4==a?P:6==a?S:5==a||28922==a||28520==a||30779==a||30782==a?mb:$a}function Pd(a,b,c,f,h){a=Od(a);var l=31-Math.clz32(a.BYTES_PER_ELEMENT),n=Bd;return a.subarray(h>>l,h+f*(c*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*(1<<l)+n-1&-n)>>l)}function Z(a){var b=W.Df,c=b.Ze[a];0<=c&&(b.Ze[a]=c=W.getUniformLocation(b,b.uf[a]+(0<c?"["+c+"]":"")));return c}
var Qd=[],Rd=[],Sd={};function Td(){if(!Ud){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"===typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:wa||"./this.program"},b;for(b in Sd)a[b]=Sd[b];var c=[];for(b in a)c.push(b+"="+a[b]);Ud=c}return Ud}var Ud;function Vd(a){return 0===a%4&&(0!==a%100||0===a%400)}function Wd(a,b){for(var c=0,f=0;f<=b;c+=a[f++]);return c}
var Xd=[31,29,31,30,31,30,31,31,30,31,30,31],Yd=[31,28,31,30,31,30,31,31,30,31,30,31];function Zd(a,b){for(a=new Date(a.getTime());0<b;){var c=a.getMonth(),f=(Vd(a.getFullYear())?Xd:Yd)[c];if(b>f-a.getDate())b-=f-a.getDate()+1,a.setDate(1),11>c?a.setMonth(c+1):(a.setMonth(0),a.setFullYear(a.getFullYear()+1));else{a.setDate(a.getDate()+b);break}}return a}
function $d(a,b,c,f){function h(A,M,X){for(A="number"===typeof A?A.toString():A||"";A.length<M;)A=X[0]+A;return A}function l(A,M){return h(A,M,"0")}function n(A,M){function X(ba){return 0>ba?-1:0<ba?1:0}var da;0===(da=X(A.getFullYear()-M.getFullYear()))&&0===(da=X(A.getMonth()-M.getMonth()))&&(da=X(A.getDate()-M.getDate()));return da}function q(A){switch(A.getDay()){case 0:return new Date(A.getFullYear()-1,11,29);case 1:return A;case 2:return new Date(A.getFullYear(),0,3);case 3:return new Date(A.getFullYear(),
0,2);case 4:return new Date(A.getFullYear(),0,1);case 5:return new Date(A.getFullYear()-1,11,31);case 6:return new Date(A.getFullYear()-1,11,30)}}function x(A){A=Zd(new Date(A.ae+1900,0,1),A.Ye);var M=new Date(A.getFullYear()+1,0,4),X=q(new Date(A.getFullYear(),0,4));M=q(M);return 0>=n(X,A)?0>=n(M,A)?A.getFullYear()+1:A.getFullYear():A.getFullYear()-1}var w=P[f+40>>2];f={ug:P[f>>2],tg:P[f+4>>2],We:P[f+8>>2],Me:P[f+12>>2],Fe:P[f+16>>2],ae:P[f+20>>2],Xe:P[f+24>>2],Ye:P[f+28>>2],Fg:P[f+32>>2],sg:P[f+
36>>2],vg:w?Xa(w):""};c=Xa(c);w={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var G in w)c=c.replace(new RegExp(G,"g"),w[G]);var K="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),
O="January February March April May June July August September October November December".split(" ");w={"%a":function(A){return K[A.Xe].substring(0,3)},"%A":function(A){return K[A.Xe]},"%b":function(A){return O[A.Fe].substring(0,3)},"%B":function(A){return O[A.Fe]},"%C":function(A){return l((A.ae+1900)/100|0,2)},"%d":function(A){return l(A.Me,2)},"%e":function(A){return h(A.Me,2," ")},"%g":function(A){return x(A).toString().substring(2)},"%G":function(A){return x(A)},"%H":function(A){return l(A.We,
2)},"%I":function(A){A=A.We;0==A?A=12:12<A&&(A-=12);return l(A,2)},"%j":function(A){return l(A.Me+Wd(Vd(A.ae+1900)?Xd:Yd,A.Fe-1),3)},"%m":function(A){return l(A.Fe+1,2)},"%M":function(A){return l(A.tg,2)},"%n":function(){return"\n"},"%p":function(A){return 0<=A.We&&12>A.We?"AM":"PM"},"%S":function(A){return l(A.ug,2)},"%t":function(){return"\t"},"%u":function(A){return A.Xe||7},"%U":function(A){var M=new Date(A.ae+1900,0,1),X=0===M.getDay()?M:Zd(M,7-M.getDay());A=new Date(A.ae+1900,A.Fe,A.Me);return 0>
n(X,A)?l(Math.ceil((31-X.getDate()+(Wd(Vd(A.getFullYear())?Xd:Yd,A.getMonth()-1)-31)+A.getDate())/7),2):0===n(X,M)?"01":"00"},"%V":function(A){var M=new Date(A.ae+1901,0,4),X=q(new Date(A.ae+1900,0,4));M=q(M);var da=Zd(new Date(A.ae+1900,0,1),A.Ye);return 0>n(da,X)?"53":0>=n(M,da)?"01":l(Math.ceil((X.getFullYear()<A.ae+1900?A.Ye+32-X.getDate():A.Ye+1-X.getDate())/7),2)},"%w":function(A){return A.Xe},"%W":function(A){var M=new Date(A.ae,0,1),X=1===M.getDay()?M:Zd(M,0===M.getDay()?1:7-M.getDay()+1);
A=new Date(A.ae+1900,A.Fe,A.Me);return 0>n(X,A)?l(Math.ceil((31-X.getDate()+(Wd(Vd(A.getFullYear())?Xd:Yd,A.getMonth()-1)-31)+A.getDate())/7),2):0===n(X,M)?"01":"00"},"%y":function(A){return(A.ae+1900).toString().substring(2)},"%Y":function(A){return A.ae+1900},"%z":function(A){A=A.sg;var M=0<=A;A=Math.abs(A)/60;return(M?"+":"-")+String("0000"+(A/60*100+A%60)).slice(-4)},"%Z":function(A){return A.vg},"%%":function(){return"%"}};for(G in w)c.includes(G)&&(c=c.replace(new RegExp(G,"g"),w[G](f)));G=
ae(c);if(G.length>b)return 0;lb.set(G,a);return G.length-1}Sb=t.InternalError=Rb("InternalError");for(var be=Array(256),ce=0;256>ce;++ce)be[ce]=String.fromCharCode(ce);Xb=be;Zb=t.BindingError=Rb("BindingError");oc.prototype.isAliasOf=function(a){if(!(this instanceof oc&&a instanceof oc))return!1;var b=this.Ld.Xd.Sd,c=this.Ld.Rd,f=a.Ld.Xd.Sd;for(a=a.Ld.Rd;b.ie;)c=b.Ne(c),b=b.ie;for(;f.ie;)a=f.Ne(a),f=f.ie;return b===f&&c===a};
oc.prototype.clone=function(){this.Ld.Rd||$b(this);if(this.Ld.Le)return this.Ld.count.value+=1,this;var a=dc,b=Object,c=b.create,f=Object.getPrototypeOf(this),h=this.Ld;a=a(c.call(b,f,{Ld:{value:{count:h.count,De:h.De,Le:h.Le,Rd:h.Rd,Xd:h.Xd,de:h.de,ge:h.ge}}}));a.Ld.count.value+=1;a.Ld.De=!1;return a};oc.prototype["delete"]=function(){this.Ld.Rd||$b(this);this.Ld.De&&!this.Ld.Le&&V("Object already scheduled for deletion");bc(this);cc(this.Ld);this.Ld.Le||(this.Ld.de=void 0,this.Ld.Rd=void 0)};
oc.prototype.isDeleted=function(){return!this.Ld.Rd};oc.prototype.deleteLater=function(){this.Ld.Rd||$b(this);this.Ld.De&&!this.Ld.Le&&V("Object already scheduled for deletion");mc.push(this);1===mc.length&&lc&&lc(nc);this.Ld.De=!0;return this};Dc.prototype.Mf=function(a){this.tf&&(a=this.tf(a));return a};Dc.prototype.mf=function(a){this.ke&&this.ke(a)};Dc.prototype.argPackAdvance=8;Dc.prototype.readValueFromPointer=Lb;Dc.prototype.deleteObject=function(a){if(null!==a)a["delete"]()};
Dc.prototype.fromWireType=function(a){function b(){return this.Se?Cc(this.Sd.Ee,{Xd:this.ag,Rd:c,ge:this,de:a}):Cc(this.Sd.Ee,{Xd:this,Rd:a})}var c=this.Mf(a);if(!c)return this.mf(a),null;var f=Bc(this.Sd,c);if(void 0!==f){if(0===f.Ld.count.value)return f.Ld.Rd=c,f.Ld.de=a,f.clone();f=f.clone();this.mf(a);return f}f=this.Sd.Lf(c);f=pc[f];if(!f)return b.call(this);f=this.Re?f.Bf:f.pointerType;var h=zc(c,this.Sd,f.Sd);return null===h?b.call(this):this.Se?Cc(f.Sd.Ee,{Xd:f,Rd:h,ge:this,de:a}):Cc(f.Sd.Ee,
{Xd:f,Rd:h})};t.getInheritedInstanceCount=function(){return Object.keys(Ac).length};t.getLiveInheritedInstances=function(){var a=[],b;for(b in Ac)Ac.hasOwnProperty(b)&&a.push(Ac[b]);return a};t.flushPendingDeletes=nc;t.setDelayFunction=function(a){lc=a;mc.length&&lc&&lc(nc)};Hc=t.UnboundTypeError=Rb("UnboundTypeError");t.count_emval_handles=function(){for(var a=0,b=5;b<Yc.length;++b)void 0!==Yc[b]&&++a;return a};
t.get_first_emval=function(){for(var a=5;a<Yc.length;++a)if(void 0!==Yc[a])return Yc[a];return null};for(var W,de=0;32>de;++de)Jd.push(Array(de));var ee=new Float32Array(288);for(de=0;288>de;++de)Qd[de]=ee.subarray(0,de+1);var fe=new Int32Array(288);for(de=0;288>de;++de)Rd[de]=fe.subarray(0,de+1);function ae(a){var b=Array(oa(a)+1);ra(a,b,0,b.length);return b}
var ze={Kb:function(a){return Nd(a+16)+16},Eb:function(a,b,c){(new Eb(a)).Tf(b,c);Fb++;throw a;},O:function(){return 0},Bb:function(){},xb:function(){return 0},yb:function(a,b,c,f,h,l){l<<=12;0!==(f&16)&&0!==a%65536?b=-28:0!==(f&32)?(a=ge(65536,b))?(he(a,0,b),Gb[a]={Zf:a,Yf:b,Af:!0,fd:h,Dg:c,flags:f,offset:l},b=a):b=-48:b=-52;return b},zb:function(a,b){if(-1===(a|0)||0===b)a=-28;else{var c=Gb[a];c&&b===c.Yf&&(Gb[a]=null,c.Af&&Kc(c.Zf));a=0}return a},R:function(){},Q:function(){},y:function(a){var b=
Jb[a];delete Jb[a];var c=b.gf,f=b.ke,h=b.qf,l=h.map(function(n){return n.Qf}).concat(h.map(function(n){return n.kg}));Ub([a],l,function(n){var q={};h.forEach(function(x,w){var G=n[w],K=x.Of,O=x.Pf,A=n[w+h.length],M=x.jg,X=x.lg;q[x.Hf]={read:function(da){return G.fromWireType(K(O,da))},write:function(da,ba){var pa=[];M(X,da,A.toWireType(pa,ba));Kb(pa)}}});return[{name:b.name,fromWireType:function(x){var w={},G;for(G in q)w[G]=q[G].read(x);f(x);return w},toWireType:function(x,w){for(var G in q)if(!(G in
w))throw new TypeError('Missing field: "'+G+'"');var K=c();for(G in q)q[G].write(K,w[G]);null!==x&&x.push(f,K);return K},argPackAdvance:8,readValueFromPointer:Lb,fe:f}]})},ob:function(){},Db:function(a,b,c,f,h){var l=Wb(c);b=Yb(b);Vb(a,{name:b,fromWireType:function(n){return!!n},toWireType:function(n,q){return q?f:h},argPackAdvance:8,readValueFromPointer:function(n){if(1===c)var q=lb;else if(2===c)q=ab;else if(4===c)q=P;else throw new TypeError("Unknown boolean type size: "+b);return this.fromWireType(q[n>>
l])},fe:null})},m:function(a,b,c,f,h,l,n,q,x,w,G,K,O){G=Yb(G);l=Gc(h,l);q&&(q=Gc(n,q));w&&(w=Gc(x,w));O=Gc(K,O);var A=Pb(G);rc(A,function(){Tc("Cannot construct "+G+" due to unbound types",[f])});Ub([a,b,c],f?[f]:[],function(M){M=M[0];if(f){var X=M.Sd;var da=X.Ee}else da=oc.prototype;M=Qb(A,function(){if(Object.getPrototypeOf(this)!==ba)throw new Zb("Use 'new' to construct "+G);if(void 0===pa.ne)throw new Zb(G+" has no accessible constructor");var jb=pa.ne[arguments.length];if(void 0===jb)throw new Zb("Tried to invoke ctor of "+
G+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(pa.ne).toString()+") parameters instead!");return jb.apply(this,arguments)});var ba=Object.create(da,{constructor:{value:M}});M.prototype=ba;var pa=new sc(G,M,ba,O,X,l,q,w);X=new Dc(G,pa,!0,!1,!1);da=new Dc(G+"*",pa,!1,!1,!1);var ib=new Dc(G+" const*",pa,!1,!0,!1);pc[a]={pointerType:da,Bf:ib};Ec(A,M);return[X,da,ib]})},f:function(a,b,c,f,h,l,n){var q=Wc(c,f);b=Yb(b);l=Gc(h,l);Ub([],[a],function(x){function w(){Tc("Cannot call "+
G+" due to unbound types",q)}x=x[0];var G=x.name+"."+b,K=x.Sd.constructor;void 0===K[b]?(w.Be=c-1,K[b]=w):(qc(K,b,G),K[b].Zd[c-1]=w);Ub([],q,function(O){O=[O[0],null].concat(O.slice(1));O=Vc(G,O,null,l,n);void 0===K[b].Zd?(O.Be=c-1,K[b]=O):K[b].Zd[c-1]=O;return[]});return[]})},v:function(a,b,c,f,h,l){assert(0<b);var n=Wc(b,c);h=Gc(f,h);var q=[l],x=[];Ub([],[a],function(w){w=w[0];var G="constructor "+w.name;void 0===w.Sd.ne&&(w.Sd.ne=[]);if(void 0!==w.Sd.ne[b-1])throw new Zb("Cannot register multiple constructors with identical number of parameters ("+
(b-1)+") for class '"+w.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");w.Sd.ne[b-1]=function(){Tc("Cannot construct "+w.name+" due to unbound types",n)};Ub([],n,function(K){w.Sd.ne[b-1]=function(){arguments.length!==b-1&&V(G+" called with "+arguments.length+" arguments, expected "+(b-1));x.length=0;q.length=b;for(var O=1;O<b;++O)q[O]=K[O].toWireType(x,arguments[O-1]);O=h.apply(null,q);Kb(x);return K[0].fromWireType(O)};return[]});return[]})},
c:function(a,b,c,f,h,l,n,q){var x=Wc(c,f);b=Yb(b);l=Gc(h,l);Ub([],[a],function(w){function G(){Tc("Cannot call "+K+" due to unbound types",x)}w=w[0];var K=w.name+"."+b;q&&w.Sd.bg.push(b);var O=w.Sd.Ee,A=O[b];void 0===A||void 0===A.Zd&&A.className!==w.name&&A.Be===c-2?(G.Be=c-2,G.className=w.name,O[b]=G):(qc(O,b,K),O[b].Zd[c-2]=G);Ub([],x,function(M){M=Vc(K,M,w,l,n);void 0===O[b].Zd?(M.Be=c-2,O[b]=M):O[b].Zd[c-2]=M;return[]});return[]})},X:function(a,b,c){a=Yb(a);Ub([],[b],function(f){f=f[0];t[a]=
f.fromWireType(c);return[]})},Cb:function(a,b){b=Yb(b);Vb(a,{name:b,fromWireType:function(c){var f=Yc[c].value;Zc(c);return f},toWireType:function(c,f){return xc(f)},argPackAdvance:8,readValueFromPointer:Lb,fe:null})},k:function(a,b,c,f){function h(){}c=Wb(c);b=Yb(b);h.values={};Vb(a,{name:b,constructor:h,fromWireType:function(l){return this.constructor.values[l]},toWireType:function(l,n){return n.value},argPackAdvance:8,readValueFromPointer:$c(b,c,f),fe:null});rc(b,h)},j:function(a,b,c){var f=ad(a,
"enum");b=Yb(b);a=f.constructor;f=Object.create(f.constructor.prototype,{value:{value:c},constructor:{value:Qb(f.name+"_"+b,function(){})}});a.values[c]=f;a[b]=f},S:function(a,b,c){c=Wb(c);b=Yb(b);Vb(a,{name:b,fromWireType:function(f){return f},toWireType:function(f,h){if("number"!==typeof h&&"boolean"!==typeof h)throw new TypeError('Cannot convert "'+vc(h)+'" to '+this.name);return h},argPackAdvance:8,readValueFromPointer:bd(b,c),fe:null})},t:function(a,b,c,f,h,l){var n=Wc(b,c);a=Yb(a);h=Gc(f,h);
rc(a,function(){Tc("Cannot call "+a+" due to unbound types",n)},b-1);Ub([],n,function(q){q=[q[0],null].concat(q.slice(1));Ec(a,Vc(a,q,null,h,l),b-1);return[]})},x:function(a,b,c,f,h){function l(w){return w}b=Yb(b);-1===h&&(h=4294967295);var n=Wb(c);if(0===f){var q=32-8*c;l=function(w){return w<<q>>>q}}var x=b.includes("unsigned");Vb(a,{name:b,fromWireType:l,toWireType:function(w,G){if("number"!==typeof G&&"boolean"!==typeof G)throw new TypeError('Cannot convert "'+vc(G)+'" to '+this.name);if(G<f||
G>h)throw new TypeError('Passing a number "'+vc(G)+'" from JS side to C/C++ side to an argument of type "'+b+'", which is outside the valid range ['+f+", "+h+"]!");return x?G>>>0:G|0},argPackAdvance:8,readValueFromPointer:cd(b,n,0!==f),fe:null})},u:function(a,b,c){function f(l){l>>=2;var n=mb;return new h(gb,n[l+1],n[l])}var h=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=Yb(c);Vb(a,{name:c,fromWireType:f,argPackAdvance:8,readValueFromPointer:f},
{Sf:!0})},p:function(a,b,c,f,h,l,n,q,x,w,G,K){c=Yb(c);l=Gc(h,l);q=Gc(n,q);w=Gc(x,w);K=Gc(G,K);Ub([a],[b],function(O){O=O[0];return[new Dc(c,O.Sd,!1,!1,!0,O,f,l,q,w,K)]})},T:function(a,b){b=Yb(b);var c="std::string"===b;Vb(a,{name:b,fromWireType:function(f){var h=mb[f>>2];if(c)for(var l=f+4,n=0;n<=h;++n){var q=f+4+n;if(n==h||0==H[q]){l=Xa(l,q-l);if(void 0===x)var x=l;else x+=String.fromCharCode(0),x+=l;l=q+1}}else{x=Array(h);for(n=0;n<h;++n)x[n]=String.fromCharCode(H[f+4+n]);x=x.join("")}Kc(f);return x},
toWireType:function(f,h){h instanceof ArrayBuffer&&(h=new Uint8Array(h));var l="string"===typeof h;l||h instanceof Uint8Array||h instanceof Uint8ClampedArray||h instanceof Int8Array||V("Cannot pass non-string to std::string");var n=(c&&l?function(){return oa(h)}:function(){return h.length})(),q=Nd(4+n+1);mb[q>>2]=n;if(c&&l)ra(h,H,q+4,n+1);else if(l)for(l=0;l<n;++l){var x=h.charCodeAt(l);255<x&&(Kc(q),V("String has UTF-16 code units that do not fit in 8 bits"));H[q+4+l]=x}else for(l=0;l<n;++l)H[q+
4+l]=h[l];null!==f&&f.push(Kc,q);return q},argPackAdvance:8,readValueFromPointer:Lb,fe:function(f){Kc(f)}})},I:function(a,b,c){c=Yb(c);if(2===b){var f=Za;var h=bb;var l=cb;var n=function(){return $a};var q=1}else 4===b&&(f=db,h=eb,l=fb,n=function(){return mb},q=2);Vb(a,{name:c,fromWireType:function(x){for(var w=mb[x>>2],G=n(),K,O=x+4,A=0;A<=w;++A){var M=x+4+A*b;if(A==w||0==G[M>>q])O=f(O,M-O),void 0===K?K=O:(K+=String.fromCharCode(0),K+=O),O=M+b}Kc(x);return K},toWireType:function(x,w){"string"!==
typeof w&&V("Cannot pass non-string to C++ string type "+c);var G=l(w),K=Nd(4+G+b);mb[K>>2]=G>>q;h(w,K+4,G+b);null!==x&&x.push(Kc,K);return K},argPackAdvance:8,readValueFromPointer:Lb,fe:function(x){Kc(x)}})},z:function(a,b,c,f,h,l){Jb[a]={name:Yb(b),gf:Gc(c,f),ke:Gc(h,l),qf:[]}},h:function(a,b,c,f,h,l,n,q,x,w){Jb[a].qf.push({Hf:Yb(b),Qf:c,Of:Gc(f,h),Pf:l,kg:n,jg:Gc(q,x),lg:w})},Fb:function(a,b){b=Yb(b);Vb(a,{Vf:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},B:function(a,
b,c){a=dd(a);b=ad(b,"emval::as");var f=[],h=xc(f);P[c>>2]=h;return b.toWireType(f,a)},M:function(a,b,c,f,h){a=gd[a];b=dd(b);c=fd(c);var l=[];P[f>>2]=xc(l);return a(b,c,l,h)},C:function(a,b,c,f){a=gd[a];b=dd(b);c=fd(c);a(b,c,null,f)},E:Zc,Ab:function(a){if(0===a)return xc(hd());a=fd(a);return xc(hd()[a])},A:function(a,b){b=kd(a,b);for(var c=b[0],f=c.name+"_$"+b.slice(1).map(function(w){return w.name}).join("_")+"$",h=["retType"],l=[c],n="",q=0;q<a-1;++q)n+=(0!==q?", ":"")+"arg"+q,h.push("argType"+
q),l.push(b[1+q]);f="return function "+Pb("methodCaller_"+f)+"(handle, name, destructors, args) {\n";var x=0;for(q=0;q<a-1;++q)f+=" var arg"+q+" = argType"+q+".readValueFromPointer(args"+(x?"+"+x:"")+");\n",x+=b[q+1].argPackAdvance;f+=" var rv = handle[name]("+n+");\n";for(q=0;q<a-1;++q)b[q+1].deleteObject&&(f+=" argType"+q+".deleteObject(arg"+q+");\n");c.Vf||(f+=" return retType.toWireType(destructors, rv);\n");h.push(f+"};\n");a=Uc(h).apply(null,l);return jd(a)},K:function(a,b){a=dd(a);
b=dd(b);return xc(a[b])},G:function(a){4<a&&(Yc[a].hf+=1)},sb:function(a,b,c,f){a=dd(a);var h=ld[b];if(!h){h="";for(var l=0;l<b;++l)h+=(0!==l?", ":"")+"arg"+l;var n="return function emval_allocator_"+b+"(constructor, argTypes, args) {\n";for(l=0;l<b;++l)n+="var argType"+l+" = requireRegisteredType(Module['HEAP32'][(argTypes >>> 2) + "+l+'], "parameter '+l+'");\nvar arg'+l+" = argType"+l+".readValueFromPointer(args);\nargs += argType"+l+"['argPackAdvance'];\n";h=(new Function("requireRegisteredType",
"Module","__emval_register",n+("var obj = new constructor("+h+");\nreturn __emval_register(obj);\n}\n")))(ad,t,xc);ld[b]=h}return h(a,c,f)},ib:function(){return xc([])},Ma:function(a){return xc(fd(a))},jb:function(){return xc({})},hb:function(a){a=dd(a);return!a},lb:function(a){Kb(Yc[a].value);Zc(a)},w:function(a,b,c){a=dd(a);b=dd(b);c=dd(c);a[b]=c},s:function(a,b){a=ad(a,"_emval_take_value");a=a.readValueFromPointer(b);return xc(a)},d:function(){La()},qb:function(a,b){if(0===a)a=Date.now();else if(1===
a||4===a)a=md();else return P[ie()>>2]=28,-1;P[b>>2]=a/1E3|0;P[b+4>>2]=a%1E3*1E6|0;return 0},Zc:function(a){W.activeTexture(a)},_c:function(a,b){W.attachShader(sd[a],vd[b])},$c:function(a,b,c){W.bindAttribLocation(sd[a],b,Xa(c))},_:function(a,b){35051==a?W.ef=b:35052==a&&(W.Ce=b);W.bindBuffer(a,rd[b])},Z:function(a,b){W.bindFramebuffer(a,td[b])},bc:function(a,b){W.bindRenderbuffer(a,ud[b])},Pb:function(a,b){W.bindSampler(a,xd[b])},$:function(a,b){W.bindTexture(a,ha[b])},vc:function(a){W.bindVertexArray(wd[a])},
yc:function(a){W.bindVertexArray(wd[a])},aa:function(a,b,c,f){W.blendColor(a,b,c,f)},ba:function(a){W.blendEquation(a)},ca:function(a,b){W.blendFunc(a,b)},Wb:function(a,b,c,f,h,l,n,q,x,w){W.blitFramebuffer(a,b,c,f,h,l,n,q,x,w)},da:function(a,b,c,f){2<=v.version?c?W.bufferData(a,H,f,c,b):W.bufferData(a,b,f):W.bufferData(a,c?H.subarray(c,c+b):b,f)},ea:function(a,b,c,f){2<=v.version?W.bufferSubData(a,b,H,f,c):W.bufferSubData(a,b,H.subarray(f,f+c))},cc:function(a){return W.checkFramebufferStatus(a)},
L:function(a){W.clear(a)},Y:function(a,b,c,f){W.clearColor(a,b,c,f)},P:function(a){W.clearStencil(a)},fb:function(a,b,c,f){return W.clientWaitSync(yd[a],b,(c>>>0)+4294967296*f)},fa:function(a,b,c,f){W.colorMask(!!a,!!b,!!c,!!f)},ga:function(a){W.compileShader(vd[a])},ha:function(a,b,c,f,h,l,n,q){2<=v.version?W.Ce?W.compressedTexImage2D(a,b,c,f,h,l,n,q):W.compressedTexImage2D(a,b,c,f,h,l,H,q,n):W.compressedTexImage2D(a,b,c,f,h,l,q?H.subarray(q,q+n):null)},ia:function(a,b,c,f,h,l,n,q,x){2<=v.version?
W.Ce?W.compressedTexSubImage2D(a,b,c,f,h,l,n,q,x):W.compressedTexSubImage2D(a,b,c,f,h,l,n,H,x,q):W.compressedTexSubImage2D(a,b,c,f,h,l,n,x?H.subarray(x,x+q):null)},ja:function(a,b,c,f,h,l,n,q){W.copyTexSubImage2D(a,b,c,f,h,l,n,q)},ka:function(){var a=Ed(sd),b=W.createProgram();b.name=a;b.Ve=b.Te=b.Ue=0;b.jf=1;sd[a]=b;return a},la:function(a){var b=Ed(vd);vd[b]=W.createShader(a);return b},ma:function(a){W.cullFace(a)},na:function(a,b){for(var c=0;c<a;c++){var f=P[b+4*c>>2],h=rd[f];h&&(W.deleteBuffer(h),
h.name=0,rd[f]=null,f==W.ef&&(W.ef=0),f==W.Ce&&(W.Ce=0))}},dc:function(a,b){for(var c=0;c<a;++c){var f=P[b+4*c>>2],h=td[f];h&&(W.deleteFramebuffer(h),h.name=0,td[f]=null)}},oa:function(a){if(a){var b=sd[a];b?(W.deleteProgram(b),b.name=0,sd[a]=null):Cd(1281)}},ec:function(a,b){for(var c=0;c<a;c++){var f=P[b+4*c>>2],h=ud[f];h&&(W.deleteRenderbuffer(h),h.name=0,ud[f]=null)}},Qb:function(a,b){for(var c=0;c<a;c++){var f=P[b+4*c>>2],h=xd[f];h&&(W.deleteSampler(h),h.name=0,xd[f]=null)}},pa:function(a){if(a){var b=
vd[a];b?(W.deleteShader(b),vd[a]=null):Cd(1281)}},Yb:function(a){if(a){var b=yd[a];b?(W.deleteSync(b),b.name=0,yd[a]=null):Cd(1281)}},qa:function(a,b){for(var c=0;c<a;c++){var f=P[b+4*c>>2],h=ha[f];h&&(W.deleteTexture(h),h.name=0,ha[f]=null)}},wc:function(a,b){for(var c=0;c<a;c++){var f=P[b+4*c>>2];W.deleteVertexArray(wd[f]);wd[f]=null}},zc:function(a,b){for(var c=0;c<a;c++){var f=P[b+4*c>>2];W.deleteVertexArray(wd[f]);wd[f]=null}},ra:function(a){W.depthMask(!!a)},sa:function(a){W.disable(a)},ta:function(a){W.disableVertexAttribArray(a)},
ua:function(a,b,c){W.drawArrays(a,b,c)},tc:function(a,b,c,f){W.drawArraysInstanced(a,b,c,f)},rc:function(a,b,c,f,h){W.nf.drawArraysInstancedBaseInstanceWEBGL(a,b,c,f,h)},pc:function(a,b){for(var c=Jd[a],f=0;f<a;f++)c[f]=P[b+4*f>>2];W.drawBuffers(c)},va:function(a,b,c,f){W.drawElements(a,b,c,f)},uc:function(a,b,c,f,h){W.drawElementsInstanced(a,b,c,f,h)},sc:function(a,b,c,f,h,l,n){W.nf.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a,b,c,f,h,l,n)},jc:function(a,b,c,f,h,l){W.drawElements(a,f,h,l)},
wa:function(a){W.enable(a)},xa:function(a){W.enableVertexAttribArray(a)},Ub:function(a,b){return(a=W.fenceSync(a,b))?(b=Ed(yd),a.name=b,yd[b]=a,b):0},ya:function(){W.finish()},za:function(){W.flush()},fc:function(a,b,c,f){W.framebufferRenderbuffer(a,b,c,ud[f])},gc:function(a,b,c,f,h){W.framebufferTexture2D(a,b,c,ha[f],h)},Aa:function(a){W.frontFace(a)},Ba:function(a,b){Kd(a,b,"createBuffer",rd)},hc:function(a,b){Kd(a,b,"createFramebuffer",td)},ic:function(a,b){Kd(a,b,"createRenderbuffer",ud)},Rb:function(a,
b){Kd(a,b,"createSampler",xd)},Ca:function(a,b){Kd(a,b,"createTexture",ha)},xc:function(a,b){Kd(a,b,"createVertexArray",wd)},Ac:function(a,b){Kd(a,b,"createVertexArray",wd)},Zb:function(a){W.generateMipmap(a)},Da:function(a,b,c){c?P[c>>2]=W.getBufferParameter(a,b):Cd(1281)},Ea:function(){var a=W.getError()||Dd;Dd=0;return a},_b:function(a,b,c,f){a=W.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;P[f>>2]=a},F:function(a,b){Ld(a,b)},
Fa:function(a,b,c,f){a=W.getProgramInfoLog(sd[a]);null===a&&(a="(unknown error)");b=0<b&&f?ra(a,H,f,b):0;c&&(P[c>>2]=b)},Ga:function(a,b,c){if(c)if(a>=qd)Cd(1281);else if(a=sd[a],35716==b)a=W.getProgramInfoLog(a),null===a&&(a="(unknown error)"),P[c>>2]=a.length+1;else if(35719==b){if(!a.Ve)for(b=0;b<W.getProgramParameter(a,35718);++b)a.Ve=Math.max(a.Ve,W.getActiveUniform(a,b).name.length+1);P[c>>2]=a.Ve}else if(35722==b){if(!a.Te)for(b=0;b<W.getProgramParameter(a,35721);++b)a.Te=Math.max(a.Te,W.getActiveAttrib(a,
b).name.length+1);P[c>>2]=a.Te}else if(35381==b){if(!a.Ue)for(b=0;b<W.getProgramParameter(a,35382);++b)a.Ue=Math.max(a.Ue,W.getActiveUniformBlockName(a,b).length+1);P[c>>2]=a.Ue}else P[c>>2]=W.getProgramParameter(a,b);else Cd(1281)},$b:function(a,b,c){c?P[c>>2]=W.getRenderbufferParameter(a,b):Cd(1281)},Ha:function(a,b,c,f){a=W.getShaderInfoLog(vd[a]);null===a&&(a="(unknown error)");b=0<b&&f?ra(a,H,f,b):0;c&&(P[c>>2]=b)},Mb:function(a,b,c,f){a=W.getShaderPrecisionFormat(a,b);P[c>>2]=a.rangeMin;P[c+
4>>2]=a.rangeMax;P[f>>2]=a.precision},Ia:function(a,b,c){c?35716==b?(a=W.getShaderInfoLog(vd[a]),null===a&&(a="(unknown error)"),P[c>>2]=a?a.length+1:0):35720==b?(a=W.getShaderSource(vd[a]),P[c>>2]=a?a.length+1:0):P[c>>2]=W.getShaderParameter(vd[a],b):Cd(1281)},J:function(a){var b=zd[a];if(!b){switch(a){case 7939:b=W.getSupportedExtensions()||[];b=b.concat(b.map(function(f){return"GL_"+f}));b=Md(b.join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=W.getParameter(a))||Cd(1280);b=b&&Md(b);
break;case 7938:b=W.getParameter(7938);b=2<=v.version?"OpenGL ES 3.0 ("+b+")":"OpenGL ES 2.0 ("+b+")";b=Md(b);break;case 35724:b=W.getParameter(35724);var c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==c&&(3==c[1].length&&(c[1]+="0"),b="OpenGL ES GLSL ES "+c[1]+" ("+b+")");b=Md(b);break;default:Cd(1280)}zd[a]=b}return b},eb:function(a,b){if(2>v.version)return Cd(1282),0;var c=Ad[a];if(c)return 0>b||b>=c.length?(Cd(1281),0):c[b];switch(a){case 7939:return c=W.getSupportedExtensions()||
[],c=c.concat(c.map(function(f){return"GL_"+f})),c=c.map(function(f){return Md(f)}),c=Ad[a]=c,0>b||b>=c.length?(Cd(1281),0):c[b];default:return Cd(1280),0}},Ja:function(a,b){function c(A){return"]"==A.slice(-1)&&A.lastIndexOf("[")}b=Xa(b);a=sd[a];var f=a.Ze,h=a.wg,l,n=0,q=b,x=c(b);if(!f)for(a.Ze=f={},a.uf={},l=0;l<W.getProgramParameter(a,35718);++l){var w=W.getActiveUniform(a,l);var G=w.name;w=w.size;var K=c(G);K=0<K?G.slice(0,K):G;var O=a.jf;a.jf+=w;h[K]=[w,O];for(G=0;G<w;++G)f[O]=G,a.uf[O++]=K}0<
x&&(n=parseInt(b.slice(x+1))>>>0,q=b.slice(0,x));return(h=h[q])&&n<h[0]&&(n+=h[1],f[n]=f[n]||W.getUniformLocation(a,b))?n:-1},Nb:function(a,b,c){for(var f=Jd[b],h=0;h<b;h++)f[h]=P[c+4*h>>2];W.invalidateFramebuffer(a,f)},Ob:function(a,b,c,f,h,l,n){for(var q=Jd[b],x=0;x<b;x++)q[x]=P[c+4*x>>2];W.invalidateSubFramebuffer(a,q,f,h,l,n)},Vb:function(a){return W.isSync(yd[a])},Ka:function(a){return(a=ha[a])?W.isTexture(a):0},La:function(a){W.lineWidth(a)},Na:function(a){a=sd[a];W.linkProgram(a);a.Ze=0;a.wg=
{}},nc:function(a,b,c,f,h,l){W.sf.multiDrawArraysInstancedBaseInstanceWEBGL(a,P,b>>2,P,c>>2,P,f>>2,mb,h>>2,l)},oc:function(a,b,c,f,h,l,n,q){W.sf.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,P,b>>2,c,P,f>>2,P,h>>2,P,l>>2,mb,n>>2,q)},Oa:function(a,b){3317==a&&(Bd=b);W.pixelStorei(a,b)},qc:function(a){W.readBuffer(a)},Pa:function(a,b,c,f,h,l,n){if(2<=v.version)if(W.ef)W.readPixels(a,b,c,f,h,l,n);else{var q=Od(l);W.readPixels(a,b,c,f,h,l,q,n>>31-Math.clz32(q.BYTES_PER_ELEMENT))}else(n=Pd(l,
h,c,f,n))?W.readPixels(a,b,c,f,h,l,n):Cd(1280)},ac:function(a,b,c,f){W.renderbufferStorage(a,b,c,f)},Xb:function(a,b,c,f,h){W.renderbufferStorageMultisample(a,b,c,f,h)},Sb:function(a,b,c){W.samplerParameteri(xd[a],b,c)},Tb:function(a,b,c){W.samplerParameteri(xd[a],b,P[c>>2])},Qa:function(a,b,c,f){W.scissor(a,b,c,f)},Ra:function(a,b,c,f){for(var h="",l=0;l<b;++l){var n=f?P[f+4*l>>2]:-1;h+=Xa(P[c+4*l>>2],0>n?void 0:n)}W.shaderSource(vd[a],h)},Sa:function(a,b,c){W.stencilFunc(a,b,c)},Ta:function(a,b,
c,f){W.stencilFuncSeparate(a,b,c,f)},Ua:function(a){W.stencilMask(a)},Va:function(a,b){W.stencilMaskSeparate(a,b)},Wa:function(a,b,c){W.stencilOp(a,b,c)},Xa:function(a,b,c,f){W.stencilOpSeparate(a,b,c,f)},Ya:function(a,b,c,f,h,l,n,q,x){if(2<=v.version)if(W.Ce)W.texImage2D(a,b,c,f,h,l,n,q,x);else if(x){var w=Od(q);W.texImage2D(a,b,c,f,h,l,n,q,w,x>>31-Math.clz32(w.BYTES_PER_ELEMENT))}else W.texImage2D(a,b,c,f,h,l,n,q,null);else W.texImage2D(a,b,c,f,h,l,n,q,x?Pd(q,n,f,h,x):null)},Za:function(a,b,c){W.texParameterf(a,
b,c)},_a:function(a,b,c){W.texParameterf(a,b,S[c>>2])},$a:function(a,b,c){W.texParameteri(a,b,c)},ab:function(a,b,c){W.texParameteri(a,b,P[c>>2])},kc:function(a,b,c,f,h){W.texStorage2D(a,b,c,f,h)},bb:function(a,b,c,f,h,l,n,q,x){if(2<=v.version)if(W.Ce)W.texSubImage2D(a,b,c,f,h,l,n,q,x);else if(x){var w=Od(q);W.texSubImage2D(a,b,c,f,h,l,n,q,w,x>>31-Math.clz32(w.BYTES_PER_ELEMENT))}else W.texSubImage2D(a,b,c,f,h,l,n,q,null);else w=null,x&&(w=Pd(q,n,h,l,x)),W.texSubImage2D(a,b,c,f,h,l,n,q,w)},cb:function(a,
b){W.uniform1f(Z(a),b)},db:function(a,b,c){if(2<=v.version)W.uniform1fv(Z(a),S,c>>2,b);else{if(288>=b)for(var f=Qd[b-1],h=0;h<b;++h)f[h]=S[c+4*h>>2];else f=S.subarray(c>>2,c+4*b>>2);W.uniform1fv(Z(a),f)}},Vc:function(a,b){W.uniform1i(Z(a),b)},Wc:function(a,b,c){if(2<=v.version)W.uniform1iv(Z(a),P,c>>2,b);else{if(288>=b)for(var f=Rd[b-1],h=0;h<b;++h)f[h]=P[c+4*h>>2];else f=P.subarray(c>>2,c+4*b>>2);W.uniform1iv(Z(a),f)}},Xc:function(a,b,c){W.uniform2f(Z(a),b,c)},Yc:function(a,b,c){if(2<=v.version)W.uniform2fv(Z(a),
S,c>>2,2*b);else{if(144>=b)for(var f=Qd[2*b-1],h=0;h<2*b;h+=2)f[h]=S[c+4*h>>2],f[h+1]=S[c+(4*h+4)>>2];else f=S.subarray(c>>2,c+8*b>>2);W.uniform2fv(Z(a),f)}},Uc:function(a,b,c){W.uniform2i(Z(a),b,c)},Tc:function(a,b,c){if(2<=v.version)W.uniform2iv(Z(a),P,c>>2,2*b);else{if(144>=b)for(var f=Rd[2*b-1],h=0;h<2*b;h+=2)f[h]=P[c+4*h>>2],f[h+1]=P[c+(4*h+4)>>2];else f=P.subarray(c>>2,c+8*b>>2);W.uniform2iv(Z(a),f)}},Sc:function(a,b,c,f){W.uniform3f(Z(a),b,c,f)},Rc:function(a,b,c){if(2<=v.version)W.uniform3fv(Z(a),
S,c>>2,3*b);else{if(96>=b)for(var f=Qd[3*b-1],h=0;h<3*b;h+=3)f[h]=S[c+4*h>>2],f[h+1]=S[c+(4*h+4)>>2],f[h+2]=S[c+(4*h+8)>>2];else f=S.subarray(c>>2,c+12*b>>2);W.uniform3fv(Z(a),f)}},Qc:function(a,b,c,f){W.uniform3i(Z(a),b,c,f)},Pc:function(a,b,c){if(2<=v.version)W.uniform3iv(Z(a),P,c>>2,3*b);else{if(96>=b)for(var f=Rd[3*b-1],h=0;h<3*b;h+=3)f[h]=P[c+4*h>>2],f[h+1]=P[c+(4*h+4)>>2],f[h+2]=P[c+(4*h+8)>>2];else f=P.subarray(c>>2,c+12*b>>2);W.uniform3iv(Z(a),f)}},Oc:function(a,b,c,f,h){W.uniform4f(Z(a),
b,c,f,h)},Nc:function(a,b,c){if(2<=v.version)W.uniform4fv(Z(a),S,c>>2,4*b);else{if(72>=b){var f=Qd[4*b-1],h=S;c>>=2;for(var l=0;l<4*b;l+=4){var n=c+l;f[l]=h[n];f[l+1]=h[n+1];f[l+2]=h[n+2];f[l+3]=h[n+3]}}else f=S.subarray(c>>2,c+16*b>>2);W.uniform4fv(Z(a),f)}},Bc:function(a,b,c,f,h){W.uniform4i(Z(a),b,c,f,h)},Cc:function(a,b,c){if(2<=v.version)W.uniform4iv(Z(a),P,c>>2,4*b);else{if(72>=b)for(var f=Rd[4*b-1],h=0;h<4*b;h+=4)f[h]=P[c+4*h>>2],f[h+1]=P[c+(4*h+4)>>2],f[h+2]=P[c+(4*h+8)>>2],f[h+3]=P[c+(4*
h+12)>>2];else f=P.subarray(c>>2,c+16*b>>2);W.uniform4iv(Z(a),f)}},Dc:function(a,b,c,f){if(2<=v.version)W.uniformMatrix2fv(Z(a),!!c,S,f>>2,4*b);else{if(72>=b)for(var h=Qd[4*b-1],l=0;l<4*b;l+=4)h[l]=S[f+4*l>>2],h[l+1]=S[f+(4*l+4)>>2],h[l+2]=S[f+(4*l+8)>>2],h[l+3]=S[f+(4*l+12)>>2];else h=S.subarray(f>>2,f+16*b>>2);W.uniformMatrix2fv(Z(a),!!c,h)}},Ec:function(a,b,c,f){if(2<=v.version)W.uniformMatrix3fv(Z(a),!!c,S,f>>2,9*b);else{if(32>=b)for(var h=Qd[9*b-1],l=0;l<9*b;l+=9)h[l]=S[f+4*l>>2],h[l+1]=S[f+
(4*l+4)>>2],h[l+2]=S[f+(4*l+8)>>2],h[l+3]=S[f+(4*l+12)>>2],h[l+4]=S[f+(4*l+16)>>2],h[l+5]=S[f+(4*l+20)>>2],h[l+6]=S[f+(4*l+24)>>2],h[l+7]=S[f+(4*l+28)>>2],h[l+8]=S[f+(4*l+32)>>2];else h=S.subarray(f>>2,f+36*b>>2);W.uniformMatrix3fv(Z(a),!!c,h)}},Fc:function(a,b,c,f){if(2<=v.version)W.uniformMatrix4fv(Z(a),!!c,S,f>>2,16*b);else{if(18>=b){var h=Qd[16*b-1],l=S;f>>=2;for(var n=0;n<16*b;n+=16){var q=f+n;h[n]=l[q];h[n+1]=l[q+1];h[n+2]=l[q+2];h[n+3]=l[q+3];h[n+4]=l[q+4];h[n+5]=l[q+5];h[n+6]=l[q+6];h[n+7]=
l[q+7];h[n+8]=l[q+8];h[n+9]=l[q+9];h[n+10]=l[q+10];h[n+11]=l[q+11];h[n+12]=l[q+12];h[n+13]=l[q+13];h[n+14]=l[q+14];h[n+15]=l[q+15]}}else h=S.subarray(f>>2,f+64*b>>2);W.uniformMatrix4fv(Z(a),!!c,h)}},Gc:function(a){a=sd[a];W.useProgram(a);W.Df=a},Hc:function(a,b){W.vertexAttrib1f(a,b)},Ic:function(a,b){W.vertexAttrib2f(a,S[b>>2],S[b+4>>2])},Jc:function(a,b){W.vertexAttrib3f(a,S[b>>2],S[b+4>>2],S[b+8>>2])},Kc:function(a,b){W.vertexAttrib4f(a,S[b>>2],S[b+4>>2],S[b+8>>2],S[b+12>>2])},lc:function(a,b){W.vertexAttribDivisor(a,
b)},mc:function(a,b,c,f,h){W.vertexAttribIPointer(a,b,c,f,h)},Lc:function(a,b,c,f,h,l){W.vertexAttribPointer(a,b,c,!!f,h,l)},Mc:function(a,b,c,f){W.viewport(a,b,c,f)},gb:function(a,b,c,f){W.waitSync(yd[a],b,(c>>>0)+4294967296*f)},e:function(a,b){je(a,b||1);throw"longjmp";},pb:function(a){var b=H.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var f=b*(1+.2/c);f=Math.min(f,a+100663296);f=Math.max(a,f);0<f%65536&&(f+=65536-f%65536);a:{try{Sa.grow(Math.min(2147483648,f)-gb.byteLength+65535>>>
16);ob();var h=1;break a}catch(l){}h=void 0}if(h)return!0}return!1},kb:function(){return v?v.Rf:0},ub:function(a,b){var c=0;Td().forEach(function(f,h){var l=b+c;h=P[a+4*h>>2]=l;for(l=0;l<f.length;++l)lb[h++>>0]=f.charCodeAt(l);lb[h>>0]=0;c+=f.length+1});return 0},vb:function(a,b){var c=Td();P[a>>2]=c.length;var f=0;c.forEach(function(h){f+=h.length+1});P[b>>2]=f;return 0},Gb:function(a){if(!noExitRuntime){if(t.onExit)t.onExit(a);Ta=!0}xa(a,new Ka(a))},H:function(){return 0},tb:function(a,b){a=1==
a||2==a?2:La();lb[b>>0]=a;return 0},nb:function(a,b,c,f,h,l){a=Ib.Nf(a);b=Ib.Ef(a,b,c,f);P[l>>2]=b;return 0},wb:function(a,b,c,f){a=Ib.Nf(a);b=Ib.Ef(a,b,c);P[f>>2]=b;return 0},mb:function(){},N:function(a,b,c,f){for(var h=0,l=0;l<c;l++){for(var n=P[b+8*l>>2],q=P[b+(8*l+4)>>2],x=0;x<q;x++){var w=H[n+x],G=Hb[a];0===w||10===w?((1===a?Ma:Pa)(Wa(G,0)),G.length=0):G.push(w)}h+=q}P[f>>2]=h;return 0},a:function(){return Qa},l:ke,o:le,g:me,D:ne,Lb:oe,W:pe,V:qe,U:re,n:se,r:te,i:ue,q:ve,Jb:we,Hb:xe,Ib:ye,b:function(a){Qa=
a},rb:function(a,b,c,f){return $d(a,b,c,f)}};
(function(){function a(h){t.asm=h.exports;Sa=t.asm.ad;ob();pb=t.asm.dd;rb.unshift(t.asm.bd);ub--;t.monitorRunDependencies&&t.monitorRunDependencies(ub);0==ub&&(null!==vb&&(clearInterval(vb),vb=null),wb&&(h=wb,wb=null,h()))}function b(h){a(h.instance)}function c(h){return Cb().then(function(l){return WebAssembly.instantiate(l,f)}).then(h,function(l){Pa("failed to asynchronously prepare wasm: "+l);La(l)})}var f={a:ze};ub++;t.monitorRunDependencies&&t.monitorRunDependencies(ub);if(t.instantiateWasm)try{return t.instantiateWasm(f,
a)}catch(h){return Pa("Module.instantiateWasm callback failed with error: "+h),!1}(function(){return Ra||"function"!==typeof WebAssembly.instantiateStreaming||xb()||yb.startsWith("file://")||"function"!==typeof fetch?c(b):fetch(yb,{credentials:"same-origin"}).then(function(h){return WebAssembly.instantiateStreaming(h,f).then(b,function(l){Pa("wasm streaming compile failed: "+l);Pa("falling back to ArrayBuffer instantiation");return c(b)})})})().catch(ea);return{}})();
t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.bd).apply(null,arguments)};var he=t._memset=function(){return(he=t._memset=t.asm.cd).apply(null,arguments)},Nd=t._malloc=function(){return(Nd=t._malloc=t.asm.ed).apply(null,arguments)},Kc=t._free=function(){return(Kc=t._free=t.asm.fd).apply(null,arguments)},ie=t.___errno_location=function(){return(ie=t.___errno_location=t.asm.gd).apply(null,arguments)},Jc=t.___getTypeName=function(){return(Jc=t.___getTypeName=t.asm.hd).apply(null,arguments)};
t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.id).apply(null,arguments)};var Ae=t.stackSave=function(){return(Ae=t.stackSave=t.asm.jd).apply(null,arguments)},Be=t.stackRestore=function(){return(Be=t.stackRestore=t.asm.kd).apply(null,arguments)},je=t._setThrew=function(){return(je=t._setThrew=t.asm.ld).apply(null,arguments)},ge=t._memalign=function(){return(ge=t._memalign=t.asm.md).apply(null,arguments)};
Uint32Array)return e;if(e instanceof Array&&e[0]instanceof Float32Array)return e.map(h)}function n(e){if(void 0===e)return 1;var d=parseFloat(e);return e&&-1!==e.indexOf("%")?d/100:d}function q(e){return Math.round(Math.max(0,Math.min(e||0,255)))}function w(e,d){d&&d._ck||a._free(e)}function x(e,d,g){if(!e||!e.length)return V;if(e&&e._ck)return e.byteOffset;var m=a[d].BYTES_PER_ELEMENT;g||(g=a._malloc(e.length*m));a[d].set(e,g/m);return g}function J(e){var d={de:V,count:e.length,Le:a.ColorType.RGBA_F32};
if(e instanceof Float32Array)d.de=x(e,"HEAPF32"),d.count=e.length/4;else if(e instanceof Uint32Array)d.de=x(e,"HEAPU32"),d.Le=a.ColorType.RGBA_8888;else if(e instanceof Array){if(e&&e.length){for(var g=a._malloc(16*e.length),m=0,r=g/4,y=0;y<e.length;y++)for(var D=0;4>D;D++)a.HEAPF32[r+m]=e[y][D],m++;e=g}else e=V;d.de=e}else throw"Invalid argument to copyFlexibleColorArray, Not a color array "+typeof e;return d}function K(e){if(!e)return V;if(e.length){if(6===e.length||9===e.length)return x(e,"HEAPF32",
Oa),6===e.length&&a.HEAPF32.set(Fd,6+Oa/4),Oa;if(16===e.length){var d=yb.toTypedArray();d[0]=e[0];d[1]=e[1];d[2]=e[3];d[3]=e[4];d[4]=e[5];d[5]=e[7];d[6]=e[12];d[7]=e[13];d[8]=e[15];return Oa}throw"invalid matrix size";}d=yb.toTypedArray();d[0]=e.m11;d[1]=e.m21;d[2]=e.m41;d[3]=e.m12;d[4]=e.m22;d[5]=e.m42;d[6]=e.m14;d[7]=e.m24;d[8]=e.m44;return Oa}function Q(e){if(!e)return V;var d=Yb.toTypedArray();if(e.length){if(16!==e.length&&6!==e.length&&9!==e.length)throw"invalid matrix size";if(16===e.length)return x(e,
"HEAPF32",Za);d.fill(0);d[0]=e[0];d[1]=e[1];d[3]=e[2];d[4]=e[3];d[5]=e[4];d[7]=e[5];d[12]=e[6];d[13]=e[7];d[15]=e[8];6===e.length&&(d[12]=0,d[13]=0,d[15]=1);return Za}d[0]=e.m11;d[1]=e.m21;d[2]=e.m31;d[3]=e.m41;d[4]=e.m12;d[5]=e.m22;d[6]=e.m32;d[7]=e.m42;d[8]=e.m13;d[9]=e.m23;d[10]=e.m33;d[11]=e.m43;d[12]=e.m14;d[13]=e.m24;d[14]=e.m34;d[15]=e.m44;return Za}function A(e,d){return x(e,"HEAPF32",d||fb)}function L(e,d,g,m){var r=Zb.toTypedArray();r[0]=e;r[1]=d;r[2]=g;r[3]=m;return fb}function S(e){for(var d=
new Float32Array(4),g=0;4>g;g++)d[g]=a.HEAPF32[e/4+g];return d}function T(e,d){return x(e,"HEAPF32",d||ia)}function oa(e,d){return x(e,"HEAPF32",d||$b)}function ta(){for(var e=0,d=0;d<arguments.length-1;d+=2)e+=arguments[d]*arguments[d+1];return e}function gb(e,d,g){for(var m=Array(e.length),r=0;r<g;r++)for(var y=0;y<g;y++){for(var D=0,I=0;I<g;I++)D+=e[g*r+I]*d[g*I+y];m[r*g+y]=D}return m}function hb(e,d){for(var g=gb(d[0],d[1],e),m=2;m<d.length;)g=gb(g,d[m],e),m++;return g}a.Color=function(e,d,g,
m){void 0===m&&(m=1);return a.Color4f(q(e)/255,q(d)/255,q(g)/255,m)};a.ColorAsInt=function(e,d,g,m){void 0===m&&(m=255);return(q(m)<<24|q(e)<<16|q(d)<<8|q(g)<<0&268435455)>>>0};a.Color4f=function(e,d,g,m){void 0===m&&(m=1);return Float32Array.of(e,d,g,m)};Object.defineProperty(a,"TRANSPARENT",{get:function(){return a.Color4f(0,0,0,0)}});Object.defineProperty(a,"BLACK",{get:function(){return a.Color4f(0,0,0,1)}});Object.defineProperty(a,"WHITE",{get:function(){return a.Color4f(1,1,1,1)}});Object.defineProperty(a,
"RED",{get:function(){return a.Color4f(1,0,0,1)}});Object.defineProperty(a,"GREEN",{get:function(){return a.Color4f(0,1,0,1)}});Object.defineProperty(a,"BLUE",{get:function(){return a.Color4f(0,0,1,1)}});Object.defineProperty(a,"YELLOW",{get:function(){return a.Color4f(1,1,0,1)}});Object.defineProperty(a,"CYAN",{get:function(){return a.Color4f(0,1,1,1)}});Object.defineProperty(a,"MAGENTA",{get:function(){return a.Color4f(1,0,1,1)}});a.getColorComponents=function(e){return[Math.floor(255*e[0]),Math.floor(255*
e[1]),Math.floor(255*e[2]),e[3]]};a.parseColorString=function(e,d){e=e.toLowerCase();if(e.startsWith("#")){d=255;switch(e.length){case 9:d=parseInt(e.slice(7,9),16);case 7:var g=parseInt(e.slice(1,3),16);var m=parseInt(e.slice(3,5),16);var r=parseInt(e.slice(5,7),16);break;case 5:d=17*parseInt(e.slice(4,5),16);case 4:g=17*parseInt(e.slice(1,2),16),m=17*parseInt(e.slice(2,3),16),r=17*parseInt(e.slice(3,4),16)}return a.Color(g,m,r,d/255)}return e.startsWith("rgba")?(e=e.slice(5,-1),e=e.split(","),a.Color(+e[0],
+e[1],+e[2],n(e[3]))):e.startsWith("rgb")?(e=e.slice(4,-1),e=e.split(","),a.Color(+e[0],+e[1],+e[2],n(e[3]))):e.startsWith("gray(")||e.startsWith("hsl")||!d||(e=d[e],void 0===e)?a.BLACK:e};a.multiplyByAlpha=function(e,d){e=e.slice();e[3]=Math.max(0,Math.min(e[3]*d,1));return e};a.Malloc=function(e,d){var g=a._malloc(d*e.BYTES_PER_ELEMENT);return{_ck:!0,length:d,byteOffset:g,pe:null,subarray:function(m,r){m=this.toTypedArray().subarray(m,r);m._ck=!0;return m},toTypedArray:function(){if(this.pe&&this.pe.length)return this.pe;
this.pe=new e(a.HEAPU8.buffer,g,d);this.pe._ck=!0;return this.pe}}};a.Free=function(e){a._free(e.byteOffset);e.byteOffset=V;e.toTypedArray=null;e.pe=null};var Oa=V,yb,Za=V,Yb,fb=V,Zb,Ha,ia=V,Ic,Ta=V,Jc,ac=V,Kc,bc=V,Lc,cc=V,Mc,$b=V,Nc,Oc=V,Fd=Float32Array.of(0,0,1),V=0;a.onRuntimeInitialized=function(){function e(d,g,m,r,y,D){D||(D=4*r.width,r.colorType===a.ColorType.RGBA_F16?D*=2:r.colorType===a.ColorType.RGBA_F32&&(D*=4));var I=D*r.height;var N=y?y.byteOffset:a._malloc(I);if(!d._readPixels(r,N,D,
g,m))return y||a._free(N),null;if(y)return y.toTypedArray();switch(r.colorType){case a.ColorType.RGBA_8888:case a.ColorType.RGBA_F16:d=(new Uint8Array(a.HEAPU8.buffer,N,I)).slice();break;case a.ColorType.RGBA_F32:d=(new Float32Array(a.HEAPU8.buffer,N,I)).slice();break;default:return null}a._free(N);return d}Zb=a.Malloc(Float32Array,4);fb=Zb.byteOffset;Yb=a.Malloc(Float32Array,16);Za=Yb.byteOffset;yb=a.Malloc(Float32Array,9);Oa=yb.byteOffset;Mc=a.Malloc(Float32Array,12);$b=Mc.byteOffset;Nc=a.Malloc(Float32Array,
12);Oc=Nc.byteOffset;Ha=a.Malloc(Float32Array,4);ia=Ha.byteOffset;Ic=a.Malloc(Float32Array,4);Ta=Ic.byteOffset;Jc=a.Malloc(Float32Array,3);ac=Jc.byteOffset;Kc=a.Malloc(Float32Array,3);bc=Kc.byteOffset;Lc=a.Malloc(Int32Array,4);cc=Lc.byteOffset;a.ColorSpace.SRGB=a.ColorSpace._MakeSRGB();a.ColorSpace.DISPLAY_P3=a.ColorSpace._MakeDisplayP3();a.ColorSpace.ADOBE_RGB=a.ColorSpace._MakeAdobeRGB();a.GlyphRunFlags={IsWhiteSpace:a._GlyphRunFlags_isWhiteSpace};a.Path.MakeFromCmds=function(d){var g=x(d,"HEAPF32"),
m=a.Path._MakeFromCmds(g,d.length);w(g,d);return m};a.Path.MakeFromVerbsPointsWeights=function(d,g,m){var r=x(d,"HEAPU8"),y=x(g,"HEAPF32"),D=x(m,"HEAPF32"),I=a.Path._MakeFromVerbsPointsWeights(r,d.length,y,g.length,D,m&&m.length||0);w(r,d);w(y,g);w(D,m);return I};a.Path.prototype.addArc=function(d,g,m){d=T(d);this._addArc(d,g,m);return this};a.Path.prototype.addOval=function(d,g,m){void 0===m&&(m=1);d=T(d);this._addOval(d,!!g,m);return this};a.Path.prototype.addPath=function(){var d=Array.prototype.slice.call(arguments),
g=d[0],m=!1;"boolean"===typeof d[d.length-1]&&(m=d.pop());if(1===d.length)this._addPath(g,1,0,0,0,1,0,0,0,1,m);else if(2===d.length)d=d[1],this._addPath(g,d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1,m);else if(7===d.length||10===d.length)this._addPath(g,d[1],d[2],d[3],d[4],d[5],d[6],d[7]||0,d[8]||0,d[9]||1,m);else return null;return this};a.Path.prototype.addPoly=function(d,g){var m=x(d,"HEAPF32");this._addPoly(m,d.length/2,g);w(m,d);return this};a.Path.prototype.addRect=function(d,g){d=
T(d);this._addRect(d,!!g);return this};a.Path.prototype.addRRect=function(d,g){d=oa(d);this._addRRect(d,!!g);return this};a.Path.prototype.addVerbsPointsWeights=function(d,g,m){var r=x(d,"HEAPU8"),y=x(g,"HEAPF32"),D=x(m,"HEAPF32");this._addVerbsPointsWeights(r,d.length,y,g.length,D,m&&m.length||0);w(r,d);w(y,g);w(D,m)};a.Path.prototype.arc=function(d,g,m,r,y,D){d=a.LTRBRect(d-m,g-m,d+m,g+m);y=(y-r)/Math.PI*180-360*!!D;D=new a.Path;D.addArc(d,r/Math.PI*180,y);this.addPath(D,!0);D.delete();return this};
a.Path.prototype.arcToOval=function(d,g,m,r){d=T(d);this._arcToOval(d,g,m,r);return this};a.Path.prototype.arcToRotated=function(d,g,m,r,y,D,I){this._arcToRotated(d,g,m,!!r,!!y,D,I);return this};a.Path.prototype.arcToTangent=function(d,g,m,r,y){this._arcToTangent(d,g,m,r,y);return this};a.Path.prototype.close=function(){this._close();return this};a.Path.prototype.conicTo=function(d,g,m,r,y){this._conicTo(d,g,m,r,y);return this};a.Path.prototype.computeTightBounds=function(d){this._computeTightBounds(ia);
var g=Ha.toTypedArray();return d?(d.set(g),d):g.slice()};a.Path.prototype.cubicTo=function(d,g,m,r,y,D){this._cubicTo(d,g,m,r,y,D);return this};a.Path.prototype.dash=function(d,g,m){return this._dash(d,g,m)?this:null};a.Path.prototype.getBounds=function(d){this._getBounds(ia);var g=Ha.toTypedArray();return d?(d.set(g),d):g.slice()};a.Path.prototype.lineTo=function(d,g){this._lineTo(d,g);return this};a.Path.prototype.moveTo=function(d,g){this._moveTo(d,g);return this};a.Path.prototype.offset=function(d,
g){this._transform(1,0,d,0,1,g,0,0,1);return this};a.Path.prototype.quadTo=function(d,g,m,r){this._quadTo(d,g,m,r);return this};a.Path.prototype.rArcTo=function(d,g,m,r,y,D,I){this._rArcTo(d,g,m,r,y,D,I);return this};a.Path.prototype.rConicTo=function(d,g,m,r,y){this._rConicTo(d,g,m,r,y);return this};a.Path.prototype.rCubicTo=function(d,g,m,r,y,D){this._rCubicTo(d,g,m,r,y,D);return this};a.Path.prototype.rLineTo=function(d,g){this._rLineTo(d,g);return this};a.Path.prototype.rMoveTo=function(d,g){this._rMoveTo(d,
g);return this};a.Path.prototype.rQuadTo=function(d,g,m,r){this._rQuadTo(d,g,m,r);return this};a.Path.prototype.stroke=function(d){d=d||{};d.width=d.width||1;d.miter_limit=d.miter_limit||4;d.cap=d.cap||a.StrokeCap.Butt;d.join=d.join||a.StrokeJoin.Miter;d.precision=d.precision||1;return this._stroke(d)?this:null};a.Path.prototype.transform=function(){if(1===arguments.length){var d=arguments[0];this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1)}else if(6===arguments.length||9===
arguments.length)d=arguments,this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1);else throw"transform expected to take 1 or 9 arguments. Got "+arguments.length;return this};a.Path.prototype.trim=function(d,g,m){return this._trim(d,g,!!m)?this:null};a.Image.prototype.makeShaderCubic=function(d,g,m,r,y){y=K(y);return this._makeShaderCubic(d,g,m,r,y)};a.Image.prototype.makeShaderOptions=function(d,g,m,r,y){y=K(y);return this._makeShaderOptions(d,g,m,r,y)};a.Image.prototype.readPixels=
function(d,g,m,r,y){return e(this,d,g,m,r,y)};a.Canvas.prototype.clear=function(d){a.Od(this.Md);d=A(d);this._clear(d)};a.Canvas.prototype.clipRRect=function(d,g,m){a.Od(this.Md);d=oa(d);this._clipRRect(d,g,m)};a.Canvas.prototype.clipRect=function(d,g,m){a.Od(this.Md);d=T(d);this._clipRect(d,g,m)};a.Canvas.prototype.concat=function(d){a.Od(this.Md);d=Q(d);this._concat(d)};a.Canvas.prototype.drawArc=function(d,g,m,r,y){a.Od(this.Md);d=T(d);this._drawArc(d,g,m,r,y)};a.Canvas.prototype.drawAtlas=function(d,
g,m,r,y,D,I){if(d&&r&&g&&m&&g.length===m.length){a.Od(this.Md);y||(y=a.BlendMode.SrcOver);var N=x(g,"HEAPF32"),P=x(m,"HEAPF32"),W=m.length/4,u=x(l(D),"HEAPU32");if(I&&"B"in I&&"C"in I)this._drawAtlasCubic(d,P,N,u,W,y,I.B,I.C,r);else{let H=a.FilterMode.Linear,R=a.MipmapMode.None;I&&(H=I.filter,"mipmap"in I&&(R=I.mipmap));this._drawAtlasOptions(d,P,N,u,W,y,H,R,r)}w(N,g);w(P,m);w(u,D)}};a.Canvas.prototype.drawCircle=function(d,g,m,r){a.Od(this.Md);this._drawCircle(d,g,m,r)};a.Canvas.prototype.drawColor=
function(d,g){a.Od(this.Md);d=A(d);void 0!==g?this._drawColor(d,g):this._drawColor(d)};a.Canvas.prototype.drawColorInt=function(d,g){a.Od(this.Md);this._drawColorInt(d,g||a.BlendMode.SrcOver)};a.Canvas.prototype.drawColorComponents=function(d,g,m,r,y){a.Od(this.Md);d=L(d,g,m,r);void 0!==y?this._drawColor(d,y):this._drawColor(d)};a.Canvas.prototype.drawDRRect=function(d,g,m){a.Od(this.Md);d=oa(d,$b);g=oa(g,Oc);this._drawDRRect(d,g,m)};a.Canvas.prototype.drawGlyphs=function(d,g,m,r,y,D){if(!(2*d.length<=
g.length))throw"Not enough positions for the array of gyphs";a.Od(this.Md);const I=x(d,"HEAPU16"),N=x(g,"HEAPF32");this._drawGlyphs(d.length,I,N,m,r,y,D);w(N,g);w(I,d)};a.Canvas.prototype.drawImage=function(d,g,m,r){a.Od(this.Md);this._drawImage(d,g,m,r||null)};a.Canvas.prototype.drawImageCubic=function(d,g,m,r,y,D){a.Od(this.Md);this._drawImageCubic(d,g,m,r,y,D||null)};a.Canvas.prototype.drawImageOptions=function(d,g,m,r,y,D){a.Od(this.Md);this._drawImageOptions(d,g,m,r,y,D||null)};a.Canvas.prototype.drawImageNine=
function(d,g,m,r,y){a.Od(this.Md);g=x(g,"HEAP32",cc);m=T(m);this._drawImageNine(d,g,m,r,y||null)};a.Canvas.prototype.drawImageRect=function(d,g,m,r,y){a.Od(this.Md);T(g,ia);T(m,Ta);this._drawImageRect(d,ia,Ta,r,!!y)};a.Canvas.prototype.drawImageRectCubic=function(d,g,m,r,y,D){a.Od(this.Md);T(g,ia);T(m,Ta);this._drawImageRectCubic(d,ia,Ta,r,y,D||null)};a.Canvas.prototype.drawImageRectOptions=function(d,g,m,r,y,D){a.Od(this.Md);T(g,ia);T(m,Ta);this._drawImageRectOptions(d,ia,Ta,r,y,D||null)};a.Canvas.prototype.drawLine=
function(d,g,m,r,y){a.Od(this.Md);this._drawLine(d,g,m,r,y)};a.Canvas.prototype.drawOval=function(d,g){a.Od(this.Md);d=T(d);this._drawOval(d,g)};a.Canvas.prototype.drawPaint=function(d){a.Od(this.Md);this._drawPaint(d)};a.Canvas.prototype.drawParagraph=function(d,g,m){a.Od(this.Md);this._drawParagraph(d,g,m)};a.Canvas.prototype.drawPatch=function(d,g,m,r,y){if(24>d.length)throw"Need 12 cubic points";if(g&&4>g.length)throw"Need 4 colors";if(m&&8>m.length)throw"Need 4 shader coordinates";a.Od(this.Md);
const D=x(d,"HEAPF32"),I=g?x(l(g),"HEAPU32"):V,N=m?x(m,"HEAPF32"):V;r||(r=a.BlendMode.Modulate);this._drawPatch(D,I,N,r,y);w(N,m);w(I,g);w(D,d)};a.Canvas.prototype.drawPath=function(d,g){a.Od(this.Md);this._drawPath(d,g)};a.Canvas.prototype.drawPicture=function(d){a.Od(this.Md);this._drawPicture(d)};a.Canvas.prototype.drawPoints=function(d,g,m){a.Od(this.Md);var r=x(g,"HEAPF32");this._drawPoints(d,r,g.length/2,m);w(r,g)};a.Canvas.prototype.drawRRect=function(d,g){a.Od(this.Md);d=oa(d);this._drawRRect(d,
g)};a.Canvas.prototype.drawRect=function(d,g){a.Od(this.Md);d=T(d);this._drawRect(d,g)};a.Canvas.prototype.drawRect4f=function(d,g,m,r,y){a.Od(this.Md);this._drawRect4f(d,g,m,r,y)};a.Canvas.prototype.drawShadow=function(d,g,m,r,y,D,I){a.Od(this.Md);var N=x(y,"HEAPF32"),P=x(D,"HEAPF32");g=x(g,"HEAPF32",ac);m=x(m,"HEAPF32",bc);this._drawShadow(d,g,m,r,N,P,I);w(N,y);w(P,D)};a.getShadowLocalBounds=function(d,g,m,r,y,D,I){d=K(d);m=x(m,"HEAPF32",ac);r=x(r,"HEAPF32",bc);if(!this._getShadowLocalBounds(d,
g,m,r,y,D,ia))return null;g=Ha.toTypedArray();return I?(I.set(g),I):g.slice()};a.Canvas.prototype.drawTextBlob=function(d,g,m,r){a.Od(this.Md);this._drawTextBlob(d,g,m,r)};a.Canvas.prototype.drawVertices=function(d,g,m){a.Od(this.Md);this._drawVertices(d,g,m)};a.Canvas.prototype.getLocalToDevice=function(){this._getLocalToDevice(Za);for(var d=Za,g=Array(16),m=0;16>m;m++)g[m]=a.HEAPF32[d/4+m];return g};a.Canvas.prototype.getTotalMatrix=function(){this._getTotalMatrix(Oa);for(var d=Array(9),g=0;9>g;g++)d[g]=
a.HEAPF32[Oa/4+g];return d};a.Canvas.prototype.makeSurface=function(d){d=this._makeSurface(d);d.Md=this.Md;return d};a.Canvas.prototype.readPixels=function(d,g,m,r,y){a.Od(this.Md);return e(this,d,g,m,r,y)};a.Canvas.prototype.saveLayer=function(d,g,m,r){g=T(g);return this._saveLayer(d||null,g,m||null,r||0)};a.Canvas.prototype.writePixels=function(d,g,m,r,y,D,I,N){if(d.byteLength%(g*m))throw"pixels length must be a multiple of the srcWidth * srcHeight";a.Od(this.Md);var P=d.byteLength/(g*m);D=D||a.AlphaType.Unpremul;
I=I||a.ColorType.RGBA_8888;N=N||a.ColorSpace.SRGB;var W=P*g;P=x(d,"HEAPU8");g=this._writePixels({width:g,height:m,colorType:I,alphaType:D,colorSpace:N},P,W,r,y);w(P,d);return g};a.ColorFilter.MakeBlend=function(d,g){d=A(d);return a.ColorFilter._MakeBlend(d,g)};a.ColorFilter.MakeMatrix=function(d){if(!d||20!==d.length)throw"invalid color matrix";var g=x(d,"HEAPF32"),m=a.ColorFilter._makeMatrix(g);w(g,d);return m};a.ContourMeasure.prototype.getPosTan=function(d,g){this._getPosTan(d,ia);d=Ha.toTypedArray();
return g?(g.set(d),g):d.slice()};a.ImageFilter.MakeMatrixTransform=function(d,g,m){d=K(d);if("B"in g&&"C"in g)return a.ImageFilter._MakeMatrixTransformCubic(d,g.Ag,g.Bg,m);const r=g.filter;let y=a.MipmapMode.None;"mipmap"in g&&(y=g.mipmap);return a.ImageFilter._MakeMatrixTransformOptions(d,r,y,m)};a.Paint.prototype.getColor=function(){this._getColor(fb);return S(fb)};a.Paint.prototype.setColor=function(d,g){g=g||null;d=A(d);this._setColor(d,g)};a.Paint.prototype.setColorComponents=function(d,g,m,
r,y){y=y||null;d=L(d,g,m,r);this._setColor(d,y)};a.Path.prototype.getPoint=function(d,g){this._getPoint(d,ia);d=Ha.toTypedArray();return g?(g[0]=d[0],g[1]=d[1],g):d.slice(0,2)};a.PictureRecorder.prototype.beginRecording=function(d){d=T(d);return this._beginRecording(d)};a.Surface.prototype.getCanvas=function(){var d=this._getCanvas();d.Md=this.Md;return d};a.Surface.prototype.makeImageSnapshot=function(d){a.Od(this.Md);d=x(d,"HEAP32",cc);return this._makeImageSnapshot(d)};a.Surface.prototype.makeSurface=
function(d){a.Od(this.Md);d=this._makeSurface(d);d.Md=this.Md;return d};a.Surface.prototype.requestAnimationFrame=function(d,g){this.Ge||(this.Ge=this.getCanvas());requestAnimationFrame(function(){a.Od(this.Md);d(this.Ge);this.flush(g)}.bind(this))};a.Surface.prototype.drawOnce=function(d,g){this.Ge||(this.Ge=this.getCanvas());requestAnimationFrame(function(){a.Od(this.Md);d(this.Ge);this.flush(g);this.dispose()}.bind(this))};a.PathEffect.MakeDash=function(d,g){g||(g=0);if(!d.length||1===d.length%
2)throw"Intervals array must have even length";var m=x(d,"HEAPF32");g=a.PathEffect._MakeDash(m,d.length,g);w(m,d);return g};a.PathEffect.MakeLine2D=function(d,g){g=K(g);return a.PathEffect._MakeLine2D(d,g)};a.PathEffect.MakePath2D=function(d,g){d=K(d);return a.PathEffect._MakePath2D(d,g)};a.Shader.MakeColor=function(d,g){g=g||null;d=A(d);return a.Shader._MakeColor(d,g)};a.Shader.Blend=a.Shader.MakeBlend;a.Shader.Color=a.Shader.MakeColor;a.Shader.MakeLinearGradient=function(d,g,m,r,y,D,I,N){N=N||null;
var P=J(m),W=x(r,"HEAPF32");I=I||0;D=K(D);var u=Ha.toTypedArray();u.set(d);u.set(g,2);d=a.Shader._MakeLinearGradient(ia,P.de,P.Le,W,P.count,y,I,D,N);w(P.de,m);r&&w(W,r);return d};a.Shader.MakeRadialGradient=function(d,g,m,r,y,D,I,N){N=N||null;var P=J(m),W=x(r,"HEAPF32");I=I||0;D=K(D);d=a.Shader._MakeRadialGradient(d[0],d[1],g,P.de,P.Le,W,P.count,y,I,D,N);w(P.de,m);r&&w(W,r);return d};a.Shader.MakeSweepGradient=function(d,g,m,r,y,D,I,N,P,W){W=W||null;var u=J(m),H=x(r,"HEAPF32");I=I||0;N=N||0;P=P||
360;D=K(D);d=a.Shader._MakeSweepGradient(d,g,u.de,u.Le,H,u.count,y,N,P,I,D,W);w(u.de,m);r&&w(H,r);return d};a.Shader.MakeTwoPointConicalGradient=function(d,g,m,r,y,D,I,N,P,W){W=W||null;var u=J(y),H=x(D,"HEAPF32");P=P||0;N=K(N);var R=Ha.toTypedArray();R.set(d);R.set(m,2);d=a.Shader._MakeTwoPointConicalGradient(ia,g,r,u.de,u.Le,H,u.count,I,P,N,W);w(u.de,y);D&&w(H,D);return d};a.Vertices.prototype.bounds=function(d){this._bounds(ia);var g=Ha.toTypedArray();return d?(d.set(g),d):g.slice()};a.Vd&&a.Vd.forEach(function(d){d()})};
a.computeTonalColors=function(e){var d=x(e.ambient,"HEAPF32"),g=x(e.spot,"HEAPF32");this._computeTonalColors(d,g);var m={ambient:S(d),spot:S(g)};w(d,e.ambient);w(g,e.spot);return m};a.LTRBRect=function(e,d,g,m){return Float32Array.of(e,d,g,m)};a.XYWHRect=function(e,d,g,m){return Float32Array.of(e,d,e+g,d+m)};a.LTRBiRect=function(e,d,g,m){return Int32Array.of(e,d,g,m)};a.XYWHiRect=function(e,d,g,m){return Int32Array.of(e,d,e+g,d+m)};a.RRectXY=function(e,d,g){return Float32Array.of(e[0],e[1],e[2],e[3],
d,g,d,g,d,g,d,g)};a.MakeAnimatedImageFromEncoded=function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);a.HEAPU8.set(e,d);return(e=a._decodeAnimatedImage(d,e.byteLength))?e:null};a.MakeImageFromEncoded=function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);a.HEAPU8.set(e,d);return(e=a._decodeImage(d,e.byteLength))?e:null};var ib=null;a.MakeImageFromCanvasImageSource=function(e){var d=e.width,g=e.height;ib||(ib=document.createElement("canvas"));ib.width=d;ib.height=g;var m=ib.getContext("2d",
{Jg:!0});m.drawImage(e,0,0);e=m.getImageData(0,0,d,g);return a.MakeImage({width:d,height:g,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},e.data,4*d)};a.MakeImage=function(e,d,g){var m=a._malloc(d.length);a.HEAPU8.set(d,m);return a._MakeImage(e,m,d.length,g)};a.MakeVertices=function(e,d,g,m,r,y){var D=r&&r.length||0,I=0;g&&g.length&&(I|=1);m&&m.length&&(I|=2);void 0===y||y||(I|=4);e=new a._VerticesBuilder(e,d.length/2,D,I);x(d,"HEAPF32",e.positions());
e.texCoords()&&x(g,"HEAPF32",e.texCoords());e.colors()&&x(l(m),"HEAPU32",e.colors());e.indices()&&x(r,"HEAPU16",e.indices());return e.detach()};a.Matrix={};a.Matrix.identity=function(){return c(3)};a.Matrix.invert=function(e){var d=e[0]*e[4]*e[8]+e[1]*e[5]*e[6]+e[2]*e[3]*e[7]-e[2]*e[4]*e[6]-e[1]*e[3]*e[8]-e[0]*e[5]*e[7];return d?[(e[4]*e[8]-e[5]*e[7])/d,(e[2]*e[7]-e[1]*e[8])/d,(e[1]*e[5]-e[2]*e[4])/d,(e[5]*e[6]-e[3]*e[8])/d,(e[0]*e[8]-e[2]*e[6])/d,(e[2]*e[3]-e[0]*e[5])/d,(e[3]*e[7]-e[4]*e[6])/d,(e[1]*
e[6]-e[0]*e[7])/d,(e[0]*e[4]-e[1]*e[3])/d]:null};a.Matrix.mapPoints=function(e,d){for(var g=0;g<d.length;g+=2){var m=d[g],r=d[g+1],y=e[6]*m+e[7]*r+e[8],D=e[3]*m+e[4]*r+e[5];d[g]=(e[0]*m+e[1]*r+e[2])/y;d[g+1]=D/y}return d};a.Matrix.multiply=function(){return hb(3,arguments)};a.Matrix.rotated=function(e,d,g){d=d||0;g=g||0;var m=Math.sin(e);e=Math.cos(e);return[e,-m,ta(m,g,1-e,d),m,e,ta(-m,d,1-e,g),0,0,1]};a.Matrix.scaled=function(e,d,g,m){g=g||0;m=m||0;var r=b([e,d],c(3),3,0,1);return b([g-e*g,m-d*
m],r,3,2,0)};a.Matrix.skewed=function(e,d,g,m){g=g||0;m=m||0;var r=b([e,d],c(3),3,1,-1);return b([-e*g,-d*m],r,3,2,0)};a.Matrix.translated=function(e,d){return b(arguments,c(3),3,2,0)};a.Vector={};a.Vector.dot=function(e,d){return e.map(function(g,m){return g*d[m]}).reduce(function(g,m){return g+m})};a.Vector.lengthSquared=function(e){return a.Vector.dot(e,e)};a.Vector.length=function(e){return Math.sqrt(a.Vector.lengthSquared(e))};a.Vector.mulScalar=function(e,d){return e.map(function(g){return g*
d})};a.Vector.add=function(e,d){return e.map(function(g,m){return g+d[m]})};a.Vector.sub=function(e,d){return e.map(function(g,m){return g-d[m]})};a.Vector.dist=function(e,d){return a.Vector.length(a.Vector.sub(e,d))};a.Vector.normalize=function(e){return a.Vector.mulScalar(e,1/a.Vector.length(e))};a.Vector.cross=function(e,d){return[e[1]*d[2]-e[2]*d[1],e[2]*d[0]-e[0]*d[2],e[0]*d[1]-e[1]*d[0]]};a.M44={};a.M44.identity=function(){return c(4)};a.M44.translated=function(e){return b(e,c(4),4,3,0)};a.M44.scaled=
function(e){return b(e,c(4),4,0,1)};a.M44.rotated=function(e,d){return a.M44.rotatedUnitSinCos(a.Vector.normalize(e),Math.sin(d),Math.cos(d))};a.M44.rotatedUnitSinCos=function(e,d,g){var m=e[0],r=e[1];e=e[2];var y=1-g;return[y*m*m+g,y*m*r-d*e,y*m*e+d*r,0,y*m*r+d*e,y*r*r+g,y*r*e-d*m,0,y*m*e-d*r,y*r*e+d*m,y*e*e+g,0,0,0,0,1]};a.M44.lookat=function(e,d,g){d=a.Vector.normalize(a.Vector.sub(d,e));g=a.Vector.normalize(g);g=a.Vector.normalize(a.Vector.cross(d,g));var m=a.M44.identity();b(g,m,4,0,0);b(a.Vector.cross(g,
d),m,4,1,0);b(a.Vector.mulScalar(d,-1),m,4,2,0);b(e,m,4,3,0);e=a.M44.invert(m);return null===e?a.M44.identity():e};a.M44.perspective=function(e,d,g){var m=1/(d-e);g/=2;g=Math.cos(g)/Math.sin(g);return[g,0,0,0,0,g,0,0,0,0,(d+e)*m,2*d*e*m,0,0,-1,1]};a.M44.rc=function(e,d,g){return e[4*d+g]};a.M44.multiply=function(){return hb(4,arguments)};a.M44.invert=function(e){var d=e[0],g=e[4],m=e[8],r=e[12],y=e[1],D=e[5],I=e[9],N=e[13],P=e[2],W=e[6],u=e[10],H=e[14],R=e[3],aa=e[7],ja=e[11];e=e[15];var pa=d*D-g*
y,ua=d*I-m*y,Aa=d*N-r*y,ea=g*I-m*D,F=g*N-r*D,k=m*N-r*I,p=P*aa-W*R,z=P*ja-u*R,B=P*e-H*R,C=W*ja-u*aa,E=W*e-H*aa,M=u*e-H*ja,ba=pa*M-ua*E+Aa*C+ea*B-F*z+k*p,ca=1/ba;if(0===ba||Infinity===ca)return null;pa*=ca;ua*=ca;Aa*=ca;ea*=ca;F*=ca;k*=ca;p*=ca;z*=ca;B*=ca;C*=ca;E*=ca;M*=ca;d=[D*M-I*E+N*C,I*B-y*M-N*z,y*E-D*B+N*p,D*z-y*C-I*p,m*E-g*M-r*C,d*M-m*B+r*z,g*B-d*E-r*p,d*C-g*z+m*p,aa*k-ja*F+e*ea,ja*Aa-R*k-e*ua,R*F-aa*Aa+e*pa,aa*ua-R*ea-ja*pa,u*F-W*k-H*ea,P*k-u*Aa+H*ua,W*Aa-P*F-H*pa,P*ea-W*ua+u*pa];return d.every(function(Ia){return!isNaN(Ia)&&
Infinity!==Ia&&-Infinity!==Ia})?d:null};a.M44.transpose=function(e){return[e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]]};a.M44.mustInvert=function(e){e=a.M44.invert(e);if(null===e)throw"Matrix not invertible";return e};a.M44.setupCamera=function(e,d,g){var m=a.M44.lookat(g.eye,g.coa,g.up);g=a.M44.perspective(g.near,g.far,g.angle);d=[(e[2]-e[0])/2,(e[3]-e[1])/2,d];e=a.M44.multiply(a.M44.translated([(e[0]+e[2])/2,(e[1]+e[3])/2,0]),a.M44.scaled(d));return a.M44.multiply(e,
g,m,a.M44.mustInvert(e))};a.ColorMatrix={};a.ColorMatrix.identity=function(){var e=new Float32Array(20);e[0]=1;e[6]=1;e[12]=1;e[18]=1;return e};a.ColorMatrix.scaled=function(e,d,g,m){var r=new Float32Array(20);r[0]=e;r[6]=d;r[12]=g;r[18]=m;return r};var Gd=[[6,7,11,12],[0,10,2,12],[0,1,5,6]];a.ColorMatrix.rotated=function(e,d,g){var m=a.ColorMatrix.identity();e=Gd[e];m[e[0]]=g;m[e[1]]=d;m[e[2]]=-d;m[e[3]]=g;return m};a.ColorMatrix.postTranslate=function(e,d,g,m,r){e[4]+=d;e[9]+=g;e[14]+=m;e[19]+=
r;return e};a.ColorMatrix.concat=function(e,d){for(var g=new Float32Array(20),m=0,r=0;20>r;r+=5){for(var y=0;4>y;y++)g[m++]=e[r]*d[y]+e[r+1]*d[y+5]+e[r+2]*d[y+10]+e[r+3]*d[y+15];g[m++]=e[r]*d[4]+e[r+1]*d[9]+e[r+2]*d[14]+e[r+3]*d[19]+e[r+4]}return g};(function(e){e.Vd=e.Vd||[];e.Vd.push(function(){function d(u){if(!u||!u.length)return[];for(var H=[],R=0;R<u.length;R+=5){var aa=e.LTRBRect(u[R],u[R+1],u[R+2],u[R+3]);aa.direction=0===u[R+4]?e.TextDirection.RTL:e.TextDirection.LTR;H.push(aa)}e._free(u.byteOffset);
return H}function g(u){u=u||{};void 0===u.weight&&(u.weight=e.FontWeight.Normal);u.width=u.width||e.FontWidth.Normal;u.slant=u.slant||e.FontSlant.Upright;return u}function m(u){if(!u||!u.length)return V;for(var H=[],R=0;R<u.length;R++){var aa=r(u[R]);H.push(aa)}return x(H,"HEAPU32")}function r(u){if(I[u])return I[u];var H=ra(u)+1,R=e._malloc(H);sa(u,G,R,H);return I[u]=R}function y(u){u._colorPtr=A(u.color);u._foregroundColorPtr=V;u._backgroundColorPtr=V;u._decorationColorPtr=V;u.foregroundColor&&
(u._foregroundColorPtr=A(u.foregroundColor,N));u.backgroundColor&&(u._backgroundColorPtr=A(u.backgroundColor,P));u.decorationColor&&(u._decorationColorPtr=A(u.decorationColor,W));Array.isArray(u.fontFamilies)&&u.fontFamilies.length?(u._fontFamiliesPtr=m(u.fontFamilies),u._fontFamiliesLen=u.fontFamilies.length):(u._fontFamiliesPtr=V,u._fontFamiliesLen=0);if(u.locale){var H=u.locale;u._localePtr=r(H);u._localeLen=ra(H)+1}else u._localePtr=V,u._localeLen=0;if(Array.isArray(u.shadows)&&u.shadows.length){H=
u.shadows;var R=H.map(function(ea){return ea.color||e.BLACK}),aa=H.map(function(ea){return ea.blurRadius||0});u._shadowLen=H.length;for(var ja=e._malloc(8*H.length),pa=ja/4,ua=0;ua<H.length;ua++){var Aa=H[ua].offset||[0,0];e.HEAPF32[pa]=Aa[0];e.HEAPF32[pa+1]=Aa[1];pa+=2}u._shadowColorsPtr=J(R).de;u._shadowOffsetsPtr=ja;u._shadowBlurRadiiPtr=x(aa,"HEAPF32")}else u._shadowLen=0,u._shadowColorsPtr=V,u._shadowOffsetsPtr=V,u._shadowBlurRadiiPtr=V;Array.isArray(u.fontFeatures)&&u.fontFeatures.length?(H=
u.fontFeatures,R=H.map(function(ea){return ea.name}),aa=H.map(function(ea){return ea.value}),u._fontFeatureLen=H.length,u._fontFeatureNamesPtr=m(R),u._fontFeatureValuesPtr=x(aa,"HEAPU32")):(u._fontFeatureLen=0,u._fontFeatureNamesPtr=V,u._fontFeatureValuesPtr=V)}function D(u){e._free(u._fontFamiliesPtr);e._free(u._shadowColorsPtr);e._free(u._shadowOffsetsPtr);e._free(u._shadowBlurRadiiPtr);e._free(u._fontFeatureNamesPtr);e._free(u._fontFeatureValuesPtr)}e.Paragraph.prototype.getRectsForRange=function(u,
H,R,aa){u=this._getRectsForRange(u,H,R,aa);return d(u)};e.Paragraph.prototype.getRectsForPlaceholders=function(){var u=this._getRectsForPlaceholders();return d(u)};e.TypefaceFontProvider.prototype.registerFont=function(u,H){u=e.Typeface.MakeFreeTypeFaceFromData(u);if(!u)return null;H=r(H);this._registerFont(u,H)};e.ParagraphStyle=function(u){u.disableHinting=u.disableHinting||!1;if(u.ellipsis){var H=u.ellipsis;u._ellipsisPtr=r(H);u._ellipsisLen=ra(H)+1}else u._ellipsisPtr=V,u._ellipsisLen=0;u.heightMultiplier=
u.heightMultiplier||0;u.maxLines=u.maxLines||0;H=(H=u.strutStyle)||{};H.strutEnabled=H.strutEnabled||!1;H.strutEnabled&&Array.isArray(H.fontFamilies)&&H.fontFamilies.length?(H._fontFamiliesPtr=m(H.fontFamilies),H._fontFamiliesLen=H.fontFamilies.length):(H._fontFamiliesPtr=V,H._fontFamiliesLen=0);H.fontStyle=g(H.fontStyle);H.fontSize=H.fontSize||0;H.heightMultiplier=H.heightMultiplier||0;H.halfLeading=H.halfLeading||!1;H.leading=H.leading||0;H.forceStrutHeight=H.forceStrutHeight||!1;u.strutStyle=H;
u.textAlign=u.textAlign||e.TextAlign.Start;u.textDirection=u.textDirection||e.TextDirection.LTR;u.textHeightBehavior=u.textHeightBehavior||e.TextHeightBehavior.All;u.textStyle=e.TextStyle(u.textStyle);return u};e.TextStyle=function(u){u.color||(u.color=e.BLACK);u.decoration=u.decoration||0;u.decorationThickness=u.decorationThickness||0;u.decorationStyle=u.decorationStyle||e.DecorationStyle.Solid;u.textBaseline=u.textBaseline||e.TextBaseline.Alphabetic;u.fontSize=u.fontSize||0;u.letterSpacing=u.letterSpacing||
0;u.wordSpacing=u.wordSpacing||0;u.heightMultiplier=u.heightMultiplier||0;u.halfLeading=u.halfLeading||!1;u.fontStyle=g(u.fontStyle);return u};var I={},N=e._malloc(16),P=e._malloc(16),W=e._malloc(16);e.ParagraphBuilder.Make=function(u,H){y(u.textStyle);H=e.ParagraphBuilder._Make(u,H);D(u.textStyle);return H};e.ParagraphBuilder.MakeFromFontProvider=function(u,H){y(u.textStyle);H=e.ParagraphBuilder._MakeFromFontProvider(u,H);D(u.textStyle);return H};e.ParagraphBuilder.ShapeText=function(u,H,R){let aa=
0;for(const ja of H)aa+=ja.length;if(aa!==u.length)throw"Accumulated block lengths must equal text.length";return e.ParagraphBuilder._ShapeText(u,H,R)};e.ParagraphBuilder.prototype.pushStyle=function(u){y(u);this._pushStyle(u);D(u)};e.ParagraphBuilder.prototype.pushPaintStyle=function(u,H,R){y(u);this._pushPaintStyle(u,H,R);D(u)};e.ParagraphBuilder.prototype.addPlaceholder=function(u,H,R,aa,ja){R=R||e.PlaceholderAlignment.Baseline;aa=aa||e.TextBaseline.Alphabetic;this._addPlaceholder(u||0,H||0,R,
aa,ja||0)}})})(t);a.Vd=a.Vd||[];a.Vd.push(function(){a.Path.prototype.op=function(e,d){return this._op(e,d)?this:null};a.Path.prototype.simplify=function(){return this._simplify()?this:null}});a.Vd=a.Vd||[];a.Vd.push(function(){a.Canvas.prototype.drawText=function(e,d,g,m,r){var y=ra(e),D=a._malloc(y+1);sa(e,G,D,y+1);this._drawSimpleText(D,y,d,g,r,m);a._free(D)};a.Font.prototype.getGlyphBounds=function(e,d,g){var m=x(e,"HEAPU16"),r=a._malloc(16*e.length);this._getGlyphWidthBounds(m,e.length,V,r,d||
null);d=new Float32Array(a.HEAPU8.buffer,r,4*e.length);w(m,e);if(g)return g.set(d),a._free(r),g;e=Float32Array.from(d);a._free(r);return e};a.Font.prototype.getGlyphIDs=function(e,d,g){d||(d=e.length);var m=ra(e)+1,r=a._malloc(m);sa(e,G,r,m);e=a._malloc(2*d);d=this._getGlyphIDs(r,m-1,d,e);a._free(r);if(0>d)return a._free(e),null;r=new Uint16Array(a.HEAPU8.buffer,e,d);if(g)return g.set(r),a._free(e),g;g=Uint16Array.from(r);a._free(e);return g};a.Font.prototype.getGlyphIntercepts=function(e,d,g,m){var r=
x(e,"HEAPU16"),y=x(d,"HEAPF32");return this._getGlyphIntercepts(r,e.length,!(e&&e._ck),y,d.length,!(d&&d._ck),g,m)};a.Font.prototype.getGlyphWidths=function(e,d,g){var m=x(e,"HEAPU16"),r=a._malloc(4*e.length);this._getGlyphWidthBounds(m,e.length,r,V,d||null);d=new Float32Array(a.HEAPU8.buffer,r,e.length);w(m,e);if(g)return g.set(d),a._free(r),g;e=Float32Array.from(d);a._free(r);return e};a.FontMgr.FromData=function(){if(!arguments.length)return null;var e=arguments;1===e.length&&Array.isArray(e[0])&&
(e=arguments[0]);if(!e.length)return null;for(var d=[],g=[],m=0;m<e.length;m++){var r=new Uint8Array(e[m]),y=x(r,"HEAPU8");d.push(y);g.push(r.byteLength)}d=x(d,"HEAPU32");g=x(g,"HEAPU32");e=a.FontMgr._fromData(d,g,e.length);a._free(d);a._free(g);return e};a.Typeface.MakeFreeTypeFaceFromData=function(e){e=new Uint8Array(e);var d=x(e,"HEAPU8");return(e=a.Typeface._MakeFreeTypeFaceFromData(d,e.byteLength))?e:null};a.Typeface.prototype.getGlyphIDs=function(e,d,g){d||(d=e.length);var m=ra(e)+1,r=a._malloc(m);
sa(e,G,r,m);e=a._malloc(2*d);d=this._getGlyphIDs(r,m-1,d,e);a._free(r);if(0>d)return a._free(e),null;r=new Uint16Array(a.HEAPU8.buffer,e,d);if(g)return g.set(r),a._free(e),g;g=Uint16Array.from(r);a._free(e);return g};a.TextBlob.MakeOnPath=function(e,d,g,m){if(e&&e.length&&d&&d.countPoints()){if(1===d.countPoints())return this.MakeFromText(e,g);m||(m=0);var r=g.getGlyphIDs(e);r=g.getGlyphWidths(r);var y=[];d=new a.ContourMeasureIter(d,!1,1);for(var D=d.next(),I=new Float32Array(4),N=0;N<e.length&&
D;N++){var P=r[N];m+=P/2;if(m>D.length()){D.delete();D=d.next();if(!D){e=e.substring(0,N);break}m=P/2}D.getPosTan(m,I);var W=I[2],u=I[3];y.push(W,u,I[0]-P/2*W,I[1]-P/2*u);m+=P/2}e=this.MakeFromRSXform(e,y,g);D&&D.delete();d.delete();return e}};a.TextBlob.MakeFromRSXform=function(e,d,g){var m=ra(e)+1,r=a._malloc(m);sa(e,G,r,m);e=x(d,"HEAPF32");g=a.TextBlob._MakeFromRSXform(r,m-1,e,g);a._free(r);return g?g:null};a.TextBlob.MakeFromRSXformGlyphs=function(e,d,g){var m=x(e,"HEAPU16");d=x(d,"HEAPF32");
g=a.TextBlob._MakeFromRSXformGlyphs(m,2*e.length,d,g);w(m,e);return g?g:null};a.TextBlob.MakeFromGlyphs=function(e,d){var g=x(e,"HEAPU16");d=a.TextBlob._MakeFromGlyphs(g,2*e.length,d);w(g,e);return d?d:null};a.TextBlob.MakeFromText=function(e,d){var g=ra(e)+1,m=a._malloc(g);sa(e,G,m,g);e=a.TextBlob._MakeFromText(m,g-1,d);a._free(m);return e?e:null};a.MallocGlyphIDs=function(e){return a.Malloc(Uint16Array,e)}});a.Vd=a.Vd||[];a.Vd.push(function(){a.MakePicture=function(e){e=new Uint8Array(e);var d=
a._malloc(e.byteLength);a.HEAPU8.set(e,d);return(e=a._MakePicture(d,e.byteLength))?e:null}});(function(){function e(F){for(var k=0;k<F.length;k++)if(void 0!==F[k]&&!Number.isFinite(F[k]))return!1;return!0}function d(F){var k=a.getColorComponents(F);F=k[0];var p=k[1],z=k[2];k=k[3];if(1===k)return F=F.toString(16).toLowerCase(),p=p.toString(16).toLowerCase(),z=z.toString(16).toLowerCase(),F=1===F.length?"0"+F:F,p=1===p.length?"0"+p:p,z=1===z.length?"0"+z:z,"#"+F+p+z;k=0===k||1===k?k:k.toFixed(8);return"rgba("+
F+", "+p+", "+z+", "+k+")"}function g(F){return a.parseColorString(F,ua)}function m(F){F=Aa.exec(F);if(!F)return null;var k=parseFloat(F[4]),p=16;switch(F[5]){case "em":case "rem":p=16*k;break;case "pt":p=4*k/3;break;case "px":p=k;break;case "pc":p=16*k;break;case "in":p=96*k;break;case "cm":p=96*k/2.54;break;case "mm":p=96/25.4*k;break;case "q":p=96/25.4/4*k;break;case "%":p=16/75*k}return{style:F[1],variant:F[2],weight:F[3],sizePx:p,family:F[6].trim()}}function r(F){this.Nd=F;this.Rd=new a.Paint;
this.Rd.setAntiAlias(!0);this.Rd.setStrokeMiter(10);this.Rd.setStrokeCap(a.StrokeCap.Butt);this.Rd.setStrokeJoin(a.StrokeJoin.Miter);this.Re="10px monospace";this.ne=new a.Font(null,10);this.ne.setSubpixel(!0);this.ce=this.he=a.BLACK;this.ue=0;this.Ie=a.TRANSPARENT;this.we=this.ve=0;this.Je=this.ke=1;this.He=0;this.te=[];this.Pd=a.BlendMode.SrcOver;this.Rd.setStrokeWidth(this.Je);this.Rd.setBlendMode(this.Pd);this.Td=new a.Path;this.Ud=a.Matrix.identity();this.lf=[];this.Ae=[];this.me=function(){this.Td.delete();
this.Rd.delete();this.ne.delete();this.Ae.forEach(function(k){k.me()})};Object.defineProperty(this,"currentTransform",{enumerable:!0,get:function(){return{a:this.Ud[0],c:this.Ud[1],e:this.Ud[2],b:this.Ud[3],d:this.Ud[4],f:this.Ud[5]}},set:function(k){k.a&&this.setTransform(k.a,k.b,k.c,k.d,k.e,k.f)}});Object.defineProperty(this,"fillStyle",{enumerable:!0,get:function(){return f(this.ce)?d(this.ce):this.ce},set:function(k){"string"===typeof k?this.ce=g(k):k.se&&(this.ce=k)}});Object.defineProperty(this,
"font",{enumerable:!0,get:function(){return this.Re},set:function(k){var p=m(k),z=p.family;p.typeface=ea[z]?ea[z][(p.style||"normal")+"|"+(p.variant||"normal")+"|"+(p.weight||"normal")]||ea[z]["*"]:null;p&&(this.ne.setSize(p.sizePx),this.ne.setTypeface(p.typeface),this.Re=k)}});Object.defineProperty(this,"globalAlpha",{enumerable:!0,get:function(){return this.ke},set:function(k){!isFinite(k)||0>k||1<k||(this.ke=k)}});Object.defineProperty(this,"globalCompositeOperation",{enumerable:!0,get:function(){switch(this.Pd){case a.BlendMode.SrcOver:return"source-over";
case a.BlendMode.DstOver:return"destination-over";case a.BlendMode.Src:return"copy";case a.BlendMode.Dst:return"destination";case a.BlendMode.Clear:return"clear";case a.BlendMode.SrcIn:return"source-in";case a.BlendMode.DstIn:return"destination-in";case a.BlendMode.SrcOut:return"source-out";case a.BlendMode.DstOut:return"destination-out";case a.BlendMode.SrcATop:return"source-atop";case a.BlendMode.DstATop:return"destination-atop";case a.BlendMode.Xor:return"xor";case a.BlendMode.Plus:return"lighter";
case a.BlendMode.Multiply:return"multiply";case a.BlendMode.Screen:return"screen";case a.BlendMode.Overlay:return"overlay";case a.BlendMode.Darken:return"darken";case a.BlendMode.Lighten:return"lighten";case a.BlendMode.ColorDodge:return"color-dodge";case a.BlendMode.ColorBurn:return"color-burn";case a.BlendMode.HardLight:return"hard-light";case a.BlendMode.SoftLight:return"soft-light";case a.BlendMode.Difference:return"difference";case a.BlendMode.Exclusion:return"exclusion";case a.BlendMode.Hue:return"hue";
case a.BlendMode.Saturation:return"saturation";case a.BlendMode.Color:return"color";case a.BlendMode.Luminosity:return"luminosity"}},set:function(k){switch(k){case "source-over":this.Pd=a.BlendMode.SrcOver;break;case "destination-over":this.Pd=a.BlendMode.DstOver;break;case "copy":this.Pd=a.BlendMode.Src;break;case "destination":this.Pd=a.BlendMode.Dst;break;case "clear":this.Pd=a.BlendMode.Clear;break;case "source-in":this.Pd=a.BlendMode.SrcIn;break;case "destination-in":this.Pd=a.BlendMode.DstIn;
break;case "source-out":this.Pd=a.BlendMode.SrcOut;break;case "destination-out":this.Pd=a.BlendMode.DstOut;break;case "source-atop":this.Pd=a.BlendMode.SrcATop;break;case "destination-atop":this.Pd=a.BlendMode.DstATop;break;case "xor":this.Pd=a.BlendMode.Xor;break;case "lighter":this.Pd=a.BlendMode.Plus;break;case "plus-lighter":this.Pd=a.BlendMode.Plus;break;case "plus-darker":throw"plus-darker is not supported";case "multiply":this.Pd=a.BlendMode.Multiply;break;case "screen":this.Pd=a.BlendMode.Screen;
break;case "overlay":this.Pd=a.BlendMode.Overlay;break;case "darken":this.Pd=a.BlendMode.Darken;break;case "lighten":this.Pd=a.BlendMode.Lighten;break;case "color-dodge":this.Pd=a.BlendMode.ColorDodge;break;case "color-burn":this.Pd=a.BlendMode.ColorBurn;break;case "hard-light":this.Pd=a.BlendMode.HardLight;break;case "soft-light":this.Pd=a.BlendMode.SoftLight;break;case "difference":this.Pd=a.BlendMode.Difference;break;case "exclusion":this.Pd=a.BlendMode.Exclusion;break;case "hue":this.Pd=a.BlendMode.Hue;
break;case "saturation":this.Pd=a.BlendMode.Saturation;break;case "color":this.Pd=a.BlendMode.Color;break;case "luminosity":this.Pd=a.BlendMode.Luminosity;break;default:return}this.Rd.setBlendMode(this.Pd)}});Object.defineProperty(this,"imageSmoothingEnabled",{enumerable:!0,get:function(){return!0},set:function(){}});Object.defineProperty(this,"imageSmoothingQuality",{enumerable:!0,get:function(){return"high"},set:function(){}});Object.defineProperty(this,"lineCap",{enumerable:!0,get:function(){switch(this.Rd.getStrokeCap()){case a.StrokeCap.Butt:return"butt";
case a.StrokeCap.Round:return"round";case a.StrokeCap.Square:return"square"}},set:function(k){switch(k){case "butt":this.Rd.setStrokeCap(a.StrokeCap.Butt);break;case "round":this.Rd.setStrokeCap(a.StrokeCap.Round);break;case "square":this.Rd.setStrokeCap(a.StrokeCap.Square)}}});Object.defineProperty(this,"lineDashOffset",{enumerable:!0,get:function(){return this.He},set:function(k){isFinite(k)&&(this.He=k)}});Object.defineProperty(this,"lineJoin",{enumerable:!0,get:function(){switch(this.Rd.getStrokeJoin()){case a.StrokeJoin.Miter:return"miter";
case a.StrokeJoin.Round:return"round";case a.StrokeJoin.Bevel:return"bevel"}},set:function(k){switch(k){case "miter":this.Rd.setStrokeJoin(a.StrokeJoin.Miter);break;case "round":this.Rd.setStrokeJoin(a.StrokeJoin.Round);break;case "bevel":this.Rd.setStrokeJoin(a.StrokeJoin.Bevel)}}});Object.defineProperty(this,"lineWidth",{enumerable:!0,get:function(){return this.Rd.getStrokeWidth()},set:function(k){0>=k||!k||(this.Je=k,this.Rd.setStrokeWidth(k))}});Object.defineProperty(this,"miterLimit",{enumerable:!0,
get:function(){return this.Rd.getStrokeMiter()},set:function(k){0>=k||!k||this.Rd.setStrokeMiter(k)}});Object.defineProperty(this,"shadowBlur",{enumerable:!0,get:function(){return this.ue},set:function(k){0>k||!isFinite(k)||(this.ue=k)}});Object.defineProperty(this,"shadowColor",{enumerable:!0,get:function(){return d(this.Ie)},set:function(k){this.Ie=g(k)}});Object.defineProperty(this,"shadowOffsetX",{enumerable:!0,get:function(){return this.ve},set:function(k){isFinite(k)&&(this.ve=k)}});Object.defineProperty(this,
"shadowOffsetY",{enumerable:!0,get:function(){return this.we},set:function(k){isFinite(k)&&(this.we=k)}});Object.defineProperty(this,"strokeStyle",{enumerable:!0,get:function(){return d(this.he)},set:function(k){"string"===typeof k?this.he=g(k):k.se&&(this.he=k)}});this.arc=function(k,p,z,B,C,E){H(this.Td,k,p,z,z,0,B,C,E)};this.arcTo=function(k,p,z,B,C){P(this.Td,k,p,z,B,C)};this.beginPath=function(){this.Td.delete();this.Td=new a.Path};this.bezierCurveTo=function(k,p,z,B,C,E){var M=this.Td;e([k,
p,z,B,C,E])&&(M.isEmpty()&&M.moveTo(k,p),M.cubicTo(k,p,z,B,C,E))};this.clearRect=function(k,p,z,B){this.Rd.setStyle(a.PaintStyle.Fill);this.Rd.setBlendMode(a.BlendMode.Clear);this.Nd.drawRect(a.XYWHRect(k,p,z,B),this.Rd);this.Rd.setBlendMode(this.Pd)};this.clip=function(k,p){"string"===typeof k?(p=k,k=this.Td):k&&k.af&&(k=k.Wd);k||(k=this.Td);k=k.copy();p&&"evenodd"===p.toLowerCase()?k.setFillType(a.FillType.EvenOdd):k.setFillType(a.FillType.Winding);this.Nd.clipPath(k,a.ClipOp.Intersect,!0);k.delete()};
this.closePath=function(){W(this.Td)};this.createImageData=function(){if(1===arguments.length){var k=arguments[0];return new I(new Uint8ClampedArray(4*k.width*k.height),k.width,k.height)}if(2===arguments.length){k=arguments[0];var p=arguments[1];return new I(new Uint8ClampedArray(4*k*p),k,p)}throw"createImageData expects 1 or 2 arguments, got "+arguments.length;};this.createLinearGradient=function(k,p,z,B){if(e(arguments)){var C=new N(k,p,z,B);this.Ae.push(C);return C}};this.createPattern=function(k,
p){k=new ja(k,p);this.Ae.push(k);return k};this.createRadialGradient=function(k,p,z,B,C,E){if(e(arguments)){var M=new pa(k,p,z,B,C,E);this.Ae.push(M);return M}};this.drawImage=function(k){k instanceof D&&(k=k.tf());var p=this.Qe();if(3===arguments.length||5===arguments.length)var z=a.XYWHRect(arguments[1],arguments[2],arguments[3]||k.width(),arguments[4]||k.height()),B=a.XYWHRect(0,0,k.width(),k.height());else if(9===arguments.length)z=a.XYWHRect(arguments[5],arguments[6],arguments[7],arguments[8]),
B=a.XYWHRect(arguments[1],arguments[2],arguments[3],arguments[4]);else throw"invalid number of args for drawImage, need 3, 5, or 9; got "+arguments.length;this.Nd.drawImageRect(k,B,z,p,!1);p.dispose()};this.ellipse=function(k,p,z,B,C,E,M,ba){H(this.Td,k,p,z,B,C,E,M,ba)};this.Qe=function(){var k=this.Rd.copy();k.setStyle(a.PaintStyle.Fill);if(f(this.ce)){var p=a.multiplyByAlpha(this.ce,this.ke);k.setColor(p)}else p=this.ce.se(this.Ud),k.setColor(a.Color(0,0,0,this.ke)),k.setShader(p);k.dispose=function(){this.delete()};
return k};this.fill=function(k,p){"string"===typeof k?(p=k,k=this.Td):k&&k.af&&(k=k.Wd);if("evenodd"===p)this.Td.setFillType(a.FillType.EvenOdd);else{if("nonzero"!==p&&p)throw"invalid fill rule";this.Td.setFillType(a.FillType.Winding)}k||(k=this.Td);p=this.Qe();var z=this.xe(p);z&&(this.Nd.save(),this.qe(),this.Nd.drawPath(k,z),this.Nd.restore(),z.dispose());this.Nd.drawPath(k,p);p.dispose()};this.fillRect=function(k,p,z,B){var C=this.Qe(),E=this.xe(C);E&&(this.Nd.save(),this.qe(),this.Nd.drawRect(a.XYWHRect(k,
p,z,B),E),this.Nd.restore(),E.dispose());this.Nd.drawRect(a.XYWHRect(k,p,z,B),C);C.dispose()};this.fillText=function(k,p,z){var B=this.Qe();k=a.TextBlob.MakeFromText(k,this.ne);var C=this.xe(B);C&&(this.Nd.save(),this.qe(),this.Nd.drawTextBlob(k,p,z,C),this.Nd.restore(),C.dispose());this.Nd.drawTextBlob(k,p,z,B);k.delete();B.dispose()};this.getImageData=function(k,p,z,B){return(k=this.Nd.readPixels(k,p,{width:z,height:B,colorType:a.ColorType.RGBA_8888,alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB}))?
new I(new Uint8ClampedArray(k.buffer),z,B):null};this.getLineDash=function(){return this.te.slice()};this.mf=function(k){var p=a.Matrix.invert(this.Ud);a.Matrix.mapPoints(p,k);return k};this.isPointInPath=function(k,p,z){var B=arguments;if(3===B.length)var C=this.Td;else if(4===B.length)C=B[0],k=B[1],p=B[2],z=B[3];else throw"invalid arg count, need 3 or 4, got "+B.length;if(!isFinite(k)||!isFinite(p))return!1;z=z||"nonzero";if("nonzero"!==z&&"evenodd"!==z)return!1;B=this.mf([k,p]);k=B[0];p=B[1];C.setFillType("nonzero"===
z?a.FillType.Winding:a.FillType.EvenOdd);return C.contains(k,p)};this.isPointInStroke=function(k,p){var z=arguments;if(2===z.length)var B=this.Td;else if(3===z.length)B=z[0],k=z[1],p=z[2];else throw"invalid arg count, need 2 or 3, got "+z.length;if(!isFinite(k)||!isFinite(p))return!1;z=this.mf([k,p]);k=z[0];p=z[1];B=B.copy();B.setFillType(a.FillType.Winding);B.stroke({width:this.lineWidth,miter_limit:this.miterLimit,cap:this.Rd.getStrokeCap(),join:this.Rd.getStrokeJoin(),precision:.3});z=B.contains(k,
p);B.delete();return z};this.lineTo=function(k,p){R(this.Td,k,p)};this.measureText=function(k){k=this.ne.getGlyphIDs(k);k=this.ne.getGlyphWidths(k);let p=0;for(const z of k)p+=z;return{width:p}};this.moveTo=function(k,p){var z=this.Td;e([k,p])&&z.moveTo(k,p)};this.putImageData=function(k,p,z,B,C,E,M){if(e([p,z,B,C,E,M]))if(void 0===B)this.Nd.writePixels(k.data,k.width,k.height,p,z);else if(B=B||0,C=C||0,E=E||k.width,M=M||k.height,0>E&&(B+=E,E=Math.abs(E)),0>M&&(C+=M,M=Math.abs(M)),0>B&&(E+=B,B=0),
0>C&&(M+=C,C=0),!(0>=E||0>=M)){k=a.MakeImage({width:k.width,height:k.height,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},k.data,4*k.width);var ba=a.XYWHRect(B,C,E,M);p=a.XYWHRect(p+B,z+C,E,M);z=a.Matrix.invert(this.Ud);this.Nd.save();this.Nd.concat(z);this.Nd.drawImageRect(k,ba,p,null,!1);this.Nd.restore();k.delete()}};this.quadraticCurveTo=function(k,p,z,B){var C=this.Td;e([k,p,z,B])&&(C.isEmpty()&&C.moveTo(k,p),C.quadTo(k,p,z,B))};this.rect=function(k,
p,z,B){var C=this.Td;k=a.XYWHRect(k,p,z,B);e(k)&&C.addRect(k)};this.resetTransform=function(){this.Td.transform(this.Ud);var k=a.Matrix.invert(this.Ud);this.Nd.concat(k);this.Ud=this.Nd.getTotalMatrix()};this.restore=function(){var k=this.lf.pop();if(k){var p=a.Matrix.multiply(this.Ud,a.Matrix.invert(k.Ff));this.Td.transform(p);this.Rd.delete();this.Rd=k.dg;this.te=k.$f;this.Je=k.vg;this.he=k.ug;this.ce=k.fs;this.ve=k.sg;this.we=k.tg;this.ue=k.hg;this.Ie=k.rg;this.ke=k.Nf;this.Pd=k.Of;this.He=k.ag;
this.Re=k.Mf;this.Nd.restore();this.Ud=this.Nd.getTotalMatrix()}};this.rotate=function(k){if(isFinite(k)){var p=a.Matrix.rotated(-k);this.Td.transform(p);this.Nd.rotate(k/Math.PI*180,0,0);this.Ud=this.Nd.getTotalMatrix()}};this.save=function(){if(this.ce.re){var k=this.ce.re();this.Ae.push(k)}else k=this.ce;if(this.he.re){var p=this.he.re();this.Ae.push(p)}else p=this.he;this.lf.push({Ff:this.Ud.slice(),$f:this.te.slice(),vg:this.Je,ug:p,fs:k,sg:this.ve,tg:this.we,hg:this.ue,rg:this.Ie,Nf:this.ke,
ag:this.He,Of:this.Pd,dg:this.Rd.copy(),Mf:this.Re});this.Nd.save()};this.scale=function(k,p){if(e(arguments)){var z=a.Matrix.scaled(1/k,1/p);this.Td.transform(z);this.Nd.scale(k,p);this.Ud=this.Nd.getTotalMatrix()}};this.setLineDash=function(k){for(var p=0;p<k.length;p++)if(!isFinite(k[p])||0>k[p])return;1===k.length%2&&Array.prototype.push.apply(k,k);this.te=k};this.setTransform=function(k,p,z,B,C,E){e(arguments)&&(this.resetTransform(),this.transform(k,p,z,B,C,E))};this.qe=function(){var k=a.Matrix.invert(this.Ud);
this.Nd.concat(k);this.Nd.concat(a.Matrix.translated(this.ve,this.we));this.Nd.concat(this.Ud)};this.xe=function(k){var p=a.multiplyByAlpha(this.Ie,this.ke);if(!a.getColorComponents(p)[3]||!(this.ue||this.we||this.ve))return null;k=k.copy();k.setColor(p);var z=a.MaskFilter.MakeBlur(a.BlurStyle.Normal,this.ue/2,!1);k.setMaskFilter(z);k.dispose=function(){z.delete();this.delete()};return k};this.cf=function(){var k=this.Rd.copy();k.setStyle(a.PaintStyle.Stroke);if(f(this.he)){var p=a.multiplyByAlpha(this.he,
this.ke);k.setColor(p)}else p=this.he.se(this.Ud),k.setColor(a.Color(0,0,0,this.ke)),k.setShader(p);k.setStrokeWidth(this.Je);if(this.te.length){var z=a.PathEffect.MakeDash(this.te,this.He);k.setPathEffect(z)}k.dispose=function(){z&&z.delete();this.delete()};return k};this.stroke=function(k){k=k?k.Wd:this.Td;var p=this.cf(),z=this.xe(p);z&&(this.Nd.save(),this.qe(),this.Nd.drawPath(k,z),this.Nd.restore(),z.dispose());this.Nd.drawPath(k,p);p.dispose()};this.strokeRect=function(k,p,z,B){var C=this.cf(),
E=this.xe(C);E&&(this.Nd.save(),this.qe(),this.Nd.drawRect(a.XYWHRect(k,p,z,B),E),this.Nd.restore(),E.dispose());this.Nd.drawRect(a.XYWHRect(k,p,z,B),C);C.dispose()};this.strokeText=function(k,p,z){var B=this.cf();k=a.TextBlob.MakeFromText(k,this.ne);var C=this.xe(B);C&&(this.Nd.save(),this.qe(),this.Nd.drawTextBlob(k,p,z,C),this.Nd.restore(),C.dispose());this.Nd.drawTextBlob(k,p,z,B);k.delete();B.dispose()};this.translate=function(k,p){if(e(arguments)){var z=a.Matrix.translated(-k,-p);this.Td.transform(z);
this.Nd.translate(k,p);this.Ud=this.Nd.getTotalMatrix()}};this.transform=function(k,p,z,B,C,E){k=[k,z,C,p,B,E,0,0,1];p=a.Matrix.invert(k);this.Td.transform(p);this.Nd.concat(k);this.Ud=this.Nd.getTotalMatrix()};this.addHitRegion=function(){};this.clearHitRegions=function(){};this.drawFocusIfNeeded=function(){};this.removeHitRegion=function(){};this.scrollPathIntoView=function(){};Object.defineProperty(this,"canvas",{value:null,writable:!1})}function y(F){this.df=F;this.Md=new r(F.getCanvas());this.Se=
[];this.decodeImage=function(k){k=a.MakeImageFromEncoded(k);if(!k)throw"Invalid input";this.Se.push(k);return new D(k)};this.loadFont=function(k,p){k=a.Typeface.MakeFreeTypeFaceFromData(k);if(!k)return null;this.Se.push(k);var z=(p.style||"normal")+"|"+(p.variant||"normal")+"|"+(p.weight||"normal");p=p.family;ea[p]||(ea[p]={"*":k});ea[p][z]=k};this.makePath2D=function(k){k=new aa(k);this.Se.push(k.Wd);return k};this.getContext=function(k){return"2d"===k?this.Md:null};this.toDataURL=function(k,p){this.df.flush();
var z=this.df.makeImageSnapshot();if(z){k=k||"image/png";var B=a.ImageFormat.PNG;"image/jpeg"===k&&(B=a.ImageFormat.JPEG);if(p=z.encodeToBytes(B,p||.92)){z.delete();k="data:"+k+";base64,";if("undefined"!==typeof Buffer)p=Buffer.from(p).toString("base64");else{z=0;B=p.length;for(var C="",E;z<B;)E=p.slice(z,Math.min(z+32768,B)),C+=String.fromCharCode.apply(null,E),z+=32768;p=btoa(C)}return k+p}}};this.dispose=function(){this.Md.me();this.Se.forEach(function(k){k.delete()});this.df.dispose()}}function D(F){this.width=
F.width();this.height=F.height();this.naturalWidth=this.width;this.naturalHeight=this.height;this.tf=function(){return F}}function I(F,k,p){if(!k||0===p)throw"invalid dimensions, width and height must be non-zero";if(F.length%4)throw"arr must be a multiple of 4";p=p||F.length/(4*k);Object.defineProperty(this,"data",{value:F,writable:!1});Object.defineProperty(this,"height",{value:p,writable:!1});Object.defineProperty(this,"width",{value:k,writable:!1})}function N(F,k,p,z){this.Yd=null;this.ee=[];
this.ae=[];this.addColorStop=function(B,C){if(0>B||1<B||!isFinite(B))throw"offset must be between 0 and 1 inclusively";C=g(C);var E=this.ae.indexOf(B);if(-1!==E)this.ee[E]=C;else{for(E=0;E<this.ae.length&&!(this.ae[E]>B);E++);this.ae.splice(E,0,B);this.ee.splice(E,0,C)}};this.re=function(){var B=new N(F,k,p,z);B.ee=this.ee.slice();B.ae=this.ae.slice();return B};this.me=function(){this.Yd&&(this.Yd.delete(),this.Yd=null)};this.se=function(B){var C=[F,k,p,z];a.Matrix.mapPoints(B,C);B=C[0];var E=C[1],
M=C[2];C=C[3];this.me();return this.Yd=a.Shader.MakeLinearGradient([B,E],[M,C],this.ee,this.ae,a.TileMode.Clamp)}}function P(F,k,p,z,B,C){if(e([k,p,z,B,C])){if(0>C)throw"radii cannot be negative";F.isEmpty()&&F.moveTo(k,p);F.arcToTangent(k,p,z,B,C)}}function W(F){if(!F.isEmpty()){var k=F.getBounds();(k[3]-k[1]||k[2]-k[0])&&F.close()}}function u(F,k,p,z,B,C,E){E=(E-C)/Math.PI*180;C=C/Math.PI*180;k=a.LTRBRect(k-z,p-B,k+z,p+B);1E-5>Math.abs(Math.abs(E)-360)?(p=E/2,F.arcToOval(k,C,p,!1),F.arcToOval(k,
C+p,p,!1)):F.arcToOval(k,C,E,!1)}function H(F,k,p,z,B,C,E,M,ba){if(e([k,p,z,B,C,E,M])){if(0>z||0>B)throw"radii cannot be negative";var ca=2*Math.PI,Ia=E%ca;0>Ia&&(Ia+=ca);var $a=Ia-E;E=Ia;M+=$a;!ba&&M-E>=ca?M=E+ca:ba&&E-M>=ca?M=E-ca:!ba&&E>M?M=E+(ca-(E-M)%ca):ba&&E<M&&(M=E-(ca-(M-E)%ca));C?(ba=a.Matrix.rotated(C,k,p),C=a.Matrix.rotated(-C,k,p),F.transform(C),u(F,k,p,z,B,E,M),F.transform(ba)):u(F,k,p,z,B,E,M)}}function R(F,k,p){e([k,p])&&(F.isEmpty()&&F.moveTo(k,p),F.lineTo(k,p))}function aa(F){this.Wd=
null;this.Wd="string"===typeof F?a.Path.MakeFromSVGString(F):F&&F.af?F.Wd.copy():new a.Path;this.af=function(){return this.Wd};this.addPath=function(k,p){p||(p={a:1,c:0,e:0,b:0,d:1,f:0});this.Wd.addPath(k.Wd,[p.a,p.c,p.e,p.b,p.d,p.f])};this.arc=function(k,p,z,B,C,E){H(this.Wd,k,p,z,z,0,B,C,E)};this.arcTo=function(k,p,z,B,C){P(this.Wd,k,p,z,B,C)};this.bezierCurveTo=function(k,p,z,B,C,E){var M=this.Wd;e([k,p,z,B,C,E])&&(M.isEmpty()&&M.moveTo(k,p),M.cubicTo(k,p,z,B,C,E))};this.closePath=function(){W(this.Wd)};
this.ellipse=function(k,p,z,B,C,E,M,ba){H(this.Wd,k,p,z,B,C,E,M,ba)};this.lineTo=function(k,p){R(this.Wd,k,p)};this.moveTo=function(k,p){var z=this.Wd;e([k,p])&&z.moveTo(k,p)};this.quadraticCurveTo=function(k,p,z,B){var C=this.Wd;e([k,p,z,B])&&(C.isEmpty()&&C.moveTo(k,p),C.quadTo(k,p,z,B))};this.rect=function(k,p,z,B){var C=this.Wd;k=a.XYWHRect(k,p,z,B);e(k)&&C.addRect(k)}}function ja(F,k){this.Yd=null;F instanceof D&&(F=F.tf());this.Af=F;this._transform=a.Matrix.identity();""===k&&(k="repeat");switch(k){case "repeat-x":this.ye=
a.TileMode.Repeat;this.ze=a.TileMode.Decal;break;case "repeat-y":this.ye=a.TileMode.Decal;this.ze=a.TileMode.Repeat;break;case "repeat":this.ze=this.ye=a.TileMode.Repeat;break;case "no-repeat":this.ze=this.ye=a.TileMode.Decal;break;default:throw"invalid repetition mode "+k;}this.setTransform=function(p){p=[p.a,p.c,p.e,p.b,p.d,p.f,0,0,1];e(p)&&(this._transform=p)};this.re=function(){var p=new ja;p.ye=this.ye;p.ze=this.ze;return p};this.me=function(){this.Yd&&(this.Yd.delete(),this.Yd=null)};this.se=
function(){this.me();return this.Yd=this.Af.makeShaderCubic(this.ye,this.ze,1/3,1/3,this._transform)}}function pa(F,k,p,z,B,C){this.Yd=null;this.ee=[];this.ae=[];this.addColorStop=function(E,M){if(0>E||1<E||!isFinite(E))throw"offset must be between 0 and 1 inclusively";M=g(M);var ba=this.ae.indexOf(E);if(-1!==ba)this.ee[ba]=M;else{for(ba=0;ba<this.ae.length&&!(this.ae[ba]>E);ba++);this.ae.splice(ba,0,E);this.ee.splice(ba,0,M)}};this.re=function(){var E=new pa(F,k,p,z,B,C);E.ee=this.ee.slice();E.ae=
this.ae.slice();return E};this.me=function(){this.Yd&&(this.Yd.delete(),this.Yd=null)};this.se=function(E){var M=[F,k,z,B];a.Matrix.mapPoints(E,M);var ba=M[0],ca=M[1],Ia=M[2];M=M[3];var $a=(Math.abs(E[0])+Math.abs(E[4]))/2;E=p*$a;$a*=C;this.me();return this.Yd=a.Shader.MakeTwoPointConicalGradient([ba,ca],E,[Ia,M],$a,this.ee,this.ae,a.TileMode.Clamp)}}a._testing={};var ua={aliceblue:Float32Array.of(.941,.973,1,1),antiquewhite:Float32Array.of(.98,.922,.843,1),aqua:Float32Array.of(0,1,1,1),aquamarine:Float32Array.of(.498,
1,.831,1),azure:Float32Array.of(.941,1,1,1),beige:Float32Array.of(.961,.961,.863,1),bisque:Float32Array.of(1,.894,.769,1),black:Float32Array.of(0,0,0,1),blanchedalmond:Float32Array.of(1,.922,.804,1),blue:Float32Array.of(0,0,1,1),blueviolet:Float32Array.of(.541,.169,.886,1),brown:Float32Array.of(.647,.165,.165,1),burlywood:Float32Array.of(.871,.722,.529,1),cadetblue:Float32Array.of(.373,.62,.627,1),chartreuse:Float32Array.of(.498,1,0,1),chocolate:Float32Array.of(.824,.412,.118,1),coral:Float32Array.of(1,
.498,.314,1),cornflowerblue:Float32Array.of(.392,.584,.929,1),cornsilk:Float32Array.of(1,.973,.863,1),crimson:Float32Array.of(.863,.078,.235,1),cyan:Float32Array.of(0,1,1,1),darkblue:Float32Array.of(0,0,.545,1),darkcyan:Float32Array.of(0,.545,.545,1),darkgoldenrod:Float32Array.of(.722,.525,.043,1),darkgray:Float32Array.of(.663,.663,.663,1),darkgreen:Float32Array.of(0,.392,0,1),darkgrey:Float32Array.of(.663,.663,.663,1),darkkhaki:Float32Array.of(.741,.718,.42,1),darkmagenta:Float32Array.of(.545,0,
.545,1),darkolivegreen:Float32Array.of(.333,.42,.184,1),darkorange:Float32Array.of(1,.549,0,1),darkorchid:Float32Array.of(.6,.196,.8,1),darkred:Float32Array.of(.545,0,0,1),darksalmon:Float32Array.of(.914,.588,.478,1),darkseagreen:Float32Array.of(.561,.737,.561,1),darkslateblue:Float32Array.of(.282,.239,.545,1),darkslategray:Float32Array.of(.184,.31,.31,1),darkslategrey:Float32Array.of(.184,.31,.31,1),darkturquoise:Float32Array.of(0,.808,.82,1),darkviolet:Float32Array.of(.58,0,.827,1),deeppink:Float32Array.of(1,
.078,.576,1),deepskyblue:Float32Array.of(0,.749,1,1),dimgray:Float32Array.of(.412,.412,.412,1),dimgrey:Float32Array.of(.412,.412,.412,1),dodgerblue:Float32Array.of(.118,.565,1,1),firebrick:Float32Array.of(.698,.133,.133,1),floralwhite:Float32Array.of(1,.98,.941,1),forestgreen:Float32Array.of(.133,.545,.133,1),fuchsia:Float32Array.of(1,0,1,1),gainsboro:Float32Array.of(.863,.863,.863,1),ghostwhite:Float32Array.of(.973,.973,1,1),gold:Float32Array.of(1,.843,0,1),goldenrod:Float32Array.of(.855,.647,.125,
1),gray:Float32Array.of(.502,.502,.502,1),green:Float32Array.of(0,.502,0,1),greenyellow:Float32Array.of(.678,1,.184,1),grey:Float32Array.of(.502,.502,.502,1),honeydew:Float32Array.of(.941,1,.941,1),hotpink:Float32Array.of(1,.412,.706,1),indianred:Float32Array.of(.804,.361,.361,1),indigo:Float32Array.of(.294,0,.51,1),ivory:Float32Array.of(1,1,.941,1),khaki:Float32Array.of(.941,.902,.549,1),lavender:Float32Array.of(.902,.902,.98,1),lavenderblush:Float32Array.of(1,.941,.961,1),lawngreen:Float32Array.of(.486,
.988,0,1),lemonchiffon:Float32Array.of(1,.98,.804,1),lightblue:Float32Array.of(.678,.847,.902,1),lightcoral:Float32Array.of(.941,.502,.502,1),lightcyan:Float32Array.of(.878,1,1,1),lightgoldenrodyellow:Float32Array.of(.98,.98,.824,1),lightgray:Float32Array.of(.827,.827,.827,1),lightgreen:Float32Array.of(.565,.933,.565,1),lightgrey:Float32Array.of(.827,.827,.827,1),lightpink:Float32Array.of(1,.714,.757,1),lightsalmon:Float32Array.of(1,.627,.478,1),lightseagreen:Float32Array.of(.125,.698,.667,1),lightskyblue:Float32Array.of(.529,
.808,.98,1),lightslategray:Float32Array.of(.467,.533,.6,1),lightslategrey:Float32Array.of(.467,.533,.6,1),lightsteelblue:Float32Array.of(.69,.769,.871,1),lightyellow:Float32Array.of(1,1,.878,1),lime:Float32Array.of(0,1,0,1),limegreen:Float32Array.of(.196,.804,.196,1),linen:Float32Array.of(.98,.941,.902,1),magenta:Float32Array.of(1,0,1,1),maroon:Float32Array.of(.502,0,0,1),mediumaquamarine:Float32Array.of(.4,.804,.667,1),mediumblue:Float32Array.of(0,0,.804,1),mediumorchid:Float32Array.of(.729,.333,
.827,1),mediumpurple:Float32Array.of(.576,.439,.859,1),mediumseagreen:Float32Array.of(.235,.702,.443,1),mediumslateblue:Float32Array.of(.482,.408,.933,1),mediumspringgreen:Float32Array.of(0,.98,.604,1),mediumturquoise:Float32Array.of(.282,.82,.8,1),mediumvioletred:Float32Array.of(.78,.082,.522,1),midnightblue:Float32Array.of(.098,.098,.439,1),mintcream:Float32Array.of(.961,1,.98,1),mistyrose:Float32Array.of(1,.894,.882,1),moccasin:Float32Array.of(1,.894,.71,1),navajowhite:Float32Array.of(1,.871,.678,
1),navy:Float32Array.of(0,0,.502,1),oldlace:Float32Array.of(.992,.961,.902,1),olive:Float32Array.of(.502,.502,0,1),olivedrab:Float32Array.of(.42,.557,.137,1),orange:Float32Array.of(1,.647,0,1),orangered:Float32Array.of(1,.271,0,1),orchid:Float32Array.of(.855,.439,.839,1),palegoldenrod:Float32Array.of(.933,.91,.667,1),palegreen:Float32Array.of(.596,.984,.596,1),paleturquoise:Float32Array.of(.686,.933,.933,1),palevioletred:Float32Array.of(.859,.439,.576,1),papayawhip:Float32Array.of(1,.937,.835,1),
peachpuff:Float32Array.of(1,.855,.725,1),peru:Float32Array.of(.804,.522,.247,1),pink:Float32Array.of(1,.753,.796,1),plum:Float32Array.of(.867,.627,.867,1),powderblue:Float32Array.of(.69,.878,.902,1),purple:Float32Array.of(.502,0,.502,1),rebeccapurple:Float32Array.of(.4,.2,.6,1),red:Float32Array.of(1,0,0,1),rosybrown:Float32Array.of(.737,.561,.561,1),royalblue:Float32Array.of(.255,.412,.882,1),saddlebrown:Float32Array.of(.545,.271,.075,1),salmon:Float32Array.of(.98,.502,.447,1),sandybrown:Float32Array.of(.957,
.643,.376,1),seagreen:Float32Array.of(.18,.545,.341,1),seashell:Float32Array.of(1,.961,.933,1),sienna:Float32Array.of(.627,.322,.176,1),silver:Float32Array.of(.753,.753,.753,1),skyblue:Float32Array.of(.529,.808,.922,1),slateblue:Float32Array.of(.416,.353,.804,1),slategray:Float32Array.of(.439,.502,.565,1),slategrey:Float32Array.of(.439,.502,.565,1),snow:Float32Array.of(1,.98,.98,1),springgreen:Float32Array.of(0,1,.498,1),steelblue:Float32Array.of(.275,.51,.706,1),tan:Float32Array.of(.824,.706,.549,
1),teal:Float32Array.of(0,.502,.502,1),thistle:Float32Array.of(.847,.749,.847,1),tomato:Float32Array.of(1,.388,.278,1),transparent:Float32Array.of(0,0,0,0),turquoise:Float32Array.of(.251,.878,.816,1),violet:Float32Array.of(.933,.51,.933,1),wheat:Float32Array.of(.961,.871,.702,1),white:Float32Array.of(1,1,1,1),whitesmoke:Float32Array.of(.961,.961,.961,1),yellow:Float32Array.of(1,1,0,1),yellowgreen:Float32Array.of(.604,.804,.196,1)};a._testing.parseColor=g;a._testing.colorToString=d;var Aa=RegExp("(italic|oblique|normal|)\\s*(small-caps|normal|)\\s*(bold|bolder|lighter|[1-9]00|normal|)\\s*([\\d\\.]+)(px|pt|pc|in|cm|mm|%|em|ex|ch|rem|q)(.+)"),
ea={"Noto Mono":{"*":null},monospace:{"*":null}};a._testing.parseFontString=m;a.MakeCanvas=function(F,k){return(F=a.MakeSurface(F,k))?new y(F):null};a.ImageData=function(){if(2===arguments.length){var F=arguments[0],k=arguments[1];return new I(new Uint8ClampedArray(4*F*k),F,k)}if(3===arguments.length){var p=arguments[0];if(p.prototype.constructor!==Uint8ClampedArray)throw"bytes must be given as a Uint8ClampedArray";F=arguments[1];k=arguments[2];if(p%4)throw"bytes must be given in a multiple of 4";
if(p%F)throw"bytes must divide evenly by width";if(k&&k!==p/(4*F))throw"invalid height given";return new I(p,F,p/(4*F))}throw"invalid number of arguments - takes 2 or 3, saw "+arguments.length;}})()})(t);var va=da({},t),wa="./this.program",xa=(a,b)=>{throw b;},ya="object"===typeof window,za="function"===typeof importScripts,Ba="object"===typeof process&&"object"===typeof process.versions&&"string"===typeof process.versions.node,Ca="",Da,Ea,Fa,fs,Ga,Ja;
if(Ba)Ca=za?require("path").dirname(Ca)+"/":__dirname+"/",Ja=()=>{Ga||(fs=require("fs"),Ga=require("path"))},Da=function(a,b){Ja();a=Ga.normalize(a);return fs.readFileSync(a,b?null:"utf8")},Fa=a=>{a=Da(a,!0);a.buffer||(a=new Uint8Array(a));return a},Ea=(a,b,c)=>{Ja();a=Ga.normalize(a);fs.readFile(a,function(f,h){f?c(f):b(h.buffer)})},1<process.argv.length&&(wa=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",function(a){if(!(a instanceof Ka))throw a;}),process.on("unhandledRejection",
function(a){throw a;}),xa=(a,b)=>{if(noExitRuntime||0<La)throw process.exitCode=a,b;b instanceof Ka||Ma("exiting due to exception: "+b);process.exit(a)},t.inspect=function(){return"[Emscripten Module object]"};else if(ya||za)za?Ca=self.location.href:"undefined"!==typeof document&&document.currentScript&&(Ca=document.currentScript.src),_scriptDir&&(Ca=_scriptDir),0!==Ca.indexOf("blob:")?Ca=Ca.substr(0,Ca.replace(/[?#].*/,"").lastIndexOf("/")+1):Ca="",Da=a=>{var b=new XMLHttpRequest;b.open("GET",a,
!1);b.send(null);return b.responseText},za&&(Fa=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),Ea=(a,b,c)=>{var f=new XMLHttpRequest;f.open("GET",a,!0);f.responseType="arraybuffer";f.onload=()=>{200==f.status||0==f.status&&f.response?b(f.response):c()};f.onerror=c;f.send(null)};var Na=t.print||console.log.bind(console),Ma=t.printErr||console.warn.bind(console);da(t,va);va=null;t.thisProgram&&(wa=t.thisProgram);
t.quit&&(xa=t.quit);var Pa=0,Qa;t.wasmBinary&&(Qa=t.wasmBinary);var noExitRuntime=t.noExitRuntime||!0;"object"!==typeof WebAssembly&&Ra("no native wasm support detected");var Sa,Ua=!1,Va="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;
function Wa(a,b,c){var f=b+c;for(c=b;a[c]&&!(c>=f);)++c;if(16<c-b&&a.subarray&&Va)return Va.decode(a.subarray(b,c));for(f="";b<c;){var h=a[b++];if(h&128){var l=a[b++]&63;if(192==(h&224))f+=String.fromCharCode((h&31)<<6|l);else{var n=a[b++]&63;h=224==(h&240)?(h&15)<<12|l<<6|n:(h&7)<<18|l<<12|n<<6|a[b++]&63;65536>h?f+=String.fromCharCode(h):(h-=65536,f+=String.fromCharCode(55296|h>>10,56320|h&1023))}}else f+=String.fromCharCode(h)}return f}function Xa(a,b){return a?Wa(G,a,b):""}
function sa(a,b,c,f){if(!(0<f))return 0;var h=c;f=c+f-1;for(var l=0;l<a.length;++l){var n=a.charCodeAt(l);if(55296<=n&&57343>=n){var q=a.charCodeAt(++l);n=65536+((n&1023)<<10)|q&1023}if(127>=n){if(c>=f)break;b[c++]=n}else{if(2047>=n){if(c+1>=f)break;b[c++]=192|n>>6}else{if(65535>=n){if(c+2>=f)break;b[c++]=224|n>>12}else{if(c+3>=f)break;b[c++]=240|n>>18;b[c++]=128|n>>12&63}b[c++]=128|n>>6&63}b[c++]=128|n&63}}b[c]=0;return c-h}
function ra(a){for(var b=0,c=0;c<a.length;++c){var f=a.charCodeAt(c);55296<=f&&57343>=f&&(f=65536+((f&1023)<<10)|a.charCodeAt(++c)&1023);127>=f?++b:b=2047>=f?b+2:65535>=f?b+3:b+4}return b}var Ya="undefined"!==typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function ab(a,b){var c=a>>1;for(var f=c+b/2;!(c>=f)&&bb[c];)++c;c<<=1;if(32<c-a&&Ya)return Ya.decode(G.subarray(a,c));c="";for(f=0;!(f>=b/2);++f){var h=cb[a+2*f>>1];if(0==h)break;c+=String.fromCharCode(h)}return c}
function db(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var f=b;c=c<2*a.length?c/2:a.length;for(var h=0;h<c;++h)cb[b>>1]=a.charCodeAt(h),b+=2;cb[b>>1]=0;return b-f}function eb(a){return 2*a.length}function jb(a,b){for(var c=0,f="";!(c>=b/4);){var h=O[a+4*c>>2];if(0==h)break;++c;65536<=h?(h-=65536,f+=String.fromCharCode(55296|h>>10,56320|h&1023)):f+=String.fromCharCode(h)}return f}
function kb(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var f=b;c=f+c-4;for(var h=0;h<a.length;++h){var l=a.charCodeAt(h);if(55296<=l&&57343>=l){var n=a.charCodeAt(++h);l=65536+((l&1023)<<10)|n&1023}O[b>>2]=l;b+=4;if(b+4>c)break}O[b>>2]=0;return b-f}function lb(a){for(var b=0,c=0;c<a.length;++c){var f=a.charCodeAt(c);55296<=f&&57343>=f&&++c;b+=4}return b}var mb,nb,G,cb,bb,O,ob,U,pb;
function qb(){var a=Sa.buffer;mb=a;t.HEAP8=nb=new Int8Array(a);t.HEAP16=cb=new Int16Array(a);t.HEAP32=O=new Int32Array(a);t.HEAPU8=G=new Uint8Array(a);t.HEAPU16=bb=new Uint16Array(a);t.HEAPU32=ob=new Uint32Array(a);t.HEAPF32=U=new Float32Array(a);t.HEAPF64=pb=new Float64Array(a)}var rb,sb=[],tb=[],ub=[],La=0;function vb(){var a=t.preRun.shift();sb.unshift(a)}var wb=0,xb=null,zb=null;t.preloadedImages={};t.preloadedAudios={};
function Ra(a){if(t.onAbort)t.onAbort(a);a="Aborted("+a+")";Ma(a);Ua=!0;a=new WebAssembly.RuntimeError(a+". Build with -s ASSERTIONS=1 for more info.");ha(a);throw a;}function Ab(){return Bb.startsWith("data:application/octet-stream;base64,")}var Bb;Bb="canvaskit.wasm";if(!Ab()){var Cb=Bb;Bb=t.locateFile?t.locateFile(Cb,Ca):Ca+Cb}function Db(){var a=Bb;try{if(a==Bb&&Qa)return new Uint8Array(Qa);if(Fa)return Fa(a);throw"both async and sync fetching of the wasm failed";}catch(b){Ra(b)}}
function Eb(){if(!Qa&&(ya||za)){if("function"===typeof fetch&&!Bb.startsWith("file://"))return fetch(Bb,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+Bb+"'";return a.arrayBuffer()}).catch(function(){return Db()});if(Ea)return new Promise(function(a,b){Ea(Bb,function(c){a(new Uint8Array(c))},b)})}return Promise.resolve().then(function(){return Db()})}
function Fb(a){for(;0<a.length;){var b=a.shift();if("function"==typeof b)b(t);else{var c=b.Dg;"number"===typeof c?void 0===b.ef?Gb(c)():Gb(c)(b.ef):c(void 0===b.ef?null:b.ef)}}}function Gb(a){return rb.get(a)}
function Hb(a){this.Qd=a-16;this.mg=function(b){O[this.Qd+4>>2]=b};this.jg=function(b){O[this.Qd+8>>2]=b};this.kg=function(){O[this.Qd>>2]=0};this.ig=function(){nb[this.Qd+12>>0]=0};this.lg=function(){nb[this.Qd+13>>0]=0};this.Xf=function(b,c){this.mg(b);this.jg(c);this.kg();this.ig();this.lg()}}var Ib=0,Jb={},Kb=[null,[],[]],Lb={},Mb={};function Nb(a){for(;a.length;){var b=a.pop();a.pop()(b)}}function Ob(a){return this.fromWireType(ob[a>>2])}var Pb={},Qb={},Rb={};
function Sb(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a}function Tb(a,b){a=Sb(a);return function(){null;return b.apply(this,arguments)}}
function Ub(a){var b=Error,c=Tb(a,function(f){this.name=a;this.message=f;f=Error(f).stack;void 0!==f&&(this.stack=this.toString()+"\n"+f.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c}var Vb=void 0;function Wb(a){throw new Vb(a);}
function Xb(a,b,c){function f(q){q=c(q);q.length!==a.length&&Wb("Mismatched type converter count");for(var w=0;w<a.length;++w)dc(a[w],q[w])}a.forEach(function(q){Rb[q]=b});var h=Array(b.length),l=[],n=0;b.forEach(function(q,w){Qb.hasOwnProperty(q)?h[w]=Qb[q]:(l.push(q),Pb.hasOwnProperty(q)||(Pb[q]=[]),Pb[q].push(function(){h[w]=Qb[q];++n;n===l.length&&f(h)}))});0===l.length&&f(h)}
function ec(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+a);}}var fc=void 0;function gc(a){for(var b="";G[a];)b+=fc[G[a++]];return b}var hc=void 0;function X(a){throw new hc(a);}
function dc(a,b,c={}){if(!("argPackAdvance"in b))throw new TypeError("registerType registeredInstance requires argPackAdvance");var f=b.name;a||X('type "'+f+'" must have a positive integer typeid pointer');if(Qb.hasOwnProperty(a)){if(c.Wf)return;X("Cannot register type '"+f+"' twice")}Qb[a]=b;delete Rb[a];Pb.hasOwnProperty(a)&&(b=Pb[a],delete Pb[a],b.forEach(function(h){h()}))}function ic(a){X(a.Ld.Xd.Sd.name+" instance already deleted")}var jc=!1;function kc(){}
function lc(a){--a.count.value;0===a.count.value&&(a.$d?a.ge.le(a.$d):a.Xd.Sd.le(a.Qd))}function mc(a){if("undefined"===typeof FinalizationGroup)return mc=b=>b,a;jc=new FinalizationGroup(function(b){for(var c=b.next();!c.done;c=b.next())c=c.value,c.Qd?lc(c):console.warn("object already deleted: "+c.Qd)});mc=b=>{jc.register(b,b.Ld,b.Ld);return b};kc=b=>{jc.unregister(b.Ld)};return mc(a)}var nc=void 0,oc=[];function pc(){for(;oc.length;){var a=oc.pop();a.Ld.De=!1;a["delete"]()}}function qc(){}
var rc={};function sc(a,b,c){if(void 0===a[b].Zd){var f=a[b];a[b]=function(){a[b].Zd.hasOwnProperty(arguments.length)||X("Function '"+c+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+a[b].Zd+")!");return a[b].Zd[arguments.length].apply(this,arguments)};a[b].Zd=[];a[b].Zd[f.Be]=f}}
function tc(a,b,c){t.hasOwnProperty(a)?((void 0===c||void 0!==t[a].Zd&&void 0!==t[a].Zd[c])&&X("Cannot register public name '"+a+"' twice"),sc(t,a,a),t.hasOwnProperty(c)&&X("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),t[a].Zd[c]=b):(t[a]=b,void 0!==c&&(t[a].Fg=c))}function uc(a,b,c,f,h,l,n,q){this.name=a;this.constructor=b;this.Ee=c;this.le=f;this.ie=h;this.Pf=l;this.Pe=n;this.Jf=q;this.fg=[]}
function vc(a,b,c){for(;b!==c;)b.Pe||X("Expected null or instance of "+c.name+", got an instance of "+b.name),a=b.Pe(a),b=b.ie;return a}function wc(a,b){if(null===b)return this.gf&&X("null is not a valid "+this.name),0;b.Ld||X('Cannot pass "'+xc(b)+'" as a '+this.name);b.Ld.Qd||X("Cannot pass deleted object as a pointer of type "+this.name);return vc(b.Ld.Qd,b.Ld.Xd.Sd,this.Sd)}
function yc(a,b){if(null===b){this.gf&&X("null is not a valid "+this.name);if(this.Ue){var c=this.hf();null!==a&&a.push(this.le,c);return c}return 0}b.Ld||X('Cannot pass "'+xc(b)+'" as a '+this.name);b.Ld.Qd||X("Cannot pass deleted object as a pointer of type "+this.name);!this.Te&&b.Ld.Xd.Te&&X("Cannot convert argument of type "+(b.Ld.ge?b.Ld.ge.name:b.Ld.Xd.name)+" to parameter type "+this.name);c=vc(b.Ld.Qd,b.Ld.Xd.Sd,this.Sd);if(this.Ue)switch(void 0===b.Ld.$d&&X("Passing raw pointer to smart pointer is illegal"),
this.qg){case 0:b.Ld.ge===this?c=b.Ld.$d:X("Cannot convert argument of type "+(b.Ld.ge?b.Ld.ge.name:b.Ld.Xd.name)+" to parameter type "+this.name);break;case 1:c=b.Ld.$d;break;case 2:if(b.Ld.ge===this)c=b.Ld.$d;else{var f=b.clone();c=this.gg(c,zc(function(){f["delete"]()}));null!==a&&a.push(this.le,c)}break;default:X("Unsupporting sharing policy")}return c}
function Ac(a,b){if(null===b)return this.gf&&X("null is not a valid "+this.name),0;b.Ld||X('Cannot pass "'+xc(b)+'" as a '+this.name);b.Ld.Qd||X("Cannot pass deleted object as a pointer of type "+this.name);b.Ld.Xd.Te&&X("Cannot convert argument of type "+b.Ld.Xd.name+" to parameter type "+this.name);return vc(b.Ld.Qd,b.Ld.Xd.Sd,this.Sd)}function Bc(a,b,c){if(b===c)return a;if(void 0===c.ie)return null;a=Bc(a,b,c.ie);return null===a?null:c.Jf(a)}var Cc={};
function Dc(a,b){for(void 0===b&&X("ptr should not be undefined");a.ie;)b=a.Pe(b),a=a.ie;return Cc[b]}function Ec(a,b){b.Xd&&b.Qd||Wb("makeClassHandle requires ptr and ptrType");!!b.ge!==!!b.$d&&Wb("Both smartPtrType and smartPtr must be specified");b.count={value:1};return mc(Object.create(a,{Ld:{value:b}}))}
function Fc(a,b,c,f,h,l,n,q,w,x,J){this.name=a;this.Sd=b;this.gf=c;this.Te=f;this.Ue=h;this.eg=l;this.qg=n;this.vf=q;this.hf=w;this.gg=x;this.le=J;h||void 0!==b.ie?this.toWireType=yc:(this.toWireType=f?wc:Ac,this.fe=null)}function Gc(a,b,c){t.hasOwnProperty(a)||Wb("Replacing nonexistant public symbol");void 0!==t[a].Zd&&void 0!==c?t[a].Zd[c]=b:(t[a]=b,t[a].Be=c)}
function Hc(a,b){var c=[];return function(){c.length=arguments.length;for(var f=0;f<arguments.length;f++)c[f]=arguments[f];a.includes("j")?(f=t["dynCall_"+a],f=c&&c.length?f.apply(null,[b].concat(c)):f.call(null,b)):f=Gb(b).apply(null,c);return f}}function Pc(a,b){a=gc(a);var c=a.includes("j")?Hc(a,b):Gb(b);"function"!==typeof c&&X("unknown function pointer with signature "+a+": "+b);return c}var Qc=void 0;function Rc(a){a=Sc(a);var b=gc(a);Tc(a);return b}
function Uc(a,b){function c(l){h[l]||Qb[l]||(Rb[l]?Rb[l].forEach(c):(f.push(l),h[l]=!0))}var f=[],h={};b.forEach(c);throw new Qc(a+": "+f.map(Rc).join([", "]));}
function Vc(a,b,c,f,h){var l=b.length;2>l&&X("argTypes array size mismatch! Must at least get return value and 'this' types!");var n=null!==b[1]&&null!==c,q=!1;for(c=1;c<b.length;++c)if(null!==b[c]&&void 0===b[c].fe){q=!0;break}var w="void"!==b[0].name,x=l-2,J=Array(x),K=[],Q=[];return function(){arguments.length!==x&&X("function "+a+" called with "+arguments.length+" arguments, expected "+x+" args!");Q.length=0;K.length=n?2:1;K[0]=h;if(n){var A=b[1].toWireType(Q,this);K[1]=A}for(var L=0;L<x;++L)J[L]=
b[L+2].toWireType(Q,arguments[L]),K.push(J[L]);L=f.apply(null,K);if(q)Nb(Q);else for(var S=n?1:2;S<b.length;S++){var T=1===S?A:J[S-2];null!==b[S].fe&&b[S].fe(T)}A=w?b[0].fromWireType(L):void 0;return A}}function Wc(a,b){for(var c=[],f=0;f<a;f++)c.push(O[(b>>2)+f]);return c}var Xc=[],Yc=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Zc(a){4<a&&0===--Yc[a].jf&&(Yc[a]=void 0,Xc.push(a))}function $c(a){a||X("Cannot use deleted val. handle = "+a);return Yc[a].value}
function zc(a){switch(a){case void 0:return 1;case null:return 2;case !0:return 3;case !1:return 4;default:var b=Xc.length?Xc.pop():Yc.length;Yc[b]={jf:1,value:a};return b}}function ad(a,b,c){switch(b){case 0:return function(f){return this.fromWireType((c?nb:G)[f])};case 1:return function(f){return this.fromWireType((c?cb:bb)[f>>1])};case 2:return function(f){return this.fromWireType((c?O:ob)[f>>2])};default:throw new TypeError("Unknown integer type: "+a);}}
function bd(a,b){var c=Qb[a];void 0===c&&X(b+" has unknown type "+Rc(a));return c}function xc(a){if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a}function cd(a,b){switch(b){case 2:return function(c){return this.fromWireType(U[c>>2])};case 3:return function(c){return this.fromWireType(pb[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}
function dd(a,b,c){switch(b){case 0:return c?function(f){return nb[f]}:function(f){return G[f]};case 1:return c?function(f){return cb[f>>1]}:function(f){return bb[f>>1]};case 2:return c?function(f){return O[f>>2]}:function(f){return ob[f>>2]};default:throw new TypeError("Unknown integer type: "+a);}}var ed={};function fd(a){var b=ed[a];return void 0===b?gc(a):b}var gd=[];
function hd(){function a(b){b.$$$embind_global$$$=b;var c="object"===typeof $$$embind_global$$$&&b.$$$embind_global$$$===b;c||delete b.$$$embind_global$$$;return c}if("object"===typeof globalThis)return globalThis;if("object"===typeof $$$embind_global$$$)return $$$embind_global$$$;"object"===typeof global&&a(global)?$$$embind_global$$$=global:"object"===typeof self&&a(self)&&($$$embind_global$$$=self);if("object"===typeof $$$embind_global$$$)return $$$embind_global$$$;throw Error("unable to get global object.");
}function jd(a){var b=gd.length;gd.push(a);return b}function kd(a,b){for(var c=Array(a),f=0;f<a;++f)c[f]=bd(O[(b>>2)+f],"parameter "+f);return c}var ld=[];function md(a){var b=Array(a+1);return function(c,f,h){b[0]=c;for(var l=0;l<a;++l){var n=bd(O[(f>>2)+l],"parameter "+l);b[l+1]=n.readValueFromPointer(h);h+=n.argPackAdvance}c=new (c.bind.apply(c,b));return zc(c)}}var nd={},od;od=Ba?()=>{var a=process.hrtime();return 1E3*a[0]+a[1]/1E6}:()=>performance.now();
function pd(a){var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=function(c,f){b.vertexAttribDivisorANGLE(c,f)},a.drawArraysInstanced=function(c,f,h,l){b.drawArraysInstancedANGLE(c,f,h,l)},a.drawElementsInstanced=function(c,f,h,l,n){b.drawElementsInstancedANGLE(c,f,h,l,n)})}
function qd(a){var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=function(){return b.createVertexArrayOES()},a.deleteVertexArray=function(c){b.deleteVertexArrayOES(c)},a.bindVertexArray=function(c){b.bindVertexArrayOES(c)},a.isVertexArray=function(c){return b.isVertexArrayOES(c)})}function rd(a){var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=function(c,f){b.drawBuffersWEBGL(c,f)})}
var sd=1,td=[],ud=[],vd=[],wd=[],la=[],xd=[],yd=[],qa=[],zd=[],Ad=[],Bd={},Cd={},Dd=4;function Ed(a){Hd||(Hd=a)}function ka(a){for(var b=sd++,c=a.length;c<b;c++)a[c]=null;return b}function ma(a,b){a.sf||(a.sf=a.getContext,a.getContext=function(f,h){h=a.sf(f,h);return"webgl"==f==h instanceof WebGLRenderingContext?h:null});var c=1<b.majorVersion?a.getContext("webgl2",b):a.getContext("webgl",b);return c?Id(c,b):0}
function Id(a,b){var c=ka(qa),f={Vf:c,attributes:b,version:b.majorVersion,je:a};a.canvas&&(a.canvas.yf=f);qa[c]=f;("undefined"===typeof b.Kf||b.Kf)&&Jd(f);return c}function na(a){v=qa[a];t.Cg=Y=v&&v.je;return!(a&&!Y)}
function Jd(a){a||(a=v);if(!a.Yf){a.Yf=!0;var b=a.je;pd(b);qd(b);rd(b);b.pf=b.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");b.uf=b.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance");2<=a.version&&(b.qf=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.qf)b.qf=b.getExtension("EXT_disjoint_timer_query");b.Eg=b.getExtension("WEBGL_multi_draw");(b.getSupportedExtensions()||[]).forEach(function(c){c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}}
var v,Hd,Kd=[];function Ld(a,b,c,f){for(var h=0;h<a;h++){var l=Y[c](),n=l&&ka(f);l?(l.name=n,f[n]=l):Ed(1282);O[b+4*h>>2]=n}}
function Md(a,b){if(b){var c=void 0;switch(a){case 36346:c=1;break;case 36344:return;case 34814:case 36345:c=0;break;case 34466:var f=Y.getParameter(34467);c=f?f.length:0;break;case 33309:if(2>v.version){Ed(1282);return}c=2*(Y.getSupportedExtensions()||[]).length;break;case 33307:case 33308:if(2>v.version){Ed(1280);return}c=33307==a?3:0}if(void 0===c)switch(f=Y.getParameter(a),typeof f){case "number":c=f;break;case "boolean":c=f?1:0;break;case "string":Ed(1280);return;case "object":if(null===f)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:c=
0;break;default:Ed(1280);return}else{if(f instanceof Float32Array||f instanceof Uint32Array||f instanceof Int32Array||f instanceof Array){for(a=0;a<f.length;++a)O[b+4*a>>2]=f[a];return}try{c=f.name|0}catch(h){Ed(1280);Ma("GL_INVALID_ENUM in glGet0v: Unknown object returned from WebGL getParameter("+a+")! (error: "+h+")");return}}break;default:Ed(1280);Ma("GL_INVALID_ENUM in glGet0v: Native code calling glGet0v("+a+") and it returns "+f+" of type "+typeof f+"!");return}O[b>>2]=c}else Ed(1281)}
function Nd(a){var b=ra(a)+1,c=Od(b);sa(a,G,c,b);return c}function Pd(a){return"]"==a.slice(-1)&&a.lastIndexOf("[")}function Qd(a){a-=5120;return 0==a?nb:1==a?G:2==a?cb:4==a?O:6==a?U:5==a||28922==a||28520==a||30779==a||30782==a?ob:bb}function Rd(a,b,c,f,h){a=Qd(a);var l=31-Math.clz32(a.BYTES_PER_ELEMENT),n=Dd;return a.subarray(h>>l,h+f*(c*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*(1<<l)+n-1&-n)>>l)}
function Z(a){var b=Y.Gf;if(b){var c=b.Oe[a];"number"===typeof c&&(b.Oe[a]=c=Y.getUniformLocation(b,b.wf[a]+(0<c?"["+c+"]":"")));return c}Ed(1282)}var Sd=[],Td=[],Ud={};
function Vd(){if(!Wd){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"===typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:wa||"./this.program"},b;for(b in Ud)void 0===Ud[b]?delete a[b]:a[b]=Ud[b];var c=[];for(b in a)c.push(b+"="+a[b]);Wd=c}return Wd}var Wd;function Xd(a){return 0===a%4&&(0!==a%100||0===a%400)}function Yd(a,b){for(var c=0,f=0;f<=b;c+=a[f++]);return c}
var Zd=[31,29,31,30,31,30,31,31,30,31,30,31],$d=[31,28,31,30,31,30,31,31,30,31,30,31];function ae(a,b){for(a=new Date(a.getTime());0<b;){var c=a.getMonth(),f=(Xd(a.getFullYear())?Zd:$d)[c];if(b>f-a.getDate())b-=f-a.getDate()+1,a.setDate(1),11>c?a.setMonth(c+1):(a.setMonth(0),a.setFullYear(a.getFullYear()+1));else{a.setDate(a.getDate()+b);break}}return a}
function be(a,b,c,f){function h(A,L,S){for(A="number"===typeof A?A.toString():A||"";A.length<L;)A=S[0]+A;return A}function l(A,L){return h(A,L,"0")}function n(A,L){function S(oa){return 0>oa?-1:0<oa?1:0}var T;0===(T=S(A.getFullYear()-L.getFullYear()))&&0===(T=S(A.getMonth()-L.getMonth()))&&(T=S(A.getDate()-L.getDate()));return T}function q(A){switch(A.getDay()){case 0:return new Date(A.getFullYear()-1,11,29);case 1:return A;case 2:return new Date(A.getFullYear(),0,3);case 3:return new Date(A.getFullYear(),
0,2);case 4:return new Date(A.getFullYear(),0,1);case 5:return new Date(A.getFullYear()-1,11,31);case 6:return new Date(A.getFullYear()-1,11,30)}}function w(A){A=ae(new Date(A.be+1900,0,1),A.$e);var L=new Date(A.getFullYear()+1,0,4),S=q(new Date(A.getFullYear(),0,4));L=q(L);return 0>=n(S,A)?0>=n(L,A)?A.getFullYear()+1:A.getFullYear():A.getFullYear()-1}var x=O[f+40>>2];f={yg:O[f>>2],xg:O[f+4>>2],Ye:O[f+8>>2],Ne:O[f+12>>2],Fe:O[f+16>>2],be:O[f+20>>2],Ze:O[f+24>>2],$e:O[f+28>>2],Ig:O[f+32>>2],wg:O[f+
36>>2],zg:x?Xa(x):""};c=Xa(c);x={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var J in x)c=c.replace(new RegExp(J,"g"),x[J]);var K="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),
Q="January February March April May June July August September October November December".split(" ");x={"%a":function(A){return K[A.Ze].substring(0,3)},"%A":function(A){return K[A.Ze]},"%b":function(A){return Q[A.Fe].substring(0,3)},"%B":function(A){return Q[A.Fe]},"%C":function(A){return l((A.be+1900)/100|0,2)},"%d":function(A){return l(A.Ne,2)},"%e":function(A){return h(A.Ne,2," ")},"%g":function(A){return w(A).toString().substring(2)},"%G":function(A){return w(A)},"%H":function(A){return l(A.Ye,
2)},"%I":function(A){A=A.Ye;0==A?A=12:12<A&&(A-=12);return l(A,2)},"%j":function(A){return l(A.Ne+Yd(Xd(A.be+1900)?Zd:$d,A.Fe-1),3)},"%m":function(A){return l(A.Fe+1,2)},"%M":function(A){return l(A.xg,2)},"%n":function(){return"\n"},"%p":function(A){return 0<=A.Ye&&12>A.Ye?"AM":"PM"},"%S":function(A){return l(A.yg,2)},"%t":function(){return"\t"},"%u":function(A){return A.Ze||7},"%U":function(A){var L=new Date(A.be+1900,0,1),S=0===L.getDay()?L:ae(L,7-L.getDay());A=new Date(A.be+1900,A.Fe,A.Ne);return 0>
n(S,A)?l(Math.ceil((31-S.getDate()+(Yd(Xd(A.getFullYear())?Zd:$d,A.getMonth()-1)-31)+A.getDate())/7),2):0===n(S,L)?"01":"00"},"%V":function(A){var L=new Date(A.be+1901,0,4),S=q(new Date(A.be+1900,0,4));L=q(L);var T=ae(new Date(A.be+1900,0,1),A.$e);return 0>n(T,S)?"53":0>=n(L,T)?"01":l(Math.ceil((S.getFullYear()<A.be+1900?A.$e+32-S.getDate():A.$e+1-S.getDate())/7),2)},"%w":function(A){return A.Ze},"%W":function(A){var L=new Date(A.be,0,1),S=1===L.getDay()?L:ae(L,0===L.getDay()?1:7-L.getDay()+1);A=
new Date(A.be+1900,A.Fe,A.Ne);return 0>n(S,A)?l(Math.ceil((31-S.getDate()+(Yd(Xd(A.getFullYear())?Zd:$d,A.getMonth()-1)-31)+A.getDate())/7),2):0===n(S,L)?"01":"00"},"%y":function(A){return(A.be+1900).toString().substring(2)},"%Y":function(A){return A.be+1900},"%z":function(A){A=A.wg;var L=0<=A;A=Math.abs(A)/60;return(L?"+":"-")+String("0000"+(A/60*100+A%60)).slice(-4)},"%Z":function(A){return A.zg},"%%":function(){return"%"}};for(J in x)c.includes(J)&&(c=c.replace(new RegExp(J,"g"),x[J](f)));J=ce(c);
if(J.length>b)return 0;nb.set(J,a);return J.length-1}Vb=t.InternalError=Ub("InternalError");for(var de=Array(256),ee=0;256>ee;++ee)de[ee]=String.fromCharCode(ee);fc=de;hc=t.BindingError=Ub("BindingError");qc.prototype.isAliasOf=function(a){if(!(this instanceof qc&&a instanceof qc))return!1;var b=this.Ld.Xd.Sd,c=this.Ld.Qd,f=a.Ld.Xd.Sd;for(a=a.Ld.Qd;b.ie;)c=b.Pe(c),b=b.ie;for(;f.ie;)a=f.Pe(a),f=f.ie;return b===f&&c===a};
qc.prototype.clone=function(){this.Ld.Qd||ic(this);if(this.Ld.Me)return this.Ld.count.value+=1,this;var a=mc,b=Object,c=b.create,f=Object.getPrototypeOf(this),h=this.Ld;a=a(c.call(b,f,{Ld:{value:{count:h.count,De:h.De,Me:h.Me,Qd:h.Qd,Xd:h.Xd,$d:h.$d,ge:h.ge}}}));a.Ld.count.value+=1;a.Ld.De=!1;return a};qc.prototype["delete"]=function(){this.Ld.Qd||ic(this);this.Ld.De&&!this.Ld.Me&&X("Object already scheduled for deletion");kc(this);lc(this.Ld);this.Ld.Me||(this.Ld.$d=void 0,this.Ld.Qd=void 0)};
qc.prototype.isDeleted=function(){return!this.Ld.Qd};qc.prototype.deleteLater=function(){this.Ld.Qd||ic(this);this.Ld.De&&!this.Ld.Me&&X("Object already scheduled for deletion");oc.push(this);1===oc.length&&nc&&nc(pc);this.Ld.De=!0;return this};Fc.prototype.Qf=function(a){this.vf&&(a=this.vf(a));return a};Fc.prototype.nf=function(a){this.le&&this.le(a)};Fc.prototype.argPackAdvance=8;Fc.prototype.readValueFromPointer=Ob;Fc.prototype.deleteObject=function(a){if(null!==a)a["delete"]()};
Fc.prototype.fromWireType=function(a){function b(){return this.Ue?Ec(this.Sd.Ee,{Xd:this.eg,Qd:c,ge:this,$d:a}):Ec(this.Sd.Ee,{Xd:this,Qd:a})}var c=this.Qf(a);if(!c)return this.nf(a),null;var f=Dc(this.Sd,c);if(void 0!==f){if(0===f.Ld.count.value)return f.Ld.Qd=c,f.Ld.$d=a,f.clone();f=f.clone();this.nf(a);return f}f=this.Sd.Pf(c);f=rc[f];if(!f)return b.call(this);f=this.Te?f.Ef:f.pointerType;var h=Bc(c,this.Sd,f.Sd);return null===h?b.call(this):this.Ue?Ec(f.Sd.Ee,{Xd:f,Qd:h,ge:this,$d:a}):Ec(f.Sd.Ee,
{Xd:f,Qd:h})};t.getInheritedInstanceCount=function(){return Object.keys(Cc).length};t.getLiveInheritedInstances=function(){var a=[],b;for(b in Cc)Cc.hasOwnProperty(b)&&a.push(Cc[b]);return a};t.flushPendingDeletes=pc;t.setDelayFunction=function(a){nc=a;oc.length&&nc&&nc(pc)};Qc=t.UnboundTypeError=Ub("UnboundTypeError");t.count_emval_handles=function(){for(var a=0,b=5;b<Yc.length;++b)void 0!==Yc[b]&&++a;return a};
t.get_first_emval=function(){for(var a=5;a<Yc.length;++a)if(void 0!==Yc[a])return Yc[a];return null};for(var Y,fe=0;32>fe;++fe)Kd.push(Array(fe));var ge=new Float32Array(288);for(fe=0;288>fe;++fe)Sd[fe]=ge.subarray(0,fe+1);var he=new Int32Array(288);for(fe=0;288>fe;++fe)Td[fe]=he.subarray(0,fe+1);function ce(a){var b=Array(ra(a)+1);sa(a,b,0,b.length);return b}
var ze={Lb:function(a){return Od(a+16)+16},Eb:function(a,b,c){(new Hb(a)).Xf(b,c);Ib++;throw a;},P:function(){return 0},zb:function(){},xb:function(){},Cb:function(){return 0},wb:function(){},tb:function(a,b,c,f,h,l){l<<=12;if(0!==(f&16)&&0!==a%65536)b=-28;else if(0!==(f&32)){a=65536*Math.ceil(b/65536);var n=ie(65536,a);n?(G.fill(0,n,n+a),a=n):a=0;a?(Jb[a]={cg:a,bg:b,Df:!0,fd:h,Gg:c,flags:f,offset:l},b=a):b=-48}else b=-52;return b},sb:function(a,b){var c=Jb[a];0!==b&&c?(b===c.bg&&(Jb[a]=null,c.Df&&
Tc(c.cg)),a=0):a=-28;return a},Q:function(){},yb:function(){},x:function(a){var b=Mb[a];delete Mb[a];var c=b.hf,f=b.le,h=b.rf,l=h.map(function(n){return n.Uf}).concat(h.map(function(n){return n.og}));Xb([a],l,function(n){var q={};h.forEach(function(w,x){var J=n[x],K=w.Sf,Q=w.Tf,A=n[x+h.length],L=w.ng,S=w.pg;q[w.Lf]={read:function(T){return J.fromWireType(K(Q,T))},write:function(T,oa){var ta=[];L(S,T,A.toWireType(ta,oa));Nb(ta)}}});return[{name:b.name,fromWireType:function(w){var x={},J;for(J in q)x[J]=
q[J].read(w);f(w);return x},toWireType:function(w,x){for(var J in q)if(!(J in x))throw new TypeError('Missing field: "'+J+'"');var K=c();for(J in q)q[J].write(K,x[J]);null!==w&&w.push(f,K);return K},argPackAdvance:8,readValueFromPointer:Ob,fe:f}]})},mb:function(){},Fb:function(a,b,c,f,h){var l=ec(c);b=gc(b);dc(a,{name:b,fromWireType:function(n){return!!n},toWireType:function(n,q){return q?f:h},argPackAdvance:8,readValueFromPointer:function(n){if(1===c)var q=nb;else if(2===c)q=cb;else if(4===c)q=
O;else throw new TypeError("Unknown boolean type size: "+b);return this.fromWireType(q[n>>l])},fe:null})},l:function(a,b,c,f,h,l,n,q,w,x,J,K,Q){J=gc(J);l=Pc(h,l);q&&(q=Pc(n,q));x&&(x=Pc(w,x));Q=Pc(K,Q);var A=Sb(J);tc(A,function(){Uc("Cannot construct "+J+" due to unbound types",[f])});Xb([a,b,c],f?[f]:[],function(L){L=L[0];if(f){var S=L.Sd;var T=S.Ee}else T=qc.prototype;L=Tb(A,function(){if(Object.getPrototypeOf(this)!==oa)throw new hc("Use 'new' to construct "+J);if(void 0===ta.oe)throw new hc(J+
" has no accessible constructor");var hb=ta.oe[arguments.length];if(void 0===hb)throw new hc("Tried to invoke ctor of "+J+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(ta.oe).toString()+") parameters instead!");return hb.apply(this,arguments)});var oa=Object.create(T,{constructor:{value:L}});L.prototype=oa;var ta=new uc(J,L,oa,Q,S,l,q,x);S=new Fc(J,ta,!0,!1,!1);T=new Fc(J+"*",ta,!1,!1,!1);var gb=new Fc(J+" const*",ta,!1,!0,!1);rc[a]={pointerType:T,Ef:gb};Gc(A,
L);return[S,T,gb]})},e:function(a,b,c,f,h,l,n){var q=Wc(c,f);b=gc(b);l=Pc(h,l);Xb([],[a],function(w){function x(){Uc("Cannot call "+J+" due to unbound types",q)}w=w[0];var J=w.name+"."+b;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);var K=w.Sd.constructor;void 0===K[b]?(x.Be=c-1,K[b]=x):(sc(K,b,J),K[b].Zd[c-1]=x);Xb([],q,function(Q){Q=[Q[0],null].concat(Q.slice(1));Q=Vc(J,Q,null,l,n);void 0===K[b].Zd?(Q.Be=c-1,K[b]=Q):K[b].Zd[c-1]=Q;return[]});return[]})},u:function(a,b,c,f,h,l){0<b||Ra(void 0);
var n=Wc(b,c);h=Pc(f,h);Xb([],[a],function(q){q=q[0];var w="constructor "+q.name;void 0===q.Sd.oe&&(q.Sd.oe=[]);if(void 0!==q.Sd.oe[b-1])throw new hc("Cannot register multiple constructors with identical number of parameters ("+(b-1)+") for class '"+q.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");q.Sd.oe[b-1]=()=>{Uc("Cannot construct "+q.name+" due to unbound types",n)};Xb([],n,function(x){x.splice(1,0,null);q.Sd.oe[b-1]=Vc(w,x,null,h,
l);return[]});return[]})},d:function(a,b,c,f,h,l,n,q){var w=Wc(c,f);b=gc(b);l=Pc(h,l);Xb([],[a],function(x){function J(){Uc("Cannot call "+K+" due to unbound types",w)}x=x[0];var K=x.name+"."+b;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);q&&x.Sd.fg.push(b);var Q=x.Sd.Ee,A=Q[b];void 0===A||void 0===A.Zd&&A.className!==x.name&&A.Be===c-2?(J.Be=c-2,J.className=x.name,Q[b]=J):(sc(Q,b,K),Q[b].Zd[c-2]=J);Xb([],w,function(L){L=Vc(K,L,x,l,n);void 0===Q[b].Zd?(L.Be=c-2,Q[b]=L):Q[b].Zd[c-2]=L;return[]});
return[]})},V:function(a,b,c){a=gc(a);Xb([],[b],function(f){f=f[0];t[a]=f.fromWireType(c);return[]})},Db:function(a,b){b=gc(b);dc(a,{name:b,fromWireType:function(c){var f=$c(c);Zc(c);return f},toWireType:function(c,f){return zc(f)},argPackAdvance:8,readValueFromPointer:Ob,fe:null})},k:function(a,b,c,f){function h(){}c=ec(c);b=gc(b);h.values={};dc(a,{name:b,constructor:h,fromWireType:function(l){return this.constructor.values[l]},toWireType:function(l,n){return n.value},argPackAdvance:8,readValueFromPointer:ad(b,
c,f),fe:null});tc(b,h)},j:function(a,b,c){var f=bd(a,"enum");b=gc(b);a=f.constructor;f=Object.create(f.constructor.prototype,{value:{value:c},constructor:{value:Tb(f.name+"_"+b,function(){})}});a.values[c]=f;a[b]=f},S:function(a,b,c){c=ec(c);b=gc(b);dc(a,{name:b,fromWireType:function(f){return f},toWireType:function(f,h){return h},argPackAdvance:8,readValueFromPointer:cd(b,c),fe:null})},t:function(a,b,c,f,h,l){var n=Wc(b,c);a=gc(a);h=Pc(f,h);tc(a,function(){Uc("Cannot call "+a+" due to unbound types",
n)},b-1);Xb([],n,function(q){q=[q[0],null].concat(q.slice(1));Gc(a,Vc(a,q,null,h,l),b-1);return[]})},w:function(a,b,c,f,h){b=gc(b);-1===h&&(h=4294967295);h=ec(c);var l=q=>q;if(0===f){var n=32-8*c;l=q=>q<<n>>>n}c=b.includes("unsigned")?function(q,w){return w>>>0}:function(q,w){return w};dc(a,{name:b,fromWireType:l,toWireType:c,argPackAdvance:8,readValueFromPointer:dd(b,h,0!==f),fe:null})},p:function(a,b,c){function f(l){l>>=2;var n=ob;return new h(mb,n[l+1],n[l])}var h=[Int8Array,Uint8Array,Int16Array,
Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=gc(c);dc(a,{name:c,fromWireType:f,argPackAdvance:8,readValueFromPointer:f},{Wf:!0})},o:function(a,b,c,f,h,l,n,q,w,x,J,K){c=gc(c);l=Pc(h,l);q=Pc(n,q);x=Pc(w,x);K=Pc(J,K);Xb([a],[b],function(Q){Q=Q[0];return[new Fc(c,Q.Sd,!1,!1,!0,Q,f,l,q,x,K)]})},R:function(a,b){b=gc(b);var c="std::string"===b;dc(a,{name:b,fromWireType:function(f){var h=ob[f>>2];if(c)for(var l=f+4,n=0;n<=h;++n){var q=f+4+n;if(n==h||0==G[q]){l=Xa(l,q-l);if(void 0===
w)var w=l;else w+=String.fromCharCode(0),w+=l;l=q+1}}else{w=Array(h);for(n=0;n<h;++n)w[n]=String.fromCharCode(G[f+4+n]);w=w.join("")}Tc(f);return w},toWireType:function(f,h){h instanceof ArrayBuffer&&(h=new Uint8Array(h));var l="string"===typeof h;l||h instanceof Uint8Array||h instanceof Uint8ClampedArray||h instanceof Int8Array||X("Cannot pass non-string to std::string");var n=(c&&l?()=>ra(h):()=>h.length)(),q=Od(4+n+1);ob[q>>2]=n;if(c&&l)sa(h,G,q+4,n+1);else if(l)for(l=0;l<n;++l){var w=h.charCodeAt(l);
255<w&&(Tc(q),X("String has UTF-16 code units that do not fit in 8 bits"));G[q+4+l]=w}else for(l=0;l<n;++l)G[q+4+l]=h[l];null!==f&&f.push(Tc,q);return q},argPackAdvance:8,readValueFromPointer:Ob,fe:function(f){Tc(f)}})},H:function(a,b,c){c=gc(c);if(2===b){var f=ab;var h=db;var l=eb;var n=()=>bb;var q=1}else 4===b&&(f=jb,h=kb,l=lb,n=()=>ob,q=2);dc(a,{name:c,fromWireType:function(w){for(var x=ob[w>>2],J=n(),K,Q=w+4,A=0;A<=x;++A){var L=w+4+A*b;if(A==x||0==J[L>>q])Q=f(Q,L-Q),void 0===K?K=Q:(K+=String.fromCharCode(0),
K+=Q),Q=L+b}Tc(w);return K},toWireType:function(w,x){"string"!==typeof x&&X("Cannot pass non-string to C++ string type "+c);var J=l(x),K=Od(4+J+b);ob[K>>2]=J>>q;h(x,K+4,J+b);null!==w&&w.push(Tc,K);return K},argPackAdvance:8,readValueFromPointer:Ob,fe:function(w){Tc(w)}})},y:function(a,b,c,f,h,l){Mb[a]={name:gc(b),hf:Pc(c,f),le:Pc(h,l),rf:[]}},g:function(a,b,c,f,h,l,n,q,w,x){Mb[a].rf.push({Lf:gc(b),Uf:c,Sf:Pc(f,h),Tf:l,og:n,ng:Pc(q,w),pg:x})},Gb:function(a,b){b=gc(b);dc(a,{Zf:!0,name:b,argPackAdvance:0,
fromWireType:function(){},toWireType:function(){}})},pb:function(){throw"longjmp";},A:function(a,b,c){a=$c(a);b=bd(b,"emval::as");var f=[],h=zc(f);O[c>>2]=h;return b.toWireType(f,a)},M:function(a,b,c,f,h){a=gd[a];b=$c(b);c=fd(c);var l=[];O[f>>2]=zc(l);return a(b,c,l,h)},B:function(a,b,c,f){a=gd[a];b=$c(b);c=fd(c);a(b,c,null,f)},D:Zc,Bb:function(a){if(0===a)return zc(hd());a=fd(a);return zc(hd()[a])},z:function(a,b){var c=kd(a,b),f=c[0];b=f.name+"_$"+c.slice(1).map(function(n){return n.name}).join("_")+
"$";var h=ld[b];if(void 0!==h)return h;var l=Array(a-1);h=jd((n,q,w,x)=>{for(var J=0,K=0;K<a-1;++K)l[K]=c[K+1].readValueFromPointer(x+J),J+=c[K+1].argPackAdvance;n=n[q].apply(n,l);for(K=0;K<a-1;++K)c[K+1].Hf&&c[K+1].Hf(l[K]);if(!f.Zf)return f.toWireType(w,n)});return ld[b]=h},K:function(a,b){a=$c(a);b=$c(b);return zc(a[b])},F:function(a){4<a&&(Yc[a].jf+=1)},rb:function(a,b,c,f){a=$c(a);var h=nd[b];h||(h=md(b),nd[b]=h);return h(a,c,f)},gb:function(){return zc([])},Ka:function(a){return zc(fd(a))},
hb:function(){return zc({})},fb:function(a){a=$c(a);return!a},jb:function(a){var b=$c(a);Nb(b);Zc(a)},v:function(a,b,c){a=$c(a);b=$c(b);c=$c(c);a[b]=c},r:function(a,b){a=bd(a,"_emval_take_value");a=a.readValueFromPointer(b);return zc(a)},a:function(){Ra("")},ob:function(a,b){if(0===a)a=Date.now();else if(1===a||4===a)a=od();else return O[je()>>2]=28,-1;O[b>>2]=a/1E3|0;O[b+4>>2]=a%1E3*1E6|0;return 0},_c:function(a){Y.activeTexture(a)},$c:function(a,b){Y.attachShader(ud[a],xd[b])},ad:function(a,b,c){Y.bindAttribLocation(ud[a],
b,Xa(c))},Y:function(a,b){35051==a?Y.ff=b:35052==a&&(Y.Ce=b);Y.bindBuffer(a,td[b])},X:function(a,b){Y.bindFramebuffer(a,vd[b])},cc:function(a,b){Y.bindRenderbuffer(a,wd[b])},Qb:function(a,b){Y.bindSampler(a,zd[b])},Z:function(a,b){Y.bindTexture(a,la[b])},wc:function(a){Y.bindVertexArray(yd[a])},zc:function(a){Y.bindVertexArray(yd[a])},_:function(a,b,c,f){Y.blendColor(a,b,c,f)},$:function(a){Y.blendEquation(a)},aa:function(a,b){Y.blendFunc(a,b)},Xb:function(a,b,c,f,h,l,n,q,w,x){Y.blitFramebuffer(a,
b,c,f,h,l,n,q,w,x)},ba:function(a,b,c,f){2<=v.version?c?Y.bufferData(a,G,f,c,b):Y.bufferData(a,b,f):Y.bufferData(a,c?G.subarray(c,c+b):b,f)},ca:function(a,b,c,f){2<=v.version?Y.bufferSubData(a,b,G,f,c):Y.bufferSubData(a,b,G.subarray(f,f+c))},dc:function(a){return Y.checkFramebufferStatus(a)},L:function(a){Y.clear(a)},W:function(a,b,c,f){Y.clearColor(a,b,c,f)},O:function(a){Y.clearStencil(a)},db:function(a,b,c,f){return Y.clientWaitSync(Ad[a],b,(c>>>0)+4294967296*f)},da:function(a,b,c,f){Y.colorMask(!!a,
!!b,!!c,!!f)},ea:function(a){Y.compileShader(xd[a])},fa:function(a,b,c,f,h,l,n,q){2<=v.version?Y.Ce?Y.compressedTexImage2D(a,b,c,f,h,l,n,q):Y.compressedTexImage2D(a,b,c,f,h,l,G,q,n):Y.compressedTexImage2D(a,b,c,f,h,l,q?G.subarray(q,q+n):null)},ga:function(a,b,c,f,h,l,n,q,w){2<=v.version?Y.Ce?Y.compressedTexSubImage2D(a,b,c,f,h,l,n,q,w):Y.compressedTexSubImage2D(a,b,c,f,h,l,n,G,w,q):Y.compressedTexSubImage2D(a,b,c,f,h,l,n,w?G.subarray(w,w+q):null)},ha:function(a,b,c,f,h,l,n,q){Y.copyTexSubImage2D(a,
b,c,f,h,l,n,q)},ia:function(){var a=ka(ud),b=Y.createProgram();b.name=a;b.Xe=b.Ve=b.We=0;b.kf=1;ud[a]=b;return a},ja:function(a){var b=ka(xd);xd[b]=Y.createShader(a);return b},ka:function(a){Y.cullFace(a)},la:function(a,b){for(var c=0;c<a;c++){var f=O[b+4*c>>2],h=td[f];h&&(Y.deleteBuffer(h),h.name=0,td[f]=null,f==Y.ff&&(Y.ff=0),f==Y.Ce&&(Y.Ce=0))}},ec:function(a,b){for(var c=0;c<a;++c){var f=O[b+4*c>>2],h=vd[f];h&&(Y.deleteFramebuffer(h),h.name=0,vd[f]=null)}},ma:function(a){if(a){var b=ud[a];b?(Y.deleteProgram(b),
b.name=0,ud[a]=null):Ed(1281)}},fc:function(a,b){for(var c=0;c<a;c++){var f=O[b+4*c>>2],h=wd[f];h&&(Y.deleteRenderbuffer(h),h.name=0,wd[f]=null)}},Rb:function(a,b){for(var c=0;c<a;c++){var f=O[b+4*c>>2],h=zd[f];h&&(Y.deleteSampler(h),h.name=0,zd[f]=null)}},na:function(a){if(a){var b=xd[a];b?(Y.deleteShader(b),xd[a]=null):Ed(1281)}},Zb:function(a){if(a){var b=Ad[a];b?(Y.deleteSync(b),b.name=0,Ad[a]=null):Ed(1281)}},oa:function(a,b){for(var c=0;c<a;c++){var f=O[b+4*c>>2],h=la[f];h&&(Y.deleteTexture(h),
h.name=0,la[f]=null)}},xc:function(a,b){for(var c=0;c<a;c++){var f=O[b+4*c>>2];Y.deleteVertexArray(yd[f]);yd[f]=null}},Ac:function(a,b){for(var c=0;c<a;c++){var f=O[b+4*c>>2];Y.deleteVertexArray(yd[f]);yd[f]=null}},pa:function(a){Y.depthMask(!!a)},qa:function(a){Y.disable(a)},ra:function(a){Y.disableVertexAttribArray(a)},sa:function(a,b,c){Y.drawArrays(a,b,c)},uc:function(a,b,c,f){Y.drawArraysInstanced(a,b,c,f)},sc:function(a,b,c,f,h){Y.pf.drawArraysInstancedBaseInstanceWEBGL(a,b,c,f,h)},qc:function(a,
b){for(var c=Kd[a],f=0;f<a;f++)c[f]=O[b+4*f>>2];Y.drawBuffers(c)},ta:function(a,b,c,f){Y.drawElements(a,b,c,f)},vc:function(a,b,c,f,h){Y.drawElementsInstanced(a,b,c,f,h)},tc:function(a,b,c,f,h,l,n){Y.pf.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a,b,c,f,h,l,n)},kc:function(a,b,c,f,h,l){Y.drawElements(a,f,h,l)},ua:function(a){Y.enable(a)},va:function(a){Y.enableVertexAttribArray(a)},Vb:function(a,b){return(a=Y.fenceSync(a,b))?(b=ka(Ad),a.name=b,Ad[b]=a,b):0},wa:function(){Y.finish()},xa:function(){Y.flush()},
gc:function(a,b,c,f){Y.framebufferRenderbuffer(a,b,c,wd[f])},hc:function(a,b,c,f,h){Y.framebufferTexture2D(a,b,c,la[f],h)},ya:function(a){Y.frontFace(a)},za:function(a,b){Ld(a,b,"createBuffer",td)},ic:function(a,b){Ld(a,b,"createFramebuffer",vd)},jc:function(a,b){Ld(a,b,"createRenderbuffer",wd)},Sb:function(a,b){Ld(a,b,"createSampler",zd)},Aa:function(a,b){Ld(a,b,"createTexture",la)},yc:function(a,b){Ld(a,b,"createVertexArray",yd)},Bc:function(a,b){Ld(a,b,"createVertexArray",yd)},_b:function(a){Y.generateMipmap(a)},
Ba:function(a,b,c){c?O[c>>2]=Y.getBufferParameter(a,b):Ed(1281)},Ca:function(){var a=Y.getError()||Hd;Hd=0;return a},$b:function(a,b,c,f){a=Y.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;O[f>>2]=a},E:function(a,b){Md(a,b)},Da:function(a,b,c,f){a=Y.getProgramInfoLog(ud[a]);null===a&&(a="(unknown error)");b=0<b&&f?sa(a,G,f,b):0;c&&(O[c>>2]=b)},Ea:function(a,b,c){if(c)if(a>=sd)Ed(1281);else if(a=ud[a],35716==b)a=Y.getProgramInfoLog(a),
null===a&&(a="(unknown error)"),O[c>>2]=a.length+1;else if(35719==b){if(!a.Xe)for(b=0;b<Y.getProgramParameter(a,35718);++b)a.Xe=Math.max(a.Xe,Y.getActiveUniform(a,b).name.length+1);O[c>>2]=a.Xe}else if(35722==b){if(!a.Ve)for(b=0;b<Y.getProgramParameter(a,35721);++b)a.Ve=Math.max(a.Ve,Y.getActiveAttrib(a,b).name.length+1);O[c>>2]=a.Ve}else if(35381==b){if(!a.We)for(b=0;b<Y.getProgramParameter(a,35382);++b)a.We=Math.max(a.We,Y.getActiveUniformBlockName(a,b).length+1);O[c>>2]=a.We}else O[c>>2]=Y.getProgramParameter(a,
b);else Ed(1281)},ac:function(a,b,c){c?O[c>>2]=Y.getRenderbufferParameter(a,b):Ed(1281)},Fa:function(a,b,c,f){a=Y.getShaderInfoLog(xd[a]);null===a&&(a="(unknown error)");b=0<b&&f?sa(a,G,f,b):0;c&&(O[c>>2]=b)},Nb:function(a,b,c,f){a=Y.getShaderPrecisionFormat(a,b);O[c>>2]=a.rangeMin;O[c+4>>2]=a.rangeMax;O[f>>2]=a.precision},Ga:function(a,b,c){c?35716==b?(a=Y.getShaderInfoLog(xd[a]),null===a&&(a="(unknown error)"),O[c>>2]=a?a.length+1:0):35720==b?(a=Y.getShaderSource(xd[a]),O[c>>2]=a?a.length+1:0):
O[c>>2]=Y.getShaderParameter(xd[a],b):Ed(1281)},J:function(a){var b=Bd[a];if(!b){switch(a){case 7939:b=Y.getSupportedExtensions()||[];b=b.concat(b.map(function(f){return"GL_"+f}));b=Nd(b.join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=Y.getParameter(a))||Ed(1280);b=b&&Nd(b);break;case 7938:b=Y.getParameter(7938);b=2<=v.version?"OpenGL ES 3.0 ("+b+")":"OpenGL ES 2.0 ("+b+")";b=Nd(b);break;case 35724:b=Y.getParameter(35724);var c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);
null!==c&&(3==c[1].length&&(c[1]+="0"),b="OpenGL ES GLSL ES "+c[1]+" ("+b+")");b=Nd(b);break;default:Ed(1280)}Bd[a]=b}return b},cb:function(a,b){if(2>v.version)return Ed(1282),0;var c=Cd[a];if(c)return 0>b||b>=c.length?(Ed(1281),0):c[b];switch(a){case 7939:return c=Y.getSupportedExtensions()||[],c=c.concat(c.map(function(f){return"GL_"+f})),c=c.map(function(f){return Nd(f)}),c=Cd[a]=c,0>b||b>=c.length?(Ed(1281),0):c[b];default:return Ed(1280),0}},Ha:function(a,b){b=Xa(b);if(a=ud[a]){var c=a,f=c.Oe,
h=c.xf,l;if(!f)for(c.Oe=f={},c.wf={},l=0;l<Y.getProgramParameter(c,35718);++l){var n=Y.getActiveUniform(c,l);var q=n.name;n=n.size;var w=Pd(q);w=0<w?q.slice(0,w):q;var x=c.kf;c.kf+=n;h[w]=[n,x];for(q=0;q<n;++q)f[x]=q,c.wf[x++]=w}c=a.Oe;f=0;h=b;l=Pd(b);0<l&&(f=parseInt(b.slice(l+1))>>>0,h=b.slice(0,l));if((h=a.xf[h])&&f<h[0]&&(f+=h[1],c[f]=c[f]||Y.getUniformLocation(a,b)))return f}else Ed(1281);return-1},Ob:function(a,b,c){for(var f=Kd[b],h=0;h<b;h++)f[h]=O[c+4*h>>2];Y.invalidateFramebuffer(a,f)},
Pb:function(a,b,c,f,h,l,n){for(var q=Kd[b],w=0;w<b;w++)q[w]=O[c+4*w>>2];Y.invalidateSubFramebuffer(a,q,f,h,l,n)},Wb:function(a){return Y.isSync(Ad[a])},Ia:function(a){return(a=la[a])?Y.isTexture(a):0},Ja:function(a){Y.lineWidth(a)},La:function(a){a=ud[a];Y.linkProgram(a);a.Oe=0;a.xf={}},oc:function(a,b,c,f,h,l){Y.uf.multiDrawArraysInstancedBaseInstanceWEBGL(a,O,b>>2,O,c>>2,O,f>>2,ob,h>>2,l)},pc:function(a,b,c,f,h,l,n,q){Y.uf.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,O,b>>2,c,O,f>>2,
O,h>>2,O,l>>2,ob,n>>2,q)},Ma:function(a,b){3317==a&&(Dd=b);Y.pixelStorei(a,b)},rc:function(a){Y.readBuffer(a)},Na:function(a,b,c,f,h,l,n){if(2<=v.version)if(Y.ff)Y.readPixels(a,b,c,f,h,l,n);else{var q=Qd(l);Y.readPixels(a,b,c,f,h,l,q,n>>31-Math.clz32(q.BYTES_PER_ELEMENT))}else(n=Rd(l,h,c,f,n))?Y.readPixels(a,b,c,f,h,l,n):Ed(1280)},bc:function(a,b,c,f){Y.renderbufferStorage(a,b,c,f)},Yb:function(a,b,c,f,h){Y.renderbufferStorageMultisample(a,b,c,f,h)},Tb:function(a,b,c){Y.samplerParameteri(zd[a],b,
c)},Ub:function(a,b,c){Y.samplerParameteri(zd[a],b,O[c>>2])},Oa:function(a,b,c,f){Y.scissor(a,b,c,f)},Pa:function(a,b,c,f){for(var h="",l=0;l<b;++l){var n=f?O[f+4*l>>2]:-1;h+=Xa(O[c+4*l>>2],0>n?void 0:n)}Y.shaderSource(xd[a],h)},Qa:function(a,b,c){Y.stencilFunc(a,b,c)},Ra:function(a,b,c,f){Y.stencilFuncSeparate(a,b,c,f)},Sa:function(a){Y.stencilMask(a)},Ta:function(a,b){Y.stencilMaskSeparate(a,b)},Ua:function(a,b,c){Y.stencilOp(a,b,c)},Va:function(a,b,c,f){Y.stencilOpSeparate(a,b,c,f)},Wa:function(a,
b,c,f,h,l,n,q,w){if(2<=v.version)if(Y.Ce)Y.texImage2D(a,b,c,f,h,l,n,q,w);else if(w){var x=Qd(q);Y.texImage2D(a,b,c,f,h,l,n,q,x,w>>31-Math.clz32(x.BYTES_PER_ELEMENT))}else Y.texImage2D(a,b,c,f,h,l,n,q,null);else Y.texImage2D(a,b,c,f,h,l,n,q,w?Rd(q,n,f,h,w):null)},Xa:function(a,b,c){Y.texParameterf(a,b,c)},Ya:function(a,b,c){Y.texParameterf(a,b,U[c>>2])},Za:function(a,b,c){Y.texParameteri(a,b,c)},_a:function(a,b,c){Y.texParameteri(a,b,O[c>>2])},lc:function(a,b,c,f,h){Y.texStorage2D(a,b,c,f,h)},$a:function(a,
b,c,f,h,l,n,q,w){if(2<=v.version)if(Y.Ce)Y.texSubImage2D(a,b,c,f,h,l,n,q,w);else if(w){var x=Qd(q);Y.texSubImage2D(a,b,c,f,h,l,n,q,x,w>>31-Math.clz32(x.BYTES_PER_ELEMENT))}else Y.texSubImage2D(a,b,c,f,h,l,n,q,null);else x=null,w&&(x=Rd(q,n,h,l,w)),Y.texSubImage2D(a,b,c,f,h,l,n,q,x)},ab:function(a,b){Y.uniform1f(Z(a),b)},bb:function(a,b,c){if(2<=v.version)Y.uniform1fv(Z(a),U,c>>2,b);else{if(288>=b)for(var f=Sd[b-1],h=0;h<b;++h)f[h]=U[c+4*h>>2];else f=U.subarray(c>>2,c+4*b>>2);Y.uniform1fv(Z(a),f)}},
Wc:function(a,b){Y.uniform1i(Z(a),b)},Xc:function(a,b,c){if(2<=v.version)Y.uniform1iv(Z(a),O,c>>2,b);else{if(288>=b)for(var f=Td[b-1],h=0;h<b;++h)f[h]=O[c+4*h>>2];else f=O.subarray(c>>2,c+4*b>>2);Y.uniform1iv(Z(a),f)}},Yc:function(a,b,c){Y.uniform2f(Z(a),b,c)},Zc:function(a,b,c){if(2<=v.version)Y.uniform2fv(Z(a),U,c>>2,2*b);else{if(144>=b)for(var f=Sd[2*b-1],h=0;h<2*b;h+=2)f[h]=U[c+4*h>>2],f[h+1]=U[c+(4*h+4)>>2];else f=U.subarray(c>>2,c+8*b>>2);Y.uniform2fv(Z(a),f)}},Vc:function(a,b,c){Y.uniform2i(Z(a),
b,c)},Uc:function(a,b,c){if(2<=v.version)Y.uniform2iv(Z(a),O,c>>2,2*b);else{if(144>=b)for(var f=Td[2*b-1],h=0;h<2*b;h+=2)f[h]=O[c+4*h>>2],f[h+1]=O[c+(4*h+4)>>2];else f=O.subarray(c>>2,c+8*b>>2);Y.uniform2iv(Z(a),f)}},Tc:function(a,b,c,f){Y.uniform3f(Z(a),b,c,f)},Sc:function(a,b,c){if(2<=v.version)Y.uniform3fv(Z(a),U,c>>2,3*b);else{if(96>=b)for(var f=Sd[3*b-1],h=0;h<3*b;h+=3)f[h]=U[c+4*h>>2],f[h+1]=U[c+(4*h+4)>>2],f[h+2]=U[c+(4*h+8)>>2];else f=U.subarray(c>>2,c+12*b>>2);Y.uniform3fv(Z(a),f)}},Rc:function(a,
b,c,f){Y.uniform3i(Z(a),b,c,f)},Qc:function(a,b,c){if(2<=v.version)Y.uniform3iv(Z(a),O,c>>2,3*b);else{if(96>=b)for(var f=Td[3*b-1],h=0;h<3*b;h+=3)f[h]=O[c+4*h>>2],f[h+1]=O[c+(4*h+4)>>2],f[h+2]=O[c+(4*h+8)>>2];else f=O.subarray(c>>2,c+12*b>>2);Y.uniform3iv(Z(a),f)}},Pc:function(a,b,c,f,h){Y.uniform4f(Z(a),b,c,f,h)},Oc:function(a,b,c){if(2<=v.version)Y.uniform4fv(Z(a),U,c>>2,4*b);else{if(72>=b){var f=Sd[4*b-1],h=U;c>>=2;for(var l=0;l<4*b;l+=4){var n=c+l;f[l]=h[n];f[l+1]=h[n+1];f[l+2]=h[n+2];f[l+3]=
h[n+3]}}else f=U.subarray(c>>2,c+16*b>>2);Y.uniform4fv(Z(a),f)}},Cc:function(a,b,c,f,h){Y.uniform4i(Z(a),b,c,f,h)},Dc:function(a,b,c){if(2<=v.version)Y.uniform4iv(Z(a),O,c>>2,4*b);else{if(72>=b)for(var f=Td[4*b-1],h=0;h<4*b;h+=4)f[h]=O[c+4*h>>2],f[h+1]=O[c+(4*h+4)>>2],f[h+2]=O[c+(4*h+8)>>2],f[h+3]=O[c+(4*h+12)>>2];else f=O.subarray(c>>2,c+16*b>>2);Y.uniform4iv(Z(a),f)}},Ec:function(a,b,c,f){if(2<=v.version)Y.uniformMatrix2fv(Z(a),!!c,U,f>>2,4*b);else{if(72>=b)for(var h=Sd[4*b-1],l=0;l<4*b;l+=4)h[l]=
U[f+4*l>>2],h[l+1]=U[f+(4*l+4)>>2],h[l+2]=U[f+(4*l+8)>>2],h[l+3]=U[f+(4*l+12)>>2];else h=U.subarray(f>>2,f+16*b>>2);Y.uniformMatrix2fv(Z(a),!!c,h)}},Fc:function(a,b,c,f){if(2<=v.version)Y.uniformMatrix3fv(Z(a),!!c,U,f>>2,9*b);else{if(32>=b)for(var h=Sd[9*b-1],l=0;l<9*b;l+=9)h[l]=U[f+4*l>>2],h[l+1]=U[f+(4*l+4)>>2],h[l+2]=U[f+(4*l+8)>>2],h[l+3]=U[f+(4*l+12)>>2],h[l+4]=U[f+(4*l+16)>>2],h[l+5]=U[f+(4*l+20)>>2],h[l+6]=U[f+(4*l+24)>>2],h[l+7]=U[f+(4*l+28)>>2],h[l+8]=U[f+(4*l+32)>>2];else h=U.subarray(f>>
2,f+36*b>>2);Y.uniformMatrix3fv(Z(a),!!c,h)}},Gc:function(a,b,c,f){if(2<=v.version)Y.uniformMatrix4fv(Z(a),!!c,U,f>>2,16*b);else{if(18>=b){var h=Sd[16*b-1],l=U;f>>=2;for(var n=0;n<16*b;n+=16){var q=f+n;h[n]=l[q];h[n+1]=l[q+1];h[n+2]=l[q+2];h[n+3]=l[q+3];h[n+4]=l[q+4];h[n+5]=l[q+5];h[n+6]=l[q+6];h[n+7]=l[q+7];h[n+8]=l[q+8];h[n+9]=l[q+9];h[n+10]=l[q+10];h[n+11]=l[q+11];h[n+12]=l[q+12];h[n+13]=l[q+13];h[n+14]=l[q+14];h[n+15]=l[q+15]}}else h=U.subarray(f>>2,f+64*b>>2);Y.uniformMatrix4fv(Z(a),!!c,h)}},
Hc:function(a){a=ud[a];Y.useProgram(a);Y.Gf=a},Ic:function(a,b){Y.vertexAttrib1f(a,b)},Jc:function(a,b){Y.vertexAttrib2f(a,U[b>>2],U[b+4>>2])},Kc:function(a,b){Y.vertexAttrib3f(a,U[b>>2],U[b+4>>2],U[b+8>>2])},Lc:function(a,b){Y.vertexAttrib4f(a,U[b>>2],U[b+4>>2],U[b+8>>2],U[b+12>>2])},mc:function(a,b){Y.vertexAttribDivisor(a,b)},nc:function(a,b,c,f,h){Y.vertexAttribIPointer(a,b,c,f,h)},Mc:function(a,b,c,f,h,l){Y.vertexAttribPointer(a,b,c,!!f,h,l)},Nc:function(a,b,c,f){Y.viewport(a,b,c,f)},eb:function(a,
b,c,f){Y.waitSync(Ad[a],b,(c>>>0)+4294967296*f)},qb:function(a){var b=G.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var f=b*(1+.2/c);f=Math.min(f,a+100663296);f=Math.max(a,f);0<f%65536&&(f+=65536-f%65536);a:{try{Sa.grow(Math.min(2147483648,f)-mb.byteLength+65535>>>16);qb();var h=1;break a}catch(l){}h=void 0}if(h)return!0}return!1},ib:function(){return v?v.Vf:0},ub:function(a,b){var c=0;Vd().forEach(function(f,h){var l=b+c;h=O[a+4*h>>2]=l;for(l=0;l<f.length;++l)nb[h++>>0]=f.charCodeAt(l);
nb[h>>0]=0;c+=f.length+1});return 0},vb:function(a,b){var c=Vd();O[a>>2]=c.length;var f=0;c.forEach(function(h){f+=h.length+1});O[b>>2]=f;return 0},Hb:function(a){if(!(noExitRuntime||0<La)){if(t.onExit)t.onExit(a);Ua=!0}xa(a,new Ka(a))},G:function(){return 0},kb:function(a,b,c,f,h,l){a=Lb.Rf(a);b=Lb.If(a,b,c,f);O[l>>2]=b;return 0},Ab:function(a,b,c,f){a=Lb.Rf(a);b=Lb.If(a,b,c);O[f>>2]=b;return 0},lb:function(){},N:function(a,b,c,f){for(var h=0,l=0;l<c;l++){var n=O[b>>2],q=O[b+4>>2];b+=8;for(var w=
0;w<q;w++){var x=G[n+w],J=Kb[a];0===x||10===x?((1===a?Na:Ma)(Wa(J,0)),J.length=0):J.push(x)}h+=q}O[f>>2]=h;return 0},b:function(){return Pa},i:ke,n:le,f:me,C:ne,Mb:oe,U:pe,T:qe,I:re,m:se,s:te,h:ue,q:ve,Kb:we,Ib:xe,Jb:ye,c:function(a){Pa=a},nb:function(a,b,c,f){return be(a,b,c,f)}};
(function(){function a(h){t.asm=h.exports;Sa=t.asm.bd;qb();rb=t.asm.dd;tb.unshift(t.asm.cd);wb--;t.monitorRunDependencies&&t.monitorRunDependencies(wb);0==wb&&(null!==xb&&(clearInterval(xb),xb=null),zb&&(h=zb,zb=null,h()))}function b(h){a(h.instance)}function c(h){return Eb().then(function(l){return WebAssembly.instantiate(l,f)}).then(function(l){return l}).then(h,function(l){Ma("failed to asynchronously prepare wasm: "+l);Ra(l)})}var f={a:ze};wb++;t.monitorRunDependencies&&t.monitorRunDependencies(wb);
if(t.instantiateWasm)try{return t.instantiateWasm(f,a)}catch(h){return Ma("Module.instantiateWasm callback failed with error: "+h),!1}(function(){return Qa||"function"!==typeof WebAssembly.instantiateStreaming||Ab()||Bb.startsWith("file://")||"function"!==typeof fetch?c(b):fetch(Bb,{credentials:"same-origin"}).then(function(h){return WebAssembly.instantiateStreaming(h,f).then(b,function(l){Ma("wasm streaming compile failed: "+l);Ma("falling back to ArrayBuffer instantiation");return c(b)})})})().catch(ha);
return{}})();t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.cd).apply(null,arguments)};var Od=t._malloc=function(){return(Od=t._malloc=t.asm.ed).apply(null,arguments)},Tc=t._free=function(){return(Tc=t._free=t.asm.fd).apply(null,arguments)},je=t.___errno_location=function(){return(je=t.___errno_location=t.asm.gd).apply(null,arguments)},Sc=t.___getTypeName=function(){return(Sc=t.___getTypeName=t.asm.hd).apply(null,arguments)};
t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.id).apply(null,arguments)};var ie=t._memalign=function(){return(ie=t._memalign=t.asm.jd).apply(null,arguments)},Ae=t._setThrew=function(){return(Ae=t._setThrew=t.asm.kd).apply(null,arguments)},Be=t.stackSave=function(){return(Be=t.stackSave=t.asm.ld).apply(null,arguments)},Ce=t.stackRestore=function(){return(Ce=t.stackRestore=t.asm.md).apply(null,arguments)};
t.dynCall_iiiji=function(){return(t.dynCall_iiiji=t.asm.nd).apply(null,arguments)};t.dynCall_ji=function(){return(t.dynCall_ji=t.asm.od).apply(null,arguments)};t.dynCall_iiji=function(){return(t.dynCall_iiji=t.asm.pd).apply(null,arguments)};t.dynCall_iijjiii=function(){return(t.dynCall_iijjiii=t.asm.qd).apply(null,arguments)};t.dynCall_iij=function(){return(t.dynCall_iij=t.asm.rd).apply(null,arguments)};t.dynCall_vijjjii=function(){return(t.dynCall_vijjjii=t.asm.sd).apply(null,arguments)};
t.dynCall_viji=function(){return(t.dynCall_viji=t.asm.td).apply(null,arguments)};t.dynCall_vijiii=function(){return(t.dynCall_vijiii=t.asm.ud).apply(null,arguments)};t.dynCall_viiiiij=function(){return(t.dynCall_viiiiij=t.asm.vd).apply(null,arguments)};t.dynCall_viijii=function(){return(t.dynCall_viijii=t.asm.wd).apply(null,arguments)};t.dynCall_jii=function(){return(t.dynCall_jii=t.asm.xd).apply(null,arguments)};t.dynCall_iiij=function(){return(t.dynCall_iiij=t.asm.yd).apply(null,arguments)};
t.dynCall_iiiij=function(){return(t.dynCall_iiiij=t.asm.zd).apply(null,arguments)};t.dynCall_viij=function(){return(t.dynCall_viij=t.asm.Ad).apply(null,arguments)};t.dynCall_viiij=function(){return(t.dynCall_viiij=t.asm.Bd).apply(null,arguments)};t.dynCall_vij=function(){return(t.dynCall_vij=t.asm.Cd).apply(null,arguments)};t.dynCall_jiiii=function(){return(t.dynCall_jiiii=t.asm.Dd).apply(null,arguments)};t.dynCall_jiiiiii=function(){return(t.dynCall_jiiiiii=t.asm.Ed).apply(null,arguments)};
t.dynCall_jiiiiji=function(){return(t.dynCall_jiiiiji=t.asm.Fd).apply(null,arguments)};t.dynCall_iijj=function(){return(t.dynCall_iijj=t.asm.Gd).apply(null,arguments)};t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.Hd).apply(null,arguments)};t.dynCall_iiiiij=function(){return(t.dynCall_iiiiij=t.asm.Id).apply(null,arguments)};t.dynCall_iiiiijj=function(){return(t.dynCall_iiiiijj=t.asm.Jd).apply(null,arguments)};t.dynCall_iiiiiijj=function(){return(t.dynCall_iiiiiijj=t.asm.Kd).apply(null,arguments)};
function ke(a,b){var c=Ae();try{return pb.get(a)(b)}catch(f){Be(c);if(f!==f+0&&"longjmp"!==f)throw f;je(1,0)}}function le(a,b,c){var f=Ae();try{return pb.get(a)(b,c)}catch(h){Be(f);if(h!==h+0&&"longjmp"!==h)throw h;je(1,0)}}function ue(a,b,c,f){var h=Ae();try{pb.get(a)(b,c,f)}catch(l){Be(h);if(l!==l+0&&"longjmp"!==l)throw l;je(1,0)}}function me(a,b,c,f){var h=Ae();try{return pb.get(a)(b,c,f)}catch(l){Be(h);if(l!==l+0&&"longjmp"!==l)throw l;je(1,0)}}
function se(a,b){var c=Ae();try{pb.get(a)(b)}catch(f){Be(c);if(f!==f+0&&"longjmp"!==f)throw f;je(1,0)}}function te(a,b,c){var f=Ae();try{pb.get(a)(b,c)}catch(h){Be(f);if(h!==h+0&&"longjmp"!==h)throw h;je(1,0)}}function oe(a,b,c,f,h,l){var n=Ae();try{return pb.get(a)(b,c,f,h,l)}catch(q){Be(n);if(q!==q+0&&"longjmp"!==q)throw q;je(1,0)}}function ve(a,b,c,f,h){var l=Ae();try{pb.get(a)(b,c,f,h)}catch(n){Be(l);if(n!==n+0&&"longjmp"!==n)throw n;je(1,0)}}
function pe(a,b,c,f,h,l,n){var q=Ae();try{return pb.get(a)(b,c,f,h,l,n)}catch(x){Be(q);if(x!==x+0&&"longjmp"!==x)throw x;je(1,0)}}function ne(a,b,c,f,h){var l=Ae();try{return pb.get(a)(b,c,f,h)}catch(n){Be(l);if(n!==n+0&&"longjmp"!==n)throw n;je(1,0)}}function we(a,b,c,f,h,l){var n=Ae();try{pb.get(a)(b,c,f,h,l)}catch(q){Be(n);if(q!==q+0&&"longjmp"!==q)throw q;je(1,0)}}
function ye(a,b,c,f,h,l,n,q,x,w){var G=Ae();try{pb.get(a)(b,c,f,h,l,n,q,x,w)}catch(K){Be(G);if(K!==K+0&&"longjmp"!==K)throw K;je(1,0)}}function xe(a,b,c,f,h,l,n){var q=Ae();try{pb.get(a)(b,c,f,h,l,n)}catch(x){Be(q);if(x!==x+0&&"longjmp"!==x)throw x;je(1,0)}}function qe(a,b,c,f,h,l,n,q,x,w){var G=Ae();try{return pb.get(a)(b,c,f,h,l,n,q,x,w)}catch(K){Be(G);if(K!==K+0&&"longjmp"!==K)throw K;je(1,0)}}function re(a){var b=Ae();try{pb.get(a)()}catch(c){Be(b);if(c!==c+0&&"longjmp"!==c)throw c;je(1,0)}}var Ce;
function Ka(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}wb=function De(){Ce||Ee();Ce||(wb=De)};
function Ee(){function a(){if(!Ce&&(Ce=!0,t.calledRun=!0,!Ta)){Db(rb);ca(t);if(t.onRuntimeInitialized)t.onRuntimeInitialized();if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;){var b=t.postRun.shift();sb.unshift(b)}Db(sb)}}if(!(0<ub)){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)tb();Db(qb);0<ub||(t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1);a()},1)):a())}}
t.run=Ee;if(t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);0<t.preInit.length;)t.preInit.pop()();Ee();
t.dynCall_viji=function(){return(t.dynCall_viji=t.asm.td).apply(null,arguments)};t.dynCall_vijiii=function(){return(t.dynCall_vijiii=t.asm.ud).apply(null,arguments)};t.dynCall_viiiiij=function(){return(t.dynCall_viiiiij=t.asm.vd).apply(null,arguments)};t.dynCall_jii=function(){return(t.dynCall_jii=t.asm.wd).apply(null,arguments)};t.dynCall_iiij=function(){return(t.dynCall_iiij=t.asm.xd).apply(null,arguments)};t.dynCall_iiiij=function(){return(t.dynCall_iiiij=t.asm.yd).apply(null,arguments)};
t.dynCall_viij=function(){return(t.dynCall_viij=t.asm.zd).apply(null,arguments)};t.dynCall_viiij=function(){return(t.dynCall_viiij=t.asm.Ad).apply(null,arguments)};t.dynCall_vij=function(){return(t.dynCall_vij=t.asm.Bd).apply(null,arguments)};t.dynCall_jiiii=function(){return(t.dynCall_jiiii=t.asm.Cd).apply(null,arguments)};t.dynCall_jiiiiii=function(){return(t.dynCall_jiiiiii=t.asm.Dd).apply(null,arguments)};t.dynCall_jiiiiji=function(){return(t.dynCall_jiiiiji=t.asm.Ed).apply(null,arguments)};
t.dynCall_iijj=function(){return(t.dynCall_iijj=t.asm.Fd).apply(null,arguments)};t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.Gd).apply(null,arguments)};t.dynCall_viijii=function(){return(t.dynCall_viijii=t.asm.Hd).apply(null,arguments)};t.dynCall_iiiiij=function(){return(t.dynCall_iiiiij=t.asm.Id).apply(null,arguments)};t.dynCall_iiiiijj=function(){return(t.dynCall_iiiiijj=t.asm.Jd).apply(null,arguments)};t.dynCall_iiiiiijj=function(){return(t.dynCall_iiiiiijj=t.asm.Kd).apply(null,arguments)};
function ke(a,b){var c=Be();try{return Gb(a)(b)}catch(f){Ce(c);if(f!==f+0&&"longjmp"!==f)throw f;Ae(1,0)}}function le(a,b,c){var f=Be();try{return Gb(a)(b,c)}catch(h){Ce(f);if(h!==h+0&&"longjmp"!==h)throw h;Ae(1,0)}}function ue(a,b,c,f){var h=Be();try{Gb(a)(b,c,f)}catch(l){Ce(h);if(l!==l+0&&"longjmp"!==l)throw l;Ae(1,0)}}function me(a,b,c,f){var h=Be();try{return Gb(a)(b,c,f)}catch(l){Ce(h);if(l!==l+0&&"longjmp"!==l)throw l;Ae(1,0)}}
function se(a,b){var c=Be();try{Gb(a)(b)}catch(f){Ce(c);if(f!==f+0&&"longjmp"!==f)throw f;Ae(1,0)}}function te(a,b,c){var f=Be();try{Gb(a)(b,c)}catch(h){Ce(f);if(h!==h+0&&"longjmp"!==h)throw h;Ae(1,0)}}function oe(a,b,c,f,h,l){var n=Be();try{return Gb(a)(b,c,f,h,l)}catch(q){Ce(n);if(q!==q+0&&"longjmp"!==q)throw q;Ae(1,0)}}function ve(a,b,c,f,h){var l=Be();try{Gb(a)(b,c,f,h)}catch(n){Ce(l);if(n!==n+0&&"longjmp"!==n)throw n;Ae(1,0)}}
function pe(a,b,c,f,h,l,n){var q=Be();try{return Gb(a)(b,c,f,h,l,n)}catch(w){Ce(q);if(w!==w+0&&"longjmp"!==w)throw w;Ae(1,0)}}function ne(a,b,c,f,h){var l=Be();try{return Gb(a)(b,c,f,h)}catch(n){Ce(l);if(n!==n+0&&"longjmp"!==n)throw n;Ae(1,0)}}function we(a,b,c,f,h,l){var n=Be();try{Gb(a)(b,c,f,h,l)}catch(q){Ce(n);if(q!==q+0&&"longjmp"!==q)throw q;Ae(1,0)}}function ye(a,b,c,f,h,l,n,q,w,x){var J=Be();try{Gb(a)(b,c,f,h,l,n,q,w,x)}catch(K){Ce(J);if(K!==K+0&&"longjmp"!==K)throw K;Ae(1,0)}}
function re(a){var b=Be();try{Gb(a)()}catch(c){Ce(b);if(c!==c+0&&"longjmp"!==c)throw c;Ae(1,0)}}function xe(a,b,c,f,h,l,n){var q=Be();try{Gb(a)(b,c,f,h,l,n)}catch(w){Ce(q);if(w!==w+0&&"longjmp"!==w)throw w;Ae(1,0)}}function qe(a,b,c,f,h,l,n,q,w,x){var J=Be();try{return Gb(a)(b,c,f,h,l,n,q,w,x)}catch(K){Ce(J);if(K!==K+0&&"longjmp"!==K)throw K;Ae(1,0)}}var De;function Ka(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}zb=function Ee(){De||Fe();De||(zb=Ee)};
function Fe(){function a(){if(!De&&(De=!0,t.calledRun=!0,!Ua)){Fb(tb);fa(t);if(t.onRuntimeInitialized)t.onRuntimeInitialized();if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;){var b=t.postRun.shift();ub.unshift(b)}Fb(ub)}}if(!(0<wb)){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)vb();Fb(sb);0<wb||(t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1);a()},1)):a())}}
t.run=Fe;if(t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);0<t.preInit.length;)t.preInit.pop()();Fe();
return CanvasKitInit.ready

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -28,17 +28,17 @@ const RESOURCES = {
"assets/NOTICES": "9a4bf0423a5e265f38c4df37f7a0a913",
"assets/fonts/MaterialIcons-Regular.otf": "4e6447691c9509f7acdbf8a931a85ca1",
"favicon.ico": "51636d3a390451561744c42188ccd628",
"/": "d9829928376d8c2193b8af876898ddaa",
"/": "8fe22e7edac61053293766668b8032a6",
"version.json": "a00481850d5c63ba5df4e22636643438",
"icons/Icon-512.png": "0f9aff01367f0a0c69773d25ca16ef35",
"icons/Icon-192.png": "bb1cf5f6982006952211c7c8404ffbed",
"main.dart.js": "90f76748bc2c212eb97403132f720821",
"main.dart.js": "16d305d3a123a71d0430ef6628c741b3",
"favicon.png": "dca91c54388f52eded692718d5a98b8b",
"manifest.json": "ef43d90e57aa7682d7e2cfba2f484a40",
"canvaskit/profiling/canvaskit.js": "3783918f48ef691e230156c251169480",
"canvaskit/profiling/canvaskit.wasm": "6d1b0fc1ec88c3110db88caa3393c580",
"canvaskit/canvaskit.js": "62b9906717d7215a6ff4cc24efbd1b5c",
"canvaskit/canvaskit.wasm": "b179ba02b7a9f61ebc108f82c5a1ecdb"
"canvaskit/profiling/canvaskit.js": "ae2949af4efc61d28a4a80fffa1db900",
"canvaskit/profiling/canvaskit.wasm": "95e736ab31147d1b2c7b25f11d4c32cd",
"canvaskit/canvaskit.js": "c2b4e5f3d7a3d82aed024e7249a78487",
"canvaskit/canvaskit.wasm": "4b83d89d9fecbea8ca46f2f760c5a9ba"
};
// The application shell files that are downloaded before a service worker can

88889
public/main.dart.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

99692
public/main.foss.dart.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More